LEDの光を利用するデータ抜き取りの方法

電源LEDのアクティビティを分析することで、データを抜き取る方法について、研究者が発表しました。

アメリカとイスラエルの大学の研究者が「ビデオベースの暗号解析」の手法について論文を発表しました。この概念は、論文と同様、簡単に理解できるものではありませんが、いつものように、ここでは皆さんにわかりやすい言葉で説明します。

ビデオベースの暗号解析攻撃

この技術を使った実際の攻撃は、次のようなシナリオが想定されます。まず侵入者が、オフィスビル内のビデオ監視システムへの不正アクセスに成功します。1 台のカメラは、機密文書などを保管するセキュリティが厳重な保管室のドアに向けられています。ドアにはスマートカードリーダーが備えられていて、従業員がドアに近づき、カードを挿入すると、ロックが開くようになっています。

スマートカードには、カードリーダーと通信するマイクロチップが埋め込まれています。スマートカードにエンコードされたキーとリーダー内のデータを照合するため、リーダーは、暗号化アルゴリズム、つまり一連の計算を実行します。通常の状況では、たとえオリジナルをなんとか入手できたとしても、そのようなキーのコピーを作成することは非常に困難です。しかし、リーダー、つまり暗号化ライブラリには脆弱性があり、電源LEDは脆弱性を悪用するためのインフラを提供しています。LEDはデバイスが動作していることを表示し、訪問者の入室が許可され、ドアを開けることができる場合は色が赤から緑に変わります。

インジケーターの明るさは、リーダーのシステムの負荷に応じて変化します。例えば、リーダーのプロセッサーが計算でビジー状態になると、LED の明るさがわずかに暗くなります。このわずかな変化を分析することで、秘密キーを再構築し、秘密の部屋へのドアを開けるスマートカードを作成できます。侵入者がビデオカメラにアクセスし、リーダーの LEDを細かく撮影した動画を取得できれば、理論上は建物のセキュリティシステムに侵入することが可能になります。

現実的には困難

この論文にあるシナリオを実践することは決して容易ではありません。そのため、この手口が現実世界で使われる可能性は極めて低いでしょう。また、ハードウェアセキュリティの専門家にとって、この脆弱性は真新しいものではありません。これは従来のサイドチャネル攻撃のひとつで、デバイスの動作におけるあまり目立たないプロセスを利用したデータ抜き取りの手法です。データ暗号化アルゴリズムを使用するスマートカードやその他のデバイスを攻撃するために数十年前から使われている従来の方法は、デバイスの電圧を測定することです。計算中、この電圧はわずかに変化します。このわずかな変化を解析することで、攻撃者はアルゴリズムをリバースエンジニアリングすることができる可能性があります。たとえば、電圧降下を処理中の特定の値と関連付けることができます。

この種のサイドチャネル攻撃の特徴は、計算が非常に高速なことです。暗号化キーを再構築するには、1 秒間に数百回、場合によっては数千回も電圧を測定する必要があります。ただし、LEDはデバイスの電源回路全体の一部なので、その明るさは電圧に応じて変化します。最近の攻撃には複雑で高価な機器は不要です。デバイスを分解して配線を回路基板にはんだ付けする必要などありません。ビデオ カメラを LED に向けて録画し、それを解析するだけで攻撃が成功するのです。

動画解析機能

実際に動画を解析する際、論文の著者は多くの困難に直面しました。通常のカメラは 1 秒あたり60フレームで動画を撮影します。高度なカメラでも120フレーム以下です。これは暗号化アルゴリズムに対する攻撃としては低すぎます。この方法を改善するために、研究者は、メーカーが通常克服するのに苦労しているデジタルカメラの欠陥、いわゆるローリング シャッターを利用しました。シャッターボタンを押しても、カメラのイメージ センサーはすぐにスナップショットを撮るわけではありません。何が起こるかというと、センサーのピクセルが上から下に 1 行ずつ順番にスキャンされます。高速で移動する物体を撮影すると、芸術的な効果が得られます。ヘリコプターの回転翼を思い浮かべてください。

ローリング シャッターの代表例

デジタルカメラがイメージセンサーからデータを順次読み取る間、プロペラは移動します。その結果画像が歪む。出典

リサーチャーらは、次のように研究を進めました。カメラを LEDに近づけて、フレームのほぼ全域を埋めるようにします。次に、フレーム全体ではなく、各ラインの明るさを測定しました。これにより「測定頻度」、つまり精度が大幅に向上し、iPhone14 カメラの場合は 1 秒あたり最大 61,400 回になりました。不思議なことに、この特殊なカメラの使用例では、記録されるデータ量という点で iPhone が Samsung を上回りました。

