Skip to main content

摘要

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標識符
包含GUID

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標識符
包含GUID

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鏡像集群塊編號

5.1.2。 FVE元數據塊標題版本2 – Windows 7和更高版本

FVE元數據塊頭版本2的大小為64字節,包括:

抵消 尺寸 描述

0

8

“-FVE-FS-”

簽名

8

2

 

尺寸

10

2

2

12

2

 

部分解密卷中的未知
0x04通常為
0x05(保護狀態?)

14

2

 

部分解密卷中的未知副本
0x04通常為
0x01

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

 

元數據大小
FVE元數據中數據的大小,包括此大小值本身

4

4

1

8

4

48

元數據標頭大小

12

4

 

元數據大小複製

16

16

 

卷標識符
包含GUID

32

4

 

下一個nonce計數器

36

4

 

加密方法
請參見:加密方法
當前未知用於MSB的高16位用戶是什麼,或者該值實際上是2x 16位值。

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

 

條目大小
FVE元數據條目中數據的大小,包括此大小值本身

2

2

 

進入類型

4

2

 

值類型

6

2

1

8

 

數據

5.3.1。FVE元數據條目類型

識別碼 描述

為0x0000

 

沒有,入境是財產

     

0×0002

 

卷主密鑰(VMK)

為0x0003

 

全卷加密密鑰(FKEV)

0x0004

 

驗證

     

0x0006

 

啟動密鑰

0x0007

 

說明(驅動器標籤)
包含計算機名稱,卷名稱和日期
日期格式是否取決於區域設置MM / DD / YYYY?

     

0x000b

 

全卷加密密鑰(FKEV)的未知
備份?

     

0x000f

 

卷頭塊

5.3.2。FVE元數據值類型

識別碼 描述

為0x0000

 

擦除

0×0001

 

0×0002

 

Unicode字符串
UTF-16 little-endian,帶字符串結尾字符

為0x0003

 

拉伸鍵

0x0004

 

使用密鑰

0×0005

 

AES-CCM加密密鑰

0x0006

 

TPM編碼密鑰

0x0007

 

驗證

×0008

 

卷主密鑰

為0x0009

 

外鍵

0x000a

 

更新

0x000b

 

錯誤

     

0x000f

 

偏移量和大小
包含2 x 64位值的元組

5.4。FVE鍵

FVE Stretch加密密鑰的值類型為0x0001。它的大小可變,包括:

抵消 尺寸 描述

0

4

 

加密方法
請參見:加密方法一節

4

 

關鍵數據

5.5。FVE Stretch加密密鑰

FVE Stretch加密密鑰的值類型為0x0003。它的大小可變,包括:

抵消 尺寸 描述

0

4

 

加密方法
請參見:加密方法一節

4

16

 

20

 

FVE元數據條目
包含AES-CCM加密密鑰

5.6。FVE AES-CCM加密密鑰

FVE AES-CCM加密密鑰的值類型為0x0005。它的大小可變,包括:

抵消 尺寸 描述

0

8

 

Nonce日期和時間
包含FILETIME

8

4

 

Nonce櫃檯

12

 

AES-CCM加密數據

5.6.1。未加密的數據

未加密的數據大小可變,包括:

抵消 尺寸 描述

0

16

 

消息驗證碼(MAC)

鑰匙容器

16

4

 

大小
不包括MAC的大小

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

 

密鑰標識符
包含GUID

16

8

 

上次修改日期和時間
包含FILETIME

24

2

 

未知

26

2

 

保護類型
參見章節:鍵保護類型

28

 

屬性
包含FVE元數據條目的數組,其中條目類型設置為0。

可用屬性取決於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受清除密鑰保護
(基本上這是一個不受保護的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

 

密鑰標識符
包含GUID

16

8

 

上次修改日期和時間
包含FILETIME

24

 

屬性
包含FVE元數據條目的數組,其中條目類型設置為0。

可用的屬性:

  • 包含“ExternalKey \ x00”的可選描述字符串

5.11。 FVE卷標題塊

FVE卷標頭塊的值類型為0x000f。它的大小為16或52字節,包括:

抵消 尺寸 描述

0

8

 

塊偏移

8

8

 

塊大小
在Windows 8中添加

16

8

 

未知

24

8

 

未知

32

12

 

未知(空值)

44

4

 

未知(扇區大小?)

48

4

 

未知(扇區大小?)

FVE卷標頭塊似乎已在Windows 7中引入。它指定加密卷中存儲未加密卷標頭的位置。

對於Windows 7,FVE卷標頭塊的大小通常為8192字節,對於BitLocker To Go,通常為5365760字節。

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

 

卷標識符
包含GUID

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月

網址:

http://download.microsoft.com/download/0/2/3/0238acaf-d3bf-4a6d-b3d6-0a0be4bbb36e/bitlockercipher200608.pdf

[KUMAR08]

標題: Bitlocker和Windows Vista

作者(S):

Nitan Kumar,Vipin Kumar

日期:

2008年5月19日

網址:

http://www.nvlabs.in/nvbit_bitlocker_white_paper.pdf

[KORNBLUM09]

標題: 數位鑑識分析實施BitLocker驅動器加密

作者(S):

Jesse Kornblum

日期:

2009

網址:

http://jessekornblum.com/publications/di09.pdf

[KORNBLUM10]

標題: BitLocker To Go

作者(S):

Jesse Kornblum

日期:

2010

網址:

http://jessekornblum.com/presentations/dodcc10-1.pdf

[MSDN]

標題: BitLocker驅動器加密概述

網址:

http://technet.microsoft.com/en-us/library/cc732774.aspx

標題: 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

Leave a Reply