wolfBootによるファームウェアイメージの暗号化サポート

セキュアブートに関して大切な検討事項の1つは、ダウンロードしたファームウェア更新イメージを保護されていない非揮発性メモリサポート(外部SPIフラッシュデバイス、その他のカスタマイズされた形式のストレージなど)に保存するときの「保存データ」の保護の方法です。

組み込みシステム向けの完全にオープンソースのセキュアなブートローダーソリューションであるwolfBootは、暗号化された外部パーティションをサポートし、更新プロセス中にファームウェアの更新を安全に保存します。暗号化アルゴリズムはChaCha20で、wolfCryptによって提供されます。

これにより各更新を署名および暗号化してターゲットに配布できるようになり、アプリケーションはwolfBoot APIを使用して実行時に復号鍵を設定できるようになります。このサポート機能は現在最新のレポジトリで公開されていて、次のリリースに含まれる予定です。

この機能を有効にする方法を紹介しましょう。

まず、オプション「ENCRYPT = 1」でブートローダーをコンパイルします。
ランダムな44バイトのバッファーを作成し、 `secret_key`ファイルに保存します。このファイルには、ファームウェアイメージの暗号化に使用される鍵とベクターが格納されています。
署名ツールの呼び出しに追加のステップ「–encrypt secret_key」を追加します。これにより、追加の* _signed_and_encrypted.binイメージファイルが生成されます
_signed_and_encryptedイメージをターゲットに転送します。暗号化はブートローダーモードでのみ有効であるため、システムアプリケーションは引き続きwolfBoot HALを使用して外部デバイスにアクセスできます。
wolfBoot API呼び出し `wolfBoot_set_encryption_key()`を介してアプリケーションに秘密鍵とベクターを設定します。秘密鍵は、たとえば、安全な鍵管理デバイスに事前に保存されているか、更新中に安全なチャネルを介して送信されます。
その後通常どおり `wolfBoot_trigger_update()`を使用して更新を開始し、再起動します。 wolfBootはファームウェアの復号化と検証を試み、検証が成功した場合はインストールを開始します。
UPDATEパーティションに格納されているイメージは、インストール中に以前に実行されていたシステムのバックアップコピーを含め、常に暗号化されています。これにより、秘密の暗号化キーが安全に保たれている限り、パーティションを読み取ってもその内容が明らかになることはありません。

wolfBootでのパーティション暗号化のサポートは、ファームウェアの更新イメージが効果的に読み出し保護できない外部デバイスのような場所に保存されている場合に有効な保護機能となります。

データ転送に関する安全性については、通常どおり、TLS 1.3を使用して更新を転送し、常にファームウェアを利用するデバイスとの間で暗号化通信を使用することをお勧めします。

wolfBootについては、来週9/29開催のウェビナーでも紹介いたします。ぜひお気軽にご登録、ご参加ください。

https://wolfssl.jp/wordpress/wolfblog/2020/08/31/avionics/

さらに詳しくはinfo@wolfssl.jpまでお尋ねください。