#hook #encryption-key #remote #disk #reading #endpoint #configure

app encrypt-remote-hook

一个基于Rust的initcpio钩子,通过从远程端点读取密钥来配置全盘加密

5个版本

0.2.0 2021年12月15日
0.1.3 2021年12月13日
0.1.2 2021年12月13日
0.1.1 2021年12月13日
0.1.0 2021年12月13日

#17 in #configure

MIT 许可证

15KB
260 代码行

encrypt-remote-hook

一个基于Rust的initcpio钩子,通过从远程端点读取密钥来配置全盘加密。

此钩子支持基于设备被盗的威胁模型,但不一定是基于恶意篡改。使用此钩子可以在多个位置天真地提供XOR拆分密钥材料,并根据这些材料解密磁盘。

此钩子不考虑或尊重任何内核命令行参数,包括 cryptdevicecryptkey。此钩子在Arch Linux上应能正常工作,并且通过一些手动调整,您可能能够使其在其他发行版上工作。我很乐意讨论如何为其他用途调整此软件包!

用法

请确保添加网络钩子!

此钩子将使用来自 /etc/resolv.conf 的DNS信息,并在读取 /tmp/net-*.conf 时回退。

通过将配置文件放置在 /etc/crypttab.remote.toml 中来配置钩子

[device]
block = "PARTUUID=9f383516-9660-44a1-911f-f8f07d0b8065"
name = "root"

[[key]]
type = "https"
url = "https://example.com/path/to/key"

[[key]]
type = "rootfs"
path = "/cryptokey"

此配置将提示 encrypt-remote-hook 获取两个密钥部分并将它们进行XOR运算,然后使用 cryptsetup 将指定的块作为 /dev/mapper/root 进行加密。

路线图

  • TPM支持
  • Yubikey支持
  • 本地、非rootfs支持
  • 为伪身份验证提供额外的网络头
  • 可配置的超时,以允许基于https的多因素密钥分发
  • (认证) AWS S3
  • 对同一密钥部分(以及整个密钥,用于恢复)的多个回退
  • 支持基于密码的回退

致谢

部分包模板借鉴自 fuhry/initramfs-scencrypt.

常见问题解答

为什么使用Rust?

我想使用Rust。这当然不是我的时间的良好利用,除非你包括我学到的东西!除此之外,看看一个静态链接二进制文件能走多远似乎很有趣,尽管它可能需要一些相当严重的空间优化才能在这个上下文中合理。

许可证

我已经将此软件许可为MIT许可证。因人而异。请仔细注意无保证条款。我不是密码学家,这可能是件坏事。

依赖关系

~7MB
~161K SLoC