内容简介
开源软件供应链是指开源软件在开发和运行过程中涉及的所有开源软件的上游社区、源码包、二进制包、第三方组件分发市场、应用软件分发市场,以及开发者和维护者、社区、基金会等,按照依赖、组合等形成的供应关系网络。相较于传统软件供应链,开源软件供应链随着供应层级不断加深,其规模不断扩大,导致针对上游的攻击将更难被发现、影响范围更广。本书从开源软件供应链的定义开始,逐步讲解开源供应链模型、开源供应链评估体系、关键节点识别与维护等开源软件供应链的关键内容。
开源软件供应链是指开源软件在开发和运行过程中涉及的所有开源软件的上游社区、源码包、二进制包、第三方组件分发市场、应用软件分发市场,以及开发者和维护者、社区、基金会等,按照依赖、组合等形成的供应关系网络。相较于传统软件供应链,开源软件供应链随着供应层级不断加深,其规模不断扩大,导致针对上游的攻击将更难被发现、影响范围更广。本书从开源软件供应链的定义开始,逐步讲解开源供应链模型、开源供应链评估体系、关键节点识别与维护等开源软件供应链的关键内容。
本书可以作为开源软件供应链领域的研究人员或者工程技术人员的参考用书,也可以作为开源爱好者的入门书籍。
目录
前言
第1章 什么是开源软件供应链 / 1
1.1 关注开源软件供应链的原因 / 1
1.2 开源软件供应链的基础知识 / 8
1.2.1 开源软件供应链的定义 / 8
1.2.2 开源软件供应链的特征 / 10
1.2.3 开源软件供应链面临的风险 / 16
1.2.4 开源软件供应链的法律政策 / 25
1.3 本书的组织框架 / 28
1.4 本章小结 / 29
第2章 开源软件供应链的国际形势 / 30
2.1 具有影响力的开放组织 / 30
2.1.1 OpenSSF / 30
2.1.2 OWASP / 35
2.1.3 SPDX / 36
2.1.4 OpenChain / 37
2.1.5 Openwall / 37
2.1.6 中国计算机学会开源发展委员会 / 38
2.1.7 开放原子基金会开源安全委员会 / 38
2.2 关注开源软件供应链安全的企业 / 39
2.2.1 Sonatype / 39
2.2.2 Synopsys / 40
2.2.3 科技巨头 / 41
2.3 各国对开源软件供应链安全的态度 / 41
2.3.1 国外 / 41
2.3.2 国内 / 45
2.4 本章小结 / 46
第3章 开源软件供应链的研究基础 / 47
3.1 供应链的相关研究 / 47
3.1.1 供应链定义及管理研究概述 / 47
3.1.2 供应链网络研究概述 / 50
3.2 软件供应链的相关研究 / 53
3.2.1 传统软件供应链研究概述 / 53
3.2.2 开源软件供应链研究概述 / 54
3.2.3 供应链中关键软件识别研究概述 / 57
3.3 软件供应链建模的相关研究 / 59
3.3.1 软件仓库挖掘研究概述 / 59
3.3.2 软件工程领域的知识图谱研究概述 / 62
3.4 本章小结 / 64
第4章 开源软件供应链模型 / 65
4.1 面向主要环节的供应链模型 / 65
4.2 开源软件供应链的形式化模型 / 67
4.2.1 自动机构建 / 68
4.2.2 自动机验证 / 73
4.3 开源软件供应链的知识化模型 / 77
4.3.1 本体设计 / 77
4.3.2 知识抽取 / 83
4.3.3 知识融合 / 88
4.3.4 知识更新 / 89
4.4 工业界常用的供应链模型——软件物料清单 / 90
4.4.1 背景 / 90
4.4.2 技术组成 / 91
4.4.3 已有的产品及分类 / 95
4.4.4 技术应用现状 / 97
4.4.5 挑战 / 100
4.5 本章小结 / 102
第5章 开源软件供应链的风险评估体系 / 103
5.1 面向供应链主要环节的风险防控体系 / 103
5.1.1 风险模型 / 104
5.1.2 开源软件供应链中第三方组件的风险识别 / 105
5.1.3 开源软件供应链视角下的应用软件风险识别 / 117
5.1.4 协作开发的风险识别 / 127
5.1.5 下载更新过程的风险识别 / 130
5.1.6 风险应对策略 / 131
5.2 基于知识化模型的风险防控体系 / 141
5.2.1 风险模型 / 143
5.2.2 面向安全性风险的管控方法 / 144
5.2.3 面向合规性风险的管控方法 / 146
5.2.4 面向维护性风险的管控方法 / 149
5.2.5 风险应对策略 / 154
5.3 本章小结 / 156
第6章 开源软件供应链的关键节点识别与维护 / 157
6.1 开源软件供应链的关键节点 / 157
6.2 关键节点识别方法 / 159
6.2.1 Criticality score / 159
6.2.2 Gitee指数 / 161
6.2.3 CriticalityRank / 164
6.3 本章小结 / 173
第7章 供应链软件评估和筛选 / 174
7.1 供应链软件 / 174
7.2 供应链软件评估需要解决的问题 / 176
7.3 供应链软件评估指标体系 / 177
7.3.1 评估属性定义 / 178
7.3.2 评估属性度量 / 180
7.4 供应链软件评估方案 / 182
7.4.1 指标权重设计 / 183
7.4.2 评估结果计算 / 185
7.5 供应链软件评估模型评价 / 189
7.6 面临的问题与挑战 / 191
7.6.1 研究难点与挑战 / 191
7.6.2 未来研究方向 / 193
7.7 本章小结 / 198
第8章 开源软件供应链基础设施的建设 / 199
8.1 需求分析 / 199
8.1.1 开源软件供应链基础设施的功能性需求 / 200
8.1.2 开源软件供应链基础设施的非功能性需求 / 202
8.1.3 开源软件供应链基础设施的目标用户 / 203
8.2 基础设施设计 / 205
8.2.1 总体设计 / 206
8.2.2 数据基础设施 / 210
前言/序言
的安全事件和合规事件频繁发生,引起了学术界和工业界的广泛关注,并形成了一个新兴领域——开源软件供应链。开源软件供应链涉及多个学科,包括管理学、社会学、软件工程、数据科学等。目前,该领域仍处于快速发展的阶段。虽然已有许多研究和实践成果,但还缺乏体系化梳理的工作,这导致对该领域的理解和参与门槛较高。本书聚焦于开源软件供应链的前沿成果,提出了一套完整的开源软件供应链治理框架,并以框架中的核心模块为索引,归纳和整理已有研究成果以及面临的挑战,同时辅以实践方法和具体案例,帮助读者更好地理解开源软件供应链。
本书主要特色
1.体系化梳理开源软件供应链相关知识。根据对开源软件供应链的背景、定义和特征等方面的总结,以及对已有相关领域的研究成果的梳理,本书提出了一个完整的开源软件供应链治理框架。本书以该框架核心模块为索引,系统地梳理了开源软件供应链已有的研究成果和挑战,能帮助读者更好地了解什么是开源软件供应链、为什么需要关注开源软件供应链以及如何治理。
2.理论结合实践。结合开源软件供应链治理框架和各个核心模块的研究成果,本书提出了一种建设开源软件供应链基础设施的思路。从功能性、非功能性及目标用户三个方面,深入挖掘和分析了建设开源软件供应链基础设施的需求。在此基础上,形成了一套能够适配多个场景、具有可用性、可扩展性和可维护性的开源软件供应链的基础设施总体设计方案。通过openEuler开源社区、PyPI开源制品仓库和“开源软件供应链点亮计划”三个具体的实践案例,帮助读者更好地理解如何将相关研究成果落地应用,并了解这些成果在实践应用中的效果。
3.内容循序渐进,逐级递进。在充分考虑不同读者的基础和阅读目的后,本书采用循序渐进的方式组织内容。对于相关领域积累较少的读者,前几章提供了开源软件供应链的概述及相关领域研究成果的总结,以帮助他们更好地理解开源软件供应链,并为进一步深入该领域做好铺垫;对于已经有经验的读者,后续章节的内容可以帮助他们了解相关领域的研究和发展现状,并快速理解和掌握实践方法。
本书读者对象
本书可以作为开源软件供应链领域研究人员或工程技术人员的参考用书,也可以作为开源软件爱好者的入门书籍。
对于研究人员而言,本书提出了一种治理框架,旨在帮助他们更好地理解开源软件供应链领域的研究问题,即框架中各个核心模块需要应对的挑战。通过阅读相关章节,研究人员能够了解相关问题的研究现状,明确自己的研究兴趣,并发掘潜在的研究问题。这将使他们更容易投身于开源软件供应链领域的研究工作。
对于工程技术人员而言,通过本书能够了解开源软件供应链存在的问题,并学习如何有效地进行治理。开源软件供应链基础设施的设计可以作为工程技术人员实施开源软件供应链治理的指导,并为具体实施提供思路。开源软件供应链的可视化呈现技术可以帮助工程人员在实践中实现更好地交互效果。此外,丰富的实践案例也可以为工程技术人员提供实践指导和效果验证
参考。
对于大多数希望参与和贡献开源软件但缺乏经验的在校学生来说,通过阅读本书,他们可以了解开源软件供应链的形成和运行机制,以及面临的风险和挑战。进而也能够了解到开源生态系统是如何运转的,为参与开源打下基础。开源软件供应链安全已经成为全球热点问题,相关研究问题和工程技术同样备受关注,本书也可以帮助在校学生了解这一有潜力的发展
方向。
编写分工
全书共9章,武延军、梁冠宇编写了第1、第4~7章,赵琛、屈晟编写了第2、3章,吴敬征编写了第8、9章。
致谢
本书得益于中国科学院A类先导专项(编号XDA03200000)、国家重点研发计划(编号2024YFB3108000)等相关研究成果。
感谢王怀民院士等领域专家组织“计算机开源丛书·开源创新在中国系列”,使我们有机会将最近若干年开源软件供应链相关的研究工作进展、工程实践、应用效果汇集成册,呈现给读者。感谢王院士等专家在提纲研讨、写作过程中的细心指导。感谢在本书撰写过程中,国内外学者同行的大力支持,包括中国科学院软件研究所的同事提供的大量素材。最后感谢中国计算机学会的推荐。