Wikiwand AI

サイドチャネル攻撃

コンピュータシステムの実装から得られる情報を元にした暗号解読の攻撃 From Wikipedia, the free encyclopedia

サイドチャネル攻撃(サイドチャネルこうげき、英語: side-channel attack)とは、コンピュータセキュリティの分野において、アルゴリズムの実装自体の弱さ(例:暗号そのものに対する解読やソフトウェアのバグ)ではなく、コンピュータシステムの実装から得られる情報を元にした暗号解読の攻撃のことである。タイミング情報、電力消費、電磁放射線のリーク、ときには音響放出さえも、追加の情報源となって悪用される可能性がある。

RSAキーのビットを電力解析でデコードする試み。左のピークは、乗算を使用しないアルゴリズム(英語版)のステップ中のCPU電力の変動を表しており、右の(幅の広い)ピークは乗算を使用するアルゴリズムのステップを表している。この差により、攻撃者はビットの0と1を読み取れる。

これらの攻撃は、暗号のプロトコルやアルゴリズムの設計の欠陥を標的とする攻撃とは異なる(ただし、暗号解読によって両方のタイプの攻撃に関連する脆弱性が特定される可能性はある)。

一部のサイドチャネル攻撃には、システムの内部操作に関する技術的な知識を必要とするものもあるが、差分電力解析などはブラックボックス攻撃として効果的である。Microsoft Researchとインディアナ大学の研究者によると、ブラウザとサーバー間の通信がHTTPSやWiFi encryptionで暗号化されていても、Web 2.0アプリケーションとsoftware-as-a-serviceの興隆により、ウェブ上のサイドチャネル攻撃の可能性が大幅に高まった。多くの強力なサイドチャネル攻撃は、Paul Kocher(英語版)によって開拓された統計的手法を元にしている。

正当なアクセス権を持つ人々を欺いたり強要したりして暗号システムを破壊しようとする試みは、通常、サイドチャネル攻撃とは見なされない。こうした手法については、ソーシャル・エンジニアリングと締め上げ暗号分析を参照。

概要

暗号学では古来、暗号の強度について暗号の理論的なそれ自体の強度(学理的強度)だけではなく、その運用など広い範囲で「いんちきな方法で掠め取る」ような手法(たとえば通信の担当者を買収する)に対する強度も考慮の必要があった[要出典]。暗号システムの「最も弱いリンク」は、暗号の理論の外側の搦め手の要素かもしれない、ということである。

コンピュータが利用される現代の暗号の攻撃法においても、既知平文攻撃や選択暗号文攻撃などのように、平文や暗号文にはアクセスできるが暗号処理はブラックボックスで行うものとしたものばかりではなく、何らかの方法で処理そのものを盗み見るなどといった手法も考慮する必要がある。もともと暗号に限らないより広い情報セキュリティの考え方として、情報の正規の出入口ではないチャネル(サイドチャネル)を利用した情報の漏洩についての研究があり(漏洩電磁波の記事なども参照[注釈 1])、それの現代的暗号学への応用である。たとえば、暗号機能付きのICカードなどのように攻撃者が処理時間や消費電力を精密に測定できる場合には、平文や暗号文だけではなく、これらのサイドチャネルから漏洩する情報も考慮することが必要である。

実際、GSMカードの中には、動作中の消費電力を測定することで秘密鍵を特定できるものがあることが指摘されている[1]。

前述のように暗号学的にも情報セキュリティ的にも以前からある考え方だが、ICカードマネーなど社会的に重要な応用に密接に関連することからそういったシステムが一意に出回り始めた1990年代後半に研究発表が目立つようになり、2000年代にCRYPTRECやNESSIEなどの暗号評価プロジェクトにより暗号方式のリストが作成された頃に「暗号方式が安全であっても暗号の実装が脆弱であると暗号を安全に利用することはできない」として、暗号分野の研究テーマの一つとして研究が盛んになった。

分類

具体的な攻撃方法としては、処理時間に注目したタイミング攻撃や、消費電力に注目した電力解析攻撃(power analysis attack)、装置から漏洩する電磁波(漏洩電磁波)に注目した電磁波解析攻撃などがある。またこれらの研究の発達に対応するように、その動作を観測しても情報を推測不可能・困難なコンピュータハードウェアやアーキテクチャの研究も行われている。

キャッシュ攻撃(キャッシュサイドチャネル攻撃)

