验证 OneKey 发布的固件文件与开源代码的一致性

OneKey 的硬件钱包系列产品的固件是全开源的,您可以在 OneKey 的 GitHub 仓库中查看相关产品的固件开源代码。在正式发布用于批量生产的固件文件之前,OneKey 团队会通过 GitHub 自动化构建工具(GitHub CI)从相应的固件仓库中编译和打包固件源代码。再由 OneKey 内部人员进行签名后发布正式的固件文件。这篇文章提供给您一种自验证的方法,通过比较正式签名发布前后文件的 Checksum 来验证固件文件与开源代码的一致性。

关于如何通过 SHA-256 加密哈希函数(比对 Checksum)验证不同文件的源数据一致性的方法,可以参考这篇文章

固件代码开源仓库

OneKey Pro
OneKey Classic 1S
OneKey Touch
OneKey Mini

固件发布流程

当有正式的固件或蓝牙固件准备发布时,OneKey 团队会通过执行对应仓库的 Action 对开源的代码进行编译签名,编译成功后会上传到 GitHub Artifacts 存储,等待团队完成内部签名后,放置到 OneKey 的 CDN 上。更新配置 config.json 完成后,在 OneKey App 和 OneKey 固件更新网站 推送更新通知,提示用户进行对应的固件升级。具体流程参考下图:

onekey github verifiy.png

校验目标

  1. 验证「OneKey 团队签名后的固件文件」是经过 OneKey 团队多签「OneKey 开源仓库中 GitHub CI 签名前的固件文件」后得来。
  2. 验证「OneKey 团队签名后的固件文件」和「OneKey 官方 CDN 存储的固件文件」的一致性。

校验前准备

系统固件 蓝牙固件
✔  下载「OneKey 开源仓库中 GitHub CI 签名前的固件文件」(未签名)

github action.png

  • 点击 Artifacts 下的固件名称进行下载(需要登录 GitHub)。

2.png

✔  下载「OneKey 团队签名后的固件文件」(已签名)

github release bin.png

✔  下载 「OneKey 官方 CDN 存储的固件文件」(已签名)
  • 访问 OneKey CDN 文件:https://data.onekey.so/config.json
  • 找到您要验证的固件版本。
  • 复制「url」字段下的链接。
  • 在浏览器新窗口打开,将自动为您下载 bin 文件。

3.png

校验步骤

下面提供了两个目标对应的验证步骤:

系统固件 蓝牙固件
验证目标一
  • 打开 Terminal。
  • 运行指令(OneKey 团队签名后的固件):
    • tail -c +1024 /path/to/(文件路径) | shasum -a 256
  • 运行指令(OneKey 开源仓库中 GitHub CI 签名前的固件):
    • tail -c +1024 /path/to/(文件路径) | shasum -a 256
  • 比对两个指令生成的 Checksum。若结果相同,则可以确定两个固件文件的代码一致性。

7.png

对于系统固件来说(Classic、Mini 和 Touch 均适用),多签后会在 CI 版本的固件前增加 1024 字节的签名结果,在设备启动时 bootloader 进行验证。

验证目标二
  • 打开 Terminal。
  • 运行指令(OneKey 团队签名后的固件):
    • shasum -a 256 (文件路径)
  • 运行指令(OneKey 官方 CDN 存储的固件):
    • shasum -a 256 (文件路径) 
  • 比对两个指令生成的 Checksum。若结果相同,则可以确定两个固件文件的代码一致性。

6.png验证目标一(蓝牙)

这篇文章有帮助吗?
1 人中有 1 人觉得有帮助