面向低端硬件的磁盘加密

作者:Zack Brown

Eric BiggersPaul Crowley 对低端手机和手表上 Android 可用的磁盘加密选项感到不满。 对他们来说,这是一个道德问题。 Eric 说

我们认为加密应该面向所有人,而不仅仅是那些负担得起的人。 虽然尚不清楚没有 AES 支持的 CPU 将存在多久,但很可能永远都会有“低端”; 无论如何,提供一种不依赖硬件支持的软件优化密码是非常有价值的。 缺乏硬件支持不应成为不加密的借口。

不幸的是,他们找不到任何既快速又安全,并且可以与现有 Linux 内核基础设施配合使用的现有加密算法。 因此,他们设计了 Adiantum 加密模式他们在其中以一种轻松、易读且完全非数学的方式对其进行了描述

从本质上讲,Adiantum 不是一种新的加密形式; 它依赖于 D. J. Bernstein 于 2008 年开发的 ChaCha 流密码。 正如 Eric 所说,“Adiantum 是一种构造,而不是一种原语。 它的安全性可以归结为 XChaCha12 和 AES-256 的安全性,但受安全边界的约束; 证明在我们论文的第 5 节中。 因此,人们不必‘信任’Adiantum; 他们只需要信任 XChaCha12 和 AES-256。”

Eric 报告说,Adiantum 比他和 Paul 之前的 HPolyC 加密模式 速度提高了 20%,并且在实际安全性方面略有提高。

Eric 发布了一些补丁,将 Adiantum 添加到 Linux 内核的加密 API 中。 他评论道:“其中一些补丁与新的‘Zinc’加密库冲突。 但我不知道 Zinc 何时会合并,所以目前,我继续将此补丁集建立在当前的‘cryptodev’之上。”

Jason A. DonenfeldZinc(“Zinc Is Not crypto/”)是取代现有内核加密 API 的领先者,它比该 API 更简单、更底层,提供了不那么可怕的编码体验。

Jason 回复了 Eric 最初的公告。 他很高兴看到如此出色的低端硬件磁盘加密替代方案,但他要求 Eric 和 Paul 暂缓尝试合并他们的补丁,直到他们可以重新设计它们以使用新的 Zinc 安全基础设施。 他说:“事实上,如果您已经想在 Zinc 之上构建它,我很高兴在一个共享存储库或类似的地方与您合作。”

他还建议 Eric 和 Paul 将他们的论文发送到各个学术界,以发现他们的加密系统可能存在的任何意外问题。

但 Paul 回复说

与只能通过密码分析尝试才能知道强度的新原语不同,Adiantum 是一种基于经过充分理解和信任的原语的构造; 如果随附的证明是正确的,它就是安全的。 鉴于(在竞赛或标准化工作之外)没有人会公开发表声明说他们认为算法或证明是好的,我期望从学术界得到的是沉默 :) 我们最希望得到的是论文被会议接受,我们正在努力争取,但这很可能不会发生,仅仅因为它不是很新颖。 它基本上采用了现有的思想,并使用流密码而不是分组密码,以及更快的哈希模式来应用它们; 它也是 HPolyC 的一个小更新。 我收到了一些私人反馈,说证明似乎是正确的,这就是我期望得到的全部。

Eric 也回复了,关于 Zinc 集成

目前,我犹豫是否要完全放弃当前的方法,并将宝押在 Zinc 上。 Zinc 的范围很大,并且存在各种尚未完全解决以令所有人满意的争议,包括一些基本汇编文件的许可证不明确。 在每个人都等待 Zinc 的同时暂停内核加密开发是不合适的。

他补充说,如果 Zinc 准备就绪,他很乐意使用它。 他只是不确定它是否准备好了。

然而,尽管存在不确定性,Eric 后来还是说:“我启动了一个基于 Zinc 的分支:https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git,分支 'adiantum-zinc'。”

他列出了他到目前为止所做的工作以及仍然需要完成的工作。 但关于 Zinc 剩余的非技术问题,他说

我和其他人之前也表达过对这些问题的担忧,但这些问题仍然没有解决,也没有解释情况的文档。 因此,请理解,在 Zinc 准备就绪之前,我仍然必须准备好在没有 Zinc 的情况下使用 Adiantum,以防万一。

Jason 很高兴看到基于 Zinc 的存储库,并承诺会查看它。 他还承诺在发布另一系列 Zinc 补丁之前,添加一份涵盖 Eric 许多担忧的文档。 至于 Eric 和 Paul 准备好在没有 Zinc 集成的情况下使用,他补充说:“我真的很感谢您花时间尝试使用 Zinc。 谢谢。”

与此同时,Herbert Xu 接受了 Eric 和 Paul 最初的补丁集,因此随着 Zinc 和 Adiantum 的发展,可能会有一些友好的调整。

很高兴看到这种关注低端硬件。 但是,这并不新鲜。 整个 Linux 内核应该能够在绝对所有设备上运行——或者至少是在世界上仍在使用的所有设备上运行。 我认为现在没有太多实际的 386 系统 在使用了,但对于现实世界中的真正硬件,几乎所有硬件都应该能够运行功能齐全的 Linux 操作系统。

注意:如果您在上方被提及并想在评论区上方发布回复,请将您的回复文本发送至 ljeditor@linuxjournal.com。

Zack Brown 是 Linux JournalLinux Magazine 的技术记者,并且是“Kernel Traffic”每周新闻通讯和“Learn Plover”速记打字教程的前作者。 他于 1993 年在他的 386 电脑(配备 8 兆内存)上首次安装了 Slackware Linux,并被开源社区彻底震撼。 他是 Crumble 纯策略棋盘游戏的发明者,您可以用几块纸板自己制作。 他还喜欢写小说、尝试动画、改革拉班舞谱、设计和缝制自己的衣服、学习法语以及与朋友和家人共度时光。

加载 Disqus 评论