開(kāi)發(fā) Linux系統(tǒng)下的磁盤(pán)加密方法詳解
更新時(shí)間: 2007-05-14 11:24:02來(lái)源: 粵嵌教育瀏覽量:1343
隨著智能手機(jī)的計(jì)算能力和存儲(chǔ)能力的提高,手機(jī)中將會(huì)存放越來(lái)越多的私有數(shù)據(jù),這些數(shù)據(jù)的泄密可能造成嚴(yán)重后果。手機(jī)信息安全一直是我們的重點(diǎn)之一,對(duì)于一些重要的功能我們要求鑒權(quán)后才能使用,但這只能擋住初級(jí)的黑客,只能防君子不能防小人,所以我們希望把重要的數(shù)據(jù)進(jìn)行加密后再保存。為此,今天花了一點(diǎn)時(shí)間去了解Linux 磁盤(pán)加密的方法。
方法一:cryptoloop
下載并編譯util-linux
http://www.paranoiacs.org/~sluskyb/hacks/util-linux/losetup-combined.patch
http://ftp.cwi.nl/aeb/util-linux/util-linux-2.12.tar.gz
http://hydra.azilian.net/util-linux-2.12-kernel-2.6.patch
tar zxvf util-linux-2.12.tar.gz
cd util-linux-2.12
patch -p1 < ../losetup-combined.patch
patch -p1 < ../util-linux-2.12-kernel-2.6.patch
(如果有_syscall5之類(lèi)編譯錯(cuò)誤,將它換成新的調(diào)用方式syscall)
make;make install
編譯內(nèi)核(已經(jīng)支持cryptoloop則跳過(guò)此步)
make menuconfig
Device Drivers >Block Devices>Loopback device support
BLK_DEV_CRYPTOLOOP
加載模塊
modprobe cryptoloop
(以及加密模塊)
創(chuàng)建loop設(shè)備
dd if=/dev/zero of=~/cryptoloop.image bs=1M count=10
losetup -e aes-256 /dev/loop0 ~/cryptoloop.image
(提示輸入密碼)
創(chuàng)建文件系統(tǒng)并加載
mkfs.ext3 /dev/loop0
mkdir /mnt/crypto
mount -t ext3 ~/cryptoloop.image /mnt/crypto/ -oencryption=aes-256
(提示輸入密碼)
卸載
umount /mnt/crypto
losetup -d /dev/loop0
重新加載
losetup -e aes-256 /dev/loop0 ~/cryptoloop.image
mount -t ext3 ~/cryptoloop.image /mnt/crypto/ -oencryption=aes-256
cryptoloop的實(shí)現(xiàn)比較簡(jiǎn)單,可以看看drivers/block/cryptoloop.c中的代碼。loop設(shè)備在讀寫(xiě)之前會(huì)調(diào)用lo_do_transfer函數(shù),該函數(shù)再調(diào)用所安裝的transfer插件。cryptoloop就是一種transfer的實(shí)現(xiàn)。至于使用哪種transfer及transfer的參數(shù)(如密碼),這可以通過(guò)LOOP_SET_STATUS64的ioctrl系統(tǒng)調(diào)用來(lái)完成(mount命令就是這樣實(shí)現(xiàn)的)。
cryptoloop的缺點(diǎn)是只能針對(duì)loop設(shè)備,而且對(duì)日志型文件系統(tǒng)無(wú)效。
方法二:device-mapper crypto
下載并編譯cryptsetup(已經(jīng)有了就跳過(guò))
wget http://www.saout.de/misc/dm-crypt/cryptsetup-0.1.tar.bz2
cd cryptsetup-0.1
./configure;make;make install
編譯內(nèi)核(已經(jīng)支持則跳過(guò)此步)
make menuconfig
Device Drivers > Multi-device support (RAID and LVM)
CONFIG_BLK_DEV_DM
CONFIG_DM_CRYPT
加載模塊
modprobe dm-crypt
(以及加密模塊)
創(chuàng)建loop設(shè)備
dd if=/dev/zero of=~/dm-crypt.image bs=1M count=10
losetup /dev/loop0 ~/dm-crypt.image
建立device-mapper
cryptsetup -y create dm-crypt /dev/loop0
(提示輸入密碼)
創(chuàng)建文件系統(tǒng)并加載
mkfs.ext3 /dev/mapper/dm-crypt
mount /dev/mapper/dm-crypt /mnt/crypto
卸載
umount /mnt/crypto/
cryptsetup remove dm-crypt
losetup -d /dev/loop0
重新加載
cryptsetup -y create dm-crypt /dev/loop0
mount /dev/mapper/dm-crypt /mnt/crypto
device-mapper crypto 的實(shí)現(xiàn)在drivers/md目錄下,相對(duì)來(lái)說(shuō)要復(fù)雜得多,沒(méi)有來(lái)得及仔細(xì)閱讀。
方法三:ecryptfs
下載并編譯
http://people.redhat.com/~dhowells/keyutils/keyutils-1.2.tar.bz2
tar jxf keyutils-1.2.tar.bz2
cd keyutils-1.2
make;make install
tar jxf ecryptfs-20070306.tar.bz2
cd ecryptfs-20070306/ecryptfs-util
./configure;make;make install
編譯內(nèi)核
make menuconfig
File systems>Miscellaneous filesystems
CONFIG_ECRYPT_FS
加載模塊
modprobe ecryptfs
(以及加密模塊)
加載
mkdir /root/crypt
mkdir /mnt/crypt
mount -t ecryptfs /root/crypt /mnt/crypt
(提示輸入密碼和算法)
卸載
umount /mnt/crypt
重新加載
mount -t ecryptfs /root/crypt /mnt/crypt
(提示輸入密碼和算法)
看來(lái)ecryptfs的特點(diǎn)是能夠?qū)δ夸涍M(jìn)行加密,而不必加密整個(gè)磁盤(pán)。直接讀取原始目錄中的文件,只能讀到加密后的數(shù)據(jù),要正確讀取數(shù)據(jù),只有先把該目錄用ecryptfs文件系統(tǒng)格式加載到另外一個(gè)目錄,之后才能讀取。而在加載時(shí)要指定密碼和加密算法,這就起到保密作用。如果加載時(shí)指定錯(cuò)誤的密碼或加密算法,仍然可以加載而不會(huì)出錯(cuò),但讀出的數(shù)據(jù)是無(wú)效的。
ecryptfs的代碼在fs/ecryptfs目錄下,只有比較新的kernel版本才有,我用的是linux-2.6.21。它的實(shí)現(xiàn)與前面兩種方法不同,它完全是按文件系統(tǒng)的方式來(lái)實(shí)現(xiàn)的。
以上幾種加密方法,在加載時(shí)都要輸入密碼,為了使用上的方便,可以與PAM+libpam-mount插件集成起來(lái),用當(dāng)前用戶(hù)的密碼作為加密的密碼,這樣就只需要在登錄時(shí)輸入一次就夠了。
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專(zhuān)場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪(fǎng)粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國(guó)家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開(kāi)發(fā)有限公司專(zhuān)場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