BitLocker加密密鑰的內存搜索方法與流程
2024-04-15 09:13:05 1
bitlocker加密密鑰的內存搜索方法
技術領域
1.本發明屬於電子取證及數據恢復領域,涉及一種內存搜索方法的方法,尤其涉及一種bitlocker加密密鑰的內存搜索方法。
背景技術:
2.windowsbitlocker驅動器加密通過加密windows作業系統卷上存儲的所有數據可以更好地保護計算機中的數據。bitlocker使用tpm(受信任的平臺模塊)幫助保護windows作業系統和用戶數據,並幫助確保計算機即使在無人參與、丟失或被盜的情況下也不會被篡改。bitlocker還可以在沒有tpm的情況下使用。
3.現有技術中,有一些對bitlocker進行解密的技術,但存在諸多問題,主要表現在:只支持針對已知明文密碼或者恢復密鑰或者是啟動密鑰的方式、一些技術方案可以針對採用tpm加密晶片加密的系統盤進行解密,這些現有技術方案要麼技術方案本身較為複雜、要麼耗時且效率不高。
技術實現要素:
4.針對現有技術的技術問題,本發明提供了bitlocker加密密鑰的內存搜索方法,包括以下步驟:
5.s100:搜索物理內存/物理內存鏡像文件中的字符串標誌,用以確定bitlocker驅動的數據結構在內存中的起始地址;
6.s200:判斷是否搜索到所述字符串標誌,如果是,執行步驟s300,否則,結束流程;
7.s300:所述字符串標誌的起始地址作為bitlocker驅動的數據結構在內存中的起始地址;獲取bitlocker驅動的數據結構中的size欄位的值,作為bitlocker驅動的數據結構的字節長度,根據所述起始地址及所述字節長度,讀取bitlocker驅動的數據結構;
8.s400:設置所述起始地址為第一讀取地址;
9.s500:以當前第一讀取地址作為首地址,順序讀取32位元組的內容,採用用擴展算法擴展當前所讀取的32位元組的內容,用以獲取15個輪密鑰;
10.s600:將所述15個輪密鑰中第一、第二個輪密鑰順序拼接,獲得32位元組的拼接後的輪密鑰;
11.s700:將拼接後的輪密鑰與當前所讀取的32位元組的內容按位比較,判斷是否相等,如果是,執行步驟sa00,否則,執行步驟s800;
12.s800:第一讀取地址=第一讀取地址+1;
13.s900:判斷第一讀取地址是否大於bitlocker驅動的數據結構在內存中的結束地址減32的差,如果是,結束流程,否則,執行步驟s500;
14.sa00:輸出當前所讀取的32位元組的內容,作為bitlocker加密密鑰。
15.優選地,所述字符串標誌為fvec或cngb。
16.優選地,獲取bitlocker驅動的數據結構中的size欄位的值的方法為:讀取所述字
符串標誌之前連續4位元組的內容,作為size欄位的值。
17.優選地,所述擴展算法為aes擴展算法。
18.本發明具有以下有益效果:
19.1、技術方案簡單高效,無需增添硬體,實現起來成本極低;
20.2、適用範圍廣,適用tpm及非tpm的情況,且適用於對tpm加密晶片加密的系統盤進行解密。
附圖說明
21.圖1是本發明所提供的bitlocker加密密鑰的內存搜索方法的流程圖。
具體實施方式
22.圖1示出了本發明的bitlocker加密密鑰的內存搜索方法的流程圖。如圖1所示,包括該方法以下步驟:
23.s100:搜索物理內存/物理內存鏡像文件中的字符串標誌,用以確定bitlocker驅動的數據結構在內存中的起始地址。
24.具體地,根據bitlocker驅動的數據結構的頭結構中pooltag欄位的值(其值為字符串標誌
『
fvec』或
『
cngb』),搜索物理內存或者物理內存鏡像,如果搜索到
『
fvec』或
『
cngb』字符串標誌,則可以確定bitlcoker驅動內核數據結構在內存中的起始地址。
25.s200:判斷是否搜索到字符串標誌
『
fvec』或
『
cngb』,如果是,執行步驟s300,否則,結束流程;
26.s300:字符串標誌
『
fvec』或
『
cngb』的起始地址作為bitlocker驅動的數據結構在內存中的起始地址;
27.獲取bitlocker驅動的數據結構中的size欄位的值,作為bitlocker驅動的數據結構的字節長度;
28.根據起始地址及字節長度,讀取bitlocker驅動的數據結構;
29.s400:設置起始地址為第一讀取地址;
30.s500:以當前第一讀取地址作為首地址,順序讀取32位元組的內容,採用用擴展算法擴展當前所讀取的32位元組的內容,用以獲取15個輪密鑰;
31.s600:將15個輪密鑰中第一、第二個輪密鑰順序拼接,獲得32位元組的拼接後的輪密鑰;
32.s700:將拼接後的輪密鑰與當前所讀取的32位元組的內容按位比較,判斷是否相等,如果是,執行步驟sa00,否則,執行步驟s800;
33.s800:第一讀取地址=第一讀取地址+1;
34.s900:判斷第一讀取地址是否大於bitlocker驅動的數據結構在內存中的結束地址減32的差,如果是,結束流程,否則,執行步驟s500;
35.sa00:輸出當前所讀取的32位元組的內容,作為bitlocker加密密鑰。
36.通過本發明所提供的上述方法,解決了現有技術中bitlocker加密密鑰的內存搜索方法的技術方案較為複雜、耗時且效率不高的技術問題。
37.應當理解的是,本發明不限於上述的舉例,對本領域普通技術人員來說,可以根據
上述說明加以改進或變換,所有這些改進和變換都應屬於本發明所附權利要求的保護範圍。
技術特徵:
1.一種bitlocker加密密鑰的內存搜索方法,其特徵在於,包括以下步驟:s100:搜索物理內存/物理內存鏡像文件中的字符串標誌,用以確定bitlocker驅動的數據結構在內存中的起始地址;s200:判斷是否搜索到所述字符串標誌,如果是,執行步驟s300,否則,結束流程;s300:所述字符串標誌的起始地址作為bitlocker驅動的數據結構在內存中的起始地址;獲取bitlocker驅動的數據結構中的size欄位的值,作為bitlocker驅動的數據結構的字節長度,根據所述起始地址及所述字節長度,讀取bitlocker驅動的數據結構;s400:設置所述起始地址為第一讀取地址;s500:以當前第一讀取地址作為首地址,順序讀取32位元組的內容,採用用擴展算法擴展當前所讀取的32位元組的內容,用以獲取15個輪密鑰;s600:將所述15個輪密鑰中第一、第二個輪密鑰順序拼接,獲得32位元組的拼接後的輪密鑰;s700:將拼接後的輪密鑰與當前所讀取的32位元組的內容按位比較,判斷是否相等,如果是,執行步驟sa00,否則,執行步驟s800;s800:第一讀取地址=第一讀取地址+1;s900:判斷第一讀取地址是否大於bitlocker驅動的數據結構在內存中的結束地址減32的差,如果是,結束流程,否則,執行步驟s500;sa00:輸出當前所讀取的32位元組的內容,作為bitlocker加密密鑰。2.根據權利要求1所述的一種bitlocker加密密鑰的內存搜索方法,其特徵在於,所述字符串標誌為fvec或cngb。3.根據權利要求1所述的一種bitlocker加密密鑰的內存搜索方法,其特徵在於,獲取bitlocker驅動的數據結構中的size欄位的值的方法為:讀取所述字符串標誌之前連續4位元組的內容,作為size欄位的值。4.根據權利要求1所述的一種bitlocker加密密鑰的內存搜索方法,其特徵在於,所述擴展算法為aes擴展算法。
技術總結
本發明公開了一種BitLocker加密密鑰的內存搜索方法,其特徵在於,搜索物理內存/物理內存鏡像文件中的字符串標誌,如果搜索到所述字符串標誌,則以所述字符串標誌的起始地址作為BitLocker驅動的數據結構在內存中的起始地址,並獲取BitLocker驅動的數據結構中的size欄位的值,作為BitLocker驅動的數據結構的字節長度,根據所述起始地址及所述字節長度,讀取BitLocker驅動的數據結構;設置所述起始地址為第一讀取地址,以當前第一讀取地址作為首地址,順序讀取32位元組的內容,採用用擴展算法獲得32位元組的輪密鑰,將輪密鑰與當前所讀取的32位元組的內容按位比較,如果相等,則輸出當前所讀取的32位元組的內容,作為BitLocker加密密鑰,如果不相等,當前第一讀取地址+1後,重複順序讀取32位元組的內容。序讀取32位元組的內容。序讀取32位元組的內容。
技術研發人員:梁效寧 韓勇 許超明 張佳強
受保護的技術使用者:四川效率源信息安全技術股份有限公司
技術研發日:2022.12.27
技術公布日:2023/3/28