介绍
万一您松开了USB memory 棒,存储在其中的所有数据都将丢失,更重要的是,它们很可能会在其他人的手中,这些人将可以访问您的私人信息并以任何方式使用此信息他/她认为合适。这是USB memory 棒使用者的众多担忧之一。可以轻松应用的一种解决方案是不将任何私人信息存储在USB memory 棒上,但是这将使您对USB memory 棒的主要使用减少到最低限度,因为通常不必将所有非私有数据存储在USB上,因为他们几乎可以随时随地从Internet下载。另一个解决方案是对USB memory 棒进行加密,以便只有拥有正确密码的用户才能访问该USB memory 棒,该密码适合解密使用的加密方法。本文将讨论第二种解决方案,即USB memory 棒设备的加密。
尽管加密USB memory 棒似乎是最好,最简单的解决方案,但必须说它也有许多缺点。第一个缺点是必须使用内核版本为2.6及更高版本的Linux系统对USB密钥进行解密,该系统的运行内核中装有”dm_crypt”模块。换句话说,您不能在内核版本低于2.6的任何Windows计算机和UNIX-like系统上使用加密的USB memory 棒。因此,仅加密仅保存私人信息的USB memory 棒的一部分似乎是一个不错的解决方案。在本文中,我们将使用容量为16GB的USB memory 棒,该 memory 棒被系统称为块设备/dev /sdc。我们首先对磁盘进行分区,以容纳两个分区,一个分区用于加密数据,另一个分区用于非私有数据,然后仅加密旨在容纳私有数据的单个分区。
注意:
USB memory 棒上的所有数据都将被破坏,因此在继续操作之前,请备份USB memory 棒。将/dev /sdX替换为USB块设备的文件名。
分区USB memory 棒
让我们从USB memory 棒的分区开始。将USB随身碟插入PC的USB插槽,并以root用户身份执行:
# parted -l
搜索parted命令的输出,并检索USB memory 棒的磁盘文件名。如前所述,在本文中,我们将使用/dev /sdc。一旦我们有了USB memory 棒的文件名,我们就可以创建用于加密和存储非私有数据的分区。在我的情况下,我将USB memory 棒分成两个分区,第一个分区的大小为2GB,其余空间将用于创建第二个分区,这将分别产生/dev /sdc1和/dev /sdc2。使用您认为适合的任何分区工具来实现此目的,在本文中,我将使用parted,因为这些日子似乎已成为标准:
# parted /dev/sdX
在局部交互模式下执行以下命令:
(parted) mkpart primary 0.0 2GB
(parted) mkpartfs primary fat32 2GB -1s
(parted) quit
First parted命令创建了一个主分区,大小为2GB,该分区(/dev /sdX1)将用于存储加密数据。第二个命令创建了一个带有fat32文件系统(/dev /sdX2)的第二个分区,从2GB到最后一个扇区(-1s)。第二个分区将用作常规存储。 USB闪存盘分区表的最终外观可能类似于以下外观:
Disk /dev/sdc: 16.2 GB, 16236150784 bytes
255 heads, 63 sectors/track, 1973 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000cd7ef
Device Boot Start End Blocks Id System
/dev/sdc1 1 243 1951866 83 Linux
/dev/sdc2 244 1974 13903718+ c W95 FAT32 (LBA)
写随机数据
为了避免基于模式的加密攻击,建议在进行加密之前将一些随机数据写入分区。以下dd命令可用于将此类数据写入分区。可能需要一些时间。时间取决于系统生成的熵数据:
# dd bs=4K if=/dev/urandom of=/dev/sdX1
分区加密
现在是时候加密一个新创建的分区了。为此,我们将使用cryptsetup工具。如果您的系统上没有cryptsetup命令,请确保已安装cryptsetup软件包。下列linux命令将使用256位AES XTS算法加密/dev /sdc1分区。此算法可用于任何版本高于2.6.24的内核。
cryptsetup -h sha256 -c aes-xts-plain -s 256 luksFormat /dev/sdX1
输出值:
WARNING!
========
This will overwrite data on /dev/sdX1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
挂载USB分区和解密
在下一步中,我们将设置加密分区的名称,以供系统的设备映射器识别。您可以选择任何名称。例如,我们可以使用名称”private”:
# cryptsetup luksOpen /dev/sdX1 private
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
执行此命令后,加密的分区将以/dev /mapper /private可供您的系统使用。现在,我们可以创建文件系统并将分区挂载到/mnt /private,并使您自己可以访问它:
注意:如果只需要挂载现有的加密USB分区,则不要创建文件系统!
# mkfs.ext2 /dev/mapper/private
创建安装点并安装分区:
# mkdir /mnt/private
# mount /dev/mapper/private /mnt/private
# chown -R myusername.myusername /mnt/private
现在,您的加密分区位于/mnt /private目录中。如果您不想再访问USB memory 棒的加密分区,则需要先从系统中卸载它,然后使用cryptsetup命令关闭连接的保护。
# umount /mnt/private
# cryptsetup luksClose /dev/mapper/private
台式机安装的加密USB分区
您的桌面可能会通过弹出对话框对加密分区做出反应,提示您输入加密分区的密码,例如在Ubuntu Lucid Lynx 10.04的情况下。
但是,某些Linux系统可能不提供任何安装加密分区的功能,因此您必须手动进行操作(有关详细信息,请参见“安装USB加密分区”一节)。无论如何,请确保已安装cryptsetup软件包,并因此将md_crypt模块加载到正在运行的内核中,以便使用加密的USB memory 棒。