特定の周波数で、LEDの輝度のわずかな変化を読み取るスマホの機能をテスト

特定の周波数で、LEDの輝度のわずかな変化を読み取るスマホの機能をテスト。ソース

上のスクリーンショットは、この改良された構成の結果を示しています。研究者は、LEDを特定の周波数で点滅させ、それを徐々に増やしました。LEDのオンとオフの切り替えは、電力の変動を測定すれば明確に確認できます(左上)。専用の光センサーを使用すると、LED の明るさの変化がはっきりとわかります(右上)。テストでは 2 台のスマートフォンをビデオ カメラとして使用しました(下段)。ご覧のとおり、かなり低い周波数でLEDの点滅が記録されました。一方、より高い周波数では明るさの変化が失われました。ただし、基本フレーム レート(1 秒あたり 60 回または 120 回)では、この結果さえ達成できません。この改善は、攻撃を成功させるには十分であることが判明しました。

攻撃の結果

実際に「ビデオ攻撃」が起きる可能性を証明するために、リサーチャーは、さまざまなスマートカードリーダーから秘密暗号キーを抜き出す方法を示しました。5 つの実験のそれぞれで、LEDが秘密を暴くように作られました。理論的には、スマートフォンやビデオカメラをデバイスの近くに置く必要さえありません。特定の条件下では、シグナルは最大 60 メートル離れた場所から録画することができます。研究チームは、他の光源(太陽の光が当たる部屋など)が、測定精度に影響を与えることも発見しました。これにより、有用な信号にノイズが追加されると攻撃が複雑にはなりますが、結果には大差がないことも明らかになりました。

しかし、それだけではありません。研究者は、SIKE データ暗号化アルゴリズムを実行していたSamsung Galaxy S8を攻撃しました。

スマホを使って機密データを抜き取る。出典

スマホを使って機密データを抜き取る。出典

スマホには、デバイスの電源をオンにしても点灯するLEDがありません。しかし、研究者たちは悪賢く、電話を手に取り、LEDを備えたポータブルスピーカーに接続したのです!スピーカーはスマートフォンから電力を供給されていたため、LED の明るさがプロセッサーの負荷によって変わるというシナリオが再現されました。

その結果、スマホに対するHertzbleed攻撃が発生し(詳細はこちらを参照)、ARM アーキテクチャに基づくプロセッサーもこの種の攻撃の危険にさらされていることが確認されました(元の論文では、x86 アーキテクチャの Intel および AMD チップの脆弱性のみが取り上げられていました)。

ここで話しているのは完全に理論上の実験についてであり、実際に使用されている暗号化キーを盗むということではありません。特定のアルゴリズムに従ってスマートフォン上で暗号計算がトリガーされました。研究者は、電話に接続されたスピーカーの LED の明るさを測定することで、アルゴリズムの動作を捕捉し、秘密キーを回復することに成功しました。スマートフォンは、スマートカードリーダーよりもはるかに複雑であるため、測定時のノイズ レベルははるかに高くなります。それにもかかわらず、実験は成功しました。

この科学研究の有用性について

この研究が現実世界で今すぐに応用される可能性はゼロに近いでしょう。この攻撃は非常に複雑で、実際に使用される例を見つけるのは困難です。よくあることですが、このような論文の価値は「発見された脆弱性」を実際に悪用することにあるわけではありません。おそらく、この研究の重要な点は、かつてサイドチャネル攻撃に必要だった特殊な機器が一般に販売されているデバイスに置き換えられたということです。

私たちは、デスクトップ PC のスピーカーなど、目立たないチャネルを介したデータ抜き取りの手法について投稿することがあります。しかしこれらの手法は、被害者のコンピューターにマルウェアがすでにインストールされていることが前提にあります。今回引用した論文は、電源LEDを解析するだけで、事前のハッキングなしで機密情報を抜き出せる可能性を示唆しています。

そのため、この種の攻撃は、サイドチャネル攻撃をより深く理解するために多いに役立っています。このようなセキュリティホールが実際に悪用される前に、脆弱な面を持つ機器のメーカーが重く受け止めて、新しいモデルの設計を改善することを願うばかりです。結局のところ、この論文が正しく指摘しているように、機密情報を明らかにしないLEDを作るのは非常に簡単です。たとえば、非常に安価なコンデンサを電源回路に追加すれば、問題は解決します。また、サイドチャネル攻撃への対策はソフトウェア レベルでも実装できます。最後に、LEDを完全に廃止してはどうでしょう?LED が絶対に必要なんていう人はいますか?

ヒント