web-dev-qa-db-ja.com

SSH経由でLUKSボリュームをリモートでロック解除する場合、パスフレーズを送信する前に整合性を確認するにはどうすればよいですか?

これは最近閉じられた質問 サーバールームの邪悪なメイド[閉じられた] と密接に関連していますが、もっと答えやすいと思います。

BusyBoxでinitramfsを使用し、SSHサーバーとしてDropbearを使用して、リモートでホストされているサーバー上のLUKSボリュームのロックを解除したいと思います。上記のクローズド質問への回答で、paj28は次のように述べています。

 Remote boot techniques like dropbear are vulnerable to a remote variant of
 the evil maid attack. For example, someone with physical access could tamper
 with the dropbear partition, and have it leak the key on the next reboot.

攻撃は リモートロック解除のLUKS人魚 でも説明されています。

BusyBox initramfs環境で、LUKSのロックを解除するためのパスフレーズを送信する前に、リモートサーバーの整合性を確認したいと思います。ローカルリストに対してsha256チェックサムをチェックすることで、ファイルの整合性を確認できます。しかし、パスフレーズを取得するためのinitramfsの変更を検出するでしょうか?

Eth0のMACを簡単に取得でき、tracerouteを使用してネットワーク環境の変化を検出できます。おそらく、ハードウェア環境を確認するために、initramfsにhwinfoを追加できます。これらのテストで検出されない変更はありますか?

私は解決策を求めているわけではありませんが、私が見逃しているエレガントなものがある場合は、私に知らせてください。

4
mirimir

あなたはしません。できません。

できる最善の方法は、パーティションロック解除プロセスの一部を構成するTPMを使用した信頼できるブートパスです。しかし、ハードウェアが個人の署名鍵(おそらくそうではない)にロックされていない限り、それさえも破壊される可能性があります。

それでも、TPMはおそらく最も近いものです。これを実装するのは簡単なことではありません。また、このための既成のソリューションを見つけることはほとんどありません。

3
tylerl

[〜#〜] srtm [〜#〜] を使用して、TPMによって提供されるリモート認証を使用できます。

TPMが本物であることの確認

@tylerlが言っていることにかかわらず、TPMが証明書を提供するために自分の署名鍵を信頼する必要はありません。正規のTPMは Endorsement Key 、またはEKを使用します。これは、製造時にTPMに焼き付けられるキーであり、対応する秘密キーが公開されることはありません(WebのPKIと同様)動作します)。偽のTPMが提示される唯一の方法(ソフトウェアでエミュレートされるなど)は、承認キーが秘密でない場合です。データセンターのEKが盗まれた場合、心配することがたくさんあります。 TPMは、HTTPSが悪意のあるCAから保護する以上に、そのような敵から保護することはありません。

メジャードブート

TPMはmeasured bootと呼ばれる機能を提供します。その詳細は次のとおりです alloverthisウェブサイト 。その要点は、CRTMと呼ばれる、BIOSの安全な読み取り専用コンポーネントが連鎖反応を開始し、システムのさまざまなコンポーネントがハッシュされてTPMに送信されることです。すべてのハッシュが正常な状態と一致しない限り、TPMはロックされたままになるか、密封されます。封印を解除できる唯一の方法は、システムが既知の状態にあるときです。封印する正確なデータは任意です。たとえば、暗号化キーの封印に使用できるため、システムが改ざんされていない場合にのみシステムを起動できます。また、悪意のあるハードウェアがこの値が何であるかを予測して提示できないように、あなただけが知っている秘密の値を保存するために使用することもできます。それが表示された場合にのみ、TPMが正規品であり、システムが正常な状態にあることがわかります。これは、Joanna Rutkowskaの Anti-EvilMaid の基礎です。

TPMがジョブを実行した後の整合性

TPMのジョブは、カーネルを起動すると終了します。 BIOSからオプションROM、ブートローダー、NVRAMまで、システムの残りすべてが測定されていることを確認しますが、カーネルを測定した後、そのジョブは完了です。カーネルは測定されていますが、システムの他の部分は測定されていません。この時点で、カーネルは何らかの測定を提供する必要があります。 Linuxの1つの機能は 整合性測定アーキテクチャ 、またはIMAです。 IMAは、システム上のすべてのファイルのハッシュを拡張属性に保持することで機能します。これらのハッシュは、TPMに格納されているマスタールートハッシュを使用して比較検証されます。カーネルは、ハッシュのないファイルの読み取りを拒否するか、ハッシュが正当なものであると確認できません。この時点で、測定ブートが正常に行われ、信頼できる実行環境になっています。

注意事項

  • メジャードブートは、DMA攻撃など)の一部の種類のハードウェア攻撃を防ぐことはできません。それらを防ぐことは(たとえばDMARを使用して)可能ですが、ここでは範囲外です。
  • 敵がDKを手に入れるほど強力である場合、敵はソフトウェアで偽のTPMを作成する可能性があり、その違いはわかりません。
  • TPMから有効な読み取り値を取得するには、少なくとも最初はシステムが危険にさらされていないか、報告されているハッシュを正常な値と照合して確認する必要があります。
  • 一部のBIOSでは、測定されたブートの実装が正しくない場合があります。たとえば、CRTMは書き込み可能なフラッシュストレージに常駐し、TPMはCRTMが読み取り専用であることを前提としています。
  • 十分なリソースを持つ敵は、TPMの首をかしげ、内部の内容を電子顕微鏡で読み取ることができる場合があります。これは非常に困難ですが、物理的には可能です。
  • TPMの古いバージョン(1.1)は プラットフォームリセット攻撃 に対して脆弱でした。これを回避するには、新しいTPM(2.0または少なくとも1.2)を使用する必要があります。または、Intelの統合iTPMが役立つこともあります。
1
forest