早期所有现代软件都依赖于其他软件组件 [1]。如图 1 所示,这些组件包括库、操作系统、构建工具和部署工具。作为规划过程的一部分,软件工程师决定使用哪些组件来构建他们的软件。这些依赖关系(以及它们所依赖的组件)创建了一个软件供应链,其中软件组件与其用户之间存在隐含的信任关系。当软件工程师决定在其软件中使用哪些组件时,他们也在决定要信任哪些组件。许多最近的网络安全攻击都利用了这些信任关系,针对软件组件和供应链 [1]。为此,许多研究人员提出了增强软件供应链安全性的建议。Okafor 等人的文献综述将这些建议总结为解决三个不同的属性:分离性以确保隔离一个组件中的故障、透明度以查看整个供应链以及有效性以表明组件没有被意外更改(完整性)[2]。综合起来,后两个属性可以描述单个软件组件和由此产生的供应链的出处。本文重点介绍一种用于软件组件出处的专门技术:软件签名。使用公钥加密的软件签名是确保工件来源的事实上的方法。
主要关键词