软件完整性保护方案之Sigstore

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 软件完整性保护方案之Sigstore

背景


SolarWinds Orion 软件更新包在2020年底被黑客植入后门,此次攻击事件波及范围极大,包括美国政府部门、关键基础设施以及多家全球500强企业,影响难以估计。如果用户能确认软件来源是可信的 SolarWinds 官方,这次事件可能可以避免。

为了确认软件的来源和构建方式,实现完整性保护,Linux基金会联合Red Hat、Google 和 Purdue 在 2021年3月推出了 Sigstore 代码签名项目,该项目致力于让开发人员签署发布时无感和让用户轻松验证。

Sigstore 在发布后快速发展,多个社区将 Sigstore 加入集成计划。2021年11月,Sigstore 加入了 OpenSSF(开源安全基金会),并且也受到了 Github 的青睐,12月份 Github Actions 集成了 Sigstore 对容器镜像的签名能力。2022年初,Shopify 发布了使用 Sigstore 改进 RubyGems 签名的 RFC。5月份,Kubernetes 在 1.24 版本中使用 Sigstore 无缝验证签名。


什么是Sigstore


Sigstore 是一款制品签名、验证的自动化工具,其优势在于对组件的自动化签名和验证实现,公开可审计日志服务的构建,和开源生态的支持。


Sigstore 由 Fulcio,Rekor 和 Cosign 三个主要组件组成。


Fulcio,证书颁发机构,根据 OIDC 身份颁发证书,且只能签署少于 20 分钟的短期证书。OIDC 是基于 OAuth 2.0 的认证+授权协议,用于用户身份认证,安全的暴露用户数据给第三方,可使用 Github、Google 等账号为 Fulcio 提供认证。


Rekor,完全公开日志,使用 Trillian (提供仅增加日志模式的功能,是 Certificate Transparency 思想的概括和扩展)作为防篡改的日志服务,记录验证签名有效性的证据,提供基于 RESTful API的用于存储和验证签名的服务。


Cosign,签名客户端,为容器镜像或制品(artifact,如可执行文件)提供签名、验证和存储支持。签名会写入到如下支持的 OCI 注册表(Oracle云基础设施容器注册表,是一种由 Oracle 管理的 Docker 注册表服务,可以安全的存储和共享容器映像。可用 Docker 命令和 API 轻松推送和拉取 Docker 映像。),并且容器镜像和制品也可以存储在注册表中。


AWS Elastic Container Registry

GCP’s Artifact Registry and Container Registry

Docker Hub

Azure Container Registry

JFrog Artifactory Container Registry

The CNCF distribution/distribution Registry

GitLab Container Registry

GitHub Container Registry

The CNCF Harbor Registry

Digital Ocean Container Registry

Sonatype Nexus Container Registry

Alibaba Cloud Container Registry

Sigstore 中各组件的工作流程如下图:

1.png

1、开发人员通过 OIDC(Google、Github、Mircosoft 等账号)进行身份认证

2、认证通过后,Fulcio 给开发者颁发关联邮箱身份的短期证书,也同步给 Rekor

3、开发人员使用对应的短期密钥对制品进行签名,并发布制品,会将签名和验证证据同步给 Rekor

4、使用者在使用制品前可以通过 Cosign 使用 Rekor 数据验证签名的有效性

5、监督者通过 Rekor 的日志对证书的颁发记录进行审计


Sigstore为什么能保障安全


Sigstore 可以有效保证从获取 OIDC 身份到用户使用过程的安全性。

从签名的有效性来说,Fulcio 基于 OIDC 身份生成短期证书,Cosign 生成临时密钥为容器镜像或制品签名,证书和密钥的有效期都较短,极大减少了泄露的风险。


从签名的真实性来说,Cosign 会将生成的签名和相关的验证证据存入防篡改且公开的 Rekor,并且通过 Rekor 中的数据对签名进行验证,保证签名是真实的可靠的。


与常规的哈希值校验相比,Sigstore 的优势在于签名记录不可改变,完全公开防篡改的日志保证了验证成功的制品就是签名的开发者发布的制品。


相比同类的完整性保护方案,sigstore解决的问题场景更通用、实现方案更完备,一些类似的解决方案包括:


