6 ポイント 投稿者 kuroneko 2023-08-25 | 1件のコメント | WhatsAppで共有
  • 安価なロジックアナライザを使うと、独立したTPMチップを搭載したコンピュータで BitLocker のフルディスク暗号化を回避できる。
  • BitLocker はまず FVEK(完全ボリューム暗号化キー)を生成し、VMK(ボリュームマスターキー)でこれを暗号化してからハードディスクに保存する。
    • TPM を有効にしている場合、VMK は TPM 内に保存され、起動時に TPM から VMK を受け取ってハードディスクを復号する。
    • しかし、VMK を受け取る過程でメッセージが平文で送信されている。
  • これを解読するには、ロジックアナライザで CPU と TPM チップの間を行き来する SPI コマンドをキャプチャする必要がある。
    • TPM チップ自体にロジックアナライザを取り付けるのは非常に難しいため、TPM と SPI バスを共有する別のチップに接続して信号のキャプチャを開始する。
    • まず分かりやすい SPI リクエストをキャプチャし、TPM インターフェース仕様で通信を意味する TIS を解読する必要がある。
    • TIS を簡単に解読する方法がないため、手動で解析して TPM 信号の開始バイトを特定した。
    • 次に、TPM 2.0 仕様に記載された TPM2_Unseal コマンドをキャプチャして秘密情報を取り出す段階に進む。
    • TIS で判明したバイトを使って TPM 2.0 コマンドを見つけ、応答を分離したうえで、tpmstream-web のようなツールを使って TPM 応答からバッファを分離する。
  • キーを入手すれば、ハードディスク上のデータにアクセスできるようになる。
    • ハードディスクを取り外して別のシステムに接続し、dislocker のようなツールで暗号化されたファイルシステムを探索する。
    • 従来の方法である、特定のプログラムを cmd.exe に置き換える手法によって、ログイン画面から使えるシステムシェルを作成する。
    • 管理者権限付きの cmd を取得できたため、何でも実行できる。
  • 結局、物理 TPM があると BitLocker は非常に脆弱になるため、この種の攻撃が不可能な、CPU に完全統合された fTPM が推奨される。
  • 物理 TPM を搭載したシステムで BitLocker を安全に使うには、PIN またはパスワードを設定する必要がある.

1件のコメント

 
kuroneko 2023-08-25

同じテーマを扱った別の投稿です。

BitLockerだけは、TPMがこのような中間者攻撃を防ぐために用意している暗号化セッションをなぜか利用しておらず、そのためこの問題が起きるようです。
systemdは、TPMとLUKS暗号化を使う場合、このような問題はないとのことです。

思っていたより、BitLockerは特定の状況ではかなり脆弱だったのですね。
名前にTrustedまで入っているセキュリティモジュールなので、こうした問題はないものだと思っていましたが…