てきとうなメモ

本の感想とか技術メモとか

HertzBleed Attack

Hertzbleed Attack

CPUの脆弱性で大きな話かなと思って論文少し読んでみた。が、Q&Aに書かれている通り、すぐに心配すべきものではないという感想。

Should I be worried?

If you are an ordinary user and not a cryptography engineer, probably not: you don’t need to apply a patch or change any configurations right now. If you are a cryptography engineer, read on. Also, if you are running a SIKE decapsulation server, make sure to deploy the mitigation described below.

どんな脆弱性なのか

IntelAMDの最近のCPUには消費電力が高いとCPUの周波数を減らし、消費電力が低いと周波数を増やすという機能がある。この機能によって、秘密データに依存してある処理の消費電力が変化する場合、周波数も変化するため、処理時間が変化する。この処理時間の変化を観測することによって秘密データを推測することができるかもという脆弱性

AMDはCVE-2022-23823、IntelはCVE-2022-24436として採番されている。

この攻撃方法のメリット

電力消費の変化から秘密データを推測するという手法はこれまでもあった。しかし、攻撃対象に物理的なアクセスが必要だったり、CPUの電力消費量取得インターフェースにアクセスするために権限が必要だったりして、攻撃することが難しかった。しかし、今回の攻撃方法は処理時間を計測するので、リモートから攻撃できる可能性がある。

また、処理時間の変化から秘密データを推測するという手法(タイミング攻撃)はこれまでもあったが、プログラミングで処理速度を一定にするという対策方法があった。ただし、処理速度を一定にするとは、その処理のクロックサイクル数を一定にすることを指していた。

HertzBleed Attackでは、クロックサイクル数が一定でも電力消費の変化により周波数が変化する。そして、処理時間はクロックサイクル数/周波数で計算されるので、クロックサイクル数が固定でも処理時間は変化する。よってクロックサイクル数一定の処理による対策をバイパスすることができる。

論文ではどのような秘密データを解読できたのか

論文ではSIKEのKEMのdecapsulation処理における秘密鍵を解読している。

実装としてはCloudflareのCIRCL(Cloudflare’s Interop- erable Reusable Cryptographic Library)やMicrosoftのPQCrypto-SIDHを用いている。

decapsulation処理をするHTTPサーバ(CIRCL)、TCPサーバ(PQCrypto-SIDH)を攻撃対象として用意して、リモートからタイミング攻撃を仕掛けることで、36時間(CIRCL)、89時間(PQCrypto-SIDH)で解読している。

SIKEって何?

よく知らないが、Supersingular Isogenyを用いたkey encapsulation suiteとのこと。NISTの耐量子暗号のコンペティションに残っているようだ。

KEMって何?

非対称鍵暗号(公開鍵暗号)は対称鍵暗号と比べて一般的に処理が遅いので、最初に非対称鍵暗号を用いて対称鍵暗号のセッション鍵を共有して、実際の通信はそのセッション鍵で暗号化することが多い。KEM(Key Encapsulation Mechanism)はその非対称鍵暗号で対称鍵暗号のセッション鍵を送る仕組み。

SIKEに対してどのように電力消費の差を生み出して、攻撃することができるのか?

まず、CPUの特性として、計算時のハミング距離(ビットが0→1や1→0に変化した数)やハミング重み(ビットが1の数)が大きいほど電力消費が大きいというのがある。

SIKEへの攻撃では、このうちハミング重みの方を用いている。

SIKEのdecapsulation処理では、秘密鍵のi番目のビットとi-1番目のビットが異なる場合、計算結果が途中からずっと0になる、というような特殊な暗号文を入力することができる。そうするとハミング重みが小さくなるため、消費電力が下がり、周波数が上がり、処理時間が速くなる。この処理時間の変化を用いて秘密鍵を1ビットずつ推測していくことで、秘密鍵の解読に成功している。 (だいぶ省略した説明)

SIKE以外は攻撃できるか?

公式サイトには以下のように書かれている。

Is my constant-time cryptographic library affected?

Affected? Likely yes. Vulnerable? Maybe.

Your constant-time cryptographic library might be vulnerable if is susceptible to secret-dependent power leakage, and this leakage extends to enough operations to induce secret-dependent changes in CPU frequency. Future work is needed to systematically study what cryptosystems can be exploited via the new Hertzbleed side channel.

個人的にも以下のような条件が必要だと思うので、個々の暗号において、この手法を用いて攻撃できたという話が出てくるまでは、何とも言えない気がする。

  • 秘密データに依存して消費電力が変化しないといけない
  • 消費電力の変化→周波数の変化→処理時間の変化が判別できるほど大きくなければならない
  • 処理時間が変化として判別できる単位のインターフェースを外部公開していないといけない(SIKEの例で言うと、decapsulation以外の処理を含めた処理を公開しているのであれば、decapsulation以外の処理の電力消費によってdecapsulationの電力消費の情報が隠れてしまう可能性がある)