固件更新

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

重要

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

对于固件V1.0.1及以上版本,用户数据在更新期间被保留 。总之,要确保总是有另一个设备(或登录方式)在你的服务中注册,如果由于某种原因你的数据没有被保留。

如何更新

重要

在更新过程中,千万不要断开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``或者重新启动你的机器。之后,更新应该可以工作,没有权限问题。