仮想化環境やクラウドサービスの一種などの共有物理システムにおいて、被害者が行ったキャッシュへのアクセスを攻撃者が監視する能力に基づく攻撃。AESのTテーブルエントリ[2][3][4]や、モジュラーべき乗計算、乗算、あるいはメモリアクセスなどのセキュリティ上重要な操作を監視することによって機能する[5]。攻撃者はその後、被害者が行った(または行わなかった)アクセスに応じて秘密鍵を復元し、暗号鍵を推測することができる。また、他のいくつかのサイドチャネル攻撃とは異なり、この手法は進行中の暗号操作にフォールトを作成せず、被害者には見えない。

キャッシュサイドチャネル攻撃、キャッシュベース攻撃とも言われる。

タイミング攻撃

様々な計算(例えば、攻撃者が与えたパスワードと被害者の未知のパスワードを比較するなど)を実行するのにかかる時間を測定することに基づく攻撃。暗号操作の実行にかかる時間の変動を観察するだけで、秘密鍵全体を特定できる可能性がある[6]。このような攻撃にはタイミング測定の統計的分析が含まれ、ネットワーク越しでも実証されている[7]。

時間差攻撃、処理時間解析攻撃、タイミング解析とも言われる。

電力解析攻撃

計算中のハードウェアによる消費電力の変動を利用する攻撃。CPUや暗号回路などのハードウェアデバイスの消費電力を観察することで、さらに詳細な情報を提供することができる。これらの攻撃は、単純電力解析(Simple Power Analysis、SPA)と差分電力解析(Differential Power Analysis、DPA)、相関電力解析(Correlation Power Analysis、CPA)に大まかに分類される。一つの例として、ほぼすべてのCPUに影響を与えるCollide+Powerがある[8][9][10]。他の例では機械学習のアプローチが使用されている[11]。

電磁波解析攻撃

暗号処理を行っているハードウェア(ICカードやCPUなど)から放射される微小な漏洩電磁波を測定・分析し、暗号の秘密鍵を復元する攻撃手法。電力解析攻撃と同様に、測定した電磁波の波形に対して高度な統計的手法(DEMAなど)を用いて解析を行う。ディープラーニングを利用した攻撃では、複数のデバイス間で電力と電磁波の情報を使用し、たった1つのトレースで、異なるが同一のデバイスの秘密鍵を解読する可能性があることが実証されている[12][13][14]。

EMA (Electromagnetic Analysis)、SEMA (Simple EMA)、DEMA (Differential EMA)とも言われる。

テンペスト攻撃

電子機器から意図せず放射される微弱な電磁波を遠隔から傍受し、機器で扱われている情報そのものを復元する攻撃手法。主に諜報活動などの文脈で語られることが多い。PCのディスプレイ、キーボードの入力内容、タッチパネルでの入力内容などが対象となる場合がある。テンペスト攻撃(TEMPEST attack)と呼ばれる。TEMPESTとは「Telecommunications Electronics Material Protected from Emanating Spurious Transmissions」の略称である。

音響解析攻撃

計算中に発生する音を悪用する攻撃。デバイスの消費電力は発熱を引き起こし、それは冷却効果によって相殺される。温度変化は熱起因の機械的応力を生み出す。この応力は、動作中のCPUから低レベルの音響エミッション(一部のケースでは約10kHz)を発生させる可能性がある。アディ・シャミアらによる最近の研究は、暗号システムやアルゴリズムの動作に関する情報がこの方法でも取得できることを示唆している。これは音響暗号解読攻撃である。

音響サイドチャネル攻撃、アコースティック攻撃とも言われる。

コールドブート攻撃

削除されたはずの機密データが読み取られる攻撃。

差分故障解析

暗号処理中のデバイスにレーザーや電圧変動などの物理的負荷をかけて意図的に故障(フォールト)を誘発させ、正常な暗号文と誤った暗号文(フォールト暗号文)の差分から秘密鍵を特定する手法。

DFA(Differential Fault Analysis)と略される。差分故障解析、故障利用攻撃、フォールト注入攻撃(Fault Injection Attack、FIA)とも言われる。

ソフトウェアベースのフォールト注入攻撃

隣接するメモリを頻繁にアクセスしすぎることでアクセス制限されたメモリが変更される可能性がある(状態保持の喪失を引き起こす)。現在はまれなサイドチャネルのクラスであり、一例であるRowhammerと言われることもある。

挙動ベースのサイドチャネル攻撃

ホワイトリスト登録されたデバイスは、ホワイトリスト登録されたデバイス(応答を送り返す)およびホワイトリスト登録されていないデバイス(デバイスに全く応答しない)と通信する際に異なる挙動をするという事実に基づく攻撃。このようなサイドチャネル攻撃は、BluetoothのMACアドレスを追跡するために使用される可能性がある。

