摘要
Microsoft Windows使用BitLocker驅動器加密(BDE)格式來加密卷。此規範基於可用文檔,並通過文件格式的逆向工程得到增強。
本文檔旨在作為BitLocker驅動器加密(BDE)格式規範的工作文檔。這應該能讓現有的開源取證工具能夠處理此卷類型。
文件信息
作者(S): |
Joachim Metz < joachim.metz@gmail.com > |
抽象: |
本文檔包含有關BitLocker驅動器加密(BDE)格式的信息 |
分類: |
|
關鍵詞: |
BitLocker驅動器加密,BDE,全卷加密,FVE |
本文為個人快速翻譯筆記 若有翻譯不完整請見諒
原文出自於https://github.com/libyal/libbde/blob/master/documentation/BitLocker%20Drive%20Encryption%20(BDE)%20format.asciidoc
執照
版權所有(C)2011-2018,Joachim Metz <joachim.metz@gmail.com>。 允許複製,分發和/或修改本文檔 GNU自由文檔許可證,版本1.3或更高版本的條款 由自由軟件基金會出版; 沒有不變的部分,沒有 封面文字,沒有封底文字。包含許可證的副本 在標題為“GNU自由文檔許可證”的部分中。
1.概述
BitLocker驅動器加密(BDE)是Microsoft Windows在Vista中使用的捲加密。BitLocker驅動器加密(BDE)有多個版本:
-
BitLocker Windows Vista
-
TODO:BitLocker Windows 2008
-
BitLocker Windows 7
-
BitLocker To Go
-
BitLocker Windows 8
-
BitLocker Windows 10
BitLocker Windows Vista和BitLocker Windows 7都旨在加密固定存儲介質(如硬盤)上的NTFS卷。BitLocker To Go是在Windows 7中引入的,旨在加密可移動驅動器,例如FAT文件系統。可移動驅動器上的NTFS卷被視為固定存儲介質上的NTFS卷。
BitLocker標識符(GUID)是4967d63b-2e29-4ad8-8399-f6a339e3d00。
BitLocker To Go使用4967d63b-2e29-4ad8-8399-f6a339e3d01。
1.1。Metadata
1.1.1。Windows Vista
在Windows Vista中,未加密卷的System Volume Information文件夾包含BitLocker元數據塊的多個文件條目:
-
FVE。{%GUID%}。[123] 映射包含FVE元數據的塊。通常為16384字節的大小。
未加密卷上的元數據文件的內容由0字節值組成。假設這些文件用於防止BitLocker元數據被覆蓋。
注意
|
EnCase(至少版本6.18)不會將這些元數據區域清零。 |
1.1.2。Windows 7的
在Windows 7中,未加密卷的System Volume Information文件夾包含BitLocker元數據塊的多個文件條目:
-
FVE2。{%GUID%}映射包含加密卷標題的塊。通常為8192字節的大小。
-
FVE2。{%GUID%}。[123] 映射包含FVE元數據的塊。通常為65536字節的大小。
未加密卷上的元數據文件的內容由0字節值組成。假設這些文件用於防止BitLocker元數據被覆蓋。
注意
|
EnCase(至少版本6.18)不會將這些元數據區域清零。 |
1.1.3。BitLocker TO GO
BitLocker To Go使用具有加密和未加密部分的混合卷。未加密的部分包含各種文件。BitLocker To Go幫助應用程序的應用程序文件; 它也可以在C:\ Windows \ BitLockerDiscoveryVolumeContents中找到
-
“COV 0000. BL”將包含BitLocker To Go GUID的塊和偏移映射到元數據。通常為32768字節的大小。
-
“COV 0000. ER”映射加密數據。
-
“PAD 0000. PD”映射填充。
-
“PAD 0000. NG” 未知。通常為0字節大小。
注意
|
已經觀察到“COV 0000. ER”和“PAD 0000. NG”文件可以在FAT32卷上分成多個4294934528字節(4 GiB-32768),例如“COV 0001. ER”,“COV 0002” .ER“,……或”PAD 0001. NG“,…… |
注意
|
有人建議“PAD 0000. NG”的目的是用條目填充根目錄,這樣就不會在卷上創建新文件。 |
2.密鑰
要加密存儲介質,BitLocker使用不同類型的密鑰。
2.1。卷主密鑰(VMK)
卷主密鑰(VMK)的大小為256位,存儲在多個FVE卷主密鑰(VMK)結構中。VMK使用恢復密鑰,外部密鑰或TPM加密存儲。
VMK也可以未加密存儲,這被稱為清除密鑰。
2.2。全卷加密密鑰(FVEK)
全卷加密密鑰(FVEK)使用卷主密鑰(VMK)加密存儲。FVEK的大小取決於使用的加密方法:
-
對於AES 128位,密鑰是128位大小
-
對於AES 256位,密鑰的大小為256位
當使用Elephant Diffuser時,保存FKEV的結構的關鍵數據總是512位大小。第一個256位保留用於FVEK,另一個256位保留用於TWEAK鍵。當加密方法是AES 128位時,僅使用128位的256位。
2.3。TWEAK鍵
TWEAK使用卷主密鑰(VMK)加密存儲。TWEAK密鑰的大小取決於使用的加密方法:
-
對於AES 128位,密鑰是128位大小
-
對於AES 256位,密鑰的大小為256位
TWEAK鍵僅在使用Elephant Diffuser時出現。TWEAK密鑰存儲在保持全卷加密密鑰(FVEK)始終為512位大小的結構的密鑰數據中。第一個256位保留用於FVEK,另一個256位保留用於TWEAK鍵。當加密方法是AES 128位時,僅使用128位的256位。
2.4。恢復密鑰
BitLocker提供恢復(或數字)密碼來解鎖加密數據。恢復密碼用於確定恢復密鑰。
恢復密碼示例:
471207-278498-422125-177177-561902-537405-468006-693451
有效的恢復密碼由48位數字組成,其中每個數字可以被11整除,餘數為0. 11的除數結果是16位值。各個16位值組成一個128位密鑰。
使用以下方法計算相應的恢復密鑰,部分用偽C編寫:
Initialize a structure consisting of: uint8_t last_sha256[ 32 ]; uint8_t initial_sha256[ 32 ]; uint8_t salt[ 16 ]; uint64_t count;
將最後一個SHA256和計數初始化為0。
計算128位密鑰的SHA256並更新初始SHA256值。
鹽存儲在彈出鍵中的磁盤上,該彈出鍵存儲在受恢復密鑰保護的捲主密鑰(VMK)中。
循環為1048576(0x100000)次:
-
計算結構的SHA256並更新最後的SHA256值
-
將計數增加1
最後一個SHA256值包含256位密鑰,該密鑰是可以解鎖受恢復密鑰保護的捲主密鑰(VMK)的恢復密鑰。
2.5。清除密鑰
清除密鑰是存儲在卷上的未受保護的256位密鑰,用於解密VMK。在解密加密卷時使用它。
2.6。啟動密鑰
啟動密鑰(或外部密鑰)存儲在名為{%GUID%}的文件中.BEK。文件名中的GUID等於BitLocker元數據中的密鑰標識符。
單個BitLocker卷可以有多個啟動密鑰。每個密鑰由不同的密鑰標識符標識。
2.7。用戶密鑰
BitLocker To Go提供用戶密碼(或密碼)來解鎖加密數據。用戶密碼用於確定用戶密鑰。
檢查一下:密碼最大可達49個字符。
將用戶密碼轉換為UTF16 little-endian字符串。
初始化包含以下內容的結構:
uint8_t last_sha256[ 32 ]; uint8_t initial_sha256[ 32 ]; uint8_t salt[ 16 ]; uint64_t count;
將最後一個SHA256和計數初始化為0。
計算用戶密碼的SHA256。
計算用戶密碼的SHA256的SHA256,並將其設置為初始SHA256值。
鹽存儲在彈出鍵中的磁盤上,該彈出鍵存儲在受用戶密鑰(或密碼)保護的捲主密鑰(VMK)中。
循環為1048576(0x100000)次:
-
計算結構的SHA256並更新最後的SHA256值
-
將計數增加1
最後一個SHA256值包含256位密鑰,該密鑰是用戶密鑰,可以解鎖受用戶密鑰(或密碼)保護的捲主密鑰(VMK)。
3.加密方法
BitLocker使用不同類型的加密方法。為了加密扇區數據,它使用帶有或不帶象象擴散器的AES-CBC。要加密密鑰數據,BitLocker使用AES-CCM。
3.1。AES-CBC
加密和解密都使用:
-
AES-CBC,FVEK解密扇區數據
AES-CBC的初始化向量是用FVEK加密的扇區偏移AES-ECB,存儲為16字節的小端值。扇區偏移是扇區相對於卷開始的偏移量。
3.2。AES-CBC與擴散器
加密:
-
與扇區密鑰的XOR
-
擴散器A.
-
擴散器B.
-
帶有FVEK的AES-CBC
解密:
-
帶有FVEK的AES-CBC
-
擴散器B.
-
擴散器A.
-
與扇區密鑰的XOR
AES-CBC的初始化向量是用FVEK加密的扇區偏移AES-ECB,存儲為16字節的小端值。扇區偏移是扇區相對於卷開始的偏移量。
扇區鍵大小為32字節,包含:
-
較低的16字節包含扇區偏移的小端版本,相對於卷的開頭,使用TWEAK密鑰加密的AES-ECB
-
高16字節包含扇區偏移量的16字節little-endian版本,相對於卷的起始位置,最高位設置(或高位字節設置為0x80)AES-ECB使用TWEAK加密鍵
3.3。AES-CCM
密鑰數據使用AES-CCM加密,初始化向量為0。
3.4。AES-XTS
FKEV包含兩個XTS密鑰。
加密和解密都使用:
-
AES-XTS與扇區數據的FVEK解密
AES-XTS的初始化向量是存儲為16字節小端值的扇區號。扇區號是扇區相對於體積開始的偏移量除以扇區大小。
3.5。擴散器
擴散器A和B變體描述於[FERGUSON06]
。
3.6。虛擬部門
在BitLocker中,以特定方式處理加密存儲介質的某些扇區。這些是要存儲的行業:
-
未加密的捲標題
-
BitLocker元數據
3.6.1。BitLocker Windows Vista
在BitLocker Windows Vista中,通過替換BitLocker Volume標頭中的值來重建未加密的捲標頭扇區的第一個扇區,即
-
用“NTFS \ x20 \ x20 \ x20 \ x20”替換“文件系統簽名”
-
用“MTF鏡像簇編號”替換“FVE元數據塊1簇編號”
直接跟隨第一部門的15個部門也未加密。
包含BDE元數據的扇區顯示為空扇區; 包含0字節值。
注意
|
EnCase(至少版本6.18)不會將這些元數據區域清零。 |
3.6.2。BitLocker Windows 7和To Go
BitLocker Windows 7和To Go都在特定位置存儲未加密的第一個扇區的加密版本。此位置在FVE Volume標頭塊中定義。它通常是8192字節大小,需要前16個扇區。
包含加密卷標頭和BDE元數據的扇區顯示為空扇區; 包含0字節值。
注意
|
EnCase(至少版本6.18)不會將這些元數據區域清零。 |
3.6.3。BitLocker Windows 10
在Bitlocker Windows 10的更高版本中, 不再存在FVE Volume標頭塊。FVE元數據塊頭中的捲頭扇區的數量 可用於確定卷頭大小。它通常是8192字節大小,需要前16個扇區。
4.卷頭
4.1。BitLocker Windows Vista
BitLocker Windows Vista卷標頭類似於NTFS卷標頭。這些差異以粗體強調。卷標頭大小為512字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
3 |
“\ XEB \ X52 \ X90” |
引導入口點 |
3 |
8 |
“-FVE-FS-” |
文件系統簽名 |
11 |
2 |
每個扇區的字節數 |
|
13 |
1 |
每個集群塊的扇區 |
|
14 |
2 |
為0x00 |
保留部門 |
16 |
1 |
為0x00 |
文件分配表(FAT)的數量 |
17 |
2 |
0 |
根目錄條目 |
19 |
2 |
扇區總數(16位) |
|
21 |
1 |
媒體描述符 |
|
22 |
2 |
為0x00 |
每個文件分配表(FAT)的扇區 |
24 |
2 |
0x3F的 |
每個賽道的部門 |
26 |
2 |
頭數 |
|
28 |
4 |
隱藏扇區數量 |
|
32 |
4 |
為0x00 |
扇區總數(32位) |
36 |
1 |
0x80的 |
未知(光盤單元號) |
37 |
1 |
為0x00 |
未知(標誌) |
38 |
1 |
0x80的 |
未知(BPB版本簽名字節) |
39 |
1 |
為0x00 |
未知(保留) |
40 |
8 |
扇區總數(64位) |
|
48 |
8 |
主文件表(MFT)群集塊編號 |
|
56 |
8 |
FVE元數據塊1集群塊編號 |
|
64 |
1 |
MFT條目大小 |
|
65 |
3 |
未知 |
|
68 |
1 |
索引條目大小 |
|
69 |
3 |
未知 |
|
72 |
8 |
NTFS卷序列號 |
|
80 |
4 |
為0x00 |
校驗 |
84 |
426 |
啟動代碼 |
|
510 |
2 |
0x55 0xaa |
部門簽名 |
注意
|
扇區數可以比分區表中指示的值少1。 |
4.2。BitLocker Windows 7及更高版本
BitLocker Windows 7(及更高版本)卷標題與BitLocker Windows Vista卷標題類似於NTFS卷標題。版本之間的差異以粗體強調。卷標頭大小為512字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
3 |
“\ XEB \ X58 \ X90” |
引導入口點 |
3 |
8 |
“-FVE-FS-” |
文件系統簽名 |
11 |
2 |
每個扇區的字節數 |
|
13 |
1 |
每個集群塊的扇區 |
|
14 |
2 |
為0x00 |
保留部門 |
16 |
1 |
為0x00 |
文件分配表(FAT)的數量 |
17 |
2 |
0 |
根目錄條目 |
19 |
2 |
扇區總數(16位) |
|
21 |
1 |
媒體描述符 |
|
22 |
2 |
為0x00 |
每個文件分配表(FAT)的扇區 |
24 |
2 |
0x3F的 |
每個賽道的部門 |
26 |
2 |
頭數 |
|
28 |
4 |
隱藏扇區數 |
|
32 |
4 |
為0x00 |
扇區總數(32位) |
36 |
4 |
0x1fe0 |
每個文件分配表的扇區 |
40 |
2 |
FAT標誌(僅在從FAT12 / 16卷轉換時使用。) |
|
42 |
2 |
版本(定義為0) |
|
44 |
4 |
根目錄的簇號開始 |
|
48 |
2 |
0×0001 |
FS信息部門的扇區數 |
50 |
2 |
0x0006 |
此引導扇區副本的扇區號(如果不存在備份副本,則為0) |
52 |
12 |
保留的 |
|
64 |
1 |
0x80的 |
物理驅動器編號(參見偏移0x24處的FAT12 / 16 BPB) |
65 |
1 |
保留(參見偏移0x25處的FAT12 / 16 BPB) |
|
66 |
1 |
0x29 |
擴展啟動簽名。(見偏移量為0x26的FAT12 / 16 BPB) |
67 |
4 |
卷序列號 |
|
71 |
11 |
“NO NAME \ x20 \ x20 \ x20 \ x20” |
體積標識 |
82 |
8 |
“FAT32 \ X20 \ X20 \ X20” |
文件系統簽名 |
90 |
70 |
啟動代碼 |
|
160 |
16 |
BitLocker標識符 |
|
176 |
8 |
FVE元數據塊1偏移 |
|
184 |
8 |
FVE元數據塊2偏移 |
|
192 |
8 |
FVE元數據塊3偏移 |
|
200 |
307 |
未知(bootcode的一部分) |
|
507 |
3 |
未知 |
|
510 |
2 |
0x55 0xaa |
部門簽名 |
注意
|
扇區數可以比分區表中指示的值少1。 |
TODO檢查突出顯示的值
4.3。BitLocker To Go
NTL卷上的BitLocker To Go類似於BitLocker Windows 7. FAT卷的BitLocker Windows To Go卷標題類似於FAT32卷標題。這些差異以粗體強調。卷標頭大小為512字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
3 |
“\ XEB \ X58 \ X90” |
引導入口點 |
3 |
8 |
“MSWIN4.1” |
簽名 |
11 |
2 |
每個扇區的字節數 |
|
13 |
1 |
每個集群塊的扇區 |
|
14 |
2 |
為0x00 |
保留部門 |
16 |
1 |
為0x00 |
文件分配表(FAT)的數量 |
17 |
2 |
0 |
根目錄條目 |
19 |
2 |
扇區總數(16位) |
|
21 |
1 |
媒體描述符 |
|
22 |
2 |
0x00 |
每個文件分配表(FAT)的扇區 |
24 |
2 |
0x3F |
每軌的扇區 |
26 |
2 |
頭數 |
|
28 |
4 |
隱藏扇區數量 |
|
32 |
4 |
扇區總數(32位) |
|
36 |
4 |
0x1f0e |
每個文件分配表的扇區 |
40 |
2 |
FAT標誌(僅在從FAT12 / 16卷轉換時使用。) |
|
42 |
2 |
版本(定義為0) |
|
44 |
4 |
根目錄的簇號開始 |
|
48 |
2 |
0×0001 |
FS信息部門的扇區數 |
50 |
2 |
0x0006 |
此引導扇區副本的扇區號(如果不存在備份副本,則為0) |
52 |
12 |
保留的 |
|
64 |
1 |
0x80的 |
物理驅動器編號(參見偏移0x24處的FAT12 / 16 BPB) |
65 |
1 |
保留(參見偏移0x25處的FAT12 / 16 BPB) |
|
66 |
1 |
0x29 |
擴展啟動簽名。(見偏移量為0x26的FAT12 / 16 BPB) |
67 |
4 |
卷序列號 |
|
71 |
11 |
“NO NAME \ x20 \ x20 \ x20 \ x20” |
體積標識 |
82 |
8 |
“FAT32 \ X20 \ X20 \ X20” |
文件系統簽名 |
90 |
334 |
啟動代碼 |
|
424 |
16 |
BitLocker標識符 |
|
440 |
8 |
FVE元數據塊1偏移 |
|
448 |
8 |
FVE元數據塊2偏移 |
|
456 |
8 |
FVE元數據塊3偏移 |
|
464 |
46 |
未知 |
|
510 |
2 |
0x55 0xaa |
部門簽名 |
TODO檢查突出顯示的值
5. FVE Metadata塊
BitLocker卷包含3個FVE元數據塊。每個FVE元數據塊包括:
-
Block Header
-
Metadata Header
-
Metadata條目
-
填充(0字節值)(在Windows 8中可見)
5.1。FVE元數據塊標頭
5.1.1。FVE元數據塊標題版本1 – Windows Vista
FVE元數據塊頭版本1的大小為64字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
8 |
“-FVE-FS-” |
簽名 |
8 |
2 |
尺寸 |
|
10 |
2 |
1 |
版 |
12 |
2 |
通常是未知的 0x04 |
|
14 |
2 |
通常是未知的 0x04 |
|
16 |
16 |
0 |
未知(空值) |
32 |
8 |
FVE元數據塊1偏移 |
|
40 |
8 |
FVE元數據塊2偏移 |
|
48 |
8 |
FVE元數據塊3偏移 |
|
56 |
8 |
MFT鏡像集群塊編號 |
FVE元數據塊標題版本2 – Windows 7和更高版本
5.1.2。FVE元數據塊頭版本2的大小為64字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
8 |
“-FVE-FS-” |
簽名 |
8 |
2 |
尺寸 |
|
10 |
2 |
2 |
版 |
12 |
2 |
部分解密卷中的未知 |
|
14 |
2 |
部分解密卷中的未知副本 |
|
16 |
8 |
加密卷大小 |
|
24 |
4 |
未知 |
|
28 |
4 |
卷標題扇區 |
|
32 |
8 |
FVE元數據塊1偏移 |
|
40 |
8 |
FVE元數據塊2偏移 |
|
48 |
8 |
FVE元數據塊3偏移 |
|
56 |
8 |
卷頭偏移 |
解密BitLocker時會從後面解密到前面。因此,加密的捲大小包含仍然加密(或需要解密)的捲的字節數。
5.2。FVE元數據標題(版本1)
FVE元數據頭(版本1)的大小為48字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
4 |
元數據大小 |
|
4 |
4 |
1 |
版 |
8 |
4 |
48 |
元數據標頭大小 |
12 |
4 |
元數據大小複製 |
|
16 |
16 |
卷標識符 |
|
32 |
4 |
下一個nonce計數器 |
|
36 |
4 |
加密方法 |
|
40 |
8 |
創建時間 |
加密方法
5.2.1。值 | 識別碼 | 描述 |
---|---|---|
為0x0000 |
未知(未加密/外部密鑰) |
|
為0x1000 |
未知(拉伸鍵) |
|
0x1001 |
未知(拉伸鍵) |
|
為0x2000 |
未知(AES-CCM 256位加密) |
|
0x2001 |
未知(AES-CCM 256位加密) |
|
0x2002 |
未知(AES-CCM 256位加密) |
|
0x2003 |
未知(AES-CCM 256位加密) |
|
0x2004 |
未知(AES-CCM 256位加密) |
|
0x2005 |
未知(AES-CCM 256位加密) |
|
為0x8000 |
使用Elephant Diffuser進行AES-CBC 128位加密 |
|
在0x8001 |
使用Elephant Diffuser進行AES-CBC 256位加密 |
|
0x8002 |
AES-CBC 128位加密 |
|
0x8003 |
AES-CBC 256位加密 |
|
0x8004 |
AES-XTS 128位加密 |
|
0x8005 |
未知(AES-XTS 256位加密) |
5.3。FVE元數據條目(版本1)
FVE元數據條目(版本1)的大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
2 |
條目大小 |
|
2 |
2 |
進入類型 |
|
4 |
2 |
值類型 |
|
6 |
2 |
1 |
版 |
8 |
… |
數據 |
5.3.1。FVE元數據條目類型
值 | 識別碼 | 描述 |
---|---|---|
為0x0000 |
沒有,入境是財產 |
|
0×0002 |
卷主密鑰(VMK) |
|
為0x0003 |
全卷加密密鑰(FKEV) |
|
0x0004 |
驗證 |
|
0x0006 |
啟動密鑰 |
|
0x0007 |
說明(驅動器標籤) |
|
0x000b |
全卷加密密鑰(FKEV)的未知 |
|
0x000f |
卷頭塊 |
5.3.2。FVE元數據值類型
值 | 識別碼 | 描述 |
---|---|---|
為0x0000 |
擦除 |
|
0×0001 |
鍵 |
|
0×0002 |
Unicode字符串 |
|
為0x0003 |
拉伸鍵 |
|
0x0004 |
使用密鑰 |
|
0×0005 |
AES-CCM加密密鑰 |
|
0x0006 |
TPM編碼密鑰 |
|
0x0007 |
驗證 |
|
×0008 |
卷主密鑰 |
|
為0x0009 |
外鍵 |
|
0x000a |
更新 |
|
0x000b |
錯誤 |
|
0x000f |
偏移量和大小 |
5.5。FVE Stretch加密密鑰
FVE Stretch加密密鑰的值類型為0x0003。它的大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
4 |
加密方法 |
|
4 |
16 |
鹽 |
|
20 |
… |
FVE元數據條目 |
5.6。FVE AES-CCM加密密鑰
FVE AES-CCM加密密鑰的值類型為0x0005。它的大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
8 |
Nonce日期和時間 |
|
8 |
4 |
Nonce櫃檯 |
|
12 |
… |
AES-CCM加密數據 |
5.6.1。未加密的數據
未加密的數據大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
16 |
消息驗證碼(MAC) |
|
鑰匙容器 |
|||
16 |
4 |
大小 |
|
20 |
2 |
1 |
版 |
22 |
2 |
未知 |
|
24 |
4 |
加密方法 |
|
28 |
… |
未加密的密鑰數據 |
5.7。FVE TPM編碼密鑰
FVE TPM編碼密鑰的值類型為0x0006。它的大小可變,包括:
TODO – 此結構尚未分析
5.8。FVE驗證
FVE驗證的值類型為0x0007。它的大小可變,包括:
TODO – 此結構尚未分析
5.9。FVE卷主密鑰(VMK)
FVE卷主密鑰的值類型為0x0008。它的大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
16 |
密鑰標識符 |
|
16 |
8 |
上次修改日期和時間 |
|
24 |
2 |
未知 |
|
26 |
2 |
保護類型 |
|
28 |
… |
屬性 |
可用屬性取決於VMK類型。
清除密鑰保護的VMK包括:
-
密鑰(具有256位密鑰數據)
-
AES-CCM加密密鑰
受保護的恢復密鑰VMK包括:
-
包含“DiskPassword \ x00”的可選描述字符串
-
拉伸鍵
-
AES-CCM加密密鑰
受啟動密鑰保護的VMK包括:
-
包含“ExternalKey \ x00”的可選描述字符串
-
拉伸鍵
-
AES-CCM加密密鑰
受密碼保護的VMK包括:
-
包含“ExternalKey \ x00”的可選描述字符串
-
拉伸鍵
-
AES-CCM加密密鑰
關鍵保護類型
5.9.1。值 | 識別碼 | 描述 |
---|---|---|
為0x0000 |
VMK受清除密鑰保護 |
|
0100 |
VMK受TPM保護 |
|
0200 |
VMK受啟動密鑰保護 |
|
為0x0800 |
VMK受恢復密碼保護 |
|
為0x2000 |
VMK受密碼保護 |
筆記
有人建議0x0500代表用TPM和PIN保護的VMK
由GetKeyProtectorType函數文檔定義的密鑰保護程序類型 0未知或其他保護類型 1可信平台模塊(TPM) 2外部密鑰 3數字密碼 4 TPM和PIN 5 TPM和啟動密鑰 6 TPM和PIN和啟動密鑰 7公鑰 8密碼短語 9 TPM證書 10 CryptoAPI新一代(CNG)保護器
5.10。FVE外鍵
FVE外鍵的值類型為0x0009。它的大小可變,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
16 |
密鑰標識符 |
|
16 |
8 |
上次修改日期和時間 |
|
24 |
… |
屬性 |
可用的屬性:
-
包含“ExternalKey \ x00”的可選描述字符串
-
鍵
6. BitLocker外鍵(BEK)文件
BitLocker外鍵(BEK)文件通常為156字節大小,包括:
-
一個文件頭
-
一組元數據條目
6.1。BEK文件頭(版本1)
BEK文件頭類似於FVE元數據頭(版本1)。BEK文件頭(版本1)的大小為48字節,包括:
抵消 | 尺寸 | 值 | 描述 |
---|---|---|---|
0 |
4 |
元數據大小 |
|
4 |
4 |
1 |
版 |
8 |
4 |
48 |
元數據標頭大小 |
12 |
4 |
元數據大小複製 |
|
16 |
16 |
卷標識符 |
|
32 |
4 |
下一個nonce計數器 |
|
36 |
4 |
加密方法 |
|
40 |
8 |
創建時間 |
文件中的密鑰標識符必須與FVE卷主密鑰(VMK)中的密鑰標識符匹配。
6.2。BEK元數據條目(版本1)
BEK元數據條目(版本1)的格式類似於FVE元數據條目(版本1)的格式。
BEK文件中的元數據由FVE外部密鑰組成,該外部密鑰包含256位未受保護的密鑰數據。
VMK的標識符應與BEK文件頭中的標識符匹配。
附錄A:參考文獻
[FERGUSON06]
標題: | AES-CBC +- 適用於Windows Vista的磁盤加密算法 |
---|---|
作者(S): |
尼爾斯弗格森 |
日期: |
2006年8月 |
網址: |
[KUMAR08]
標題: | Bitlocker和Windows Vista |
---|---|
作者(S): |
Nitan Kumar,Vipin Kumar |
日期: |
2008年5月19日 |
網址: |
[KORNBLUM09]
標題: | 數位鑑識分析實施BitLocker驅動器加密 |
---|---|
作者(S): |
Jesse Kornblum |
日期: |
2009 |
網址: |
[KORNBLUM10]
標題: | BitLocker To Go |
---|---|
作者(S): |
Jesse Kornblum |
日期: |
2010 |
網址: |
[MSDN]
標題: | BitLocker驅動器加密概述 |
---|---|
網址: |
標題: | Win32_EncryptableVolume類 |
---|---|
網址: |
https://docs.microsoft.com/en-us/windows/desktop/SecProv/win32-encryptablevolume |
標題: | Win32_EncryptableVolume類的GetKeyProtectorType方法 |
---|---|
網址: |
https://docs.microsoft.com/en-us/windows/desktop/SecProv/getkeyprotectortype-win32-encryptablevolume |