教你加密Root文件系統(tǒng)(圖)
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:02:19 作者:佚名
我要評論

當(dāng)你不能依靠物理安全來保證你文件的安全時,是時候采取額外的步驟加密文件系統(tǒng)了,雖然本文涉及到的是基于PowerPC的系統(tǒng),但原則上來說也適用于其他架構(gòu)的系統(tǒng)。
在另一篇文章“實現(xiàn)加密的home目錄”中,我描寫了如何透明地加密home目錄,本文敘述另一個技術(shù)實現(xiàn)--
當(dāng)你不能依靠物理安全來保證你文件的安全時,是時候采取額外的步驟加密文件系統(tǒng)了,雖然本文涉及到的是基于PowerPC的系統(tǒng),但原則上來說也適用于其他架構(gòu)的系統(tǒng)。
在另一篇文章“實現(xiàn)加密的home目錄”中,我描寫了如何透明地加密home目錄,本文敘述另一個技術(shù)實現(xiàn)--加密的root文件系統(tǒng),我論述了GNU/Linux啟動過程和軟件需求,并提供了一些指令,對Open Firmware做了一下介紹,以及其他一些有關(guān)的考慮事項。我用于教學(xué)的系統(tǒng)是一臺基于PowerPC架構(gòu)的新世界蘋果iBOOK電腦,運行Fedora Core 3預(yù)覽版,不考慮細(xì)節(jié),本文涉及到的概念和程序可以應(yīng)用到任何設(shè)備、架構(gòu)或操作系統(tǒng)。我提供的指令假設(shè)你有一個多余的USB閃存盤并且你系統(tǒng)的支持從USB設(shè)備啟動。
同時,我還假設(shè)讀者能輕松應(yīng)用源代碼補丁并編譯程序,對于Fedora Core 3 Test 3版本,mkinitrd和啟動腳本軟件包需要打補丁以支持加密的root文件系統(tǒng),需要掌握基本的分區(qū)管理和創(chuàng)建文件系統(tǒng)的知識,執(zhí)行一個基本的Linux發(fā)行版安裝超出了本文要求的范疇。
在呈現(xiàn)有關(guān)的技術(shù)步驟之前,一個高層概念必須先討論:信任。信任與加密技術(shù)和認(rèn)證總是糾纏在一起的,對任何有電子密鑰的設(shè)備都可以假設(shè)它是可信任的。例如:當(dāng)自動提款機(ATM)與我的銀行賬號共用個人識別號(PIN)時,我會信任ATM不會將我的PIN與不適當(dāng)?shù)牡谌竭M(jìn)行共享。同樣,當(dāng)我給我的計算機提供一個加密密鑰時,我假設(shè)這個密鑰不會與任何其他人進(jìn)行共享,我會信任這臺計算機在我們之間保守秘密。
那么,你能信任你的計算機嗎?除非你無論到哪里都帶著它,否則你真的不能信任它,即使磁盤已經(jīng)經(jīng)過加密處理也不行。設(shè)想這樣一個情景:在你睡覺時,有人偷走了你的計算機,小偷將計算機中加密的內(nèi)容做了一份拷貝,雖然沒有加密密鑰而對他來說毫無意義,但是他可以用更惡魔的內(nèi)容替換筆記本電腦加密的內(nèi)容,然后再將電腦放回去,當(dāng)你第二天醒來時,計算機提示你輸入加密密碼,但是這時你提供的密鑰會傳輸給小偷,他得到密鑰后就有一份數(shù)據(jù)和密鑰的拷貝了,他就可以讀取你的文件了。
這個情景可能顯得比較牽強,但是它說明了一點,你不能信任你的筆記本電腦,始終保持你的眼睛你離開它很重要,因此,無論如何優(yōu)秀地實現(xiàn)你的加密系統(tǒng),要建立在信任的基礎(chǔ)前提條件下才行。
網(wǎng)絡(luò)確保我們可以信任計算機的啟動過程,我們需要將其從計算機中分隔出來,考慮這個問題:你攜帶你的汽車鑰匙而不是攜帶你的汽車。你的密鑰自身概念上與你的汽車鑰匙一樣。你可以更容易地保護(hù)你的密鑰,因此你不用隨時隨地都攜帶上你的計算機,我們將用這個密鑰提供啟動計算機需要的軟件,閃存盤將充當(dāng)密鑰的角色,通過保護(hù)啟動系統(tǒng)最初的軟件,除加密密鑰外,我們可以有效地降低啟動過程被劫持的風(fēng)險。
你需要連接你的計算機是如何啟動的,因為解鎖一個加密的root文件系統(tǒng)是對整體的引導(dǎo)過程有影響,目前穩(wěn)定的內(nèi)核版本是2.6,可選擇使用initramfs來幫助啟動,在lwn.net上有一篇文檔“initramfs來了”, initramfs是一個cipo歸檔,內(nèi)核知道如何解壓到基于RAM的磁盤上,這個解壓的文件系統(tǒng)包括一個傳統(tǒng)的載入內(nèi)核掛載root文件系統(tǒng)的模塊的腳本,在我們的樣例中,這個腳本也用于解鎖加密的root文件系統(tǒng),關(guān)于這個主題更多的信息可以在文件buffer-format.txt和initrd.txt中找到,這兩個文件都在Linux內(nèi)核源代碼發(fā)布包中。
對Linux有若干個文件系統(tǒng)加密接口是可用的,Jari Ruusu的Loop-AES就是這樣一個項目,有多個cryptoloop變種提供一個加密的loopback設(shè)備,本文集中講述最近2.6Linux內(nèi)核提供的dm-crypt接口,這個接口目前已經(jīng)被Fedora項目吸收,dm-crypt模塊由Fedora內(nèi)核包提供,還需要一個靜態(tài)鏈接cryptsetup,這個實用程序簡化了dm-crypt設(shè)備的管理,最后,還需要parted和hfsutils來管理啟動文件系統(tǒng)。
不幸的是,F(xiàn)edora Core的anaconda安裝程序還不支持在盒子外安裝加密文件系統(tǒng),網(wǎng)絡(luò)繞過這個限制,你必須保留一個空閑分區(qū)安裝Fedora,格式化空閑分區(qū)為一個加密文件系統(tǒng),然后拷貝原始安裝數(shù)據(jù)到新的加密文件系統(tǒng)上,網(wǎng)絡(luò)簡化,我們假設(shè)Fedora已經(jīng)安裝到兩個分區(qū)上:/dev/hda4,掛載到/home和/dev/hda5,掛載到/,因為/home下還沒有用戶目錄,直到Fedora安裝完畢,我們可以使用/dev/hda4作為我們的備用分區(qū),/dev/hda3作為swap分區(qū)。
安裝Fedroa Core 3,掛載/dev/hda4到/home,/dev/hda5掛載到/,不要添加非root用戶,因為/home稍后將被清除干凈,至此,你應(yīng)該擁有一個全功能的Linux系統(tǒng)了。
在設(shè)置加密文件系統(tǒng)之前,你應(yīng)該隨意分區(qū),這樣排除一個潛在關(guān)于磁盤內(nèi)容的信息漏洞,圖1示范了一個抽象的半滿磁盤,它沒有恰當(dāng)進(jìn)行隨機排列,圖2示范了一個恰當(dāng)隨機排列的磁盤,在格式化之前包含一個加密的文件系統(tǒng),注意,從圖1中可以獲取到一些關(guān)于它的內(nèi)容的知識(如它們跨越了磁盤的二分之一),圖2提供了一個沒有那么豪華的對手,假如這樣,磁盤可以很容易被清空,分區(qū)隨機排列是通過用隨機數(shù)據(jù)重寫它的內(nèi)容實現(xiàn)的:dd if=/dev/urandom of=/dev/hda4,這個過程可能要花很長的時間,因為創(chuàng)建隨機數(shù)據(jù)有些困難的。
圖1
圖2隨機排列的分區(qū)隱藏了使用量
要在/dev/hda4上創(chuàng)建一個加密的ext3文件系統(tǒng),使用下面的步驟:
1)確認(rèn)aes,dm-mod,dm-crypt模塊已經(jīng)載入內(nèi)核
2)卸載將要托管加密root文件系統(tǒng)的分區(qū)/dev/hda4
#umount /dev/hda4
3)創(chuàng)建一個隨機256位加密密鑰并存儲在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
這個密鑰稍后將拷貝到閃存盤。
4)創(chuàng)建一個dm-crypt設(shè)備,使用前面創(chuàng)建的密鑰加密
#cryptsetup -d /etc/root-key create /dev/hda4
現(xiàn)在訪問/dev/mapper/root在/dev/hda4上提供了一個加密層,默認(rèn)情況下,cryptsetup創(chuàng)建一個aes加密的dm-crypt設(shè)備并任務(wù)密鑰大小為256位。
5)在/dev/mapper/root上創(chuàng)建一個ext3文件系統(tǒng)
#mkfs.ext3 /dev/mapper/root
6)掛載新文件系統(tǒng)
#mkdir /mnt/encroot
#mount /dev/mapper/root /mnt/encroot
7)現(xiàn)在你已經(jīng)有一個加密文件系統(tǒng)了,你必須用/dev/hda5(原始的root文件系統(tǒng))的內(nèi)容來填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中創(chuàng)建一個條目以便不同的實用程序知道文件系統(tǒng)是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
現(xiàn)在我們的加密文件系統(tǒng)已經(jīng)準(zhǔn)備好了,需要理解更多關(guān)于目標(biāo)架構(gòu)的啟動過程,通常,計算機有一個固件程序來掌管系統(tǒng)啟動的全過程,保護(hù)固件程序超出了本文的范疇,因此我們假設(shè)系統(tǒng)固件程序是可以信任的,大多數(shù)讀者可能對BIOS比較熟悉,它是PC平臺的啟動固件程序,我主要討論的是Open Firmware,它用于計算機制造廠商如蘋果,sun和IBM啟動系統(tǒng)。
在另一篇文章“實現(xiàn)加密的home目錄”中,我描寫了如何透明地加密home目錄,本文敘述另一個技術(shù)實現(xiàn)--加密的root文件系統(tǒng),我論述了GNU/Linux啟動過程和軟件需求,并提供了一些指令,對Open Firmware做了一下介紹,以及其他一些有關(guān)的考慮事項。我用于教學(xué)的系統(tǒng)是一臺基于PowerPC架構(gòu)的新世界蘋果iBOOK電腦,運行Fedora Core 3預(yù)覽版,不考慮細(xì)節(jié),本文涉及到的概念和程序可以應(yīng)用到任何設(shè)備、架構(gòu)或操作系統(tǒng)。我提供的指令假設(shè)你有一個多余的USB閃存盤并且你系統(tǒng)的支持從USB設(shè)備啟動。
同時,我還假設(shè)讀者能輕松應(yīng)用源代碼補丁并編譯程序,對于Fedora Core 3 Test 3版本,mkinitrd和啟動腳本軟件包需要打補丁以支持加密的root文件系統(tǒng),需要掌握基本的分區(qū)管理和創(chuàng)建文件系統(tǒng)的知識,執(zhí)行一個基本的Linux發(fā)行版安裝超出了本文要求的范疇。
在呈現(xiàn)有關(guān)的技術(shù)步驟之前,一個高層概念必須先討論:信任。信任與加密技術(shù)和認(rèn)證總是糾纏在一起的,對任何有電子密鑰的設(shè)備都可以假設(shè)它是可信任的。例如:當(dāng)自動提款機(ATM)與我的銀行賬號共用個人識別號(PIN)時,我會信任ATM不會將我的PIN與不適當(dāng)?shù)牡谌竭M(jìn)行共享。同樣,當(dāng)我給我的計算機提供一個加密密鑰時,我假設(shè)這個密鑰不會與任何其他人進(jìn)行共享,我會信任這臺計算機在我們之間保守秘密。
那么,你能信任你的計算機嗎?除非你無論到哪里都帶著它,否則你真的不能信任它,即使磁盤已經(jīng)經(jīng)過加密處理也不行。設(shè)想這樣一個情景:在你睡覺時,有人偷走了你的計算機,小偷將計算機中加密的內(nèi)容做了一份拷貝,雖然沒有加密密鑰而對他來說毫無意義,但是他可以用更惡魔的內(nèi)容替換筆記本電腦加密的內(nèi)容,然后再將電腦放回去,當(dāng)你第二天醒來時,計算機提示你輸入加密密碼,但是這時你提供的密鑰會傳輸給小偷,他得到密鑰后就有一份數(shù)據(jù)和密鑰的拷貝了,他就可以讀取你的文件了。
這個情景可能顯得比較牽強,但是它說明了一點,你不能信任你的筆記本電腦,始終保持你的眼睛你離開它很重要,因此,無論如何優(yōu)秀地實現(xiàn)你的加密系統(tǒng),要建立在信任的基礎(chǔ)前提條件下才行。
網(wǎng)絡(luò)確保我們可以信任計算機的啟動過程,我們需要將其從計算機中分隔出來,考慮這個問題:你攜帶你的汽車鑰匙而不是攜帶你的汽車。你的密鑰自身概念上與你的汽車鑰匙一樣。你可以更容易地保護(hù)你的密鑰,因此你不用隨時隨地都攜帶上你的計算機,我們將用這個密鑰提供啟動計算機需要的軟件,閃存盤將充當(dāng)密鑰的角色,通過保護(hù)啟動系統(tǒng)最初的軟件,除加密密鑰外,我們可以有效地降低啟動過程被劫持的風(fēng)險。
你需要連接你的計算機是如何啟動的,因為解鎖一個加密的root文件系統(tǒng)是對整體的引導(dǎo)過程有影響,目前穩(wěn)定的內(nèi)核版本是2.6,可選擇使用initramfs來幫助啟動,在lwn.net上有一篇文檔“initramfs來了”, initramfs是一個cipo歸檔,內(nèi)核知道如何解壓到基于RAM的磁盤上,這個解壓的文件系統(tǒng)包括一個傳統(tǒng)的載入內(nèi)核掛載root文件系統(tǒng)的模塊的腳本,在我們的樣例中,這個腳本也用于解鎖加密的root文件系統(tǒng),關(guān)于這個主題更多的信息可以在文件buffer-format.txt和initrd.txt中找到,這兩個文件都在Linux內(nèi)核源代碼發(fā)布包中。
對Linux有若干個文件系統(tǒng)加密接口是可用的,Jari Ruusu的Loop-AES就是這樣一個項目,有多個cryptoloop變種提供一個加密的loopback設(shè)備,本文集中講述最近2.6Linux內(nèi)核提供的dm-crypt接口,這個接口目前已經(jīng)被Fedora項目吸收,dm-crypt模塊由Fedora內(nèi)核包提供,還需要一個靜態(tài)鏈接cryptsetup,這個實用程序簡化了dm-crypt設(shè)備的管理,最后,還需要parted和hfsutils來管理啟動文件系統(tǒng)。
不幸的是,F(xiàn)edora Core的anaconda安裝程序還不支持在盒子外安裝加密文件系統(tǒng),網(wǎng)絡(luò)繞過這個限制,你必須保留一個空閑分區(qū)安裝Fedora,格式化空閑分區(qū)為一個加密文件系統(tǒng),然后拷貝原始安裝數(shù)據(jù)到新的加密文件系統(tǒng)上,網(wǎng)絡(luò)簡化,我們假設(shè)Fedora已經(jīng)安裝到兩個分區(qū)上:/dev/hda4,掛載到/home和/dev/hda5,掛載到/,因為/home下還沒有用戶目錄,直到Fedora安裝完畢,我們可以使用/dev/hda4作為我們的備用分區(qū),/dev/hda3作為swap分區(qū)。
安裝Fedroa Core 3,掛載/dev/hda4到/home,/dev/hda5掛載到/,不要添加非root用戶,因為/home稍后將被清除干凈,至此,你應(yīng)該擁有一個全功能的Linux系統(tǒng)了。
在設(shè)置加密文件系統(tǒng)之前,你應(yīng)該隨意分區(qū),這樣排除一個潛在關(guān)于磁盤內(nèi)容的信息漏洞,圖1示范了一個抽象的半滿磁盤,它沒有恰當(dāng)進(jìn)行隨機排列,圖2示范了一個恰當(dāng)隨機排列的磁盤,在格式化之前包含一個加密的文件系統(tǒng),注意,從圖1中可以獲取到一些關(guān)于它的內(nèi)容的知識(如它們跨越了磁盤的二分之一),圖2提供了一個沒有那么豪華的對手,假如這樣,磁盤可以很容易被清空,分區(qū)隨機排列是通過用隨機數(shù)據(jù)重寫它的內(nèi)容實現(xiàn)的:dd if=/dev/urandom of=/dev/hda4,這個過程可能要花很長的時間,因為創(chuàng)建隨機數(shù)據(jù)有些困難的。