光学サイドチャネル攻撃

高解像度カメラなどによる視覚的記録によって、秘密や機密データが読み取られる可能性のある攻撃。光学サイドチャネル攻撃の例としては、ハードディスクのアクセスランプから情報を収集すること[15]や、トランジスタの状態が変化する際に放出される少数の光子を読み取ることなどが挙げられる[16]。また、CPUチップの表面を撮影した赤外線画像も、CPUで実行されているコードに関する情報を提供することができる。これは「熱画像攻撃」として知られている[要出典]。光解析攻撃、視覚的サイドチャネル、フォトニックサイドチャネルとも言われる。

リソース競合攻撃

割り当てベースのサイドチャネルも存在し、競合するリソースを同時に要求しているクライアントへの、ネットワーク帯域幅などのリソースの割り当て(使用とは対照的に)から漏洩する情報を指す[17]。

全ての場合において、根底にある原理は、暗号システムの動作によって引き起こされる物理的な副次的効果が、システム内の秘密(例えば、暗号鍵、部分的な状態情報、完全または部分的な平文など)に関する有用な追加情報を提供する可能性があるということである。暗号の劣化(secret degradation)という用語は、サイドチャネルの漏洩によって秘密鍵の素材が劣化することを表すために使用されることがある。

歴史

初期のサイドチャネル攻撃

最近機密解除されたNSAの文書によると、1943年にはすでにベル電話会社のエンジニアが、特定の暗号化テレタイプ機の復号出力に関連付けられた、オシロスコープ上の解読可能なスパイクを観察していた[18]。元MI5将校のピーター・ライトによると、イギリスの保安局は1960年代にフランスの暗号装置からの放射を分析していた[19]。

1980年代には、ソ連の盗聴者がIBMのセレクトリック・タイプライター内部に盗聴器を仕掛け、タイプボールが回転し傾いて紙を打つ際に発生する電気ノイズを監視していたと疑われている。これらの信号の特徴から、どのキーが押されたかを特定することが可能であった[20]。

時間に着目した攻撃の誕生

1995年12月7日にKocherがWEBでタイミング攻撃の概要を発表した[21]。直後の1995年12月11日に、RSA社はChaumのブラインド署名方式[22]を利用して効果的に処理時間を隠す対処方法を公開。1996年夏に、CRYPTOの発表で詳細が示された[23]。

1996年9月25日、BellcoreのWEBにて、BonehらによるICカードなどの耐タンパーデバイスに対する新たな攻撃法である、フォールト解析攻撃(故障利用攻撃)が公開された[24]。RSAなどのような公開鍵暗号の処理中に計算誤りが発生すると、誤った出力と正しい出力を比較することで、秘密鍵を特定できる脅威があるため、暗号処理中のICカードに何かしらの物理的操作を行うことで意図的にエラーを発生させることで攻撃できる、というものである[24]。

この攻撃では公開鍵暗号が対象であったが、1996年10月、BihamらはDESなどの共通鍵暗号の秘密鍵を攻撃できる方法を発表した[25][26]。これは、フォールト解析攻撃(Fault Analysis Attack)とも呼ばれる。

ICカードの普及と電力解析

1998年、KocherらがWEBで差分電力解析(DPA)を発表し[27]、6月9日頃からニュース記事などで話題になった[28][29]。それによるとICカードなどの暗号デバイスの消費電力はデバイスの処理内容と相関があるため、消費電力を測定して統計処理すると処理内容に関する情報(秘密鍵やPIN等)を取り出すことができるという。SPA/DPA/HO-DPAの3種類の攻撃が提案され、例としてDPAでDES秘密鍵を求めるアルゴリズムの概要が示されている。CRYPTO'98のランプセッションにて概要説明(6分)があった後、翌年のCRYPTOで詳細が発表された[30]。単純電力解析(Simple Power Analysis、SPA)、差分電力解析(Differential Power Analysis、DPA)など。DPAは当初は共通鍵暗号向けの攻撃がメインではあるものの、MessergeらによりDES向けのデータやアドレスを用いた攻撃が1999年に提案された[31]。その後、2001年に、公開鍵暗号向けのDPAとして、Joyeらは内部データを用いる攻撃を提案し[32]、2002年には富士通研究所の伊藤らがCHESにて、レジスタのアドレスのみに注目した攻撃を提案した[33]。双方ともに論文中で楕円曲線暗号を使用している[32][33]。

手法の多様化

