关注了就能看到更多这么棒的文章哦~
A possible step toward integrity measurement for Fedora
By Jonathan Corbet
January 8, 2021
DeepL assisted translation
https://lwn.net/Articles/842002/
Fedora 34 版本的发布计划是在 4 月 20 日。鉴于 Fedora 项目近期已经不再像以前一样总是延迟 release 了,那么这个时间点很可能会是准确的。要想达成这个发布计划,系统中所有的修改建议都应该在 12 月 29 日之前提出来。不过,我们还是看到了一个迟来的提案,是关于在 Fedora 的 RPM 包中添加文件签名的。这个提案希望支持在 Fedora 中使用 integrity measurement architecture(IMA),不过这个提案并没有得到广泛的赞成。
IMA 的目的是检查系统的完整性(integrity)是否良好,这里的 "integrity" 是指系统中的重要文件没有被破坏。它的核心机制是读取文件的内容,计算出一个哈希值,并将该哈希值与预期值进行比较,如果相吻合,则说明文件没有被改动过。这个措施可以用来防止对损坏的文件进行执行(或读取)操作。它也可以作为远程认证(remote attestation)方案的一部分,让远端可以相信本地系统没有受到未经授权的修改。
要执行这个措施的话,IMA 显然必须知道每个文件的预期哈希值是什么。这些哈希值是用内核信任的密钥签署的,并作为扩展属性(extended attribute)保存下来。一般来说,用于对这些哈希值进行签名的私钥会被保存在安全的位置,而公钥则要么存储在类似 trusted platform module(TPM)这类的设备中,要么就内置在内核的二进制文件中。如果一切措施都到位了,IMA 就可以确保系统只运行了那些经过某个官方机构(central authority)来认证过的可执行文件,这些可执行文件只会读取经过类似认证过的配置文件,等等。这是一种确保系统的所有者能确保控制这个系统的机制。这是否是一件好事,完全取决于 "所有者" 的定义是什么。
实际上这个提案并没有要求在 Fedora 系统上实现 IMA,它仅仅提出要在 Fedora 软件包中的每一个文件内加入签名。这些签名 "将用 Fedora Infrastructure 团队控制的密钥来签名,并安装在签名库(sign vaults)中"。然后,Fedora 用户将能够使用 IMA 来防止他们的系统使用那些比起打包提供的版本拥有额外修改的文件。可以期待,在未来的某个时间 Fedora 会真正实现 IMA 功能。
尽管根据刻板印象来判断不是一个好习惯,但仍然可以确定地说,典型的 Fedora 用户并不喜欢让某个官方机构来控制哪些程序可以在他的系统上运行,他们不喜欢这种前景。实际上,在某些情况下 IMA 可能是有用的。推动实现这些签名的需求,似乎来自于 Fedora 项目中在跟 Fedora CoreOS 等新的变动有关的工作,事实上,这类系统中的大部分内容都是不允许改变的。不太可能在桌面版(desktop edition)中使用 IMA,但谁知道呢。如果桌面版默认启用 IMA 的话,那会是一个出人意料的事情。
换句话说,Fedora 用户不必担心 IMA 会被强加给他们。但是,对于这个提议,我们还是会有些担忧。其中之一很简单,添加这个签名数据会使 Fedora 包变大。Panu Matilainen 针对这个方面研究了一下,发现每个文件都会增加 1745 字节,几乎是那些小 package 的两倍了。通常来说安装好的 Fedora 会有许多文件,签名造成的这些额外开销会占用额外的磁盘空间和带宽,而牺牲这些空间和带宽,对大部分 Fedora 用户来说并没有得到什么好处。这就导致了有些人提出建议,签名应该存储在单独的 package 中,谁需要谁安装。
Florian Weimer 同时提出,为了保持与 GPLv3 许可证的一致性,Fedora 就不得不得在人们提出要求的情况下提供签名密钥。但还没有研究清楚是否真的需要公开该密钥才能满足 GPLv3 的要求。无论如何,这将是今后那些发行这种 locked-down(意指无法修改)的 Fedora 系统的人所应该关心的,而不是 Fedora project 所要关心的。同时,正如 Colin Walters 所指出的,任何在 Fedora 中的实现的 IMA 功能都必须允许用户能够使用他们自己的密钥。
还有一些问题,关于 IMA 是否是最合适实现这个目的的技术。一些与会者建议可以尝试一下 fs-verity。fs-verity 对每次读取时使用的签名存储和验证工作更加节省空间。RPM 对 fs-verity 的支持确实也正在进行中。这是一个需要仔细考虑的选项,Fedora 可能需要在 IMA 和 fs-verity 之间做出选择。给 Fedora 软件包添加一个签名是有一点困难,而再为了另一个完整性校验方案添加第二个签名的话,那会更加的困难。
截至本文编写之时,还没有就这一提议作出决定。很可能要在 engineering steering committee 会议上作出决定。考虑到人们提出的异议,尤其是文件变得臃肿的问题,这个想法可能会被推迟到下一个发布周期。对于每个 Fedora 用户来说,都需要下载和存储额外的数据,而且目前这些用户也无法真正从中受益。对 integrity measurement 的支持最终可能还是会在 Fedora 中出现的,但目前来看,这个功能还没有完全准备好。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

讨论了在Fedora软件包中添加文件签名的提案及其面临的挑战,包括文件大小膨胀和对GPLv3许可证的影响等问题。
421

被折叠的 条评论
为什么被折叠?



