Improving the Security of Containerized Workloads using Transparency and Traceability Services
本文提出并评估了一种可验证的容器分发架构,该架构通过使用透明度服务来生成与身份绑定的签名密钥、在追加式注册表中记录事件,并执行基于策略的准入检查,从而增强供应链安全性,以防止部署受损的制品。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,互联网是一座规模宏大、繁忙喧嚣的城市,而软件就是每个人都要食用的食物。为了将这些食物送到人们手中,厨师(开发者)使用被称为 CI/CD 流水的自动化流水线来烹饪被称为“容器化工作负载”的数字佳肴。这些佳肴被装进名为“镜像”的数字盒子中,储存在名为“注册表”的巨大数字仓库里,然后被运往世界各地的餐厅,从大型云端厨房到微小的街头小吃摊(边缘环境)。问题在于,如果破坏者潜入流水线,他们可以将健康的食物替换成有毒的食物,由于流水线运行得如此快速且自动化,在有人察觉之前,毒物就会被运送到成千上万名顾客手中。这就是软件供应链安全的世界:一场关于确保数字食物免受篡改、窃取和坏人侵害的高风险博弈。
为了理解如何阻止这一切,我们需要两个主要工具。首先,我们需要完整性(Integrity),这就像是果酱罐上的防篡改封条;如果封条破损或里面的果酱被掉包,你会立即发现。其次,我们需要透明度(Transparency),这就像是一个公开、不可篡改的日记本,每当一个罐子被密封时,该事件都会被记录在无法涂改的墨水中。如果有人试图密封一个有毒的罐子,日记会显示出来,且公众可以检查日记以确认封条是否与条目相符。如果没有这些,一个窃取了厨师钥匙的黑客可以用一个“有效”的封条来密封一个有毒的罐子,而没人会察觉差异,直到为时已晚。
这篇论文介绍了一个聪明的全新系统来解决这个确切的问题。作者们——一个安全研究团队——提出了一种“透明度服务(Transparency Service)”,它充当了这些数字食物盒子的超安全、自动化的公证员。该系统不再让流水线持有永久性的主密钥(如果主密钥被盗,后果将是灾难性的),而是为每一道烹饪出的数字佳肴生成一个全新的、一次性的密钥。随后,它立即为佳肴加盖封条,将该事件写入公开且不可篡改的日记(透明度注册表)中,然后销毁该密钥。当佳肴到达餐厅时,经理不仅会检查封条,还会检查公开日记,以确保该封条确实被记录在案,并且签署该封条的厨师是获得授权的。
研究人员构建了这个系统的原型,并将其连接到 GitHub Actions 和 GitLab 等流行编码工具中。他们针对黑客尝试窃取密钥或植入恶意代码的现实场景进行了测试。他们的模拟结果显示,这种方法能有效阻止攻击者在许多情况下部署恶意软件,例如当他们试图使用未经授权用户的窃取凭证时。然而,如果黑客成功窃取了授权开发者的凭证,系统最初可能会允许恶意软件通过安全检查,因为其签名和身份看起来都是有效的。在这种特定场景下,该系统的优势在于其能够快速检测出滥用行为。由于每一次签名事件都会记录在公开日记中,一个“监控器(Monitor)”可以发现可疑活动并向组织发出警报。这使得他们能够拦截恶意软件,并在造成广泛危害之前撤销被盗凭证,尽管检测的速度取决于检查日记的频率。
数字厨房的故事
让我们深入了解它是如何运作的,使用高科技自动化厨房的比喻。
问题:主密钥陷阱
在过去,想象一家连锁餐厅,每个厨师都有一把通往正门的永久性、重型主钥匙。如果窃贼偷走了那把钥匙,他们就可以溜进去,煮出一锅有毒的炖菜,并将其列入菜单。因为钥匙是“真实”的,门口的保安也会让这锅炖菜通过。在数字世界中,当黑客窃取开发者的密码或服务器的密钥时,发生的就是这种情况。他们可以使用被盗的密钥来签署一个恶意的软件更新,由于签名看起来有效,该软件会被安装在数百万台计算机上。
解决方案:一次性票据
本文作者说:“不再使用主密钥!”相反,他们提议了一个厨师根本不需要持有密钥的系统。以下是新的流程:
- 下单: 一位厨师(开发者)想要烹饪一道新菜(构建容器镜像)。他们将食谱发送给一个特殊的、超安全的“公证机”(透明度服务)。
- 一次性密钥: 公证机会检查厨师的身份。如果他们被允许烹饪,机器会立即为这道特定的菜创建一个全新的、一次性的密钥。它用这个密钥为菜品签名,然后立即销毁该密钥。噗!消失了。
- 公开日记: 公证机会在一个巨大的、公开且不可篡改的日记(透明度注册表)中写下一条笔记。笔记内容为:“下午 2:00,厨师 Alice 使用密钥 X 签署了菜品 #123。”日记就像区块链或公开账本一样;一旦写下一页,就无法撕掉或更改。
- 收据: 机器会给厨师一份收据,其中包含签名、厨师姓名和一个“包含证明(Proof of Inclusion)”。这种证明就像一份数学收据,证明:“是的,我可以证明这个条目确实在日记中。”
检查点:保安
现在,菜品到达了餐厅(部署现场,如云服务器)。保安(策略引擎)不仅仅查看签名。他们执行三步检查:
- 封条是真的吗? 他们验证签名是否与菜品匹配。
- 厨师是被允许的吗? 他们根据授权人员名单核对厨师姓名。
- 它在日记中吗? 这是神奇的部分。他们拿着“包含证明”去检查公开日记,以确保该事件确实发生过。如果菜品不在日记中,或者日记条目与菜品不符,保安就会将其丢弃。
为什么这是一个游戏规则的改变者
论文表明,这个系统极难被攻破。即使黑客窃取了厨师的密码,并试图诱骗公证机签署一道有毒的菜品,该系统仍有两个安全网:
- 一次性密钥: 由于密钥被立即销毁,黑客无法再次使用它来签署更多毒物。
- 公开日记: 如果黑客设法获得了有效签名(例如,通过窃取一名授权厨师的登录信息),该事件也会被记录在公开日记中。一个“监控器”(类似于看门狗)会 24/7 全天候监视日记。如果它看到一条可疑的条目——比如一位厨师签署了一道他不该签署的菜品——它可以向餐厅发出警报。餐厅随后可以拦截该特定菜品,使其在到达顾客手中之前被阻断。然而,这种检测的速度取决于监控器检查日记的频率;签名事件与检测到该事件之间存在延迟,其时间范围可能从几分钟到整个监控间隔不等。
权衡:等待墨迹干透
论文还指出了一点小小的代价。因为公开日记非常安全,所以写入新条目需要一点时间。在现实世界中,一个新条目出现在日记中可能需要大约 12 分钟。这意味着存在一个微小的窗口期,即菜品已被签署但尚未在日记中可见。作者建议,餐厅可以设置一个“冷却期”——在允许菜品进入之前,等待几分钟。这确保了在端上菜之前,日记条目已经稳固可靠。
底线
这篇论文不仅仅是提出了一个理论;他们构建了一个运行版本并对其进行了测试。他们发现,通过结合一次性密钥、公开日记和严格的规则,我们可以阻止大多数常见的黑客试图污染软件供应链的行为。这就像是将数字厨房变成了一座堡垒,在这里,每一份餐食都被追踪,每一位厨师都经过验证,且每一次篡改尝试都会被记录在一本所有人都能阅读的书中。虽然这增加了一点复杂性和短暂的等待时间,但知道你的数字食物是安全的感觉,绝对物超所值。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。