10.5. 基本的 NBDE 和 TPM2 加密客户端操作
Clevis 框架可以加密纯文本文件,并解密 JSON Web 加密(JWE)格式的密文和 LUKS 加密的块设备。Clevis 客户端可以使用 Tang 网络服务器或受信任的平台模块 2.0(TPM 2.0)芯片进行加密操作。
以下命令通过包含纯文本文件的示例演示了 Clevis 提供的基本功能。您还可以使用它们来对 NBDE 或 Clevis+TPM 部署进行故障排除。
绑定到 Tang 服务器的加密客户端
要检查 Clevis 加密客户端是否绑定到 Tang 服务器,请使用
clevis encrypt tang
子命令:$ clevis encrypt tang '{"url":"http://tang.srv:port"}' < input-plain.txt > secret.jwe The advertisement contains the following signing keys: _OsIk0T-E2l6qjfdDiwVmidoZjA Do you wish to trust these keys? [ynYN] y
更改上例中的
http://tang.srv:port
URL,使其与安装了tang
的服务器的 URL 匹配。secret.jwe
输出文件包含您的加密密码文本,格式为 JWE。这个密码文本是从input-plain.txt
输入文件中读取的。另外,如果您的配置需要与 Tang 服务器进行非互动通信而无需 SSH 访问,您可以下载公告并将其保存到文件中:
$ curl -sfg http://tang.srv:port/adv -o adv.jws
将
adv.jws
文件中的公告用于任何以下任务,如文件或消息的加密:$ echo 'hello' | clevis encrypt tang '{"url":"http://tang.srv:port","adv":"adv.jws"}'
要解密数据,请使用
clevis decrypt
命令,并提供密码文本(JWE):$ clevis decrypt < secret.jwe > output-plain.txt
使用 TPM 2.0 加密客户端
要使用 TPM 2.0 芯片进行加密,请使用
clevis encrypt tpm2
子命令,唯一的参数是 JSON 配置对象:$ clevis encrypt tpm2 '{}' < input-plain.txt > secret.jwe
要选择不同的层次结构、哈希和密钥算法,请指定配置属性,例如:
$ clevis encrypt tpm2 '{"hash":"sha256","key":"rsa"}' < input-plain.txt > secret.jwe
要解密数据,请提供 JSON Web 加密(JWE)格式的密码文本:
$ clevis decrypt < secret.jwe > output-plain.txt
pin 还支持将数据封装到平台配置寄存器(PCR)状态。这样,只有 PCR 哈希值与密封时使用的策略匹配,数据才能被解封。
例如,对于 SHA-256 块要将数据密封到索引为 0 和 7 的 PCR:
$ clevis encrypt tpm2 '{"pcr_bank":"sha256","pcr_ids":"0,7"}' < input-plain.txt > secret.jwe
PCR 中的哈希值可以重写,您无法再解锁加密的卷。因此,添加一个强大的密码短语,以便您手动解锁加密的卷,即使 PCR 中的值发生了变化。
如果在升级 shim-x64
软件包后系统无法自动解锁加密的卷,请遵照 重启后,Clevis TPM2 不再解密 LUKS 设备 KCS 文章中的步骤进行操作。
其它资源
-
clevis-encrypt-tang (
1)、clevis-luks-unlockers (
7)、clevis (1)
和clevis-encrypt-tpm2 (1)
手册页 不带任何参数的
clevis
、clevis decrypt
和clevis encrypt tang
命令会显示内置 CLI 帮助信息,例如:$ clevis encrypt tang Usage: clevis encrypt tang CONFIG < PLAINTEXT > JWE ...