Tekton Chains,一款收集 CI/CD 行为信息用于安全审计的供应链安全工具。但它只有做审计的用途,并没有签名验证的能力。

Open Science Chain 利用联盟区块链安全地存储包含来源的不可变数据,实现对其真实性的独立验证。不足也是提供了审计的数据,还需要再开发验证数据的工具。

in-toto 提供了一个包含软件供应链顺序和每个步骤的授权人员在内的框架来保护软件供应链的完整性。它需要项目所有者创建一个包含步骤和授权人员在内的框架,前期过程复杂,sigstore是基于in-toto的扩展。


如何使用sigstore


Github Actions


在 GitHub Actions工作流程中,增加对容器镜像签名的流程就能实现签署容器镜像并将其存储在 GitHub Packages。

jobs:
  build:
    steps:
      # ... build steps here
      - uses: sigstore/cosign-installer@main
      - name: Write signing key to disk (only needed for `cosign sign --key`)
        run: echo "${{ secrets.SIGNING_SECRET }}" > cosign.key
      - name: Sign container image
        run: |
          cosign sign --key cosign.key \
            ghcr.io/your-org/your-repo:some-tag        
        env:
          COSIGN_PASSWORD: ""

用户可以在部署前拉取镜像时验证其签名。

cosign verify --key cosign.pub ghcr.io/your-org/your-repo:some-tag

Kubernetes


Kubernetes 在 1.24 版本中采用了 Sigstore 对容器镜像或制品进行签名和验签。

使用如下命令会在 kubernetes secret 中存储私钥、公钥和解密私钥的密码,当使用 cosign verify 验证镜像签名,会使用储存在 kubernetes secret 中的密码自动解密私钥。

cosign generate-key-pair k8s://[NAMESPACE]/[NAME]

独立使用


Rekor 组件提供了自定义部署的方式,Cosign 只是一个签名、验签工具,企业用户可以自行搭建一套用来管理公司内部的代码,并且还可以通过公共的 Rekor 为内部员工使用的开源组件做引入前的验证,减少开源软件造成的漏洞引入。

开发者们可以使用 Cosign 工具来对自己的制品进行签名,减少自己的开源产品被攻击者利用的风险。

# 生成密钥对
cosign generate-key-pair
# 签署容器镜像并将签名存储在注册表
cosign sign --key cosign.key dlorenc/demo
# 查找容器镜像的签名,并使用公钥验证
cosign verify --key cosign.pub dlorenc/demo
# 签署制品(artifact)
# 默认情况下,签名作为base64编码字符串输出
cosign sign-blob --key cosign.key artifact
# 输出:MEQCIAU4wPBpl/U5Vtdx/eJFgR0nICiiNCgyWPWarupH0onwAiAv5ycIKgztxHNVG7bzUjqHuvK2gsc4MWxwDgtDh0JINw==
# 验证制品
cosign verify-blob --key cosign.pub --signature MEQCIAU4wPBpl/U5Vtdx/eJFgR0nICiiNCgyWPWarupH0onwAiAv5ycIKgztxHNVG7bzUjqHuvK2gsc4MWxwDgtDh0JINw== artifact


展望


Sigstore 实现了自动化对组件进行数字签名和验证的能力,同时也解决了从获取身份到用户使用过程中的信任难题,能够很大程度上降低开发者使用成本。

可以预见未来会有更多的开源软件生态集成 Sigstore,Chainguard 等公司也在做基于 Sigstore 的商业解决方案,软件供应链的完整性保护将变得更加普遍。

但是,安全没有银弹。获取的 OIDC 身份不能完全信任、Sigstore 本身的安全问题、Fulcio 的根密钥安全性仍然是潜在的风险点。


参考链接


https://www.sigstore.dev/

https://github.com/google/trillian


关于墨菲安全


墨菲安全旗下开源组件安全检测产品,为帮助每一个开发者更安全的使用开源代码,核心引擎已开源,欢迎广大开发者使用!


开源地址:https://github.com/murphysecurity/

产品官网:https://murphysec.com


IDE插件:在Jetbrains IDE插件市场搜索 “murphysec” 安装检测插件,一键检测一键修复~


墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,能力包括代码安全检测、开源组件许可证合规管理、云原生容器安全检测、软件成分分析(SCA)等,丰富的安全工具助您打造完备的软件开发安全能力(DevSecOps)。产品支持SaaS、私有化部署。公司核心团队来自百度、华为等企业,拥有超过十年的企业安全建设、安全产品研发及安全攻防经验。


关于墨菲安全实验室


墨菲安全实验室是墨菲未来科技旗下的安全研究团队,专注于软件供应链安全相关领域的技术研究,关注的方向包括:开源软件安全、程序分析、威胁情报分析、企业安全治理等。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
存储 监控 算法
版本控制算法在文档管理软件中的关键作用:提升安全性与权限管理
版本控制算法是一种不可或缺的工具,这个家伙不仅能帮你记录文档的点点滴滴,还能在需要时穿越时空,让你回到过去的版本。这可是文档管理的大杀器,不仅让你不怕数据丢失,还能保证文档历史清清楚楚。接下来,就让我们来聊聊怎么样才能用版本控制算法来加强文档管理软件的安全性和权限管理吧——
162 1
|
2月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
83 0
|
1天前
|
存储 数据采集 传感器
LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?
LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?
|
1月前
|
数据安全/隐私保护 监控 数据库
在保护网站数据安全的同时,如何提高其可靠性?
【6月更文挑战第2天】在保护网站数据安全的同时,如何提高其可靠性?
22 5
|
8天前
|
存储 安全 算法
如何保证区块链项目的安全性和稳定性?
**区块链安全与稳定性关键点:** - 密码学保护数据传输与存储,哈希确保不可篡改 - 安全共识算法(如PoW、PoS)保证节点共识 - 智能合约审计与应急响应机制提升安全性 - 加密、身份验证增强网络安全 - 持续技术改进,采用零知识证明、侧链 - 有效运营团队与社区参与,风险评估和维护 这些措施协同作用,确保区块链项目的稳健运行。
|
2月前
|
云安全 安全 网络安全
云端防御策略:确保云服务中的网络安全与信息完整性
【5月更文挑战第27天】 随着企业逐渐迁移到云计算平台,对数据和服务的安全性提出了更高要求。本文将深入探讨在云环境下维护网络安全和信息安全的关键技术与策略。我们将从云服务模型出发,分析不同服务模型下的安全挑战,并探索多层次、多维度的防护措施。通过综合运用加密技术、身份认证机制、入侵检测系统以及安全事件管理,构建起一个既灵活又强大的云安全防护网络。文章还将讨论如何实施有效的合规性和监管策略,以确保数据处理遵循行业最佳实践和法律法规要求。
|
2月前
|
存储 监控 安全
云端防御策略:确保云服务中的数据安全与完整性
【5月更文挑战第18天】 随着企业纷纷迁移至云计算平台,数据的安全性和完整性变得尤为重要。本文深入探讨了在动态且共享的云环境中维护网络安全的挑战,并提出了一系列创新的防御措施。从加密技术到身份验证,再到入侵检测系统,我们分析了多种技术如何共同作用以增强云服务的安全。此外,文中还讨论了合规性、审计及持续监控的重要性,并强调了教育和员工意识在维护信息安全中的作用。通过采用多层次、多角度的安全策略,我们可以为云服务构建一个更为坚固的防御体系。
|
2月前
|
安全 项目管理 数据安全/隐私保护
解密项目管理系统:如何确保用户数据安全?
Zoho Projects保障用户数据安全,措施包括:拥有专业隐私安全团队,执行安全计划和合规审查;内部和第三方审计确保符合安全标准;在北京和上海建有安全数据中心,实行数据实时备份。用户层面,提供单点登录和多因素验证(如Zoho OneAuth和Yubikey支持)增强账户安全。此外,Zoho遵循GDPR、国家信息安全等级保护三级认证、SOC2 Type Ⅱ、ISO 27001、ISO 27017、ISO 27018和ISO 27701等多重国际安全和隐私保护标准。
43 3
|
2月前
|
测试技术 数据安全/隐私保护
你知道完整性测试吗?
你知道完整性测试吗?
|
7月前
|
存储 测试技术 Linux
存储稳定性测试与数据一致性校验工具和系统
LBA tools are very useful for testing Storage stability and verifying DATA consistency, there are much better than FIO & vdbench's verifying functions.
992 0

热门文章

最新文章