跳转到主要内容

OneKey 硬件钱包设备固件的开源代码验证

OneKey avatar
作者:OneKey
本周更新

本文提供了详细的流程步骤,帮助您验证您的 OneKey 硬件钱包设备上安装的系统固件应用了和 OneKey GitHub 仓库中一致的开源固件代码。通过使用 SHA-256 计算 Checksum(校验和)的方式比对不同文件的代码一致性,确保您可以安全放心地使用 OneKey 硬件钱包。

Checksum 是一种用于检查数据完整性的方法,它通过对数据进行某种计算,得到一个简短的、固定大小的数字和字母的组合序列。这个序列就是 Checksum,也被称为「校验和」。

重要提示

OneKey 硬件钱包内置的安全芯片在出厂时刻有官方的多签签名。如果设备被写入了非官方签名的固件,在开机时就会显示「非官方固件 (Unofficial Firmware)」的提示。

验证流程

系统固件 蓝牙固件

步骤一:下载并安装最新的官方固件

  • 通过 USB 线将您的 OneKey 硬件钱包连接到您的电脑。

  • 一旦您的硬件钱包设备被检测到,您将能在网站上看到您的硬件钱包信息。

  • 选择并下载您的硬件钱包对应的固件的最新版本。

  • 按照网站上提供的指示安装固件,并在您的 OneKey 硬件钱包上确认安装。

步骤二:在您的 OneKey 硬件钱包上获取 Checksum

  • 在您的 OneKey 硬件钱包上找到 「关于设备 (About Device) 」这一栏(通常在系统设置下)。

  • 在您的 OneKey 硬件钱包设备上找到详细的固件信息。

  • 您可以从固件信息中获取设备固件的 Checksum 的前七位。

    • 例如:4.9.0[fccbac8-5ff2c88]

    • fccbac8” 是您的设备固件的版本 ID。

    • 5ff2c88” 是您的设备固件的 Checksum 的前七位。

步骤三:计算 GitHub 源代码的 Checksum

  • 在您的操作系统中打开终端 (Terminal)(需要 macOS/Linux 操作系统)。

  • 根据您的 OneKey 硬件钱包型号,选择运行下面对应的命令来计算 Checksum。

    • OneKey Mini & OneKey Classic:

      • tail -c +1025 /path/to/(文件路径) | shasum -a 256 -b

    • OneKey Touch:

      • tail -c +2561 /path/to/(文件路径) | shasum -a 256 -b

步骤四:比对 Checksum

  • 比较步骤三中手动计算的 Checksum 的前七位与步骤二中获取的设备 Checksum。

  • 如果两个值匹配,这表明安装的固件与 GitHub 上的开源代码一致。

步骤一:下载并安装最新的官方蓝牙固件

  • 通过 USB 线将您的 OneKey 硬件钱包连接到您的电脑。

  • 一旦您的硬件钱包设备被检测到,您将能在网站上看到您的硬件钱包信息。

  • 选择并下载您的硬件钱包对应的蓝牙固件的最新版本。

  • 按照网站上提供的指示安装固件,并在您的 OneKey 硬件钱包上确认安装。

步骤二:在您的 OneKey 硬件钱包上获取 Checksum

  • 在您的 OneKey 硬件钱包上找到 「关于设备 (About Device) 」这一栏(通常在系统设置下)。

  • 在您的 OneKey 硬件钱包设备上找到详细的蓝牙信息。

  • 您可以从「蓝牙」处获取设备蓝牙固件的 Checksum 的前七位。

    • 例如:2.3.1[96bb143-5affc8f]

    • 96bb143” 是您设备的蓝牙固件的版本 ID。

    • 5affc8f” 是您设备的蓝牙固件的 Checksum 的前七位。

步骤三:计算 GitHub 源代码的 Checksum

  • 在您下载的 bin 文件的相同文件夹下,打开一个 Terminal。(需要 macOS/Linux 操作系统)

  • 在命令行中输入 python3命令唤起 Python。(下载 Python

  • 复制下面的命令。

    • exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")

  • 将(上面命令中的)ota.bin 改成您下载的 bin 文件的文件名。

  • 运行命令获得 Checksum 校验和。

步骤四:比对 Checksum

  • 比较步骤三中手动计算的 Checksum 的前七位与步骤二中获取的设备的蓝牙固件 Checksum。

  • 如果两个值匹配,这表明安装的蓝牙固件与 GitHub 上的开源代码一致。

如果您希望验证 OneKey 团队在 GitHub 发布的签名后的固件文件与 OneKey GitHub 仓库公开存储的对应开源代码的一致性,请参考这篇文章

这是否解答了您的问题?