サイドチャネル攻撃 (サイドチャネルコウゲキ) とは | 意味や読み方など丁寧でわかりやすい用語解説
サイドチャネル攻撃 (サイドチャネルコウゲキ) の読み方
日本語表記
サイドチャネル攻撃 (サイドチャネルコウゲキ)
英語表記
side-channel attack (サイドチャネルアタック)
サイドチャネル攻撃 (サイドチャネルコウゲキ) の意味や用語解説
サイドチャネル攻撃とは、コンピュータやICカードなどのハードウェアが暗号処理などを行う際に、意図せず外部に漏洩する物理的な情報を利用して、内部の秘密情報を不正に取得する攻撃手法である。正規の通信経路であるメインチャネルとは異なり、その脇道(サイドチャネル)から漏れ出る情報を観測することからこの名が付けられた。漏洩する情報には、処理にかかる時間、消費電力、放射される電磁波、動作音、発熱といった物理的な現象が含まれる。従来の多くのサイバー攻撃がソフトウェアの脆弱性や設定ミスを標的とするのに対し、サイドチャネル攻撃は、暗号アルゴリズム自体に数学的な欠陥がなくても、それを実装しているハードウェアの物理的な特性を突くという点に特徴がある。この攻撃により、暗号アルゴリズムの根幹をなす暗号鍵や、認証に使われるパスワードといった極めて重要な秘密情報が盗み出される危険性がある。 サイドチャネル攻撃には、観測する物理情報や解析手法によっていくつかの種類が存在する。代表的なものとしてタイミング攻撃が挙げられる。これは、特定の処理にかかる時間の差異を測定し、その差から内部の情報を推測する手法である。例えば、暗号処理において、特定の鍵ビットが0の場合と1の場合で計算経路が異なり、処理時間がわずかに変化することがある。攻撃者はこの微小な時間差を多数回測定し、統計的に解析することで、秘密鍵の値を1ビットずつ特定していく。 次に、電力解析攻撃は、デバイスが動作する際の消費電力の変化を観測する手法である。CPUや専用の暗号処理チップは、実行する命令の種類や処理するデータの内容に応じて消費電力が変動する。この電力消費の波形を精密に測定・分析することで、どのような処理が行われているか、ひいては暗号鍵などの秘密情報を推測する。単純な波形パターンから情報を読み取る単純電力解析(SPA)と、多数の波形データを統計処理してノイズに埋もれた微細な相関関係を見つけ出す、より強力な差分電力解析(DPA)がある。 デバイスから放射される電磁波を解析する電磁波解析攻撃も存在する。これは電力解析攻撃と原理的に類似しているが、デバイスに直接触れることなく、離れた場所からアンテナで電磁波を受信して情報を盗み出すことができる非接触型の攻撃である。CPUやメモリ、バスといった内部コンポーネントの動作に伴って発生する電磁波のパターンを分析し、内部のデータや処理内容を特定する。 また、近年のクラウドコンピューティング環境などで脅威となっているのがキャッシュ攻撃である。これはCPUのキャッシュメモリへのアクセスパターンを悪用する攻撃手法だ。CPUは処理を高速化するため、頻繁に使うデータをキャッシュと呼ばれる高速なメモリに一時的に保存する。攻撃者は、標的となるプログラムと同じ物理CPU上で自身のプログラムを動作させ、標的のプログラムがキャッシュメモリのどの領域を使用したかを観測する。キャッシュにデータが存在する場合(キャッシュヒット)と存在しない場合(キャッシュミス)ではメモリアクセス速度に大きな差が生じるため、この時間差を利用して、標的がどのようなデータを処理しているか、あるいは暗号アルゴリズムのどの部分を実行しているかを推測できる。 これらのサイドチャネル攻撃への対策は、ハードウェアとソフトウェアの両面から行われる。ハードウェアレベルの対策としては、まずマスキング技術がある。これは、処理中のデータに乱数を混ぜ込み、処理後にその影響を取り除くことで、本来のデータと物理的な漏洩情報との間の直接的な相関関係を断ち切る手法である。これにより、消費電力や電磁波のパターンがランダム化され、解析が困難になる。また、処理内容によって生じる物理的な差異を隠蔽する手法も重要である。例えば、どのようなデータが入力されても処理時間が一定になるようにダミーの処理を挿入したり、常に一定の電力を消費するように回路を設計したりすることで、タイミング攻撃や電力解析攻撃を防ぐ。物理的に電磁波の漏洩を防ぐため、デバイスを金属製の遮蔽物で覆うシールドも有効な対策となる。 ソフトウェアレベルでは、コンスタントタイム実装が重要な対策の一つである。これは、入力値によらず常に一定時間で処理が完了するようにプログラムを記述する手法であり、特に暗号ライブラリなどでタイミング攻撃を防ぐために用いられる。また、ブラインディングと呼ばれる手法も存在する。これは、暗号処理を行う前に秘密情報に乱数を組み合わせ、処理全体が終わった後にその乱数の影響を取り除くことで、計算の途中経過から元の秘密情報を推測されることを防ぐ技術である。サイドチャネル攻撃は、物理的な実装の細部にまで目を向けた高度な攻撃であり、安全なシステムを構築するためには、アルゴリズムの正しさに加えて、こうした物理的な漏洩への対策が不可欠となる。