

電力解析は、攻撃者が暗号化ハードウェアデバイスの消費電力を調査するサイドチャネル攻撃の一種です。これらの攻撃は、デバイスの基本的な物理的特性に基づいています。半導体デバイスは物理法則に従い、デバイス内の電圧変化にはごくわずかな電荷の移動(電流)が必要となります。これらの電流を測定することで、操作対象のデータに関する少量の情報を得ることが可能です。
単純電力解析( SPA ) は、電力トレース、つまり時間の経過に伴う電気活動のグラフを視覚的に解釈することを含みます。 差分電力解析( DPA ) は、より高度な電力解析の形式で、攻撃者が複数の暗号化操作から収集されたデータの統計分析を通じて、暗号化計算内の中間値を計算できるようにします。SPA と DPA は、1998 年にPaul Kocher、Joshua Jaffe、およびBenjamin Junによってオープン暗号コミュニティに紹介されました。[ 1 ]
暗号学において、サイドチャネル攻撃は、スマートカード、改ざん防止機能付きの「ブラックボックス」、集積回路などのセキュリティ保護されたデバイスから秘密データを抽出するために使用されます。サイドチャネル分析は通常、デバイスから暗号鍵やその他の秘密情報を非侵襲的に抽出することを目的としています。その簡単な例として、ドイツの戦車問題があります。戦車のシリアル番号から、戦車の生産データの詳細が分かります。物理セキュリティにおいては、非侵襲的な攻撃はピッキングに似ており、攻撃が成功しても攻撃者の痕跡は残りません。
単純電力解析(SPA)は、デバイスが時間経過とともに消費する電流のグラフを視覚的に分析するサイドチャネル攻撃の一種です。デバイスが異なる動作を実行すると、消費電力に変化が生じます。例えば、マイクロプロセッサが実行する命令によって、消費電力のプロファイルは異なります。
秘密の値に依存するコードフローは、電力消費監視を介してコードフローを漏洩させ(そして秘密の値も漏洩させる)、結果として漏洩することになります。簡単な例として、次のようなパスワードチェックを考えてみましょう。
bool check_password ( const char input []) { const char correct_password [] = "hunter2" ;if ( strlen ( input ) != strlen ( correct_password )) return false ;for ( int i = 0 ; i < strlen ( correct_password ); i ++ ) { if ( input [ i ] != correct_password [ i ]) { return false ; } }return true ; }このパスワードチェックは、実行時間が一定ではないため、タイミング攻撃の対象となる可能性があります。消費電力を監視すれば、実行されたループの回数が明らかになります。ただし、対策は可能です。例えば、応答が返される前に補償的な遅延を設けることで、関数がユーザーに悪用可能な結果を出力しないようにすることができます。あるいは、入力と秘密のパスワードの文字位置の不一致に関係なく、すべてのループを完了するようにコードを構成することもできます。タイミング攻撃のアルゴリズムのセクションで、そのようなサンプルコードを確認できます。
同様に、RSA実装における二乗演算と乗算演算は区別できる場合が多く、攻撃者が秘密鍵を計算できてしまう可能性がある。消費電力の変動幅が小さくても、標準的なデジタルオシロスコープであれば、データに起因する変動を容易に表示できる。周波数フィルタや平均化機能(オシロスコープに内蔵されているものなど)は、高周波成分を除去するためによく用いられる。
差分電力解析(DPA)は、暗号システムの消費電力測定値を統計的に解析するサイドチャネル攻撃の一種です。この攻撃は、秘密鍵を用いた演算中にマイクロプロセッサやその他のハードウェアの消費電力が変動するバイアスを利用します。DPA攻撃は信号処理と誤り訂正の特性を持ち、単純な電力解析では解析できないほどノイズが多い測定値から秘密情報を抽出できます。DPAを用いることで、攻撃者は脆弱なスマートカードやその他のデバイスによって実行される複数の暗号演算の消費電力測定値を解析し、秘密鍵を入手できます。
高次差分電力解析(HO-DPA)は、DPA攻撃の高度な形態です。HO-DPAでは、複数のデータソースと異なる時間オフセットを解析に組み込むことができます。HO-DPAは、解析が複雑で、ほとんどの脆弱なデバイスはSPAまたはDPAでより簡単に破ることができるため、SPAやDPAほど広くは行われていません。[ 2 ]
電力解析は、本来「改ざん防止」されているはずのハードウェアの内部を「覗き見る」手段を提供する。例えば、DESの鍵スケジュールでは、28ビットの鍵レジスタを回転させる。多くの実装では、最下位ビットが1かどうかをチェックする。1であれば、デバイスはレジスタを右にシフトし、左端に1を追加する。ビットが0であれば、1を追加せずにレジスタを右にシフトする。電力解析はこれらのプロセスを区別できるため、攻撃者は秘密鍵のビットを特定することができる。
数学的に強力だと考えられているAESやトリプルDESなどのアルゴリズムの実装も、電力解析攻撃によって容易に破られる可能性がある。結果として、電力解析攻撃はアルゴリズム暗号解読と実装セキュリティの要素を組み合わせたものと言える。
デバイスが敵対者の手に渡る可能性があるアプリケーションでは、電力解析に対する保護が一般的に重要な設計要件となります。電力解析は、有料テレビシステムで使用される条件付きアクセスモジュールに対しても使用されていると報告されています。[ 3 ]
電力解析攻撃を実行するために必要な機器は広く入手可能である。例えば、ほとんどのデジタルストレージオシロスコープは必要なデータ収集機能を備えており、データ分析は通常、一般的なPCを使用して行われる。
電力解析攻撃は、攻撃者の監視が通常受動的であるため、一般的にデバイス側で検知することはできません。さらに、この攻撃は非侵襲的です。そのため、物理的な筐体、監査機能、攻撃検出器などは効果がありません。したがって、暗号システムエンジニアは、デバイスの電力変動によって攻撃者が利用できる情報が漏洩しないようにする必要があります。
単純な電力解析によって、暗号ソフトウェアの実行における条件分岐の結果を容易に判別できます。これは、条件分岐が実行されたかどうかによってデバイスの動作(消費電力)が異なるためです。そのため、暗号ソフトウェアの実装において、条件分岐に影響を与える秘密値が存在しないように注意する必要があります。マイクロコードの違い、コンパイラによって導入される分岐、乗算器の消費電力の変動など、その他の変動要因も、SPAの脆弱性につながることがよくあります。
差分電力解析は、電力消費のわずかな偏りでも悪用可能な脆弱性につながる可能性があるため、防止がより困難です。対策戦略の中には、暗号化操作が、暗号化操作後も存続する何らかの数学的関係によって実際の値に関連付けられたデータに対して行われるように、アルゴリズムを変更するものがあります。1つのアプローチは、パラメータをブラインド化してその値をランダム化することです。DPA攻撃の有効性を低減するための他の対策戦略には、ハードウェアの変更が含まれます。チップの内部クロック周波数を変化させることで電気信号を非同期化することが検討されており、これは結果として従来のDPAのアルゴリズム強化につながります。[ 4 ] [ 5 ]