ITセキュリティに対するハードウェアベースの攻撃については、たとえば次のようなレポートがいくつかあります。
「nsa intel backdoor」を使用したduckduckgo-searchは、はるかに比較可能な結果を簡単に生成します。これが本当に脅威なのか、それとも単に極端なパラノイアなのかはわかりません。私はcpuをいじくるのが理にかなっているのと同じくらい意味があることを認めざるをえません。ほとんどの場合、概念上、パスワードはアクセス可能でなければならないためです。 CPUバックドアのアイデアにいくつかの真実があると私に思わせるもう1つのことは、高度な複雑さ(数百万のトランジスタ)によって、チップの特定のサブパートがバックドアに専念できることは疑いの余地がないということですそれは非常に明白なことではありませんが目的。
私の質問は、「バックドアをCPU(またはBIOSチップ)に埋め込む」という概念が、実際には最終的に検討すべきものではないのかどうかです。
CPUバックドアがあるかどうかが最終的に決定できないと仮定すると、問題に遭遇するための合理的なアプローチは何ですか?独自のCPUを製造しますか?つまり、オープンソースのハードウェアですか?
バックドアの実際の証拠はなく、とにかくチェックすることはほぼ不可能です。ケースを「開いて」、電子顕微鏡ですべてのトランジスタを1つずつ検査することで節約できます-数十億ありますので、これは実現不可能です。その規模のバックドアは、外部分析ではなく、不満を持った内部関係者によって明らかにされる傾向があります。
ただし、物理的な可能性については説明できます。リンクしている記事は、3つの概念についてのいくつかの誤解に基づいた、あまり使用されていない用語の混乱した混乱です。これらは:
マイクロコード は、CPU内のCPUに対する命令です。これは、CPUが実装された従来の方法に関連しています。各命令に対してアクティブ化されるかどうかに関係なく、いくつかの基本ブロック。マイクロコードは「アクティベーションシーケンス」を記述します。マイクロコードは、「機械語」と考えるRAMのオペコードを解釈するエミュレータのソフトウェア実装と考えることができます。ただし、最近のCPUでは、ほとんどのオペコードが「ハードワイヤード」であり、マイクロコードはfsin
(x86 CPUの浮動小数点オペランドの正弦関数を計算)のような複雑な演算にのみ使用されます。 この回答 には、マイクロコードとは何か、それが何をすることができるかについてのより詳細な説明が含まれています。
CPUでは、マイクロコードはROMに格納されますが、起動時に小さな静的RAM要素(まだCPU内にあります)にコピーされます。これは、高速ですが更新も可能です。したがって、起動時に、OSは新しいマイクロコードをCPUにアップロードでき、次の電源オフまで使用されます。 OSはそれを行います。マイクロコード形式は各CPUの各バージョンに非常に固有であり、標準ではなく、文書化されておらず、未指定の暗号化アルゴリズムによって保護されているため、OSの観点からは、マイクロコードの更新は不透明です。 IntelまたはAMDから直接のblob。
マイクロコードは、hiddenバックドアの可能性を開きます。 CPU自体にはネットワークがありません。現在のRAMおよびハードウェアのコンテキスト内で実行され、OSはすべての通信を調整します。マシンにバックドアが設置されている場合でも、外部から攻撃可能である必要があります。それ以外の場合は、役に立ちません。ここでの話は、blobの不透明性に依存します:おそらく、NSAはIntelと連携して、CPUにアップロードされると、特定のマイクロコードの更新を作成できますRAMをスキャンしてOSカーネル構造を調べ、それらを変更して、より一般的なソフトウェアベースのバックドアを追加します。このマイクロコード更新は、Microsoftに渡され、次のWindows更新に含まれます。その場合、Microsoftはvictimとなり、彼らのOSはバックドアコードをCPUに無意識に押し込みます。
OSコードおよび構造の実行時の操作が検出される可能性があるため、このようなアクティビティは危険です。一部のアマチュアがどこかで [〜#〜] dma [〜#〜] を使用して物理RAMを他のデバイスにダンプし、デバッガを使用してライブOSを探索することで十分ですコード。スパイ機関は、原則としてリスクを嫌います。したがって、理論的には可能ですが、マイクロコードを使用したバックドアの植え付けはかなりありそうにないと思います:不可能ではありません(できる)が、適切にするのは非常に難しいようです 。私の意見では、NSAは、より簡単なパスが閉じられている場合にのみそのようなゲームに頼るでしょうが、そうではないことがわかりました。下記参照。
ファームウェア アップデートは実際には問題の範囲外です。これはCPUやIntelに関するものではありません。これは、そのようなチップを持つハードウェア要素のさまざまなフラッシュチップに悪意のあるコードをプッシュすることです。つまり、CPU自体ではなく、多くの周辺機器です。 Rakshasa と呼ばれるいくつかのデモンストレーションが行われ、いくつかの名声を得ましたが、その意味はほとんど理解または説明されていません。特に、そのようなウイルスを作成するのにNSAのような政治的力を必要としません。まったく逆:再フラッシュ可能なファームウェアにコードをプッシュすることは、自分の悪意のあるコードを十分な権限でマシン上で実行させることができるeverybodyに開放されています。さらに言えば、NSAやIntelができること、モルダビアの一部のシュマックプログラマもできること。
(モルダビアの開発者であり、気分を害した場合は、お詫び申し上げます。)
ただし、おいしい部分は [〜#〜] prng [〜#〜] をリギングする可能性があります。すべての暗号関連のアクティビティ、特に鍵の生成は、最終的には純粋なランダム性と区別できないはずの疑似エリアの生成に帰着します。オペレーティングシステムは、ハードウェア割り込みの到着の正確なタイミング(ナノ秒まで)などのハードウェアイベントを収集することによってそれを行います。ハードウェア割り込みは、すべてのキーストローク、マウスの動き、ネットワークパケットなどに対して発生します。これらの発生の正確なタイミングには想定される「ジッター」があり、これは(重要なポイントです)コンピューターの外部で十分な精度で測定できないため、パワーに使用できる「未知のデータ」(攻撃者にとって)です。 PRNG。
このようなハードウェアイベントを収集することは、一部のコンテキスト、特に 仮想マシン で、起動時に新鮮です(これらは架空のハードウェアしかないため、はるかに再現性が高く、推測可能なPRNG状態)。物事をより良くするために、CPUベンダーは ハードウェアRNG を提供します。これには、電気的に不安定な特定の回路(逆のツェナーダイオードなど)が含まれます。このようなハードウェアはCPUに統合され、VMからアクセスでき、 "true許容度のランダム性」。
内部的には、ランダム性生成回路からのランダムイベントは、最初に特定の回路で後処理され、物理的な測定値がOSに渡される一連のビットに変換されます(OSは ハッシュ関数 を使用します)= = PRNGのシードを取得する)。 考えられること後処理段階が次のように変更されること:
したがって、これは、トレースを残さず(OSの更新を通じてプッシュするためのマイクロコード更新の必要がない)、外部からは検出できず、 もっともらしい拒否可能性 が付いた「バックドア」を提供します。実用的な実装は一種のハッシュ関数であり、「残念ながら」内部状態を50ビット程度に減らすキャリー伝搬バグが含まれているため、徹底的な検索の範囲内です。 bcrypt のリファレンス実装にはそのようなバグがあり、実装がソフトウェアとオープンソース(!)であるにもかかわらず、だれもそれを数年間見ていませんでした。
私がNSAまたは他の同様の機関で、地球上のすべてのコンピュータにバックドアが必要な場合は、ハードウェアRNGを介して行います。これはリスクの低い経路です。
できますか?
これを行うことは間違いなく可能です。
行われた場合、ディスク暗号化やLinuxセキュリティモジュールのようなアクセス制御のようなさらなるセキュリティ対策にどのような影響がありますか?
ハードウェアが危険にさらされている場合、基本的にねじ込まれています。使用するメソッドが実際に機能していることを確認することはできません。
CPUバックドアがあるかどうかが最終的に決定できないと仮定すると、問題に遭遇するための合理的なアプローチは何ですか?独自のCPUを製造しますか?つまり、オープンソースのハードウェアですか?
あなたは確かにあなた自身のCPUを製造することができます。また、独自のGPU、RAM、ハードディスク、ネットワークケーブルなども製造する必要があります。
I thinkショットガンで最寄りの森のキャビン内に閉じ込めて、NSAがノックするようになるのを待つ方が簡単でしょうか?