教你加密Root文件系統(tǒng)(圖)
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-08 19:02:19 作者:佚名
我要評(píng)論
當(dāng)你不能依靠物理安全來(lái)保證你文件的安全時(shí),是時(shí)候采取額外的步驟加密文件系統(tǒng)了,雖然本文涉及到的是基于PowerPC的系統(tǒng),但原則上來(lái)說(shuō)也適用于其他架構(gòu)的系統(tǒng)。
在另一篇文章“實(shí)現(xiàn)加密的home目錄”中,我描寫(xiě)了如何透明地加密home目錄,本文敘述另一個(gè)技術(shù)實(shí)現(xiàn)--
當(dāng)你不能依靠物理安全來(lái)保證你文件的安全時(shí),是時(shí)候采取額外的步驟加密文件系統(tǒng)了,雖然本文涉及到的是基于PowerPC的系統(tǒng),但原則上來(lái)說(shuō)也適用于其他架構(gòu)的系統(tǒng)。
在另一篇文章“實(shí)現(xiàn)加密的home目錄”中,我描寫(xiě)了如何透明地加密home目錄,本文敘述另一個(gè)技術(shù)實(shí)現(xiàn)--加密的root文件系統(tǒng),我論述了GNU/Linux啟動(dòng)過(guò)程和軟件需求,并提供了一些指令,對(duì)Open Firmware做了一下介紹,以及其他一些有關(guān)的考慮事項(xiàng)。我用于教學(xué)的系統(tǒng)是一臺(tái)基于PowerPC架構(gòu)的新世界蘋(píng)果iBOOK電腦,運(yùn)行Fedora Core 3預(yù)覽版,不考慮細(xì)節(jié),本文涉及到的概念和程序可以應(yīng)用到任何設(shè)備、架構(gòu)或操作系統(tǒng)。我提供的指令假設(shè)你有一個(gè)多余的USB閃存盤(pán)并且你系統(tǒng)的支持從USB設(shè)備啟動(dòng)。
同時(shí),我還假設(shè)讀者能輕松應(yīng)用源代碼補(bǔ)丁并編譯程序,對(duì)于Fedora Core 3 Test 3版本,mkinitrd和啟動(dòng)腳本軟件包需要打補(bǔ)丁以支持加密的root文件系統(tǒng),需要掌握基本的分區(qū)管理和創(chuàng)建文件系統(tǒng)的知識(shí),執(zhí)行一個(gè)基本的Linux發(fā)行版安裝超出了本文要求的范疇。
在呈現(xiàn)有關(guān)的技術(shù)步驟之前,一個(gè)高層概念必須先討論:信任。信任與加密技術(shù)和認(rèn)證總是糾纏在一起的,對(duì)任何有電子密鑰的設(shè)備都可以假設(shè)它是可信任的。例如:當(dāng)自動(dòng)提款機(jī)(ATM)與我的銀行賬號(hào)共用個(gè)人識(shí)別號(hào)(PIN)時(shí),我會(huì)信任ATM不會(huì)將我的PIN與不適當(dāng)?shù)牡谌竭M(jìn)行共享。同樣,當(dāng)我給我的計(jì)算機(jī)提供一個(gè)加密密鑰時(shí),我假設(shè)這個(gè)密鑰不會(huì)與任何其他人進(jìn)行共享,我會(huì)信任這臺(tái)計(jì)算機(jī)在我們之間保守秘密。
那么,你能信任你的計(jì)算機(jī)嗎?除非你無(wú)論到哪里都帶著它,否則你真的不能信任它,即使磁盤(pán)已經(jīng)經(jīng)過(guò)加密處理也不行。設(shè)想這樣一個(gè)情景:在你睡覺(jué)時(shí),有人偷走了你的計(jì)算機(jī),小偷將計(jì)算機(jī)中加密的內(nèi)容做了一份拷貝,雖然沒(méi)有加密密鑰而對(duì)他來(lái)說(shuō)毫無(wú)意義,但是他可以用更惡魔的內(nèi)容替換筆記本電腦加密的內(nèi)容,然后再將電腦放回去,當(dāng)你第二天醒來(lái)時(shí),計(jì)算機(jī)提示你輸入加密密碼,但是這時(shí)你提供的密鑰會(huì)傳輸給小偷,他得到密鑰后就有一份數(shù)據(jù)和密鑰的拷貝了,他就可以讀取你的文件了。
這個(gè)情景可能顯得比較牽強(qiáng),但是它說(shuō)明了一點(diǎn),你不能信任你的筆記本電腦,始終保持你的眼睛你離開(kāi)它很重要,因此,無(wú)論如何優(yōu)秀地實(shí)現(xiàn)你的加密系統(tǒng),要建立在信任的基礎(chǔ)前提條件下才行。
網(wǎng)絡(luò)確保我們可以信任計(jì)算機(jī)的啟動(dòng)過(guò)程,我們需要將其從計(jì)算機(jī)中分隔出來(lái),考慮這個(gè)問(wèn)題:你攜帶你的汽車(chē)鑰匙而不是攜帶你的汽車(chē)。你的密鑰自身概念上與你的汽車(chē)鑰匙一樣。你可以更容易地保護(hù)你的密鑰,因此你不用隨時(shí)隨地都攜帶上你的計(jì)算機(jī),我們將用這個(gè)密鑰提供啟動(dòng)計(jì)算機(jī)需要的軟件,閃存盤(pán)將充當(dāng)密鑰的角色,通過(guò)保護(hù)啟動(dòng)系統(tǒng)最初的軟件,除加密密鑰外,我們可以有效地降低啟動(dòng)過(guò)程被劫持的風(fēng)險(xiǎn)。
你需要連接你的計(jì)算機(jī)是如何啟動(dòng)的,因?yàn)榻怄i一個(gè)加密的root文件系統(tǒng)是對(duì)整體的引導(dǎo)過(guò)程有影響,目前穩(wěn)定的內(nèi)核版本是2.6,可選擇使用initramfs來(lái)幫助啟動(dòng),在lwn.net上有一篇文檔“initramfs來(lái)了”, initramfs是一個(gè)cipo歸檔,內(nèi)核知道如何解壓到基于RAM的磁盤(pán)上,這個(gè)解壓的文件系統(tǒng)包括一個(gè)傳統(tǒng)的載入內(nèi)核掛載root文件系統(tǒng)的模塊的腳本,在我們的樣例中,這個(gè)腳本也用于解鎖加密的root文件系統(tǒng),關(guān)于這個(gè)主題更多的信息可以在文件buffer-format.txt和initrd.txt中找到,這兩個(gè)文件都在Linux內(nèi)核源代碼發(fā)布包中。
對(duì)Linux有若干個(gè)文件系統(tǒng)加密接口是可用的,Jari Ruusu的Loop-AES就是這樣一個(gè)項(xiàng)目,有多個(gè)cryptoloop變種提供一個(gè)加密的loopback設(shè)備,本文集中講述最近2.6Linux內(nèi)核提供的dm-crypt接口,這個(gè)接口目前已經(jīng)被Fedora項(xiàng)目吸收,dm-crypt模塊由Fedora內(nèi)核包提供,還需要一個(gè)靜態(tài)鏈接cryptsetup,這個(gè)實(shí)用程序簡(jiǎn)化了dm-crypt設(shè)備的管理,最后,還需要parted和hfsutils來(lái)管理啟動(dòng)文件系統(tǒng)。
不幸的是,F(xiàn)edora Core的anaconda安裝程序還不支持在盒子外安裝加密文件系統(tǒng),網(wǎng)絡(luò)繞過(guò)這個(gè)限制,你必須保留一個(gè)空閑分區(qū)安裝Fedora,格式化空閑分區(qū)為一個(gè)加密文件系統(tǒng),然后拷貝原始安裝數(shù)據(jù)到新的加密文件系統(tǒng)上,網(wǎng)絡(luò)簡(jiǎn)化,我們假設(shè)Fedora已經(jīng)安裝到兩個(gè)分區(qū)上:/dev/hda4,掛載到/home和/dev/hda5,掛載到/,因?yàn)?home下還沒(méi)有用戶目錄,直到Fedora安裝完畢,我們可以使用/dev/hda4作為我們的備用分區(qū),/dev/hda3作為swap分區(qū)。
安裝Fedroa Core 3,掛載/dev/hda4到/home,/dev/hda5掛載到/,不要添加非root用戶,因?yàn)?home稍后將被清除干凈,至此,你應(yīng)該擁有一個(gè)全功能的Linux系統(tǒng)了。
在設(shè)置加密文件系統(tǒng)之前,你應(yīng)該隨意分區(qū),這樣排除一個(gè)潛在關(guān)于磁盤(pán)內(nèi)容的信息漏洞,圖1示范了一個(gè)抽象的半滿磁盤(pán),它沒(méi)有恰當(dāng)進(jìn)行隨機(jī)排列,圖2示范了一個(gè)恰當(dāng)隨機(jī)排列的磁盤(pán),在格式化之前包含一個(gè)加密的文件系統(tǒng),注意,從圖1中可以獲取到一些關(guān)于它的內(nèi)容的知識(shí)(如它們跨越了磁盤(pán)的二分之一),圖2提供了一個(gè)沒(méi)有那么豪華的對(duì)手,假如這樣,磁盤(pán)可以很容易被清空,分區(qū)隨機(jī)排列是通過(guò)用隨機(jī)數(shù)據(jù)重寫(xiě)它的內(nèi)容實(shí)現(xiàn)的:dd if=/dev/urandom of=/dev/hda4,這個(gè)過(guò)程可能要花很長(zhǎng)的時(shí)間,因?yàn)閯?chuàng)建隨機(jī)數(shù)據(jù)有些困難的。
圖1
圖2隨機(jī)排列的分區(qū)隱藏了使用量
要在/dev/hda4上創(chuàng)建一個(gè)加密的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)建一個(gè)隨機(jī)256位加密密鑰并存儲(chǔ)在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
這個(gè)密鑰稍后將拷貝到閃存盤(pán)。
4)創(chuàng)建一個(gè)dm-crypt設(shè)備,使用前面創(chuàng)建的密鑰加密
#cryptsetup -d /etc/root-key create /dev/hda4
現(xiàn)在訪問(wèn)/dev/mapper/root在/dev/hda4上提供了一個(gè)加密層,默認(rèn)情況下,cryptsetup創(chuàng)建一個(gè)aes加密的dm-crypt設(shè)備并任務(wù)密鑰大小為256位。
5)在/dev/mapper/root上創(chuàng)建一個(gè)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)有一個(gè)加密文件系統(tǒng)了,你必須用/dev/hda5(原始的root文件系統(tǒng))的內(nèi)容來(lái)填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中創(chuàng)建一個(gè)條目以便不同的實(shí)用程序知道文件系統(tǒng)是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
現(xiàn)在我們的加密文件系統(tǒng)已經(jīng)準(zhǔn)備好了,需要理解更多關(guān)于目標(biāo)架構(gòu)的啟動(dòng)過(guò)程,通常,計(jì)算機(jī)有一個(gè)固件程序來(lái)掌管系統(tǒng)啟動(dòng)的全過(guò)程,保護(hù)固件程序超出了本文的范疇,因此我們假設(shè)系統(tǒng)固件程序是可以信任的,大多數(shù)讀者可能對(duì)BIOS比較熟悉,它是PC平臺(tái)的啟動(dòng)固件程序,我主要討論的是Open Firmware,它用于計(jì)算機(jī)制造廠商如蘋(píng)果,sun和IBM啟動(dòng)系統(tǒng)。
NetBSD/macppc的安裝指令對(duì)Open Firmware做了一個(gè)充分的介紹,我們對(duì)使用Open Firmware命令行接口配置計(jì)算機(jī)從一個(gè)閃存盤(pán)啟動(dòng)非常感興趣,Open Firmware允許你查看連接到計(jì)算機(jī)的設(shè)備和設(shè)置固件程序變量的值。
在一個(gè)新世界(G3或更新的)蘋(píng)果計(jì)算機(jī)初始化啟動(dòng)過(guò)程中,可以通過(guò)暫停選擇性命令來(lái)訪問(wèn)Open Firmware提示符。
變量boot-device用于確定系統(tǒng)將從哪個(gè)設(shè)備啟動(dòng),printenv命令允許查看當(dāng)前的值:
> printenv
[...]
boot-devicehd:,\\:txbihd:,\\:txbi
這實(shí)際上意味著通過(guò)執(zhí)行在第一塊IDE磁盤(pán)上HFS類(lèi)型txbi的文件來(lái)實(shí)現(xiàn)啟動(dòng)的,第二:txbi前的字符作為解釋一個(gè)HFS文件類(lèi)型的標(biāo)志,否則,txbi可能被理解為文件路徑,假如這樣,標(biāo)志hd實(shí)際上是更復(fù)雜的/pci@f4000000/ata-6@d/disk@0的一個(gè)別名,這個(gè)字符串通過(guò)子系統(tǒng)變量表現(xiàn)了路徑,你可以使用Open Firmware命令查看設(shè)備對(duì)應(yīng)的別名。
網(wǎng)絡(luò)正確地設(shè)置boot-device,我們需要找出Open Firmware認(rèn)出的我們閃存盤(pán)的名字,通過(guò)ls命令顯示閃存盤(pán)路徑,并打印出設(shè)備樹(shù):
> dev / ls
[...]
/pci@f2000000
[...]
/usb@1b,1
[...]
/disk@1
[...]
現(xiàn)在我們知道了一點(diǎn)關(guān)于計(jì)算機(jī)固件程序的知識(shí),我們必須花些時(shí)間研究固件初始化執(zhí)行程序:bootloader。通常,運(yùn)行在蘋(píng)果PowerPC架構(gòu)上的Linux系統(tǒng)使用一個(gè)叫做yaboot的程序來(lái)啟動(dòng)系統(tǒng),yaboot與LILO或GRUB類(lèi)似,它包含兩個(gè)關(guān)鍵程序:ofboot.b和yaboot。ofboot.b提供第一階段啟動(dòng)過(guò)程,實(shí)際上,ofboot.b的工作決定了啟動(dòng)什么操作系統(tǒng),例如:如果一臺(tái)電腦上同時(shí)安裝了Mac OS X和Linux系統(tǒng),ofboot.b執(zhí)行Mac OS X或Linux的bootloader,如果用戶選擇載入Linux,ofboot.b執(zhí)行yaboot,第二階段啟動(dòng)過(guò)程,然后yaboot載入Linux內(nèi)核和initrd。圖3提供了一個(gè)基于PowerPC架構(gòu)的Linux如何使用一個(gè)加密的root文件系統(tǒng)啟動(dòng)的實(shí)例。
圖3
用Open firmware啟動(dòng)一個(gè)基于PowerPC系統(tǒng)的過(guò)程
我們的可移動(dòng)啟動(dòng)設(shè)備需要ofboot.b和yaboot程序,一個(gè)Linux內(nèi)核和一個(gè)包括加密密鑰的initrd文件。蘋(píng)果目前基于PowerPC的架構(gòu)預(yù)設(shè)它的啟動(dòng)介質(zhì)格式化為HFS。
1)使用parted程序在閃存盤(pán)上創(chuàng)建正確的可啟動(dòng)的分區(qū)(我的是64MB大小,用設(shè)備節(jié)點(diǎn)/dev/sda訪問(wèn))
# parted /dev/sda
(parted) mklabel mac
(parted) print
Disk geometry for /dev/sda: 0.000-62.500 megabytes
Disk label type: mac
Minor Start End Filesystem Name Flags
1 0.000 0.031 Apple
(parted) mkpart primary hfs 0.031 62.500
(parted) print
Disk geometry for /dev/sda: 0.000-62.500 megabytes
Disk label type: mac
Minor Start End Filesystem Name Flags
1 0.000 0.031 Apple
2 0.031 62.500 untitled
(parted) set 2 boot on
(parted) name 2 Apple_Boot
(parted) quit
2)在啟動(dòng)分區(qū)上創(chuàng)建HFS文件系統(tǒng)
# hformat /dev/sda2
3)通過(guò)修改/mnt/encroot/etc/yaboot.conf配置yaboot啟動(dòng)恰當(dāng)?shù)脑O(shè)備,下面是一個(gè)最小配置例子:
boot=/dev/sda2
ofboot=/pci@f2000000/usb@1b,1/disk@1:2
partition=2
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
default=linux
image=/vmlinux
label=linux
root=/dev/hda4
initrd=/initrd.gz
read-only
值/pci@f2000000/usb@1b,1/disk@1:2來(lái)自我們先前檢查的Open Firmware設(shè)備樹(shù),/pci@f2000000/usb@1b,1/disk@1是PCI總線f2000000上的第一塊USB磁盤(pán),最有興趣的是:2意味著分區(qū)2
4)安裝啟動(dòng)程序和內(nèi)核到/dev/sda2:
# ybin --config /mnt/encroot/etc/yaboot.conf -v
# mount /dev/sda2 /media/usbstick
# cp /boot/vmlinux /media/usbstick
就此,initrd必須被安裝到閃存盤(pán)上,F(xiàn)edora提供了一個(gè)叫做mkinitrd的工具來(lái)創(chuàng)建initrd,然而,在寫(xiě)本文的時(shí)候,mkinitrd還不支持加載一個(gè)加密的root文件系統(tǒng),補(bǔ)丁在https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=124789,一旦應(yīng)用了補(bǔ)丁,mkinitrd就可以讀取/etc/crypttab并創(chuàng)建一個(gè)恰當(dāng)?shù)膇nitrd了:
1. mkinitrd --authtype=paranoid -f /media/usbdisk/initrd.gz
2. umount /media/usbstick
文件/mnt/encroot/etc/fstab應(yīng)該被更新反映出變化:
/dev/mapper/root / ext3 defaults 1 1
有加密的swap或完全沒(méi)有swap空間是一個(gè)加密文件系統(tǒng)的先決條件。原因可以在文章“實(shí)現(xiàn)加密的home目錄”和BugTraq郵件列表中的一篇“Mac OS X在磁盤(pán)上存儲(chǔ)登陸/密鑰鏈/密碼”中找到。當(dāng)給啟動(dòng)腳本軟件包應(yīng)用了https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=127378的補(bǔ)丁后,F(xiàn)edora允許用戶使用一個(gè)隨機(jī)生成的會(huì)話密鑰加密他們的swap分區(qū),因?yàn)閟wap空間在重新啟動(dòng)時(shí)通常不需要一致,當(dāng)系統(tǒng)關(guān)閉時(shí)會(huì)話密鑰也不保存,要啟用加密的swap,完成下面的步驟:
1)添加下面的行到/mnt/encroot/etc/fstab,替換任何先前的swap記錄:
/dev/mapper/swap swap swap defaults 0 0
2)添加下面的行到/mnt/encroot/etc/crypttab告訴系統(tǒng)如何完成加密:
swap /dev/hda3 /dev/urandom swap
至此我們應(yīng)該可以重新啟動(dòng)系統(tǒng)并使用我們的加密文件系統(tǒng),再說(shuō)一次,我們需要暫停啟動(dòng)選項(xiàng)命令進(jìn)入Open Firmware提示符。
正如上面說(shuō)到的,閃存盤(pán)第二個(gè)分區(qū)路徑是/pci@f2000000/usb@1b,1/disk@1:2。了解了這一點(diǎn),我們可以建立路徑/pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b。在分區(qū)號(hào)和文件系統(tǒng)路徑之間的分隔符是‘,’,\ofboot.b是文件系統(tǒng)路徑,\與Unix的/類(lèi)似。
> dir /pci@f2000000/usb@1b,1/disk@1:2,\
Untitled GMT File/Dir
Size/ date time TYPE Name
bytes 9/ 3/ 4 21:44:41 ???? ???? initrd.gz
2212815 8/28/ 4 12:24:21 tbxi UNIX ofboot.b
3060 9/ 3/ 4 2:21:20 ???? ???? vmlinux
141868 9/28/ 4 12:24:22 boot UNIX yaboot
914 9/28/ 4 12:24:22 conf UNIX yaboot.conf
這就確定了Open Firmware可以讀取啟動(dòng)系統(tǒng)需要的文件,設(shè)置boot-device變量的值為/pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b使得系統(tǒng)可以從閃存盤(pán)啟動(dòng):
setenv boot-device /pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b
一旦系統(tǒng)從加密root文件系統(tǒng)成功啟動(dòng),必須清除掉/dev/hda5上的所有數(shù)據(jù),可以使用隨機(jī)排列root文件系統(tǒng)分區(qū)同樣的方法來(lái)實(shí)現(xiàn):
dd if=/dev/urandom of=/dev/hda5
你可能想對(duì)hda5重寫(xiě)幾次,要想了解處理干凈一個(gè)磁盤(pán),請(qǐng)查看美國(guó)安全部門(mén)編寫(xiě)的“National Industrial Security Program Operating Manual”第八章。
根據(jù)一個(gè)安全處理原則,/dev/hda5可能被掛載為/home,/home文件系統(tǒng)也應(yīng)該被加密,幸運(yùn)的是,這是一個(gè)簡(jiǎn)單的過(guò)程,因?yàn)橄到y(tǒng)不需要/home啟動(dòng),象創(chuàng)建root文件系統(tǒng)一樣創(chuàng)建/home文件系統(tǒng)
1)確認(rèn)aes,dm-mod,dm-crypt模塊已經(jīng)載入內(nèi)核
2)卸載/dev/hda5
#umount /dev/hda5
3)創(chuàng)建一個(gè)隨機(jī)256位加密密鑰,存儲(chǔ)在/etc/home-key
#dd if=/dev/urandom of=/etc/home-key bs=1c count=32
4)創(chuàng)建一個(gè)dm-crypt設(shè)備,用剛剛生成的密鑰加密
#cryptsetup -d /etc/home-key create home /dev/hda5
5)在/dev/mapper/home上創(chuàng)建一個(gè)ext3文件系統(tǒng)
#mkfs.ext3 /dev/mapper/home
6)掛載新文件系統(tǒng)
#mount /dev/mapper/home /home
7)在/etc/crypttab中創(chuàng)建一個(gè)條目,讓各種實(shí)用程序都清楚文件系統(tǒng)是如何配置的
root /dev/hda5 /etc/home-key cipher=aes
8)最后,為/home更新/etc/fstab條目
/dev/mapper/home /home ext3 defaults 1 2
至此,可以添加非root系統(tǒng)賬號(hào)了,設(shè)置加密root文件系統(tǒng)的過(guò)程就結(jié)束了。
加密你所有數(shù)據(jù)可能很危險(xiǎn),如果加密密鑰丟失,你的數(shù)據(jù)就丟失了,就因?yàn)檫@個(gè)原因,備份你的包含有你的密鑰的閃存盤(pán)很重要,同樣,備份加密數(shù)據(jù)對(duì)應(yīng)的明文也很重要,如果你保存有一張可啟動(dòng)的緊急救援磁盤(pán),重新考慮應(yīng)該放哪些系統(tǒng)組件在上面或許很有意義,你的root和home文件系統(tǒng)、密鑰、parted、hfsutils、加密技術(shù)有關(guān)的內(nèi)核模塊以及cryptsetup腳本的拷貝都應(yīng)該放進(jìn)去。
這個(gè)技術(shù)在保護(hù)你的數(shù)據(jù)方面究竟有什么實(shí)際好處?在《Secrets and Lies》這本書(shū)中,作者Bruce Schneier提出了一個(gè)有用的手段來(lái)評(píng)估這個(gè)技術(shù),一個(gè)攻擊樹(shù)可以用于模型危險(xiǎn),圖4呈現(xiàn)了一個(gè)攻擊我們加密文件系統(tǒng)的樹(shù)型圖,值得注意的是這顆攻擊樹(shù)不是完整的,可能隨時(shí)間推移會(huì)發(fā)生改變。
圖4攻擊者如何讀取加密文件系統(tǒng)的數(shù)據(jù)
通過(guò)使用本文討論的技術(shù)和一點(diǎn)創(chuàng)新的想法,確保你磁盤(pán)上的數(shù)據(jù)對(duì)常見(jiàn)的偷竊行為更具抵抗性是可能的,跟蹤攻擊種類(lèi)的發(fā)展比了解防御更重要,盡管還有其他的技術(shù)用于保護(hù)基于網(wǎng)絡(luò)的或其他類(lèi)型的攻擊,但本文討論的技術(shù)對(duì)整個(gè)系統(tǒng)安全的目標(biāo)具有重要意義。
在另一篇文章“實(shí)現(xiàn)加密的home目錄”中,我描寫(xiě)了如何透明地加密home目錄,本文敘述另一個(gè)技術(shù)實(shí)現(xiàn)--加密的root文件系統(tǒng),我論述了GNU/Linux啟動(dòng)過(guò)程和軟件需求,并提供了一些指令,對(duì)Open Firmware做了一下介紹,以及其他一些有關(guān)的考慮事項(xiàng)。我用于教學(xué)的系統(tǒng)是一臺(tái)基于PowerPC架構(gòu)的新世界蘋(píng)果iBOOK電腦,運(yùn)行Fedora Core 3預(yù)覽版,不考慮細(xì)節(jié),本文涉及到的概念和程序可以應(yīng)用到任何設(shè)備、架構(gòu)或操作系統(tǒng)。我提供的指令假設(shè)你有一個(gè)多余的USB閃存盤(pán)并且你系統(tǒng)的支持從USB設(shè)備啟動(dòng)。
同時(shí),我還假設(shè)讀者能輕松應(yīng)用源代碼補(bǔ)丁并編譯程序,對(duì)于Fedora Core 3 Test 3版本,mkinitrd和啟動(dòng)腳本軟件包需要打補(bǔ)丁以支持加密的root文件系統(tǒng),需要掌握基本的分區(qū)管理和創(chuàng)建文件系統(tǒng)的知識(shí),執(zhí)行一個(gè)基本的Linux發(fā)行版安裝超出了本文要求的范疇。
在呈現(xiàn)有關(guān)的技術(shù)步驟之前,一個(gè)高層概念必須先討論:信任。信任與加密技術(shù)和認(rèn)證總是糾纏在一起的,對(duì)任何有電子密鑰的設(shè)備都可以假設(shè)它是可信任的。例如:當(dāng)自動(dòng)提款機(jī)(ATM)與我的銀行賬號(hào)共用個(gè)人識(shí)別號(hào)(PIN)時(shí),我會(huì)信任ATM不會(huì)將我的PIN與不適當(dāng)?shù)牡谌竭M(jìn)行共享。同樣,當(dāng)我給我的計(jì)算機(jī)提供一個(gè)加密密鑰時(shí),我假設(shè)這個(gè)密鑰不會(huì)與任何其他人進(jìn)行共享,我會(huì)信任這臺(tái)計(jì)算機(jī)在我們之間保守秘密。
那么,你能信任你的計(jì)算機(jī)嗎?除非你無(wú)論到哪里都帶著它,否則你真的不能信任它,即使磁盤(pán)已經(jīng)經(jīng)過(guò)加密處理也不行。設(shè)想這樣一個(gè)情景:在你睡覺(jué)時(shí),有人偷走了你的計(jì)算機(jī),小偷將計(jì)算機(jī)中加密的內(nèi)容做了一份拷貝,雖然沒(méi)有加密密鑰而對(duì)他來(lái)說(shuō)毫無(wú)意義,但是他可以用更惡魔的內(nèi)容替換筆記本電腦加密的內(nèi)容,然后再將電腦放回去,當(dāng)你第二天醒來(lái)時(shí),計(jì)算機(jī)提示你輸入加密密碼,但是這時(shí)你提供的密鑰會(huì)傳輸給小偷,他得到密鑰后就有一份數(shù)據(jù)和密鑰的拷貝了,他就可以讀取你的文件了。
這個(gè)情景可能顯得比較牽強(qiáng),但是它說(shuō)明了一點(diǎn),你不能信任你的筆記本電腦,始終保持你的眼睛你離開(kāi)它很重要,因此,無(wú)論如何優(yōu)秀地實(shí)現(xiàn)你的加密系統(tǒng),要建立在信任的基礎(chǔ)前提條件下才行。
網(wǎng)絡(luò)確保我們可以信任計(jì)算機(jī)的啟動(dòng)過(guò)程,我們需要將其從計(jì)算機(jī)中分隔出來(lái),考慮這個(gè)問(wèn)題:你攜帶你的汽車(chē)鑰匙而不是攜帶你的汽車(chē)。你的密鑰自身概念上與你的汽車(chē)鑰匙一樣。你可以更容易地保護(hù)你的密鑰,因此你不用隨時(shí)隨地都攜帶上你的計(jì)算機(jī),我們將用這個(gè)密鑰提供啟動(dòng)計(jì)算機(jī)需要的軟件,閃存盤(pán)將充當(dāng)密鑰的角色,通過(guò)保護(hù)啟動(dòng)系統(tǒng)最初的軟件,除加密密鑰外,我們可以有效地降低啟動(dòng)過(guò)程被劫持的風(fēng)險(xiǎn)。
你需要連接你的計(jì)算機(jī)是如何啟動(dòng)的,因?yàn)榻怄i一個(gè)加密的root文件系統(tǒng)是對(duì)整體的引導(dǎo)過(guò)程有影響,目前穩(wěn)定的內(nèi)核版本是2.6,可選擇使用initramfs來(lái)幫助啟動(dòng),在lwn.net上有一篇文檔“initramfs來(lái)了”, initramfs是一個(gè)cipo歸檔,內(nèi)核知道如何解壓到基于RAM的磁盤(pán)上,這個(gè)解壓的文件系統(tǒng)包括一個(gè)傳統(tǒng)的載入內(nèi)核掛載root文件系統(tǒng)的模塊的腳本,在我們的樣例中,這個(gè)腳本也用于解鎖加密的root文件系統(tǒng),關(guān)于這個(gè)主題更多的信息可以在文件buffer-format.txt和initrd.txt中找到,這兩個(gè)文件都在Linux內(nèi)核源代碼發(fā)布包中。
對(duì)Linux有若干個(gè)文件系統(tǒng)加密接口是可用的,Jari Ruusu的Loop-AES就是這樣一個(gè)項(xiàng)目,有多個(gè)cryptoloop變種提供一個(gè)加密的loopback設(shè)備,本文集中講述最近2.6Linux內(nèi)核提供的dm-crypt接口,這個(gè)接口目前已經(jīng)被Fedora項(xiàng)目吸收,dm-crypt模塊由Fedora內(nèi)核包提供,還需要一個(gè)靜態(tài)鏈接cryptsetup,這個(gè)實(shí)用程序簡(jiǎn)化了dm-crypt設(shè)備的管理,最后,還需要parted和hfsutils來(lái)管理啟動(dòng)文件系統(tǒng)。
不幸的是,F(xiàn)edora Core的anaconda安裝程序還不支持在盒子外安裝加密文件系統(tǒng),網(wǎng)絡(luò)繞過(guò)這個(gè)限制,你必須保留一個(gè)空閑分區(qū)安裝Fedora,格式化空閑分區(qū)為一個(gè)加密文件系統(tǒng),然后拷貝原始安裝數(shù)據(jù)到新的加密文件系統(tǒng)上,網(wǎng)絡(luò)簡(jiǎn)化,我們假設(shè)Fedora已經(jīng)安裝到兩個(gè)分區(qū)上:/dev/hda4,掛載到/home和/dev/hda5,掛載到/,因?yàn)?home下還沒(méi)有用戶目錄,直到Fedora安裝完畢,我們可以使用/dev/hda4作為我們的備用分區(qū),/dev/hda3作為swap分區(qū)。
安裝Fedroa Core 3,掛載/dev/hda4到/home,/dev/hda5掛載到/,不要添加非root用戶,因?yàn)?home稍后將被清除干凈,至此,你應(yīng)該擁有一個(gè)全功能的Linux系統(tǒng)了。
在設(shè)置加密文件系統(tǒng)之前,你應(yīng)該隨意分區(qū),這樣排除一個(gè)潛在關(guān)于磁盤(pán)內(nèi)容的信息漏洞,圖1示范了一個(gè)抽象的半滿磁盤(pán),它沒(méi)有恰當(dāng)進(jìn)行隨機(jī)排列,圖2示范了一個(gè)恰當(dāng)隨機(jī)排列的磁盤(pán),在格式化之前包含一個(gè)加密的文件系統(tǒng),注意,從圖1中可以獲取到一些關(guān)于它的內(nèi)容的知識(shí)(如它們跨越了磁盤(pán)的二分之一),圖2提供了一個(gè)沒(méi)有那么豪華的對(duì)手,假如這樣,磁盤(pán)可以很容易被清空,分區(qū)隨機(jī)排列是通過(guò)用隨機(jī)數(shù)據(jù)重寫(xiě)它的內(nèi)容實(shí)現(xiàn)的:dd if=/dev/urandom of=/dev/hda4,這個(gè)過(guò)程可能要花很長(zhǎng)的時(shí)間,因?yàn)閯?chuàng)建隨機(jī)數(shù)據(jù)有些困難的。
圖1
圖2隨機(jī)排列的分區(qū)隱藏了使用量
要在/dev/hda4上創(chuàng)建一個(gè)加密的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)建一個(gè)隨機(jī)256位加密密鑰并存儲(chǔ)在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
這個(gè)密鑰稍后將拷貝到閃存盤(pán)。
4)創(chuàng)建一個(gè)dm-crypt設(shè)備,使用前面創(chuàng)建的密鑰加密
#cryptsetup -d /etc/root-key create /dev/hda4
現(xiàn)在訪問(wèn)/dev/mapper/root在/dev/hda4上提供了一個(gè)加密層,默認(rèn)情況下,cryptsetup創(chuàng)建一個(gè)aes加密的dm-crypt設(shè)備并任務(wù)密鑰大小為256位。
5)在/dev/mapper/root上創(chuàng)建一個(gè)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)有一個(gè)加密文件系統(tǒng)了,你必須用/dev/hda5(原始的root文件系統(tǒng))的內(nèi)容來(lái)填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中創(chuàng)建一個(gè)條目以便不同的實(shí)用程序知道文件系統(tǒng)是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
現(xiàn)在我們的加密文件系統(tǒng)已經(jīng)準(zhǔn)備好了,需要理解更多關(guān)于目標(biāo)架構(gòu)的啟動(dòng)過(guò)程,通常,計(jì)算機(jī)有一個(gè)固件程序來(lái)掌管系統(tǒng)啟動(dòng)的全過(guò)程,保護(hù)固件程序超出了本文的范疇,因此我們假設(shè)系統(tǒng)固件程序是可以信任的,大多數(shù)讀者可能對(duì)BIOS比較熟悉,它是PC平臺(tái)的啟動(dòng)固件程序,我主要討論的是Open Firmware,它用于計(jì)算機(jī)制造廠商如蘋(píng)果,sun和IBM啟動(dòng)系統(tǒng)。
NetBSD/macppc的安裝指令對(duì)Open Firmware做了一個(gè)充分的介紹,我們對(duì)使用Open Firmware命令行接口配置計(jì)算機(jī)從一個(gè)閃存盤(pán)啟動(dòng)非常感興趣,Open Firmware允許你查看連接到計(jì)算機(jī)的設(shè)備和設(shè)置固件程序變量的值。
在一個(gè)新世界(G3或更新的)蘋(píng)果計(jì)算機(jī)初始化啟動(dòng)過(guò)程中,可以通過(guò)暫停選擇性命令來(lái)訪問(wèn)Open Firmware提示符。
變量boot-device用于確定系統(tǒng)將從哪個(gè)設(shè)備啟動(dòng),printenv命令允許查看當(dāng)前的值:
> printenv
[...]
boot-devicehd:,\\:txbihd:,\\:txbi
這實(shí)際上意味著通過(guò)執(zhí)行在第一塊IDE磁盤(pán)上HFS類(lèi)型txbi的文件來(lái)實(shí)現(xiàn)啟動(dòng)的,第二:txbi前的字符作為解釋一個(gè)HFS文件類(lèi)型的標(biāo)志,否則,txbi可能被理解為文件路徑,假如這樣,標(biāo)志hd實(shí)際上是更復(fù)雜的/pci@f4000000/ata-6@d/disk@0的一個(gè)別名,這個(gè)字符串通過(guò)子系統(tǒng)變量表現(xiàn)了路徑,你可以使用Open Firmware命令查看設(shè)備對(duì)應(yīng)的別名。
網(wǎng)絡(luò)正確地設(shè)置boot-device,我們需要找出Open Firmware認(rèn)出的我們閃存盤(pán)的名字,通過(guò)ls命令顯示閃存盤(pán)路徑,并打印出設(shè)備樹(shù):
> dev / ls
[...]
/pci@f2000000
[...]
/usb@1b,1
[...]
/disk@1
[...]
現(xiàn)在我們知道了一點(diǎn)關(guān)于計(jì)算機(jī)固件程序的知識(shí),我們必須花些時(shí)間研究固件初始化執(zhí)行程序:bootloader。通常,運(yùn)行在蘋(píng)果PowerPC架構(gòu)上的Linux系統(tǒng)使用一個(gè)叫做yaboot的程序來(lái)啟動(dòng)系統(tǒng),yaboot與LILO或GRUB類(lèi)似,它包含兩個(gè)關(guān)鍵程序:ofboot.b和yaboot。ofboot.b提供第一階段啟動(dòng)過(guò)程,實(shí)際上,ofboot.b的工作決定了啟動(dòng)什么操作系統(tǒng),例如:如果一臺(tái)電腦上同時(shí)安裝了Mac OS X和Linux系統(tǒng),ofboot.b執(zhí)行Mac OS X或Linux的bootloader,如果用戶選擇載入Linux,ofboot.b執(zhí)行yaboot,第二階段啟動(dòng)過(guò)程,然后yaboot載入Linux內(nèi)核和initrd。圖3提供了一個(gè)基于PowerPC架構(gòu)的Linux如何使用一個(gè)加密的root文件系統(tǒng)啟動(dòng)的實(shí)例。
圖3
用Open firmware啟動(dòng)一個(gè)基于PowerPC系統(tǒng)的過(guò)程
我們的可移動(dòng)啟動(dòng)設(shè)備需要ofboot.b和yaboot程序,一個(gè)Linux內(nèi)核和一個(gè)包括加密密鑰的initrd文件。蘋(píng)果目前基于PowerPC的架構(gòu)預(yù)設(shè)它的啟動(dòng)介質(zhì)格式化為HFS。
1)使用parted程序在閃存盤(pán)上創(chuàng)建正確的可啟動(dòng)的分區(qū)(我的是64MB大小,用設(shè)備節(jié)點(diǎn)/dev/sda訪問(wèn))
# parted /dev/sda
(parted) mklabel mac
(parted) print
Disk geometry for /dev/sda: 0.000-62.500 megabytes
Disk label type: mac
Minor Start End Filesystem Name Flags
1 0.000 0.031 Apple
(parted) mkpart primary hfs 0.031 62.500
(parted) print
Disk geometry for /dev/sda: 0.000-62.500 megabytes
Disk label type: mac
Minor Start End Filesystem Name Flags
1 0.000 0.031 Apple
2 0.031 62.500 untitled
(parted) set 2 boot on
(parted) name 2 Apple_Boot
(parted) quit
2)在啟動(dòng)分區(qū)上創(chuàng)建HFS文件系統(tǒng)
# hformat /dev/sda2
3)通過(guò)修改/mnt/encroot/etc/yaboot.conf配置yaboot啟動(dòng)恰當(dāng)?shù)脑O(shè)備,下面是一個(gè)最小配置例子:
boot=/dev/sda2
ofboot=/pci@f2000000/usb@1b,1/disk@1:2
partition=2
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
default=linux
image=/vmlinux
label=linux
root=/dev/hda4
initrd=/initrd.gz
read-only
值/pci@f2000000/usb@1b,1/disk@1:2來(lái)自我們先前檢查的Open Firmware設(shè)備樹(shù),/pci@f2000000/usb@1b,1/disk@1是PCI總線f2000000上的第一塊USB磁盤(pán),最有興趣的是:2意味著分區(qū)2
4)安裝啟動(dòng)程序和內(nèi)核到/dev/sda2:
# ybin --config /mnt/encroot/etc/yaboot.conf -v
# mount /dev/sda2 /media/usbstick
# cp /boot/vmlinux /media/usbstick
就此,initrd必須被安裝到閃存盤(pán)上,F(xiàn)edora提供了一個(gè)叫做mkinitrd的工具來(lái)創(chuàng)建initrd,然而,在寫(xiě)本文的時(shí)候,mkinitrd還不支持加載一個(gè)加密的root文件系統(tǒng),補(bǔ)丁在https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=124789,一旦應(yīng)用了補(bǔ)丁,mkinitrd就可以讀取/etc/crypttab并創(chuàng)建一個(gè)恰當(dāng)?shù)膇nitrd了:
1. mkinitrd --authtype=paranoid -f /media/usbdisk/initrd.gz
2. umount /media/usbstick
文件/mnt/encroot/etc/fstab應(yīng)該被更新反映出變化:
/dev/mapper/root / ext3 defaults 1 1
有加密的swap或完全沒(méi)有swap空間是一個(gè)加密文件系統(tǒng)的先決條件。原因可以在文章“實(shí)現(xiàn)加密的home目錄”和BugTraq郵件列表中的一篇“Mac OS X在磁盤(pán)上存儲(chǔ)登陸/密鑰鏈/密碼”中找到。當(dāng)給啟動(dòng)腳本軟件包應(yīng)用了https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=127378的補(bǔ)丁后,F(xiàn)edora允許用戶使用一個(gè)隨機(jī)生成的會(huì)話密鑰加密他們的swap分區(qū),因?yàn)閟wap空間在重新啟動(dòng)時(shí)通常不需要一致,當(dāng)系統(tǒng)關(guān)閉時(shí)會(huì)話密鑰也不保存,要啟用加密的swap,完成下面的步驟:
1)添加下面的行到/mnt/encroot/etc/fstab,替換任何先前的swap記錄:
/dev/mapper/swap swap swap defaults 0 0
2)添加下面的行到/mnt/encroot/etc/crypttab告訴系統(tǒng)如何完成加密:
swap /dev/hda3 /dev/urandom swap
至此我們應(yīng)該可以重新啟動(dòng)系統(tǒng)并使用我們的加密文件系統(tǒng),再說(shuō)一次,我們需要暫停啟動(dòng)選項(xiàng)命令進(jìn)入Open Firmware提示符。
正如上面說(shuō)到的,閃存盤(pán)第二個(gè)分區(qū)路徑是/pci@f2000000/usb@1b,1/disk@1:2。了解了這一點(diǎn),我們可以建立路徑/pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b。在分區(qū)號(hào)和文件系統(tǒng)路徑之間的分隔符是‘,’,\ofboot.b是文件系統(tǒng)路徑,\與Unix的/類(lèi)似。
> dir /pci@f2000000/usb@1b,1/disk@1:2,\
Untitled GMT File/Dir
Size/ date time TYPE Name
bytes 9/ 3/ 4 21:44:41 ???? ???? initrd.gz
2212815 8/28/ 4 12:24:21 tbxi UNIX ofboot.b
3060 9/ 3/ 4 2:21:20 ???? ???? vmlinux
141868 9/28/ 4 12:24:22 boot UNIX yaboot
914 9/28/ 4 12:24:22 conf UNIX yaboot.conf
這就確定了Open Firmware可以讀取啟動(dòng)系統(tǒng)需要的文件,設(shè)置boot-device變量的值為/pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b使得系統(tǒng)可以從閃存盤(pán)啟動(dòng):
setenv boot-device /pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b
一旦系統(tǒng)從加密root文件系統(tǒng)成功啟動(dòng),必須清除掉/dev/hda5上的所有數(shù)據(jù),可以使用隨機(jī)排列root文件系統(tǒng)分區(qū)同樣的方法來(lái)實(shí)現(xiàn):
dd if=/dev/urandom of=/dev/hda5
你可能想對(duì)hda5重寫(xiě)幾次,要想了解處理干凈一個(gè)磁盤(pán),請(qǐng)查看美國(guó)安全部門(mén)編寫(xiě)的“National Industrial Security Program Operating Manual”第八章。
根據(jù)一個(gè)安全處理原則,/dev/hda5可能被掛載為/home,/home文件系統(tǒng)也應(yīng)該被加密,幸運(yùn)的是,這是一個(gè)簡(jiǎn)單的過(guò)程,因?yàn)橄到y(tǒng)不需要/home啟動(dòng),象創(chuàng)建root文件系統(tǒng)一樣創(chuàng)建/home文件系統(tǒng)
1)確認(rèn)aes,dm-mod,dm-crypt模塊已經(jīng)載入內(nèi)核
2)卸載/dev/hda5
#umount /dev/hda5
3)創(chuàng)建一個(gè)隨機(jī)256位加密密鑰,存儲(chǔ)在/etc/home-key
#dd if=/dev/urandom of=/etc/home-key bs=1c count=32
4)創(chuàng)建一個(gè)dm-crypt設(shè)備,用剛剛生成的密鑰加密
#cryptsetup -d /etc/home-key create home /dev/hda5
5)在/dev/mapper/home上創(chuàng)建一個(gè)ext3文件系統(tǒng)
#mkfs.ext3 /dev/mapper/home
6)掛載新文件系統(tǒng)
#mount /dev/mapper/home /home
7)在/etc/crypttab中創(chuàng)建一個(gè)條目,讓各種實(shí)用程序都清楚文件系統(tǒng)是如何配置的
root /dev/hda5 /etc/home-key cipher=aes
8)最后,為/home更新/etc/fstab條目
/dev/mapper/home /home ext3 defaults 1 2
至此,可以添加非root系統(tǒng)賬號(hào)了,設(shè)置加密root文件系統(tǒng)的過(guò)程就結(jié)束了。
加密你所有數(shù)據(jù)可能很危險(xiǎn),如果加密密鑰丟失,你的數(shù)據(jù)就丟失了,就因?yàn)檫@個(gè)原因,備份你的包含有你的密鑰的閃存盤(pán)很重要,同樣,備份加密數(shù)據(jù)對(duì)應(yīng)的明文也很重要,如果你保存有一張可啟動(dòng)的緊急救援磁盤(pán),重新考慮應(yīng)該放哪些系統(tǒng)組件在上面或許很有意義,你的root和home文件系統(tǒng)、密鑰、parted、hfsutils、加密技術(shù)有關(guān)的內(nèi)核模塊以及cryptsetup腳本的拷貝都應(yīng)該放進(jìn)去。
這個(gè)技術(shù)在保護(hù)你的數(shù)據(jù)方面究竟有什么實(shí)際好處?在《Secrets and Lies》這本書(shū)中,作者Bruce Schneier提出了一個(gè)有用的手段來(lái)評(píng)估這個(gè)技術(shù),一個(gè)攻擊樹(shù)可以用于模型危險(xiǎn),圖4呈現(xiàn)了一個(gè)攻擊我們加密文件系統(tǒng)的樹(shù)型圖,值得注意的是這顆攻擊樹(shù)不是完整的,可能隨時(shí)間推移會(huì)發(fā)生改變。
圖4攻擊者如何讀取加密文件系統(tǒng)的數(shù)據(jù)
通過(guò)使用本文討論的技術(shù)和一點(diǎn)創(chuàng)新的想法,確保你磁盤(pán)上的數(shù)據(jù)對(duì)常見(jiàn)的偷竊行為更具抵抗性是可能的,跟蹤攻擊種類(lèi)的發(fā)展比了解防御更重要,盡管還有其他的技術(shù)用于保護(hù)基于網(wǎng)絡(luò)的或其他類(lèi)型的攻擊,但本文討論的技術(shù)對(duì)整個(gè)系統(tǒng)安全的目標(biāo)具有重要意義。
相關(guān)文章
- “CMOS密碼”就是通常所說(shuō)的“開(kāi)機(jī)密碼”,主要是為了防止別人使用自已的計(jì)算機(jī),設(shè)置的一個(gè)屏障2023-08-01

QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒(méi)有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實(shí)沒(méi)啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04
QQ截圖是我用過(guò)的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨(dú)立版目前除了屏幕錄制功能其他都逆出來(lái)了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無(wú)法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤(pán)分區(qū)安全時(shí)會(huì)采用 Windows 自帶的 BitLocker 加密工具對(duì)電腦磁盤(pán)分區(qū)進(jìn)行加密。但有些人加密后就會(huì)忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25
防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-27
徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機(jī)密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計(jì)算機(jī)泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價(jià)值,2017-06-27量子計(jì)算機(jī)輕松破解加密算法 如何破解加密算法?
最近有電腦用戶反應(yīng)量子計(jì)算機(jī)可以破解下載的所有的加密算法嗎?其實(shí)也不是不可以,下面虛擬就為大家講解買(mǎi)臺(tái)量子計(jì)算機(jī),如何分分鐘破解加密算法2016-09-26怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁(yè)后門(mén)。黑客通常會(huì)通過(guò)它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來(lái)看看吧2016-09-19針對(duì)Linux系統(tǒng)全盤(pán)加密的啟動(dòng)攻擊
本文討論了針對(duì)Linux系統(tǒng)全盤(pán)加密的冷啟動(dòng)攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28防止泄露公司機(jī)密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對(duì)日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o(hù)企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個(gè)企業(yè)領(lǐng)導(dǎo)面前的一大問(wèn)題。其實(shí),針對(duì)內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17






