はじめに
サイバーディフェンス研究所 アドベントカレンダー 2022 の 19日目です。
TPMの使い方の一つとしてWindowsのBitLockerが有ります
業務中にTPMを触ることがありまして、その過程でTPMを初期化する場合もあり、ふと、BitLockerで暗号化された状態の環境でTPMの初期化をすると本当に復号されなくなるのか気になり試してみました
ようするに、N番煎じですね
TPMが壊れて復元できなくなったというような風のうわさも聞いたりしたので、実際の所どのようになるのか実際に確認してみたいなと
実際に初期化して戻らなくなったら大変なのもあり、二度と戻せなくなっても困らない環境でいくつかの方法でTPMの初期化を試してみました
注意
実機で実施した場合に回復キーがない場合には、保存されたデータへアクセスできなくなってしまうので、回復キーのバックアップはしっかりと取っておきましょう
今回は回復キーのバックアップを取った上で、データが消えても困らない端末を使いました
環境
- 端末
- Panasonic の Let's note (CF-SV)
- OS
- Windows10 22H2
BitLockerの確認
端末がBitLockerでドライブ暗号化されている端末を用意しました
またデバイスマネージャからTPMが存在することも確認しました
BitLockerではディスクの暗号化を行うに当たり、実際にディスクの暗号化に利用されるFVEK(Full Volume Encryption Key)、FVEKを暗号化するために利用されるVMK(Volume Master Key)、VMKを暗号化するために利用されるSRK(Storage Root Key)の3つの鍵があり、この内 SRK がTPMへ格納されています
今回はこのSRKをTPMから飛ばしてみてどうなるのか(どうなるかはまぁ分かりきってますが)見てみる流れです
TPM.msc
でTPMをクリア
BitLockerドライブ暗号化
にあるTPMの管理
からも見られる TPM.msc でまずは初期化をしてみることにしました
TPMをクリア...
の文字が有りますね
もしかしてTPMを初期化するというのは容易に実行し得るのかも知れない、 そう思いそのまま進んでみると
TPMキーが失われるらしいのでそのまま実行してみましたが...
再起動後にもそのままPCは起動されました
イベントビューアを見てみるとTPMがクリアとのログは残っていますが、今回実施した端末では操作後も回復キーを求められることなくディスクが復号されることを確認しました
このやり方では復号に必要な鍵は消えないようにみえますね
後述の tpm2-tools
を利用して、TPMをクリア...
の前後で SRKの値の差分を一応確認してみました
diff -u before.txt after.txt
--- before.txt 2022-12-16 12:55:07.127251013 +0900
+++ after.txt 2022-12-16 12:55:16.543369173 +0900
@@ -1,5 +1,5 @@
-name: 000b1a6ab4591da4f0c951803f6299e1c929279b65887aa6c7d9d47fcc15ae2d069d
-qualified name: 000ba5a6fd86ebe79a0d51586e027c58afc80417189d4307599c950f5bda8f995539
+name: 000bcc2a3acecec68cceb9790daa266aa6ec872e94fdcc4af6242f142cb460316882
+qualified name: 000bdc5bfe54fa2d8561494365fca85770e38502c0aec593fc99a2063964ea909ec7
name-alg:
value: sha256
raw: 0xb
@@ -24,4 +24,4 @@
value: cfb
raw: 0x43
sym-keybits: 128
-rsa: c2f52a9b4d0a7dda19c37bf4a6353e5f2b26362d34a8a4185043f2a84a79bc43e6dfacc74682f9a7189bc1cd6881635a42672975ed0af67b1e96d613df1cb4458b47b2e8138990b437d892840a89f6b8d555cdac722f23000be1a2e9bcde74ac7b9a93cb9ee18f444df4ba4addf7d5307988de4f052f883b32a20c5abb37134f0ae7523bef65e6a3ad210e061dfe04fa33b7bece53ed70bf3b7363a4696ccd14adfa49a7be0bc7f957903abb9742f32172962ef6599eedbdb72b12fec16f6f271b90459413c996941c38cd50bd813bd48ad0fbb0c882db85dd77909fd78206633c5305de699f9e736522fbf53bb0bb50a9d694f1ba45fb57181de62db421a601
+rsa: d2173be6b59e40f9a2f610cc8ddd01d1ddfe2e28a5cdbf81b04440f81609ef9b0125138ca4b939842c442e734f6db242614970ef0fc2093bc89cc88ae9e6fbbad08b1357fc030e0a8ef70268b3c6fd26be97f0dca38ea17e02c621222b7d62825126b82ce1bc65442d99c20875437e800f8e8abd40b80599c9e02ad556aae7ad657061f601890c68fb1ba4f48bb34452bb7ae19af2a3f691dc20003add23dc054d45528bcf55fb47e8204b456cc071e674e62edbcadf9b2f695eb9b7daddbb56f1f51f6c10a768eafaec5f0bbb1e7ce63be0fffd67edd8b8eb1f5713bda1a26f14d2b5363d62c4fcb0cf577adc9f5c56c09c17b8a85b7f06860384f2d120d1a9
SRKが異なっていました
TPM.msc
でTPMのクリアを実施した場合には、BitLockerの復号に利用する鍵を改めて設定しているようですね
UEFIからTPMをクリア
tpm.msc
では鍵がなくて複合できなくなっている状況が見られなかったので、UEFIから初期化してみることにしました
セキュリティ
のタブから内蔵セキュリティ(TPM)
を選び、
待機中のTPM操作で所有者情報の初期化
を選び設定を保存の上で再起動を行いました
はい、想像の通りです
コレが見たかっただけです
TPMの初期化によってSRKが消えてしまいBitLockerで暗号化されたディスクが開けなくなるところを見ることが出来ました
あとはココにバックアップされている回復キーを入力して起動する流れですね
回復キーは紙に印刷して保存しておくほかにも、Microsoftアカウントに紐づけて実施してある場合や、Microsoft Intune で管理されている場合には、ロックされてしまった場合に別の端末から回復キーを取得できる場合が有ります
何れにせよバックアップの取得は大切ですね
ちょっと追加で
TPMから鍵を飛ばして青い画面が見たかっただけなので、したかったことは終わりなのですが、コレだけでは寂しいので
TPMを操作するためのクライアントとして tpm2-tools
というものがあります
このツールを使って、BitLockerの鍵がどの様に格納されているかついでに眺めてみようかなと
Ubuntu22.04.1をUSBにインストールして起動して tpm2-tools
をインストールし、TPMの中を少し覗いてみました
必要なパッケージは tpm2-tools
tpm2-abrmd
です
# apt install tpm2-tools tpm2-abrmd
TPMに保存されているオブジェクトの一覧を見てみると3つのオブジェクトが保存されていますね
# tpm2_getcap handles-persistent
- 0x81000001
- 0x81000002
- 0x81010001
取得さたアドレスを試しにTCG(Trusted Computing Group)のドキュメントで文字列検索してみると
はい、SRKが保存される先として示されていました
TCG TPM v2.0 Provisioning Guidance
29ページ
Table 2: Reserved Handles for TPM Provisioning Fundamental Elements
また、鍵はどんな内容なのかも見てみました
# tpm2_readpublic -c 0x81000001
name: 000b689f40a6090878b102717e714728a31ad21956a76876cd7c30eecd2994bbf052
qualified name: 000b0052964b82984aaf7bc62ee9aaae5792f105433eb6bb2127911d7f046cf206d0
name-alg:
value: sha256
raw: 0xb
attributes:
value: fixedtpm|fixedparent|sensitivedataorigin|userwithauth|noda|restricted|decrypt
raw: 0x30472
type:
value: rsa
raw: 0x1
exponent: 65537
bits: 2048
scheme:
value: null
raw: 0x10
scheme-halg:
value: (null)
raw: 0x0
sym-alg:
value: aes
raw: 0x6
sym-mode:
value: cfb
raw: 0x43
sym-keybits: 128
rsa: baee20f69b6ee1559411563c0ef36486d53eecc084a320baad0405a57961e3cb053c16106ec834ac50cec6ef3aeced31a22a0ccec9169bd782a0ec59ef0237456160e184d50a178680a8711519b6fea11a3844bb93588528f03d275dea884519137fec4cef152dff0130752f3be6458ed12b2180934c84c08554995608480568d4cacd336ada0f6fdd2160ca81bf955aa46cc0a974747e11a7e43e078b73d678aa9e489ed8234ec6bc57a1b812b2c531739437ae8063b1a741105b2bd66fab592351602c2651c312d86199e175b144cbf88a34ec322ff614e71ddd2ecd48472424f394fd60025845df9dd9c24427b549416626ce9b0380ea751850757bf3a5c9
どうやらRSA2048bitの鍵のようですね
ココまで見てきて、あれ、もしかして消せるのではとも思えてきました
# tpm2_evictcontrol -c 0x81000001
persistent-handle: 0x81000001
action: evicted
消せましたね...
再度一覧を出してみると,たしかにSRKがなくなっています
# tpm2_getcap handles-persistent
- 0x81000002
- 0x81010001
試しにwindowsを再起動してみたところ
また会いましたね
削除した鍵は確かにBitLockerのSRKであったようです
情報の漏えい等の問題につながる話ではありませんが、隣の席の人のPCがいきなりロックされたり、みたいなことは簡単に出来てしまいそうですね (気軽にやって良い悪戯では無いでしょうが...)
おわり
たしかに SRKはTPMに保存されていて、削除すると暗号化は解けなくなるところを見ることが出来て、回復キーのバックアップの大切さを感じました
また、USBなどから別のOSを起動してもTPMを操作できるため、そもそもの起動を防ぐためにはUEFIから起動時のパスワードを要求するように設定する必要もありそうです
普段BitLockerなどで漠然と利用しているだけのTPMを、tpm2-tools
で実際にどのようなデータが格納されているのかを眺めて見ましたが、このあたりはまだまだ深淵が広がっていそうですね