Articles

サイドチャネル攻撃

サイドチャネル攻撃は、サイドチャネルを介して放出(漏洩)された情報と秘密データとの関係に依存するため、対策は主に二つのカテゴリーに分類される。: (1)そのような情報のリリースを排除または削減し、(2)漏洩した情報と秘密データとの関係を排除する、すなわち、漏洩した情報を秘密データと無関係に、またはむしろ相関しないようにする。

最初のカテゴリでは、電磁放射を軽減し、テンペスト攻撃に対する感受性を低減するための特別な遮蔽を備えたディスプレイが市販されています。 電力線の調整とフィルタリングは、電力監視攻撃を抑止するのに役立ちますが、非常に小さな相関関係であってもセキュリティが損なわれる可能性があるため、このような対策は慎重に使用する必要があります。 物理的なエンクロージャは(音響攻撃に対抗するために)マイクロフォンおよび他のマイクロ監視装置の秘密の取付けの危険を減らすことができる(CPUの電力消費または熱イメージ投射攻撃に対して)。

もう一つの対策(まだ最初のカテゴリにある)は、放出されたチャネルをノイズでジャムすることです。 たとえば、ランダムな遅延を追加してタイミング攻撃を抑止することができますが、敵は複数の測定値を平均化することによって(または、より一般的には、分析でより多くの測定値を使用することによって)これらの遅延を補うことができます。 サイドチャネル内のノイズの量が増加するにつれて、敵はより多くの測定値を収集する必要があります。

最初のカテゴリの別の対策は、セキュリティ分析ソフトウェアを使用して、基礎となるハードウェア自体の設計段階で発見される特定のクラスのサイドチャネル攻撃を特定することです。 タイミング攻撃とキャッシュ攻撃は、攻撃の脆弱性自体を識別するためのテストと、脆弱性を回避するためのアーキテクチャ変更の有効性を可能にする特定の市販のセキュリティ分析ソフトウェアプラットフォームを通じて識別可能です。 この対策を採用するための最も包括的な方法は、ハードウェア開発ライフサイクルのそれぞれの段階で利用可能なすべてのセキュリティ分析プラッ

計算時間が離散クロックサイクルカウントに量子化されているターゲットに対するタイミング攻撃の場合、有効な対策は、秘密値とは無関係に、ソフ これはタイミング攻撃を不可能にします。 このような対策は、個々の命令でさえ、いくつかのCpu上で可変タイミングを持つことができるので、実際に実装することは困難である可能性がある。

差動電力解析攻撃ではなく、単純な電力攻撃に対する部分的な対策の1つは、”プログラムカウンタセキュリティモデル”で”PC-secure”になるようにソフ PC-secureプログラムでは、実行パスはシークレット値に依存しません。 言い換えれば、すべての条件分岐は公開情報にのみ依存します。(これはアイソクロナスコードよりも制限的な条件ですが、ブランチフリーコードよりも制限的な条件ではありません。)乗算操作は、実質的にすべてのCpuでNOPよりも多くの電力を消費しますが、一定の実行パスを使用すると、このような操作に依存する電力の違い(ある分岐を別の分岐を選択することによる電力の違い)が秘密情報を漏らすことを防ぎます。命令の実行時間がデータに依存しないアーキテクチャでは、PCセキュアプログラムもタイミング攻撃に免疫があります。

コードが非アイソクロナスになる別の方法は、現代のCpuがメモリキャッシュを持っていることです: 頻繁に使用されない情報にアクセスすると、大きなタイミングペナルティが発生し、メモリブロックの使用頻度に関するいくつかの情報が明ら キャッシュ攻撃に抵抗するように設計された暗号化コードは、予測可能な方法でのみメモリを使用しようとします(入力、出力、プログラムデータのみにア たとえば、参照テーブルのどの部分がアクセスされたかをキャッシュが明らかにする可能性があるため、データ依存のテーブル参照を避ける必要があ

他の部分的な対策は、データ依存の電力差から漏洩した情報の量を減らすことを試みます。一部の操作では、秘密値の1ビット数に相関する電力を使用します。一定重みコードを使用すると(Fredkin gatesやデュアルレールエンコーディングなど)、秘密値のハミング重みに関する情報の漏洩を減らすことができますが、バランシングが完璧でない限り悪用可能な相関が残る可能性があります。 この「平衡設計」は、データとその補数の両方を一緒に操作することによって、ソフトウェアで近似することができます。

いくつかの”安全なCpu”は非同期Cpuとして構築されています。 これらのCpuはタイミング攻撃とパワー攻撃をより困難にすることを意図していましたが、その後の研究では、非同期回路のタイミング変動を除去す第二のカテゴリー(非相関)の典型的な例は、盲目化として知られている技術である。

秘密指数d{\displaystyle d}

d

と対応する暗号化指数e{\displaystyle e}

e

とモジュラスm{\displaystyle m}

m

を持つRSA復号の場合、技術は次のように適用されます(簡単にするために、式ではmによるモジュラー還元は省略されています): 復号化する前、つまりy d{\displaystyle y^{d}}

y^d

与えられた暗号文y{\displaystyle y}

y

の結果を計算する前に、システムは乱数r{\displaystyle r}

rを選ぶ。

そしてそれを公開指数e{\displaystyle e}

e

で暗号化してr e{\displaystyle r^{e}}

r^e

を得る。 次に、(y∈r e)d=y d∈r e≤d=y d∈r{\displaystyle{(y\cdot r^{e})}d{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}

y\cdot r^e

で復号化が行われ、(y∈r e)d=y d∈r e≤d=y d∈r{\displaystyle{(y\cdot r^{e})}d{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}iv{d=y^d\cdot r^{e\cdot d}=y^d\cdot t 復号化システムはr{\displaystyle r}

r

を選択したので、その逆モジュロm{\displaystyle m}

m

を計算して因子r{\displaystyle r}

r

をキャンセルすることができる。結果とy d{\displaystyle y^{d}}

y^d

、復号化の実際の結果を得る。 攻撃者によって制御されたデータを使用した操作からサイドチャネル情報を収集する必要がある攻撃では、実際の操作は攻撃者が制御も知識も持たないデータのランダム化されたバージョンで実行されるため、blindingは効果的な対策です。

より一般的な対策(すべてのサイドチャネル攻撃に対して有効であるという点で)は、マスキング対策です。 マスキングの原理は、敏感な値y{\displaystyle y}

y

を直接操作するのを避けることであるが、むしろそれの共有を操作することである。: 変数のセット(“株式”と呼ばれます)y1,. . . ,y d{\displaystyle y_{1},…,y_{d}}

y_{1},...、y_{d}

y=y1 1となるようにします。 . . ⊕y d{\displaystyle y=y_{1}\oplus…\oplus y_{d}}

{\displaystyle y=y_{1}\oplus...\oplus y_{d}}

(ここで、⊕{\displaystyle\oplus}

\oplus

はXOR演算です)。 攻撃者は、意味のある情報を取得するために、共有のすべての値を回復する必要があります。

最近、ホワイトボックスモデリングを利用して、EMとパワーサイドチャネル攻撃の両方に対する低オーバーヘッドの一般的な回路レベルの対策を開発し より効率的なアンテナとして機能するIC内の高レベルの金属層の影響を最小限に抑えるために、暗号コアに署名抑制回路を埋め込み、低レベルの金属層内で局所的にルーティングし、電力とEMサイドチャネルの両方の攻撃耐性につながるようにすることを考えています。