2001年5月のCHESで、Gandolfiらにより、デバイスから放射される電磁波を利用した電磁波解析攻撃(テンペスト攻撃)が発表された。DESやRSA実行中に放射される漏洩電磁波を測定分析すると秘密鍵を特定できるという具体的な方法が示された。

2002年10月のISITAで、Tsunooらにより、CPUのキャッシュメモリのアクセス時間の差を利用したキャッシュ攻撃が発表された。キャッシュ付CPUでは、キャッシュヒットの有無によりメモリアクセス時間が異なることを利用すると、ブロック暗号に対してタイミング攻撃が可能であることが、具体的に示された。

2004年5月4日、EUROCRYPTのrump sessionで、Tromerらにより、計算機が動作中に発するノイズ(10~50kHz)を分析することで処理内容を判別するという音響解析攻撃が発表された[34]。LSI動作中の発熱等で物理的振動が発生してノイズとなり、このノイズにはCPUなどの動作状況について情報を豊富に含んでいるという。音に関しては、古くは機械式暗号の動作音やドットマトリクスプリンタの発する音を分析する攻撃、最近ではキー押下時に発する音を分析する攻撃[35]などもある。

2017年に2つのCPUの脆弱性(MeltdownとSpectreとよばれる)が発見された。これらのキャッシュの脆弱性が用いられた場合、プロセスやオペレーティングシステム自体のメモリ内容が攻撃者に漏洩する可能性があり、世界的に話題となった。

対策

サイドチャネル攻撃に対抗するための対策には、主に2つのカテゴリーがある。

  1. 漏出の排除または削減:これには、攻撃者が悪用する可能性のある電磁波の放射やタイミングの変動など、信号の意図しない放出を最小限に抑えることが含まれる。
  2. 機密データの変換:通常はランダム化が用いられる。
    • 暗号化操作が、機密データと相関する可能性のある情報を漏洩させない。
    • 暗号化操作後の後続の変換により、意図した結果が復元される。

漏出の排除または削減

  • 電磁波の放射を低減するための特殊なシールドを備えたディスプレイが現在市販されており、TEMPEST攻撃への感受性を低下させている。電力線の調整とフィルタリングは電力監視攻撃の抑止に役立つが、ごくわずかな相関であっても残存してセキュリティを損なう可能性があるため、このような対策は慎重に使用する必要がある。物理的なエンクロージャーは、マイクの秘密裏の設置(音響攻撃に対抗するため)やその他のマイクロ監視デバイス(CPUの電力消費や熱画像攻撃に対抗するため)のリスクを軽減することができる。
  • 放出されるチャネルをノイズで妨害する方法もある。例えば、タイミング攻撃を抑止するためにランダムな遅延を追加することができるが、攻撃者は複数の測定値を平均化する(あるいはより一般的に、分析により多くの測定値を使用する)ことによってこれらの遅延を補償することができる。サイドチャネルのノイズ量が増加すると、攻撃者はより多くの測定値を収集する必要がある。
  • セキュリティ分析ソフトウェアを使用して、基盤となるハードウェア自体の設計段階で発見できる特定のクラスのサイドチャネル攻撃を特定することである。タイミング攻撃とキャッシュ攻撃はどちらも、特定の市販のセキュリティ分析ソフトウェアプラットフォームを通じて特定可能であり、攻撃の脆弱性自体や、脆弱性を回避するためのアーキテクチャの変更の有効性を特定するためのテストを可能にする。この対策を採用するための最も包括的な方法は、ハードウェア開発ライフサイクルのそれぞれの段階で利用可能なすべてのセキュリティ分析プラットフォームを活用することを含む、ハードウェアのセキュア開発ライフサイクルを作成することである[36]。
  • 計算時間が離散的なクロックサイクル数に量子化されているターゲットに対するタイミング攻撃の場合、効果的な対策は、秘密の値に依存せず、正確に一定の時間で実行されるように、つまりアイソクロナス(等時性)になるようにソフトウェアを設計することである。これによりタイミング攻撃は不可能になる[37]。個々の命令でさえ一部のCPUではタイミングが変動する可能性があるため、このような対策を実際に実装するのは難しい場合がある。
  • 単純電力解析(SPA)に対する部分的な対策としては、「プログラムカウンタセキュリティモデル」においてソフトウェアが「PCセキュア」になるように設計することである。PCセキュアなプログラムでは、実行パスは秘密の値に依存しない。言い換えれば、すべての条件分岐は公開情報のみに依存する。(これはアイソクロナスなコードよりも制限の厳しい条件であるが、分岐のないコードよりも制限の緩い条件である。)実質的にすべてのCPUにおいて、乗算演算はNOPよりも多くの電力を消費するが、一定の実行パスを使用することで、このような演算に依存する電力差(ある分岐を別の分岐よりも選択することによる電力差)から機密情報が漏洩するのを防ぐことができる[37]。命令の実行時間がデータに依存しないアーキテクチャでは、PCセキュアなプログラムはタイミング攻撃に対しても免疫がある[38][39]。
  • コードが非アイソクロナスになるもう一つの理由は、最新のCPUがメモリキャッシュを持っていることである。頻繁に使用されない情報にアクセスすると大きなタイミングのペナルティが発生し、メモリブロックの使用頻度に関する情報が一部明らかになる。キャッシュ攻撃に抵抗するように設計された暗号コードは、予測可能な方法(入力、出力、プログラムデータのみにアクセスし、固定パターンに従ってそうするなど)でのみメモリを使用しようと試みる。例えば、キャッシュがルックアップテーブルのどの部分にアクセスしたかを明らかにする可能性があるため、データ依存のテーブルルックアップは避けなければならない。
  • データ依存の電力差から漏洩する情報量を減らすことを試みる。一部の演算は、秘密の値の1ビットの数に相関する電力を使用する。定重み符号(フレドキンゲートやデュアルレールエンコーディングなど)を使用すると、秘密の値のハミング重みに関する情報の漏洩を減らすことができるが、バランスが完全でない限り、悪用可能な相関が残る可能性が高い。この「バランスの取れた設計」は、データとその補数の両方を一緒に操作することによってソフトウェアで近似することができる[37]。
  • いくつかのセキュアCPUにおいては非同期CPUとして構築されている。非同期CPUはグローバルなタイミング参照を持たない。タイミング攻撃や電力攻撃をより困難にすることを意図していたが[37]、その後の研究で、非同期回路におけるタイミングの変動を取り除くのはより困難であることが判明した[40]。
  • 近年、ホワイトボックスモデリングを利用して、EMおよび電力サイドチャネル攻撃の両方に対する低オーバーヘッドの汎用回路レベルの対策[41]が開発された。ICのより上位のメタル層がより効率的なアンテナとして機能する影響を最小限に抑えるために[42]、下位のメタル層内に局所的にルーティングされたシグネチャ抑制回路[43][44]を暗号コアに埋め込むというアイデアであり、これにより電力とEMの両方のサイドチャネル攻撃に対する免疫がもたらされる。