圖1

圖2隨機排列的分區(qū)隱藏了使用量
要在/dev/hda4上創(chuàng)建一個加密的ext3文件系統(tǒng),使用下面的步驟:
1)確認(rèn)aes,dm-mod,dm-crypt模塊已經(jīng)載入內(nèi)核
2)卸載將要托管加密root文件系統(tǒng)的分區(qū)/dev/hda4
#umount /dev/hda4
3)創(chuàng)建一個隨機256位加密密鑰并存儲在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
這個密鑰稍后將拷貝到閃存盤。
4)創(chuàng)建一個dm-crypt設(shè)備,使用前面創(chuàng)建的密鑰加密
#cryptsetup -d /etc/root-key create /dev/hda4
現(xiàn)在訪問/dev/mapper/root在/dev/hda4上提供了一個加密層,默認(rèn)情況下,cryptsetup創(chuàng)建一個aes加密的dm-crypt設(shè)備并任務(wù)密鑰大小為256位。
5)在/dev/mapper/root上創(chuàng)建一個ext3文件系統(tǒng)
#mkfs.ext3 /dev/mapper/root
6)掛載新文件系統(tǒng)
#mkdir /mnt/encroot
#mount /dev/mapper/root /mnt/encroot
7)現(xiàn)在你已經(jīng)有一個加密文件系統(tǒng)了,你必須用/dev/hda5(原始的root文件系統(tǒng))的內(nèi)容來填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中創(chuàng)建一個條目以便不同的實用程序知道文件系統(tǒng)是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
現(xiàn)在我們的加密文件系統(tǒng)已經(jīng)準(zhǔn)備好了,需要理解更多關(guān)于目標(biāo)架構(gòu)的啟動過程,通常,計算機有一個固件程序來掌管系統(tǒng)啟動的全過程,保護(hù)固件程序超出了本文的范疇,因此我們假設(shè)系統(tǒng)固件程序是可以信任的,大多數(shù)讀者可能對BIOS比較熟悉,它是PC平臺的啟動固件程序,我主要討論的是Open Firmware,它用于計算機制造廠商如蘋果,sun和IBM啟動系統(tǒng)。
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設(shè)置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進(jìn)行加密。但有些人加密后就會忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應(yīng)量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o(hù)企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實,針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17