フォールト攻撃とは
最終更新日:2022.09.06ICTデバイスにおけるセキュリティの基本
フォールト攻撃(フォールト注入攻撃、Fault Injection)とは、稼働中のデバイスに対しフォールト(誤り・故障)を注入することで意図的に誤動作を引き起こすハードウェアへの攻撃です。
フォールトを注入することで内部処理に変化が起こります。その変化をサイドチャネル攻撃により解析することで暗号鍵の推測を行なったり、コンピュータシステムが持つ認証機能をパスする攻撃を成立させる方法が提示されています。
フォールト攻撃にはいくつか種類があります。
ここでは、各フォールト攻撃の種類とその特徴について解説していきます。
目次
フォールト攻撃の種類
何を誤りとして注入するかによって、種類が異なります。
クロックグリッチ攻撃
デバイス内での様々な命令は一定の周波数で出力されるクロックに沿って動作します。
このクロックにグリッチ(=異常・故障)が混入してしまうと、そのクロックで実行されるはずであった処理がパスされ、異常が生じます。
例えば認証の命令実行タイミングにクロックグリッチの発生タイミングを合わせることで、本来実行されるはずであった認証処理をパスするような用途で用いられます。
電圧グリッチ攻撃
電圧グリッチは、狙ったタイミングで電圧を印加したり、逆に電圧をマイナスすることで誤動作を起こす攻撃手法です。つまり外部からパルス形状を改変するタイプの故障注入攻撃です。
レーザーフォールト攻撃
レーザーを照射することによりフォールトを注入します。具体的には、トランジスタにレーザー光を照射することで、照射部分のビットデータ(0/1)を書換える手法が提示されています。データを書換えた結果、処理に差異が生じます。その差異を観測することで暗号鍵を推測する方法が提示されています。
フォールト攻撃の有効性
フォールト攻撃は能動的に攻撃ポイントにアタックするものであり、受動的な観測を行なうサイドチャネル攻撃に比べ防御側も考慮しなければならないことが増加する強力な攻撃手法であると言えます。
では、そのような攻撃に対してどう対応していけば良いでしょう?
フォールト攻撃への対応・対策
対策にはフォールト注入を検知して電源を遮断する機能を組み込む、故障を検知した際に秘密情報を破壊する方式等が考案されているほか、ソフトウェア面からの対策もあります。
ソフトウェアからフォールト攻撃に対策する
ハードウェアからの攻撃に対してソフトウェアで対策するというのは不思議に思うかもしれませんが、フォールト攻撃が行なうことは攻撃対象となるコンピュータシステムの内部処理を変化させることであるため、その変化に対して強い実装のソフトウェアとする、または耐タンパー性を持たせ差分の観測が難しいようプログラミングすることは重要です。
しかし、フォールト攻撃への対応は専門の知見を要することであり、一般的な組込計ソフトウェアのセキュアコーディング規約を用いたとしても守ることができません。
フォールト攻撃を再現し攻撃に備えるセキュリティ対策ツール
組込ソフトウェア開発におけるセキュリティの確保としてCERT CやMISRA-Cなどのセキュアコーディング規約に遵守しコーディングを行ない、さらに静的解析ツールを使用してリスク要因を除去するということは一般的に行なわれています。
しかし、それら一般的な静的解析ツールではフォールト攻撃に対応していません。
そこで、フォールト攻撃を再現するための研究用のツールを活用し、攻撃者の行動をシミュレートすることで事前にリスクを回避しましょう。
Riscure社はオランダのセキュリティ企業で、各国の政府機関やテストベンダー、メーカーへフォールト攻撃を再現するテスト機器やソフトウェア製品を提供する、情報通信・暗号機器に対するセキュリティの専門企業です。
実デバイスに対しフォールト攻撃を再現するテストツール Inspector FIは、このフォールト攻撃専門家の知見に基づき開発されています。
お問い合わせ
ソリューション製品の導入に関するご相談などお気軽にご相談ください。