web-dev-qa-db-ja.com

TPM2.0を使用してLinuxのハードドライブを安全に復号化-無人

LinuxでTPM2.0を使用してリモートの場所にあるハードドライブを安全に復号化する方法を理解するために数日を費やしました。私はセキュリティの専門家ではありません。TPM2.0との初めての戦いです。たくさん学びましたが、まだ質問があります。誰かがそれらを手伝ってくれませんか:

  • 現在、TrustedGRUB2はTPM2.0をサポートしていません。TPM1.2のみをサポートしています。 TPM2.0をサポートする他のプロジェクトを見つけることができませんでした。いずれかがあります?
  • TPM2.0は起動プロセスを停止できますか?

私が解決しようとしている問題は次のようなものです:

  • 暗号化された/パーティション/boot暗号化されていません
  • コンピューターは他の誰かの敷地内にあるため、ハードドライブを盗んでデータを読み取ることはできません
  • 起動プロセスは無人である必要があります-何かが変更された場合、マシンはドライブを復号化してそれ自体を起動してはなりません-BIOS設定、initramファイル(/bootは暗号化されていないため、initramをいじることができます)

私はこの解決策について考えました:

  • LUKSキーはPCR0の値になります
  • PCR0の値は変更する必要があります。リセットなど、BIOSで何かを変更する場合(ディスクだけでなくPC全体を盗む場合)、USBブートを有効にします。
  • ディスクの復号化に使用されるPCR0値は、OSが実行されているのと同じくらい安全でなければなりません-BIOSを変更せずにこの変更されていないPCR0を読み取る唯一の方法は、OSにアクセスすることですよね?

私はこの問題について正当な質問をすることができるレベルを達成したと思いますが、私はこれの影響や穴をさらに評価することはできません。

5
Kamil

Linuxシステムでは、クレビスを使用してLUKSボリュームをTPM2に「バインド」し、ルートファイルシステムを自動的に復号化できます。例えば:

clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"0"}'

または

clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"0,1"}'

すでに暗号化され、パスフレーズが必要です。上記のコマンドでプロンプトが表示されます。パスフレーズをバックアップとして残すか、後で削除することができます。

PCR0の値自体をキーとして使用するかどうかはわかりません。これは、私の限られた経験では、その値にアクセスするのが非常に簡単だからです。それがPCRに対するデータの「シーリング」がどのように機能するかはわかりませんが、PCR値とシールされた値の正確な関係はわかりません。

私はクレビスを使用してLUKSボリュームをTPM2にバインドし、それがルートファイルシステムの場合は起動時に自動復号化しました。インストール中にデバイスを暗号化し、手動とキックスタートスクリプトでデバイスをバインドしました。クレビスツールはTPM2サポートを2018年の初めに追加し、RHEL 7.6がリリースされたときにRHELの「ベータ」リポジトリからそれを作りました。自動復号化は、論理ボリュームではなく、完全な/ dev/sd *ボリュームでのみ機能します。私はこのリンクがとても役に立ったと感じました: https://blog.dowhile0.org/2017/10/18/automatic-luks-volumes-unlocking-using-a-tpm2-chip/

BIOSファームウェアを変更するとPCR0が変更され、特定の設定を変更してもPCR1が変更されるはずです。選択するのに最適なPCRがわかりません。私の情報は https://trustedcomputinggroup.org/wp-content/uploads/PC-ClientSpecific_Platform_Profile_for_TPM_2p0_Systems_v51.pdf (セクション2.3.4、表1 )。

1
Jaime