1. gzyueqian
      18529173453

      開(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í)輸入一次就夠了。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日本免费a级毛 | 亚洲国产精品一区第一页 | 亚洲乱码中文字幕在线2021 | 中国精品少妇HD | 亚洲国产中字幕在线尤视频 | 最新国产极品高清在线看 |