キャッシュ攻撃|サイバーセキュリティ.com

キャッシュ攻撃

キャッシュ攻撃(Cache Attack)は、コンピュータのキャッシュメモリのアクセスパターンを観測・解析することで、システム内の機密情報を推測するサイドチャネル攻撃の一種です。キャッシュは、CPUが頻繁にアクセスするデータを高速に処理するために使われるメモリで、CPUとメインメモリの間に位置しています。このキャッシュの特性を悪用し、キャッシュのヒットやミス(データがキャッシュにあるかないか)を観察することで、暗号鍵やパスワードなどの機密情報を推測することが可能です。

キャッシュ攻撃は、暗号処理中のキャッシュへのアクセスパターンから情報を得るため、特にAES、RSA、ECDSAなどの暗号アルゴリズムに対して効果を発揮し、ハイパーバイザーやクラウド環境でも攻撃が成立することから、非常に高度な脅威とされています。

キャッシュ攻撃の種類

キャッシュ攻撃にはいくつかの種類があり、それぞれ異なる方法でキャッシュメモリを利用して情報を推測します。

1. Prime+Probe攻撃

Prime+Probe攻撃は、キャッシュライン(キャッシュメモリの単位)にデータを配置し、その後のキャッシュミスの発生状況を監視する方法です。具体的には、攻撃者が特定のキャッシュラインにデータを事前に読み込み(Prime)、ターゲットがそのキャッシュを使用した後に自分のデータがキャッシュから消えているかどうかを確認(Probe)します。この手法により、ターゲットのアクセスパターンを把握し、暗号鍵の特定ビット情報を推測します。

2. Flush+Reload攻撃

Flush+Reload攻撃は、キャッシュに存在する共有メモリ(共有ライブラリなど)のキャッシュ状態を観察する手法です。攻撃者は特定のキャッシュラインをフラッシュ(強制的にキャッシュから消去)し、その後ターゲットがそのキャッシュラインを使用したかをリロードして確認します。リロードが速ければ、ターゲットがキャッシュラインにアクセスしたと判断できるため、アクセスパターンを利用して秘密情報を推測します。この方法は特に、同じハードウェアリソースを共有するクラウド環境や仮想環境で有効です。

3. Evict+Time攻撃

Evict+Time攻撃は、特定のキャッシュラインを占有してキャッシュからターゲットのデータを追い出し、ターゲットの処理時間の変動から情報を推測する手法です。ターゲットの処理時間が長ければ、キャッシュミスが発生していると判断し、アクセスパターンから機密情報を割り出します。この攻撃は、タイミング攻撃とキャッシュ攻撃を組み合わせた手法で、処理時間の違いからキャッシュの使用状況を推測します。

キャッシュ攻撃の仕組み

キャッシュ攻撃の基本的な仕組みは、ターゲットのアクセスパターンから、秘密情報の特定ビットやデータ内容を推測することです。以下の手順で実行されます。

  1. キャッシュの準備
    攻撃者はターゲットのプログラムがアクセスするであろうキャッシュラインを「Prime+Probe」や「Flush+Reload」などの方法で事前に準備します。
  2. キャッシュアクセスの監視
    ターゲットのプログラムがキャッシュを使用した後に、キャッシュがどのように変化したかを確認します。この際、キャッシュミスやアクセスパターンの観察を通じて、どのキャッシュラインが使用されたかを把握します。
  3. 統計的分析と情報の推測
    キャッシュのヒットやミスの情報を基に統計的分析を行い、アクセスパターンと秘密情報の相関を分析して暗号鍵や内部データを特定します。

キャッシュ攻撃の実行例

以下に、キャッシュ攻撃の代表的な例を挙げます。

1. AES暗号へのキャッシュ攻撃

AES(Advanced Encryption Standard)のサブキー生成において、特定のテーブルに対してアクセスパターンが発生します。Prime+Probe攻撃を利用して、このキャッシュアクセスのパターンを観測し、統計的に解析することで、暗号鍵の一部を推測することが可能です。

2. RSA暗号へのキャッシュ攻撃

RSA暗号のモジュラー乗算や累乗演算では、特定のビット値に応じたキャッシュアクセスの変動が生じます。Flush+Reload攻撃を用いて、処理におけるキャッシュミスやヒットのパターンを確認し、暗号鍵のビット情報を解読する手法です。

3. クラウド環境におけるキャッシュ攻撃

マルチテナントのクラウド環境では、異なるユーザーが同じ物理ハードウェアを共有するため、Flush+Reload攻撃やPrime+Probe攻撃を利用して、別のユーザーのアクセスパターンを観察し、機密情報を漏洩させるリスクがあります。

キャッシュ攻撃のリスクと影響

キャッシュ攻撃が成功すると、暗号システムやクラウド環境におけるプライバシーやセキュリティが侵害され、以下のような影響が考えられます。

  1. 暗号システムの崩壊
    暗号鍵が漏洩することで、暗号化データの解読が可能になり、通信データの盗聴や情報漏洩のリスクが生じます。
  2. クラウド環境での情報漏洩
    マルチテナント型のクラウド環境では、他のテナント(ユーザー)のアクセスパターンをキャッシュ攻撃で観測することで、機密情報が漏洩し、プライバシーやセキュリティに重大な影響を及ぼします。
  3. 不正アクセスの助長
    認証情報や暗号化キーの漏洩により、不正アクセスが可能になり、システムやデータベースの不正利用、さらなる攻撃の拡大が起こる可能性があります。

キャッシュ攻撃に対する対策

キャッシュ攻撃を防ぐためには、以下のような対策が有効です。

  1. コンスタントタイム処理の実装
    暗号処理において、処理時間が一定になるように設計(コンスタントタイム処理)を行うことで、キャッシュの使用パターンに依存しない実装を行い、攻撃を防ぎます。
  2. キャッシュの分離とフラッシュ
    セキュリティに関連するプロセスと通常のプロセスでキャッシュを分離し、キャッシュが共有されないようにするか、使用後にキャッシュをクリアする対策を行います。これにより、他のユーザーがキャッシュアクセスパターンを観察できなくなります。
  3. ランダム化
    キャッシュへのアクセスパターンをランダムにすることで、攻撃者が観察するパターンが無意味になり、機密情報を漏洩させない工夫ができます。
  4. 仮想環境の設定強化
    マルチテナント環境やクラウド環境においては、仮想マシンごとにキャッシュの共有を制限し、他のテナントによるキャッシュ観察を防止します。

まとめ

キャッシュ攻撃は、キャッシュメモリのヒットやミスを観察することで、内部処理内容や暗号鍵などの機密情報を推測するサイドチャネル攻撃の一種です。特にAESやRSAといった暗号アルゴリズムの実装や、マルチテナントのクラウド環境における情報漏洩のリスクがあり、コンスタントタイム処理やキャッシュ分離、アクセスパターンのランダム化などの対策が必要です。キャッシュ攻撃を防ぐことは、情報セキュリティの強化に不可欠です。


SNSでもご購読できます。