固件更新

本指南介绍了如何更新Nitrokey 3的固件。

重要

对于1.0.0及以下版本的固件,更新将删除所有的用户数据。 请确保你启用了适当的备份登录方法,并/或确保Nitrokey 3不是你的应用程序/服务的唯一认证/2FA方式。

For firmware v1.0.1 and above user data is retained during the update. Anyway, be sure to always have another device (or login method) registered with your service, if for some reason your data is not retained.

如何更新

重要

在更新过程中,千万不要断开Nitrokey 3的连接或中止进程,这很可能会使你的设备失去作用。

  1. 确保你已经安装了最新的`pynitrokey`版本,请查看你的操作系统的`安装说明`_。

  2. 运行``nitropy nk3 update``。

  3. 一旦得到``的指示,nitropy``触摸设备以激活引导程序。

  4. *仅适用于macOS:*如果按照``的指示,nitropy``再次运行更新命令。

  5. 请等待,直到该过程结束。(这可能因你的操作系统而异)

  6. 可选:运行``nitropy nk3 test``以检查设备在闪烁后是否工作正常。

如果出现任何错误,请从``/tmp``目录中获取日志(/tmp/nitropy.log.*)。

固件发布类型

Nitrokey 3有三种类型的固件发布:

稳定的版本 ,对用户来说是最重要的。它们被设计成向后兼容,保留所有的用户数据,并经过全面测试。在生产设备上,应该只使用稳定版。

候选版本 是即将发布的稳定版本的预览。它也应该是向后兼容的,但没有像稳定版那样进行彻底的测试。

测试版 (以前是:alpha releases)包含了尚未准备好用于生产的额外功能。用测试版本创建的用户数据可能与其他版本不兼容。这些版本仍在测试中,更有可能包含错误。

请参阅GitHub上的`release notes`_,以了解更多关于一个版本中可用功能的信息。

你可以通过版本号来识别固件发布的类型:

类型

版本号

例子

稳定版

v<major>.<minor>.<patch>

v1.3.1

候选发布

v<major>.<minor>.<patch>-rc.<counter>

v1.3.1-rc.1

试放

v<major>.<minor>.<patch>-test.<date>

v1.3.1-test.20230414

降级保护

Nitrokey 3的固件不能被降级。你只能安装与设备上当前安装的固件相同或更高的主要、次要和补丁版本号的固件更新。这可以防止降级攻击,即安全的固件版本会被一个旧的、可能不安全的版本取代。

例子:

  • v1.3.1``可以更新为``v1.3.1-test.20230414,反之亦然,因为它们具有相同的主要、次要和补丁版本号。

  • ``v1.3.1``可以更新为``v1.3.2``或``v1.4.0``因为版本号增加。

  • ``v1.3.1``不能更新为``v1.3.0-rc.1``因为版本号会减少。

这主要与依赖测试版本的功能的用户有关。稳定版固件的用户可以随时更新到最新的可用固件版本。

Troubleshooting (Linux):

**问题:**我在更新时得到``permission denied for /dev/hidrawX``。

这可能意味着你的用户没有必要的权限来读写设备。请确认你已经设置了正确的`udev-rules`_。下载这个`udev-rules`_集,并把它放在你的udev规则目录中(例如,/etc/udev/rules.d)。然后从USB插槽中取出你的Nitrokey 3并运行。``udevadm control --reload-rules && udevadm trigger``或者重新启动你的机器。之后,更新应该可以工作,没有权限问题。