`
jinghuainfo
  • 浏览: 1528604 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Linux下的磁盘加密方法

 
阅读更多

Linux下的磁盘加密方法

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

随着智能手机的计算能力和存储能力的提高,手机中将会存放越来越多的私有数据,这些数据的泄密可能造成严重后果。手机信息安全一直是我们的重点之一,对于一些重要的功能我们要求鉴权后才能使用,但这只能挡住初级的黑客,只能防君子不能防小人,所以我们希望把重要的数据进行加密后再保存。为此,今天花了一点时间去了解Linux 磁盘加密的方法。

方法一:cryptoloop

l 下载并编译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之类编译错误,将它换成新的调用方式syscall)

make;make install

l 编译内核(已经支持cryptoloop则跳过此步)

make menuconfig

Device Drivers >Block Devices>Loopback device support

BLK_DEV_CRYPTOLOOP

l 加载模块

modprobe cryptoloop

(以及加密模块)

l 创建loop设备

dd if=/dev/zero of=~/cryptoloop.image bs=1M count=10

losetup -e aes-256 /dev/loop0 ~/cryptoloop.image

(提示输入密码)

l 创建文件系统并加载

mkfs.ext3 /dev/loop0

mkdir /mnt/crypto

mount -t ext3 ~/cryptoloop.image /mnt/crypto/ -oencryption=aes-256

(提示输入密码)

l 卸载

umount /mnt/crypto

losetup -d /dev/loop0

l 重新加载

losetup -e aes-256 /dev/loop0 ~/cryptoloop.image

mount -t ext3 ~/cryptoloop.image /mnt/crypto/ -oencryption=aes-256

cryptoloop的实现比较简单,可以看看drivers/block/cryptoloop.c中的代码。loop设备在读写之前会调用lo_do_transfer函数,该函数再调用所安装的transfer插件。cryptoloop就是一种transfer的实现。至于使用哪种transfertransfer的参数(如密码),这可以通过LOOP_SET_STATUS64ioctrl系统调用来完成(mount命令就是这样实现的)

cryptoloop的缺点是只能针对loop设备,而且对日志型文件系统无效。

方法二:device-mapper crypto

l 下载并编译cryptsetup(已经有了就跳过)

wget http://www.saout.de/misc/dm-crypt/cryptsetup-0.1.tar.bz2

cd cryptsetup-0.1

./configure;make;make install

l 编译内核(已经支持则跳过此步)

make menuconfig

Device Drivers > Multi-device support (RAID and LVM)

CONFIG_BLK_DEV_DM

CONFIG_DM_CRYPT

l 加载模块

modprobe dm-crypt

(以及加密模块)

l 创建loop设备

dd if=/dev/zero of=~/dm-crypt.image bs=1M count=10

losetup /dev/loop0 ~/dm-crypt.image

l 建立device-mapper

cryptsetup -y create dm-crypt /dev/loop0

(提示输入密码)

l 创建文件系统并加载

mkfs.ext3 /dev/mapper/dm-crypt

mount /dev/mapper/dm-crypt /mnt/crypto

l 卸载

umount /mnt/crypto/

cryptsetup remove dm-crypt

losetup -d /dev/loop0

l 重新加载

cryptsetup -y create dm-crypt /dev/loop0

mount /dev/mapper/dm-crypt /mnt/crypto

device-mapper crypto 的实现在drivers/md目录下,相对来说要复杂得多,没有来得及仔细阅读。

方法三:ecryptfs

l 下载并编译

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

l 编译内核

make menuconfig

File systems>Miscellaneous filesystems

CONFIG_ECRYPT_FS

l 加载模块

modprobe ecryptfs

(以及加密模块)

l 加载

mkdir /root/crypt

mkdir /mnt/crypt

mount -t ecryptfs /root/crypt /mnt/crypt

(提示输入密码和算法)

l 卸载

umount /mnt/crypt

l 重新加载

mount -t ecryptfs /root/crypt /mnt/crypt

(提示输入密码和算法)

看来ecryptfs的特点是能够对目录进行加密,而不必加密整个磁盘。直接读取原始目录中的文件,只能读到加密后的数据,要正确读取数据,只有先把该目录用ecryptfs文件系统格式加载到另外一个目录,之后才能读取。而在加载时要指定密码和加密算法,这就起到保密作用。如果加载时指定错误的密码或加密算法,仍然可以加载而不会出错,但读出的数据是无效的。

ecryptfs的代码在fs/ecryptfs目录下,只有比较新的kernel版本才有,我用的是linux-2.6.21。它的实现与前面两种方法不同,它完全是按文件系统的方式来实现的。

以上几种加密方法,在加载时都要输入密码,为了使用上的方便,可以与PAM+libpam-mount插件集成起来,用当前用户的密码作为加密的密码,这样就只需要在登录时输入一次就够了。

参考资源:

http://www.saout.de/misc/dm-crypt/

http://www.pconline.com.cn/smb/yrzc/linux/0701/954465.html

http://www.ibiblio.org/pub/Linux/docs/HOWTO/Cryptoloop-HOWTO

~~end~~

分享到:
评论

相关推荐

    开发Linux系统下的磁盘加密方法详解

    本文介绍了几种Linux磁盘加密的方法:cryptoloop、device-mapper crypto、ecryptfs。以上几种加密方法,在加载时都要输入密码,为了使用上的方便,可以与PAM+libpam-mount插件集成起来,用当前用户的密码作为加密的...

    Linux操作系统下的磁盘加密方法全攻略

    手机信息安全一直是我们的重点之一,对于一些重要的功能我们要求鉴权后才能使用,我们希望把重要的数据进行加密后再保存。本文将为大家介绍了解Linux磁盘加密的方法。

    [Article]Azure Linux 虚拟机磁盘加密问题排查指南-steve1

    Azure Linux 虚拟机磁盘加密问题排查指南Azure Linux 虚拟机磁盘加密功能通过开源的 DM-Crypt 组件,使用 Azure 密钥保管库保管

    Linux磁盘加密技术应用

    Linux磁盘加密技术应用,为Linux硬盘加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令

    Linux磁盘加密和RAID0创建最佳实践

    Linux磁盘加密和RAID0创建最佳实践,这个不错的,最基础的技术

    虚拟磁盘加密软件)

    TrueCrypt 是一款功能强大的免费开源虚拟磁盘加密软件,支持 Windows 7/Vista/XP/2000、Mac OS X、Linux 等操作系统。 通过 TrueCrypt,您可以轻松创建一个或多个虚拟磁盘文件,加载后可以按照盘符进行访问。所有...

    LUKS 磁盘加密规范 版本号V1.2.3

    LUKS是"Linux Unified Key Setup"的简写。目前qemu的磁盘加密格式是luks格式。

    Linux磁盘加密技术应用2

    LUKS(Linux Unified Key Setup)为Linux硬盘加密提供了一种标准,它不仅能通用于不同的Linux发行版本,还支持多用户/口令。

    linux环境下的持久加密kali linux启动盘制作.txt

    linux环境下的持久加密kali linux启动盘制作 LUKS:Linux Unified Key Setup Linux统一秘钥安装,是一种磁盘分区加密规范

    开源好用的磁盘加密软件

    TrueCrypt是一款免费,开源的支持Windows及Linux的绿色虚拟加密磁盘工具,可以在硬盘上创建一个或多个虚拟磁盘,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。TrueCrypt提供多种加密算法,支持FAT32...

    linux系统加密

    系统加密,为了防止他人登陆你的游戏一定要学习一下哦,系统加密很是神奇的哦

    TrueCrypt磁盘加密工具

    TrueCrypt是一款免费,开源的支持Windows Vista/XP/2000 and Linux的绿色虚拟加密磁盘工具,可以在硬盘上创建一个或多个虚拟磁盘,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。TrueCrypt提供多种...

    linux下获取硬盘序列号的方法

    在linux环境下获取硬盘的序列号,包括IDE、SATA硬盘,获取此信息,可以做某些方面的加密数据使用,从而保护自己的产品。

    LUKS2 On-Disk Format Specification version 1.1.0, 2022-01-10

    在Linux上实现磁盘加密的必读文档。 LUKS2 是用于磁盘加密管理的 Linux 统一密钥设置的第二个版本。它是 LUKS1 [1, 2] 格式的后续版本,扩展了磁盘格式的功能并消除了一些已知问题和限制。 LUKS1 的大部分基本概念...

    TrueCryptforLinux(32bit)虚拟磁盘加密软件V7.1a开源绿色免费版

    TrueCrypt是一款免费,开源的支持Windows Vista/XP/2000 and Linux的绿色虚拟加密磁盘工具,可以在硬盘上创建一个或多个虚拟磁盘,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。 TrueCrypt提供多种...

    专业中文加密工具

    TrueCrypt,是一款免费开源的加密软件,同时支持Windows Vista,7/XP, Mac OS X, Linux 等操作系统。TrueCrypt不需要生成任何文件即可在硬盘上建立虚拟磁盘,用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动...

    voidLuksSetup:使用磁盘加密安装Void Linux的Bash脚本

    Bash脚本,用于通过磁盘加密安装Void Linux。 参考 该脚本中的大部分工作几乎直接来自于官方的。 我只是在必要时对命令进行了修改,以使其可编写脚本,并就应添加哪些其他配置/实用程序做出了许多假设/个人选择。 ...

    GarudaLinux-FDE_and_TPM-Guide:TPM 2.0支持的Garuda Linux上的全磁盘加密

    TPM 2.0支持的Garuda Linux上的全磁盘加密 非常重要的注意事项:备份数据。 遵循指南时发生的任何错误或不兼容都可能导致不可挽回的数据丢失! 介绍 经过测试: garuda-dr460nized-linux-zen-210406(5.11.11-zen1-...

    Linux内存加密密钥提取器-Linux开发

    Linux内存加密密钥提取器属性:跨平台的极简主义,简单性,交互性兼容性/可移植性,应用程序独立的进程包装,进程注入依赖性:Unix-应在任何基于Unix的OS BASH上运行-整个脚本的根特权(可选)限制:AES和RSA密钥仅...

    Garuda-fde_and_tpm-guide:TPM 2.0支持的Garuda Linux上的全磁盘加密

    TPM 2.0支持的Garuda Linux上的全磁盘加密 非常重要的注意事项:备份数据。 如果出现故障,本指南可能会导致不可挽回的数据丢失! 介绍 经过测试: garuda-dr460nized-linux-zen-210406使用带有默认分区+ FDE选项的...

Global site tag (gtag.js) - Google Analytics