Cryptsetup
在本书中,我将解释如何在基于 Linux 的计算机或笔记本电脑上使用 Linux 统一密钥设置磁盘格式 (LUKS) 对您的分区进行加密。
有两种方法可以加密您的数据
- eCryptfs - 它是一个加密的堆叠式 Linux 文件系统。eCryptfs 将加密元数据存储在每个写入文件的标头中,因此加密文件可以在主机之间复制;文件将在 Linux 内核密钥环中使用正确的密钥进行解密。此解决方案被广泛使用,作为 Ubuntu 加密主目录的基础,原生集成在 Google 的 ChromeOS 中,并透明地嵌入在多个网络附加存储 (NAS) 设备中。
- EncFS - 它在用户空间提供一个加密文件系统。它在没有特殊权限的情况下运行,并使用 FUSE 库和 Linux 内核模块来提供文件系统接口。您可以在下面找到指向源代码和二进制发布版本的链接。EncFS 是开源软件,根据 GPL 许可证授权。
- Loop-AES - 适用于 Linux 的快速透明文件系统和交换加密包。无需更改 Linux 内核的源代码。适用于 3.x、2.6、2.4、2.2 和 2.0 内核。
- TrueCrypt - 它是适用于 Windows 7/Vista/XP、Mac OS X 和 Linux 的免费开源磁盘加密软件。(已弃用)
- dm-crypt+LUKS - dm-crypt 是 Linux 内核 v2.6+ 及更高版本和 DragonFly BSD 中的透明磁盘加密子系统。它可以加密整个磁盘、可移动介质、分区、软件 RAID 卷、逻辑卷和文件。
您需要安装以下软件包。它包含 cryptsetup,一个使用设备映射器和 dm-crypt 目标设置加密文件系统的工具。Debian / Ubuntu Linux 用户键入以下 apt-get 命令
# apt-get install cryptsetup
示例输出
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: cryptsetup-bin libcryptsetup4 Suggested packages: busybox The following NEW packages will be installed: cryptsetup cryptsetup-bin libcryptsetup4 0 upgraded, 3 newly installed, 0 to remove and 7 not upgraded. Need to get 168 kB of archives. After this operation, 669 kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise/main libcryptsetup4 amd64 2:1.4.1-2ubuntu4 [55.8 kB] Get:2 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise/main cryptsetup-bin amd64 2:1.4.1-2ubuntu4 [32.2 kB] Get:3 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise/main cryptsetup amd64 2:1.4.1-2ubuntu4 [80.0 kB] Fetched 168 kB in 0s (268 kB/s) Preconfiguring packages ... Selecting previously unselected package libcryptsetup4. (Reading database ... 25374 files and directories currently installed.) Unpacking libcryptsetup4 (from .../libcryptsetup4_2%3a1.4.1-2ubuntu4_amd64.deb) ... Selecting previously unselected package cryptsetup-bin. Unpacking cryptsetup-bin (from .../cryptsetup-bin_2%3a1.4.1-2ubuntu4_amd64.deb) ... Selecting previously unselected package cryptsetup. Unpacking cryptsetup (from .../cryptsetup_2%3a1.4.1-2ubuntu4_amd64.deb) ... Processing triggers for man-db ... Processing triggers for ureadahead ... Setting up libcryptsetup4 (2:1.4.1-2ubuntu4) ... Setting up cryptsetup-bin (2:1.4.1-2ubuntu4) ... Setting up cryptsetup (2:1.4.1-2ubuntu4) ... update-initramfs: deferring update (trigger activated) Processing triggers for libc-bin ... ldconfig deferred processing now taking place Processing triggers for initramfs-tools ... update-initramfs: Generating /boot/initrd.img-3.2.0-31-virtual
RHEL / CentOS / Fedora Linux 用户键入以下 yum 命令
# yum install cryptsetup-luks
警告! 以下命令将删除您要加密的分区上的所有数据。您将丢失所有信息!因此,在键入以下任何命令之前,请确保将您的数据备份到外部来源,例如 NAS 或硬盘。 |
在本例中,我将使用名为 /dev/xvdc 的分区,我们的第一个任务是使用随机数据将该分区覆盖 3 次,这足以保护您免受法医调查。我花了将近 30 分钟才将 20 GB 的分区覆盖 3 次。
# shred --verbose --random-source=/dev/urandom --iterations=3 /dev/xvdc
接下来,我将加密 /dev/xvdc。键入以下命令
# cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-urandom luksFormat /dev/xvdc
示例输出
WARNING! ======== This will overwrite data on /dev/xvdc irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase: Command successful.
此命令初始化卷,并设置初始密钥或密码。请注意,密码不可恢复,因此请不要忘记它。键入以下命令创建映射
# cryptsetup luksOpen /dev/xvdc backup2
示例输出
Enter passphrase for /dev/xvdc:
在成功验证使用 luksFormat 命令扩展创建的提供的密钥材料后,您将看到一个映射名称 /dev/mapper/backup2
# ls -l /dev/mapper/backup2
示例输出
lrwxrwxrwx 1 root root 7 Oct 19 19:37 /dev/mapper/backup2 -> ../dm-0
您可以使用以下命令查看映射的状态
# cryptsetup -v status backup2
示例输出
/dev/mapper/backup2 is active. type: LUKS1 cipher: aes-cbc-essiv:sha256 keysize: 256 bits device: /dev/xvdc offset: 4096 sectors size: 419426304 sectors mode: read/write Command successful.
您可以使用以下命令转储 LUKS 标头
# cryptsetup luksDump /dev/xvdc
首先,您需要将零写入 /dev/mapper/backup2 加密设备。这将用零分配块数据。这确保了外部世界将看到它为随机数据,即它防止披露使用模式
# dd if=/dev/zero of=/dev/mapper/backup2
dd 命令可能需要几个小时才能完成。我建议您使用 pv 命令来监控进度
# pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M
要创建文件系统,即格式化文件系统,请输入
# mkfs.ext4 /dev/mapper/backup2
要将新文件系统挂载到 /backup2,请输入
# mkdir /backup2 # mount /dev/mapper/backup2 /backup2 # df -H # cd /backup2 # ls -l
键入以下命令
# umount /backup2 # cryptsetup luksClose backup2
键入以下命令
# cryptsetup luksOpen /dev/xvdc backup2 # mount /dev/mapper/backup2 /backup2 # df -H # mount
查看打开 LUKS 分区并为 NAS 设备设置映射的 shell 脚本包装器。
是的,您可以在基于 LUKS 的系统上使用 fsck 命令
# umount /backup2 # fsck -vy /dev/mapper/backup2 # mount /dev/mapper/backup2 /backup2
查看如何在基于 LUKS (dm-crypt) 的 LVM 物理卷上运行 fsck 的更多详细信息。
键入以下命令
### see key slots, max -8 i.e. max 8 passwords can be setup for each device #### # cryptsetup luksDump /dev/xvdc # cryptsetup luksAddKey /dev/xvdc
Enter any passphrase: Enter new passphrase for key slot: Verify passphrase:
删除或删除旧密码
# cryptsetup luksRemoveKey /dev/xvdc
请注意,您需要输入旧密码。