Show Table of Contents
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。
4.8. 加密
4.8.1. 使用 LUKS 硬盘加密
磁盘格式的 Linux 统一密钥设置(或称为 LUKS)可让您加密 Linux 计算机中的分区。这对可移动计算机以及可移动介质尤为重要。LUKS 可允许使用多个用户密钥解密用于分区批加密的主密钥。
LUKS 概要
- LUKS 能做什么
- LUKS 能对全区设备加密,因此,非常适用于保护移动设备的内容,如可移动的储存媒体或笔记本电脑硬盘驱动器。
- 加密区设备的基本内容可为任意内容。这对于加密
swap
设备十分有用。这对用于特定的格式化区设备数据储存的某些数据库也是很有用的。 - LUKS 使用现有设备映射器的内核子系统。
- LUKS 密码短语增强,可提供防止字典攻击。
- LUKS 设备含有多个密钥槽,允许用户添加备用密钥或密码短语。
- LUKS “不能” 做的是:
- LUKS 不适用于需要很多(超过 8 个)用户对同一设备有不同访问密钥的程序。
- LUKS 不适用于需要文件级别加密的程序。
4.8.1.1. 红帽企业版 Linux 中的 LUKS 实施
红帽企业版 Linux 6 采用 LUKS 执行文件系统加密。默认情况下不会在安装过程中选择加密文件系统的选项。如果您选择该选项加密您的硬盘,则每次您引导计算机时都会提示您输入密码短语。这个密码短语可为您用于分区解密的批加密密钥“解锁”。如果您选择要修改默认分区表,则您可以选择您要加密的分区。这是在分区表设置值设定的。
用于 LUKS (请参阅
cryptsetup --help
)的默认密码是 aes-cbc-essiv:sha256 (ESSIV - Encrypted Salt-Sector Initialization Vector,加密密钥的 hash,是 Linux 系统中 dm-crpt 默认使用的 IV )。请注意,默认情况下,在 XTS 模式(aes-xts-plain64)下使用此安装程序 Anaconda 。 LUKS 的默认密钥长度为 256 位。 LUKS Anaconda (XTS 模式) 的默认密钥长度为 512 位。 可用的密码为:
- AES - 高级加密标准 - 〈FIPS PUB 197〉
- Twofish(128 位块密码)
- Serpent
- cast5 -〈 RFC 2144〉
- cast6 -〈 RFC 2612〉
4.8.1.2. 手动加密目录
警告
按照这个步骤执行将删除您要加密的分区中的所有数据。您将会丢失所有信息!在开始执行这个步骤前,请确保您在外部信源中备份了数据。
- 作为 root 用户,用 shell 提示符输入以下命令,进入运行等级 1:
telinit 1
- 卸载您现有的
/home
:umount /home
- 如果上一步的命令失败,那么使用
fuser
来查找占用/home
的程序并将其终止:fuser -mvk /home
- 检验是否还有装载
/home
:grep home /proc/mounts
- 将随机数据填入您的分区:
shred -v --iterations=1 /dev/VG00/LV_home
此命令会以您设备的顺序写入速度执行,可能要花些时间才能完成。它是确保未经加密的数据不会保留在使用过的设备上,并混淆部分含有加密数据却又不是随机数据的设备。 - 初始化您的分区:
cryptsetup --verbose --verify-passphrase luksFormat /dev/VG00/LV_home
- 打开新加密的设备:
cryptsetup luksOpen /dev/VG00/LV_home home
- 确保设备存在:
ls -l /dev/mapper | grep home
- 创建文件系统:
mkfs.ext3 /dev/mapper/home
- 装载文件系统:
mount /dev/mapper/home /home
- 确保文件系统可见:
df -h | grep home
- 添加以下命令到
/etc/crypttab
文件:home /dev/VG00/LV_home none
- 编辑
/etc/fstab
文件,移除/home
旧的入口,并添加以下命令行:/dev/mapper/home /home ext3 defaults 1 2
- 恢复默认的 SELinux 安全环境:
/sbin/restorecon -v -R /home
- 重启机器:
shutdown -r now
/etc/crypttab
条目在启动时,您的电脑会询问您的luks
密码短语。- 作为 root 用户登录,并恢复您的备份。
现在您就有一个加密的分区,即便电脑处于关机的状态,可安全地放置您所有的数据。
4.8.1.3. 为现有设备添加新密码短语
使用以下命令,添加新的密码短语到现有的设备:
cryptsetup luksAddKey <device>
提示您输入现有密码短语进行验证后,将提示您输入新密码短语。
4.8.1.4. 从现有的设备中移除密码短语
使用以下命令,从现有设备中移除密码短语:
cryptsetup luksRemoveKey <device>
将提示您要删除的密码短语,然后是剩下用来验证的任意密码短语。
4.8.1.5. 在 Anaconda 中创建加密块设备
您可以在系统安装过程中创建加密块设备。这可允许您轻松使用加密分区配置系统。
要对块设备加密,则须在选择自动分区时检查 加密系统 (Encrypt System)复选框,或在创建独立分区、软件 RAID (Redundant Arrays of independent Disks,磁盘阵列)阵列或逻辑卷时,勾选 加密(Encrypt) 复选框。在您完成分区之后,系统会提示您输入加密的密码短语。要求此密码短语可访问加密设备。如果您有预先存在的 LUKS 设备,并有其在早期安装过程中所提供的密码短语,那么输入密码短语对话框中将也会含有复选框。检查此复选框表明,您将新的密码短语添加到预先存在的加密块设备中每个可用的槽。
注意
在 自动分区 屏幕上检查(Automatic Partitioning) 加密系统 (Encrypt System)复选框,然后选择 创建自定义分区(Create custom layout),这样就不会引起任何块设备进行自动加密。
注意
您可使用
kickstart
为每个新加密的块设备设置单独的密码。
4.8.1.6. 附加资源
关于 LUKS 或是在 Red Hat Enterprise Linux 7 下加密硬盘的其他信息,请访问以下链接:
4.8.2. 创建 GPG 密钥
GPG (GNU Privacy Guard,GNU 隐私卫士)用于识别您的身份,并对您的通信进行身份验证,包括那些您不认识的人。 GPG 允许任何通过读取 GPG 签名邮件来验证其身份的人使用。换句话说, 对于某些十分确定您所签名的通信实际上就是来源于您, GPG 允许那些人使用。 GPG 有用是因为它能防止第三方更改编码或中途拦截对话,更改信息。
4.8.2.1. 在 GNOME 中创建 GPG 密钥
要在 GNOME 中创建 GPG 密钥,则须遵循这些步骤:
- 安装 海马(Seahorse) 实用程序,更易于 GPG 密钥的管理:
~]#
yum install seahorse
- 要创建密钥,则须从 Seahorse 应用程序。→ 菜单,选择 , 这就启动
- 从 PGP 密钥(PGP Key;Pretty Good Privacy,加密软体) 。然后点击 .菜单中选择 ,再选
- 输入您的全名、电子邮箱以及可用于描述您的选择性注释(例如:约翰· C ·史密斯( John C. Smith), jsmith@example.com, 软件工程师(Software Engineer))。点击。然后会出现对话框,要求输入密钥的密码短语。选择一个强大又容易记的密码短语。点击 ,密钥就创建好了。
警告
如果您忘记了您的密码短语,那么您将无法解码数据。
要查找您的 GPG 密钥 ID,则须在新创建密钥旁的 密钥 ID(Key ID) 栏中查找。在大多数情况下,如果要求您输入密钥 ID ,那么在密钥 ID 之前加入
0x
,如 0x6789ABCD
。您应当备份您的私钥,并保存在安全的地方。
4.8.2.2. 在 KDE 中创建 GPG 密钥
要在 KDE(桌面环境)中创建 GPG 密钥,则须遵循这些步骤:
- 从主菜单中选择→ → ,启动 KGpg 程序。如果您从未使用过 KGpg 程序,那么此程序会指导您完成创建 GPG 密钥对的过程。
- 会出现对话框,提示您创建新的密钥对。输入您的姓名、电子邮箱以及选择是否添加注释。您也可为您的密钥选择有效期,以及密钥强度(位数)和算法。
- 在下一个对话框输入您的密码短语。此时,您的密钥会出现在
KGpg
的主窗口。
警告
如果您忘记了您的密码短语,那么您将无法解码数据。
要查找您的 GPG 密钥 ID,则须在新创建密钥旁的 密钥 ID(Key ID) 栏中查找。在大多数情况下,如果要求您输入密钥 ID ,那么在密钥 ID 之前加入
0x
,如 0x6789ABCD
。您应当备份您的私钥,并保存在安全的地方。
4.8.2.3. 使用命令行创建 GPG 密钥
- 使用以下 shell 命令:
~]$
gpg2 --gen-key
这个命令生成由公钥和私钥组成的密钥对。其它人可使用您的公钥认证和(或者)解密您的会话。尽量广泛发布您的公钥,特别是对那些您知道要从您哪里接收认证会话的人,比如邮件列表。 - 一系列的提示会指导您完成此过程。若需要,按下 回车 (Enter)键,赋予默认值。第一个提示会询问您要选择怎样的密钥:
Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection?
在几乎所有情况下,默认值都是正确的选择。RSA / RSA 密钥不仅允许您对通信签名,还允许您加密文件。 - 选择密钥长度:
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
默认值 2048 位,对于几乎所有的用户来说,都是足够的,而且有着极强的安全级别。 - 选择密钥的有效期。选择有效期,而不是使用
none
的默认值,这是很好的想法。例如,如果密钥中的电子邮箱无效了,那么有效期将提醒其他人停止使用此公钥。Please specify how long the key should be valid. 0 = key does not expire d = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years key is valid for? (0)
例如,输入一个 1y 值,会使密钥的有效期为一年。(如果您改变主意的话,您可以在密钥生成之后更改其有效期。) - 在 gpg2 应用程序询问签名信息之前,则会出现以下提示:
Is this correct (y/N)?
输入y
完成此程序。 - 为您的 GPG 密钥输入您的姓名和电子邮箱。记住此程序是要验证您的个人真实身份。因此,包括您的真实姓名。如果您选择假的电子邮箱,那么其他人要找到您的公钥就更困难了。这会使您的通信身份验证很难进行。例如,如果您在邮件列表中将此 GPG 密钥用于您的个人介绍,那么在此列表中输入您使用的电子邮箱。使用注释字段添加别名或者其它信息。(有些人为不同目的使用不同的密钥,并使用注释互相识别,比如“Office”或者“Open Source Projects”。)
- 在确认的提示信息中,如果所有输入都是正确的,请输入
O
字母;或者使用其他选择来解决任何问题。最后,为您的安全密钥输入密码短语。 gpg2 程序会要求您输入两次密码短语,以确保您没有输入错误。 - 最后,
gpg2
会产生随机数据,以尽可能地确保您的密钥是独一无二的。移动您的鼠标,输入随机密钥,或在系统运行此步骤期间执行其他任务来加速此进程。一旦完成此步骤,您的密钥就生成完毕,可以使用:pub 1024D/1B2AFA1C 2005-03-31 John Q. Doe <jqdoe@example.com> Key fingerprint = 117C FE83 22EA B843 3E86 6486 4320 545E 1B2A FA1C sub 1024g/CEA4B22E 2005-03-31 [expires: 2006-03-31]
- 密钥指纹是您密钥的简写“签名”。它允许您确认其他人是否接收过您的真实公钥,有没有进行篡改。您不需要写下此指纹。在任何时间要显示此指纹,则须使用此命令,替换您的电子邮箱:
~]$
gpg2 --fingerprint jqdoe@example.com
您的 “GPG key ID” 由 8 个十六进制数字组成,用于识别公钥。在上述示例中, GPG 密钥 ID 是1B2AFA1C
。在大多数情况下,如果要求您输入密钥 ID ,那么在密钥 ID 之前加入0x
,如0x6789ABCD
。
警告
如果您忘记了您的密码短语,则该密钥就无法使用,且使用该密钥加密的数据将会丢失。
4.8.2.4. 有关公钥加密
4.8.3. 在公钥密码学中使用 openCryptoki
openCryptoki 是一个 Linux 下的 PKCS#11 开源实现,是一种“ 公钥加密标准 ”(PKCS,Public-Key Cryptography Standard),定义了通常称为令牌的加密设备的应用程序接口(API)。令牌可在硬件或软件中执行。此特点概述了 openCryptoki 系统是如何安装、配置,以及如何在 Red Hat Enterprise Linux 7 中使用。
4.8.3.1. 安装 openCryptoki 并启动服务
要在您的系统中安装 openCryptoki 基本工具包,包括用于检测的令牌的软件实现,则须作为
root
用户运行以下命令:
~]# yum install opencryptoki
根据您打算使用的硬件令牌的类型,您可能需要安装其他工具包以支持具体使用情况。例如,要获取对“ 可信计算平台模块 ”(TPM,Trusted Platform Module)设备的支持,您需要安装 opencryptoki-tpmtok 工具包。
关于如何使用 Yum 工具包管理器安装工具包的基本信息,请参阅《 Red Hat Enterprise Linux 7 系统管理员指南 》。
要启用 openCryptoki 服务,您需要运行
pkcsslotd
守护进程。作为 root
用户执行以下命令,就可启动当前会话的守护进程:
~]# systemctl start pkcsslotd
要确保在启动时可自动启用服务,则须运行以下命令:
~]# systemctl enable pkcsslotd
关于如何使用 systemd 来管理服务的更多信息,请参阅《 Red Hat Enterprise Linux 7 系统管理员指南 》。
4.8.3.2. 配置并使用 openCryptoki
启动时,
pkcsslotd
守护进程会读取/etc/opencryptoki/opencryptoki.conf
配置文件,它可用于收集关于在系统工作时所配置的令牌以及其槽的信息。
此文件定义了使用键值对的独立槽。每个槽的定义可含有描述、可使用的令牌库的规格说明书,以及槽制造者的 ID 。另外,可对槽的硬件和固件的版本进行定义。关于文件格式的描述以及独立键和可分配给这些键的值的详细描述,请参阅 opencryptoki.conf(5) 手册页。
要在运行时修改
pkcsslotd
守护进程的行为,则须使用 pkcsconf
实用程序。此工具允许您显示和配置守护进程的状态,以及列出并修改当前所配置的槽和令牌。例如,要显示关于令牌的信息,则须发出以下命令(请注意, 所有需用 pkcsslotd
守护进程进行通信的非 root 用户必须是 pkcs11
系统组的成员):
~]$ pkcsconf -t
关于可用于
pkcsconf
工具的参数列表,请参阅 pkcsconf(1) 手册页。
警告
请牢记,只有完全可信的用户应可成为
pkcs11
组的成员,因为此组的所有成员有权限阻止其他 openCryptoki 服务的用户访问所配置的 PKCS#11 令牌。
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。