LUKS (Linux Unified Key Setup)是 Linux 硬盤加密的標(biāo)準(zhǔn)。 通過提供標(biāo)準(zhǔn)的磁盤格式,它不僅可以促進(jìn)發(fā)行版之間的兼容性,還可以提供對(duì)多個(gè)用戶密碼的安全管理。 LUKS加密廣泛用于各種Linux發(fā)行版中,以保護(hù)磁盤并創(chuàng)建加密的容器。作為一個(gè)獨(dú)立于平臺(tái)的開源規(guī)范,LUKS可以看作是磁盤加密的典型實(shí)現(xiàn)。LUKS提供多種加密算法、多種加密模式和多種哈希函數(shù)可供選擇,是最難破解的磁盤加密系統(tǒng)之一。本文我們將介紹如何在Windows中處理LUKS加密以及如何通過分布式密碼破解進(jìn)行破解。
磁盤加密基礎(chǔ)知識(shí)
所有磁盤加密工具都依賴于對(duì)稱加密方式來加密數(shù)據(jù),盡管Microsoft BitLocker默認(rèn)使用128位AES密鑰,但主要的磁盤加密工具通常都依賴于具有256位密鑰的硬件加速AES加密。一些磁盤加密工具提供了加密算法的選擇,最受支持的是VeraCrypt,它提供了約15種對(duì)稱加密選項(xiàng)。
通過使用密鑰生成函數(shù)(KDF)從用戶的密碼(或其他數(shù)據(jù))生成對(duì)稱加密密鑰。 KDF使用用戶輸入的單向轉(zhuǎn)換(哈希函數(shù))來生成二進(jìn)制加密密鑰或解開用于解密實(shí)際對(duì)稱加密密鑰的中間密鑰。使用不同的哈希函數(shù)以及大量的哈希迭代來降低潛在的暴力破解的速度。
破解加密容器時(shí),你必須知道加密算法、哈希函數(shù)和哈希迭代次數(shù)的確切組合。錯(cuò)誤的選擇實(shí)際上會(huì)使你成功恢復(fù)的機(jī)會(huì)無效,即使你偶然發(fā)現(xiàn)了正確的密碼也是如此。
LUKS磁盤加密
LUKS是最初為L(zhǎng)inux OS開發(fā)的與平臺(tái)無關(guān)的磁盤加密規(guī)范,LUKS是Linux中磁盤加密的事實(shí)上的標(biāo)準(zhǔn),可促進(jìn)各種Linux發(fā)行版之間的兼容性,并提供對(duì)多個(gè)用戶密碼的安全管理。如今,LUKS被廣泛應(yīng)用于桌面和筆記本電腦上的幾乎每個(gè)Linux發(fā)行版中。它也是網(wǎng)絡(luò)附加存儲(chǔ)(NAS)設(shè)備中流行的加密格式,特別是那些QNAP生產(chǎn)的設(shè)備。
除了全盤加密之外,LUKS還可以用于創(chuàng)建和運(yùn)行加密容器,其方式類似于其他加密容器,例如VeraCrypt,加密的容器具有與LUKS全盤加密相同的保護(hù)級(jí)別。
LUKS為用戶提供了各種加密算法、哈希函數(shù)和加密模式的選擇,從而提供了大約45種可能的組合。
LUKS加密算法
LUKS支持多種加密算法、加密模式和哈希函數(shù)的組合,包括:
高級(jí)加密標(biāo)準(zhǔn)(AES)
Serpent加密算法
Twofish加密算法
CAST-128加密算法
CAST-256加密算法
AES是唯一的一種硬件加速加密算法,是迄今為止三種中最常見的算法,尤其是在企業(yè)環(huán)境和網(wǎng)絡(luò)連接存儲(chǔ)(NAS)設(shè)備中使用時(shí)。 AES加密在具有AES加密加速函數(shù)的芯片組(例如Intel CPU中的AES-NI指令集)上使用時(shí),可提供最高的流密碼性能。Serpent和Twofish可以在創(chuàng)建加密卷時(shí)由用戶手動(dòng)指定。
LUKS支持以下加密模式:
ECB (分組加密的模式之一)
CBC-PLAIN64
CBC-ESSIV:哈希
XTS-PLAIN64
設(shè)置加密卷時(shí),各種Linux發(fā)行版可能使用不同的默認(rèn)設(shè)置。例如,Red Hat Linux使用cbc-essiv:sha256和256位AES密鑰,這是許多流行的Linux發(fā)行版的默認(rèn)組合。本文破解中要是用的破解工具支持CBC-PLAIN64,CBC-ESSIV:SHA256和XTS-PLAIN64加密模式。
LUKS哈希函數(shù)
在磁盤加密中,哈希函數(shù)用作密鑰生成函數(shù)(KDF)的一部分。 KDF用于從用戶提供的輸入(通常是基于文本的密碼短語)中導(dǎo)出二進(jìn)制加密密鑰,LUKS規(guī)范支持以下哈希函數(shù):
SHA-1
SHA-256
SHA-512
RIPEMD160
Whirlpool(基于分組密碼的散列算法)
不過對(duì)WHIRLPOOL的支持不屬于該規(guī)范的一部分,但是本文使用的破解工具支持此哈希函數(shù)以及四個(gè)“正式”函數(shù)。默認(rèn)情況下,大多數(shù)Linux發(fā)行版都使用SHA-256作為哈希函數(shù)。
LUKS默認(rèn)加密設(shè)置
雖然每個(gè)Linux發(fā)行版的維護(hù)人員和嵌入式Linux的硬件制造商都可以自由選擇他們自己的默認(rèn)加密設(shè)置,但是帶256位對(duì)稱加密密鑰的aes-cbc-essiv:sha256是最常見的默認(rèn)加密設(shè)置。意思如下:
AES——加密算法為AES(默認(rèn)情況下,使用256位密鑰);
CBC ——密碼塊鏈接加密模式;
ESSIV ——加密的鹽扇區(qū)初始化向量,此IV應(yīng)該用于CBC模式下的密碼;
SHA-256——使用32位字計(jì)算的安全哈希算法,這是CBC模式下密碼的默認(rèn)哈希函數(shù)。
非默認(rèn)加密設(shè)置
用戶可以在加密磁盤時(shí)指定默認(rèn)設(shè)置以外的其他解密設(shè)置,與TrueCrypt / VeraCrypt不同,LUKS確實(shí)將有關(guān)所選加密設(shè)置的信息存儲(chǔ)在加密元數(shù)據(jù)中,從而可以在發(fā)起破解之前檢測(cè)到加密設(shè)置。Elcomsoft Distributed Password Recovery通過分析加密元數(shù)據(jù)來自動(dòng)檢測(cè)LUKS加密設(shè)置,在破解之前,必須使用Elcomsoft Forensic Disk Decryptor將其提取。
多個(gè)加密密鑰
一個(gè)LUKS卷可以使用多個(gè)密鑰來保護(hù),該規(guī)范允許多個(gè)用戶密鑰解密用于加密的主密鑰。結(jié)果,LUKS加密的設(shè)備可能包含多個(gè)密鑰槽,這些密鑰槽用于存儲(chǔ)備份密鑰/密碼并允許多個(gè)用戶使用各自的密碼來解鎖LUKS卷。
每個(gè)密鑰槽都用獨(dú)特的加鹽加密保護(hù),這使得反向暴力破解(將相同的KDF密碼與不同的槽匹配)是不可行的。在破解過程中,必須為每個(gè)密鑰槽分別計(jì)算KDF。因此,恢復(fù)密碼以保護(hù)LUKS設(shè)備需要選擇要破解的密鑰槽。破解密碼時(shí),設(shè)置攻擊時(shí)使用Elcomsoft Distributed Password Recovery執(zhí)行此選擇。
破解LUKS加密步驟1:提取加密元數(shù)據(jù)
為了保護(hù)對(duì)加密設(shè)備中存儲(chǔ)的數(shù)據(jù)的訪問,必須首先恢復(fù)原始的純文本密碼。涉及多個(gè)步驟,且需要使用幾種不同的工具。
1.使用Elcomsoft Forensic Disk Decryptor或Elcomsoft System Recovery從加密的設(shè)備或磁盤映像中提取加密元數(shù)據(jù)。
2.使用提取的元數(shù)據(jù)(一個(gè)小文件)通過Elcomsoft Distributed Password Recovery對(duì)密碼發(fā)起破解。
3.找到密碼后,掛載磁盤卷或解密數(shù)據(jù)。
目前有兩種不同的工具來提取LUKS加密元數(shù)據(jù),選擇正確的工具取決于你是在現(xiàn)場(chǎng)還是在實(shí)驗(yàn)室中工作。如果你要分析可疑計(jì)算機(jī),則可以使用Elcomsoft System Recovery從USB閃存驅(qū)動(dòng)器啟動(dòng)系統(tǒng),并從連接到計(jì)算機(jī)的存儲(chǔ)設(shè)備中提取加密元數(shù)據(jù)。
注意:Elcomsoft System Recovery 7.06和更高版本支持LUKS加密。如果你使用的是舊版工具,請(qǐng)更新至最新版本以獲得LUKS支持。
1.下載Elcomsoft System Recovery,啟動(dòng)安裝程序并創(chuàng)建可啟動(dòng)的USB驅(qū)動(dòng)器。
2.使用USB驅(qū)動(dòng)器將目標(biāo)系統(tǒng)啟動(dòng)到Windows PE環(huán)境。
3.Elcomsoft System Recovery將自動(dòng)啟動(dòng)。
4.查看附加的磁盤。
5.選擇LUKS加密的分區(qū),然后點(diǎn)擊“轉(zhuǎn)儲(chǔ)”以提取加密元數(shù)據(jù)。
在你的計(jì)算機(jī)上傳輸加密元數(shù)據(jù),并將其與Elcomsoft Distributed Password Recovery配合使用,以對(duì)LUKS加密密碼發(fā)起破解。
如果你在實(shí)驗(yàn)室中工作并且正在處理磁盤或磁盤映像,則將使用Elcomsoft Forensic Disk Decryptor,使用Elcomsoft Forensic Disk Decryptor提取加密元數(shù)據(jù)非常簡(jiǎn)單。
注意:Elcomsoft Forensic Disk Decryptor 2.13及以上版本支持LUKS加密,如果你使用的是該工具的舊版本,請(qǐng)更新到最新版本以獲得LUKS支持。
1.啟動(dòng)Elcomsoft Forensic Disk Decryptor。
2.選擇操作模式“提取/準(zhǔn)備數(shù)據(jù)以進(jìn)一步恢復(fù)密碼”。
3.打開包含LUKS卷的物理設(shè)備或磁盤映像,在下面的示例中,我們正在處理物理設(shè)備。
4.EFDD將顯示加密卷的列表,選擇你要從中提取加密元數(shù)據(jù)的卷。
5.點(diǎn)擊“下一步”提取加密元數(shù)據(jù)并將其保存到文件中。
破解LUKS加密步驟2:破解密碼
雖然LUKS通過在密鑰生成過程中使用數(shù)千次哈希函數(shù)迭代來提供強(qiáng)大的保護(hù),以防止暴力破解,但與過去相比,我們?cè)诿艽a恢復(fù)破解方面有了長(zhǎng)足的進(jìn)步。由于GPU加速、分布式和云計(jì)算的使用,強(qiáng)制輸入密碼的速度大大加快。通過Elcomsoft Distributed Password Recovery,最多可使用10000臺(tái)計(jì)算機(jī)和按需云實(shí)例來破解單個(gè)密碼。
為了進(jìn)行破解,請(qǐng)執(zhí)行以下操作。
1.啟動(dòng)Elcomsoft Distributed Password Recovery;
2.打開包含在上一步中使用Elcomsoft Forensic Disk Decryptor器獲得的加密元數(shù)據(jù)的文件;
3.將顯示可用的密鑰槽以及哈希迭代次數(shù)。指定要破解的密鑰槽;
4.配置并啟動(dòng)破解;
暴力破解不僅變得更快,而且變得更加聰明。用戶的現(xiàn)有密碼是一個(gè)很好的起點(diǎn),這些密碼可以從用戶的Google帳戶,macOS,iOS或iCloud鑰匙串,Microsoft帳戶中提取,也可以從用戶的計(jì)算機(jī)中提取,用戶的現(xiàn)有密碼提示了可能使用的字符組:
Elcomsoft Distributed Password Recovery提供了許多選項(xiàng),可以自動(dòng)嘗試密碼的最常見變體(例如Password1,password1967或pa $$ w0rd):
掩碼可用于嘗試匹配已建立的通用模式的密碼:
先進(jìn)的技術(shù)允許使用最多兩個(gè)字典和可編寫腳本的規(guī)則來編寫密碼:
破解密碼需要多長(zhǎng)時(shí)間?
即使你確切地知道攻擊每秒會(huì)產(chǎn)生多少密碼,仍有許多因素會(huì)影響恢復(fù)LUKS密碼所需的時(shí)間。密碼的長(zhǎng)度及其熵,以及你所了解的有關(guān)密碼的知識(shí)或用戶組成密碼的方式,將對(duì)破解特定LUKS容量所需的時(shí)間產(chǎn)生巨大影響。
恢復(fù)速度如何?速度也不是一個(gè)恒定的值,很多影響破解速度的因素還不是很明顯。你可以嘗試的每秒密碼數(shù)量取決于幾件事,最重要的是以下幾點(diǎn):
硬件:你擁有的高端視頻卡越多、越高端,原始速度就會(huì)越快。進(jìn)行攻擊的計(jì)算機(jī)數(shù)量也是如此,處理密碼的電腦越多,速度就會(huì)越快。
哈希函數(shù):一些哈希函數(shù)比其他哈希函數(shù)慢,對(duì)于LUKS,用戶可以選擇五個(gè)哈希函數(shù),包括RIPEMD160,SHA-1,SHA-256,SHA-512和WHIRLPOOL,其中RIPEMD160是最快的,而WHIRLPOOL是最慢的。根據(jù)設(shè)置加密時(shí)哈希函數(shù)的選擇,你的攻擊可能會(huì)更快或更慢。
加密算法和加密模式:同樣,在用戶設(shè)置加密時(shí)選擇這些設(shè)置,選擇哈希函數(shù)會(huì)影響攻擊的速度,但與哈希函數(shù)的選擇相比,攻擊的速度要慢得多。
哈希迭代次數(shù)以及用戶計(jì)算機(jī)的速度:與BitLocker或VeraCrypt等其他磁盤加密工具不同,LUKS會(huì)更改用于保護(hù)主加密密鑰的哈希迭代次數(shù)。當(dāng)使用給定的加密設(shè)置組合創(chuàng)建加密磁盤時(shí),LUKS會(huì)對(duì)用戶的系統(tǒng)進(jìn)行基準(zhǔn)測(cè)試。該數(shù)據(jù)用于選擇保護(hù)主加密密鑰的哈希迭代次數(shù)。實(shí)際上,與在高端硬件上創(chuàng)建的類似磁盤或容器相比,在低端計(jì)算機(jī)上創(chuàng)建的LUKS加密磁盤或容器的保護(hù)函數(shù)較弱。如果將磁盤或容器移動(dòng)到函數(shù)更強(qiáng)大的新計(jì)算機(jī),則哈希迭代次數(shù)不會(huì)更改。
更有趣的是,哈希迭代次數(shù)會(huì)根據(jù)其他加密設(shè)置的選擇而變化。如果使用較弱(較快)的哈希函數(shù),則選擇大量的哈希迭代,反之亦然。從理論上講,不管選擇的哈希函數(shù)和加密設(shè)置如何,哈希迭代的可變數(shù)量會(huì)使攻擊在類似硬件上創(chuàng)建的LUKS卷或容器的速度相同。事實(shí)并非如此;不同算法和哈希函數(shù)之間的攻擊速度仍然存在差異,如下面的基準(zhǔn)測(cè)試所示。
值得注意的是,哈希迭代次數(shù)與其他加密元數(shù)據(jù)存儲(chǔ)在一起,TrueCrypt / VeraCrypt容器不是這種情況,使得哈希迭代次數(shù)成為用戶提供的另一個(gè)秘密。
總結(jié)
LUKS不僅是一種流行且廣泛使用的加密規(guī)范,而且還是一個(gè)非常有趣的規(guī)范。多個(gè)密鑰槽的支持,哈希函數(shù)的選擇,加密算法和加密模式以及基于基準(zhǔn)的算法,可在基于用戶計(jì)算機(jī)的性能設(shè)置加密時(shí)自動(dòng)選擇哈希迭代次數(shù)。