ブラインディング

メッセージの暗号化の対策として、ブラインディング(マスキング)はすべてのサイドチャネル攻撃に対して有効である。ブラインディングの原理は、機密値 $y$ を直接操作するのを避け、代わりにそれを共有するもの、すなわち $y = y_1 \oplus ... \oplus y_d$(ここで $\oplus$ はXOR演算)となるような変数のセット(「シェア」と呼ばれる) $y_1, ..., y_d$ を操作することである。攻撃者は意味のある情報を得るために、すべてのシェアの値を回復しなければならない[45]。

秘密指数 $d$ と対応する暗号化指数 $e$ およびモジュラス $m$ を持つRSA暗号の復号の場合[6][7]、この手法は次のように適用される(簡略化のため、モジュラス $m$ による剰余は式から省略されている)。復号する前、つまり特定の暗号文 $y$ に対して $y^d$ の結果を計算する前に、システムはランダムな数 $r$ を選び、それを公開指数 $e$ で暗号化して $r^e$ を得る。次に、復号は $y \cdot r^e$ に対して行われ、${(y \cdot r^e)}^d = y^d \cdot r^{e\cdot d} = y^d \cdot r$ を得る。復号システムは $r$ を選択したため、その逆数モジュロ $m$ を計算して結果の係数 $r$ を相殺し、実際の復号結果である $y^d$ を得ることができる。「攻撃者が制御するデータ」を用いた操作からサイドチャネル情報を収集する必要がある攻撃に対しては、ブラインディングは効果的な対策となる。実際の操作はランダム化されたバージョンのデータに対して実行され、攻撃者はそのデータに対する制御や知識すら持たないからである。

注釈

  1. なお情報セキュリティ的には「サイドチャネル」には、電磁波のような電気的に発生するものだけではなく、ランダムな名前で作られるテンポラリファイル名に何らかの規則性を持たせる等のあらゆる、情報を載せることが可能な「キャリア」が考慮される。

関連項目

脚注

参考文献

外部リンク

Related Articles

Timelines

Top Qs

Fact Checks