AppleのGoFetchシリコンセキュリティの失敗はスピードへの執着によるものだった

Table of Contents

AppleのGoFetchシリコンセキュリティの失敗はスピードへの執着によるものだった

意見: Appleはセキュリティに長けており、プロセッサにも長けています。そのため、プロセッサアーキテクチャにおける重大なセキュリティ上の欠陥であるGoFetchは、二重の打撃となります。

さらに悪いことに、GoFetchはApple Siliconプロセッサの発売より何年も前から知られていた脆弱性の一種です。Appleのチップ設計者はなぜこれを見逃したのでしょうか? 同様の問題はIntelの第13世代CPUにも存在します。SpectreとMeltdownは2018年に発見されたものです。これは現代のプロセッサ設計における根本的な問題、つまり後戻りできない進化の失敗なのでしょうか? 答えは、アインシュタインの考えと、パラノイアの考え、そしてマーケティングの考え方の融合です。まさにその通りです。

Apple M1チップ

ハードウェアレベルのApple Siliconの脆弱性により暗号鍵が漏洩する可能性がある

続きを読む

まずアインシュタインの言葉から始めましょう。現実の法則の一つは、物の距離が遠ければ遠いほど、到達するまでの時間が長くなるということです。チップ設計者は、頻繁に使用されるデータのコピーをプロセッサに近い小さな高速キャッシュに保存することで、この法則やその他の要因に対処する必要があります。これを効率的に行うことは不可欠かつ複雑です。どのようなデータがいつ必要になるか、そしてキャッシュシステムへの転送を小さすぎたり大きすぎたりしないよう制御するにはどうすればよいかなど、膨大な仮定が必要になります。これは非常に大きな技術的課題であり、パフォーマンスにとって極めて重要です。

多くのことは、DRAM やオンチップ キャッシュで使用されるさまざまなメモリ テクノロジの詳細や、バス速度の制限に依存しますが、これらすべてが完璧になったとしても、近いほど速いという基本的な物理学は決して消えることはありません。

これは宇宙の法則であるだけでなく、暗号技術における大きな問題でもあります。暗号ソフトウェアはデータの暗号化と復号に秘密鍵を使用し、それを秘密裏に行う必要があります。現代のCPUは、適切な権限を持つコードへのアクセスを制限するメモリマネージャーを通じて、十分なプライバシー保護を提供しています。

不十分です。暗号化コンポーネントが入力に応じてタスク完了までにかかる時間が異なる場合、完全に秘密裏に動作できます。しかし、外部からこの時間を計測する攻撃者は、何が起こっているのかを推測できるようになります。

この発見の結果、定数時間コーディングという概念が発展しました。コード内で何が起ころうとも、コードは常に同時にタスクを完了します。たとえそれが電子化時代の仮想的な指をくねくねと動かすことを意味するとしても。定数時間は、保護されたシステムからの情報漏洩を防ぐための基本的な概念となっています。

これはキャッシュとは相容れないものです。コードコンポーネントがメモリからデータを取得する際、キャッシュを介して実行されます。そして、定数時間キャッシュはキャッシュそのものではありません。データが既に取得済みであれば高速に、取得が必要な場合は低速でデータを取得します。キャッシュが複数のプロセスまたはコア間で共有されている場合(これは常にそうであるように)、攻撃者はキャッシュのヒットとミスをタイミングから監視し、情報を抽出できます。

  • 大英図書館のランサムウェアの悪夢を詳しく調べる時が来た
  • 過酷な環境下では、ラストマイルが危険にさらされています。私たちは、この状況を改善するために、さらに努力を重ねましょう。
  • オラクルの大ヒット監査モデルをNetflixで配信する方法
  • 連邦のトローリング対策局がLockBitを攻撃、しかしその笑いものは私たち自身だ

暗号コードはこれを認識し、回避するように設計されています。GoFetchバグは、Appleプロセッサのデータメモリプリフェッチャ(DMP)と呼ばれる機能がキャッシュを監視し、メモリアクセス要求だけでなく、メモリ位置へのポインタを含むメモリ位置への要求も検出しようとするために発生します。これはコードからは見えず、制御もできません。その結果、攻撃者は暗号コンポーネントへの入力を巧みに操作し、DMPからコードの動作に関する情報を漏洩させる可能性があります。コンピューターは当然のことながら高速化しますが、同時に現代の暗号情報秘匿の基本原則を破ってしまうのです。

もしこれがコンピューティングの二つの根本的な側面の衝突だとしたら、一体どのようにして起こり、なぜ今まで誰も気づかなかったのでしょうか?これはスピードと機密性の衝突であり、まさにハイエンドチップメーカーの哲学に反映されています。この哲学的要素こそが、物理版を非常に危険なものにしているのです。

チップメーカーは速度に執着する。それはそれ自体のためだけでなく、市場で最も重要な差別化要因だからだ。業界には、遅いものが現れ、より安全なものは現れないというベンチマークが溢れている。GoFetchを生み出すDMPの副作用は目立たないが、そもそも誰もそれを期待していなかったのかもしれない。

何が高速化をもたらすのかは、まあ、秘密です。DMPのアイデアは通常の動作を確かに高速化しますが、Appleはキャッシュ管理システムの詳細をほとんど公開していません。その代わりに、何が起こっているのかをリバースエンジニアリングし、概念実証を構築してテストするという、組織をまたいだ大規模な取り組みが必要でした。

沈黙によるセキュリティへの偏執的な欲求は、チップメーカーに共通するものだ。インテルの精神的指導者でありCEOでもあるアンディ・グローブ氏が言ったように、偏執的な者だけが生き残る。大手チップメーカーからマーケティング資料が出てくるのは、ほんの数枚程度だろう。最先端のコンピュータ設計を体現するだけでなく、無線データ処理の膨大なセキュリティ負担も担うクアルコムに、その仕組みについて話を聞いてみてほしい。一日中404エラーだ。

なぜでしょうか?この情報を利用して大手チップメーカーに商業的な損害を与えることができるのは、他のチップメーカーだけです。そして、彼らは互いの行動を把握するためのツールと専門知識を既に持っています。もしApple M3チップの詳細がすべて公開されていたら、M4が登場するまでは、誰もM3の競合製品を作ることはできなかったでしょう。

しかし、より詳細な情報が得られれば、2つの良いことが起こるでしょう。セキュリティ上の欠陥がより早く発見され、DMPキルスイッチの入手に3世代も待つ必要がなくなります。そして、業界全体で設計上の決定がより安全になります。そして何より嬉しいのは、最初のこだわりであるスピードが、はるかに良く実現されることです。

非常に高速で複雑なキャッシュシステムから必然的に生じる帰結として、プログラマーがキャッシュシステムを深く理解すればするほど、コードをより細かく調整してシステムを最大限に活用し、システムの不具合を引き起こすような動作を回避できるようになります。コンパイラーがデータのセグメンテーションとフロー、そしてどのような動作がどのような結果を引き起こすのかをより深く理解すればするほど、より効率的で高速な結果が得られます。何が起こっているのかを知らなければ、このようなことは不可能です。

秘密性とスピードは、ある面では相容れない一方で、ある面では互いに有益です。最良の結果を得るためにこの事実をエンジニアリングすることは常に妥協を伴いますが、それがエンジニアリングの本質です。チップメーカーは、このことを認識し、チップだけでなく、その哲学を再構築すれば、誰にとっても大きな恩恵となるでしょう。®

Discover More