ファームウェアの更新#

本書では、Nitrokey 3 のファームウェアをアップデートする方法について説明します。

重要

ファームウェアv.1.0.0以下の場合、アップデートを行うとすべてのユーザーデータが削除されます。 適切なバックアップログイン方法を有効にしているか、アプリケーション/サービスの認証/2FAの方法がNitrokey 3だけでないことを確認してください。

ファームウェアv1.0.1以上の場合、アップデート中もユーザーデータは保持されます( )。何らかの理由でデータが保持されない場合は、常に別のデバイス(またはログイン方法)をサービスに登録するようにしてください。

アップデート方法#

重要

アップデート中にNitrokey 3の接続を解除したり、プロセスを中断したりしないでください。

  1. 最新の`pynitrokey` がインストールされていることを確認してください。お使いのOSの インストール手順 を確認してください。

  2. ``nitropy nk3 update``を実行します。

  3. nitropy の指示があったら、デバイスをタッチしてブートローダを起動させます。

  4. macOSのみ: nitropy の指示があった場合、再度アップデートコマンドを実行してください。

  5. 処理が終了するまでお待ちください。(お使いのOSによって異なる場合があります)

  6. オプション: nitropy nk3 test を実行し、フラッシュ後にデバイスが正しく動作しているかどうかをチェックします。

エラーが発生した場合は、/tmp ディレクトリ(/tmp/nitropy.log.* )からログを取得してください。

ファームウェアのリリースタイプ#

Nitrokey 3のファームウェアのリリースは、3種類あります:

安定したリリース は、ユーザーにとって最も重要です。後方互換性があり、すべてのユーザーデータを保持するように設計されており、徹底的にテストされています。量産機では、安定版のみを使用する必要があります。

リリース候補 は、今後リリースされる安定版リリースのプレビューです。後方互換性もあるはずですが、安定版リリースほど徹底したテストは行われていません。

テストリリース (以前のリリース:アルファリリース) には、まだ製品化する準備ができていない追加機能が含まれています。テストリリースで作成されたユーザーデータは、他のリリースと互換性がない場合があります。これらのリリースはまだテスト中であり、バグを含む可能性が高いです。

リリースで利用できる機能の詳細については、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 に更新することはできません。

これは、テストリリースの機能に依存しているユーザーにとって、主に関連するものです。安定版ファームウェアのユーザーは、常に最新のファームウェアバージョンにアップデートすることができます。

トラブルシューティング#

問題: アップデート中に permission denied for /dev/hidrawX が表示されます。

これは、ユーザーがデバイスの読み取り/書き込みに必要な権限を持っていないことを意味すると思われます。正しい udev-rules をセットアップしているかどうか確認してください。この udev-rules セットをダウンロードして、udev rules ディレクトリに置いてください (例: /etc/udev/rules.d).次に、Nitrokey 3 を USB スロットから取り出して実行します。udevadm control --reload-rules && udevadm trigger を実行するか、マシンをリブートします。その後、更新はパーミッションの問題なく動作するはずです。