セキュア ブートとグリッチ攻撃

一般に、「グリッチ」とは、システムで発生する可能性のある一時的な障害のことであり、システムを短時間ですが正常に機能できなくする可能性があります。 適切に動作しているソフトウェアに一つのグリッチを発生させるだけで、それが結果としてシステムが実行を継続できなくなる可能性のあるほど壊滅的な結果も含めて 幾つもの結果をもたらすことが可能です。

グリッチ攻撃は複雑で実行に費用がかかりますが、セキュアブートメカニズムにとって実際の問題になる可能性があり、多くの場合、防止または軽減するのは非常に困難です。 攻撃者は、システムに含まれる実行またはデータを制御するために、単一のグリッチの予測可能な結果を利用することを目的としています。 攻撃者の使うグリッチとしては、特定のマイクロコントローラーまたはCPUのよく知られた弱点を突いてくることが多く、さまざまな手法を使ってきます。 最も一般的なグリッチ注入攻撃は、特定の時間にチップに供給される電圧を変化させること、またはクロック信号のプロファイルを変更して命令の実行のタイミングを乱すことなどで行われます。 より高度な攻撃は、強力な電磁干渉でデバイスを照射することに依存する可能性があります。

セキュアブートに限って言えば、攻撃者の目標は、ファームウェアの信頼性、整合性、またはバージョン管理の検証を実行するコードのような重要なコード領域でセキュリティチェックを回避することです。 これらの攻撃は、最終的にセキュリティチェックを無効にし、許可されていないファームウェアイメージをアップロードすることでシステムを制御する可能性があります。 正確な同期と数回の試行が必要ですが、これらの攻撃は、最終的には必要な時間にハードウェアに障害を注入し、必要な検証実行をスキップさせることに成功します。

当社のセキュアブートローダーであるwolfBootは、RFC9019に準拠し、ファームウェアとその更新の整合性と信頼性の安全な公開鍵ベースの検証を提供します。 小型のマイクロコントローラーからx86_64システムまで、いくつかの異なるアーキテクチャーで動作します。 wolfBootはOSに依存せず、wolfCryptセキュリティエンジンに実装されたFIPS140-2認定アルゴリズムのおかげでクラス最高のセキュリティを提供します。

wolfBootは既に多くのユニークな機能を備えています。 グリッチ攻撃に対する緩和策を実装した最初のオープンソースのセキュアブートローダーでもあります。 私たちの開発チームは最近、コンパイル時にアクティブ化できるオプション機能を追加して、コード内の重要な変数と決定ポイントのセキュリティを強化しています。 これには、攻撃者が単一の特定の命令をスキップする可能性を含む観点から、wolfBootのコードフローを評価する必要がありました。 Cで記述された冗長なコードは通常コンパイラーによって破棄されるため、これらの緩和策の導入には注意が必要です。 このため、対策はアセンブリでプログラムする必要があります。これにより、このコードアーキテクチャが固有になります。

wolfBootの最新版1.11には、これらの対策の最初のバージョンを含んでいます。オープンソース版をダウンロードして、GPLプロジェクトの評価目的で使用いただけます。

グリッチとサイドチャネル攻撃の軽減をオンにしてwolfBootをコンパイルするには、構成オプションにARMORED = 1を追加するだけで十分です(つまり、makeを呼び出すときにコマンドラインを使用するか、.configファイルを使用します)。 ARMOREDオプションは、現在ARMCortex-Mアーキテクチャでサポートしています。 他のアーキテクチャのサポートは、将来追加予定です。

wolfBootに実装して欲しい機能は何かありますか? グリッチに強いセキュアブートメカニズムの恩恵を受ける可能性のある、まだサポートされていないアーキテクチャまたはプラットフォームはありせんか? 私達に教えてください!

ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについてはsupport@wolfssl.comにお問い合わせください。

原文:https://www.wolfssl.com/secure-boot-glitching-attacks/