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
15KB
260 代码行
encrypt-remote-hook
一个基于Rust的initcpio钩子,通过从远程端点读取密钥来配置全盘加密。
此钩子支持基于设备被盗的威胁模型,但不一定是基于恶意篡改。使用此钩子可以在多个位置天真地提供XOR拆分密钥材料,并根据这些材料解密磁盘。
此钩子不考虑或尊重任何内核命令行参数,包括 cryptdevice
和 cryptkey
。此钩子在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