microsoft/scitt-ccf-ledger

GitHub: microsoft/scitt-ccf-ledger

微软开源的供应链完整性透明度账本,基于 CCF 框架实现 IETF SCITT 标准,为数字供应链制品提供可验证的不可变签名声明注册与追溯。

Stars: 45 | Forks: 28

# scitt-ccf-ledger [![构建和测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/efdad7283fd8290953393c26b9e7fbd4ee3346ef9ee2e4d0695c64d724fe6672.svg)](https://github.com/microsoft/scitt-ccf-ledger/actions/workflows/build-test.yml) [![构建状态](https://github-private.visualstudio.com/microsoft/_apis/build/status%2FOneBranch%2Fscitt-ccf-ledger-wrapper%2Fscitt-ccf-ledger-wrapper-Official?repoName=scitt-ccf-ledger-wrapper&branchName=master)](https://github-private.visualstudio.com/microsoft/_build/latest?definitionId=716&repoName=scitt-ccf-ledger-wrapper&branchName=master) 本仓库包含 scitt-ccf-ledger 的源代码,这是一个运行在 [CCF](https://github.com/microsoft/CCF) 之上的应用程序,实现了 IETF 内部制定的草案标准。请参阅 [SCITT 标准对齐](docs/scitt.md)。 scitt-ccf-ledger 的目的是为数字供应链中的制品提供透明的出处。它通过允许将有关制品的已签名声明提交到安全、不可变的账本中,并返回证明声明已被存储且已应用注册策略的收据来实现这一点。 本项目是开源的,以促进可审计性和学术合作。我们非常希望参与本项目的科研合作。请通过创建 issue 与我们联系并进行讨论。 ## 快速开始 以下说明将指导您构建和部署 scitt-ccf-ledger 的本地实例,用于开发和测试目的。 作为 CCF 应用程序,scitt-ccf-ledger 主要面向 AMD SEV-SNP,但也支持在没有 TEE 支持的 x86-64 硬件上以所谓的*虚拟*模式运行。 以下所有说明均假定使用 Linux 操作系统,并且已安装 Docker 和 Python。 首先,在一个终端窗口中启动服务: ``` ./docker/build.sh ./docker/run-dev.sh # 输出将显示: # ... # 2025-11-06T13:10:51.559932Z 100 [info ] CCF/src/host/socket.h:49 | TCP RPC Client listening on 0.0.0.0:8000 # ... # 2025-11-06T13:11:01.743871Z -0.012 0 [info ] CCF/src/node/rpc/frontend.h:949 | Opening frontend # 2025-11-06T13:11:01.743882Z -0.012 0 [info ] CCF/src/node/node_state.h:2581 | Service open at seqno 9 # ... ``` 然后,在**另一个终端**窗口中,您可以提交一个测试签名声明并获取透明声明: ``` # 使用在上一步中设置的 Python 虚拟环境 source venv/bin/activate # 使用 CLI 提交测试 payload scitt submit test/payloads/manifest.spdx.json.sha384.digest.cose --development --url "https://localhost:8000" --transparent-statement output.cose # 2025-11-06 13:19:16.006 | DEBUG | pyscitt.client:request:469 - POST /entries 303 # 2025-11-06 13:19:18.009 | DEBUG | pyscitt.client:request:457 - Following 302 redirect to https://localhost:8000/entries/2.13 # 2025-11-06 13:19:20.012 | DEBUG | pyscitt.client:request:457 - Following 302 redirect to https://localhost:8000/entries/2.13 # 2025-11-06 13:19:20.015 | DEBUG | pyscitt.client:request:469 - GET https://localhost:8000/entries/2.13 (attempt #3) 200 # 2025-11-06 13:19:20.018 | DEBUG | pyscitt.client:request:469 - GET /entries/2.13/statement 200 # 已将 test/payloads/manifest.spdx.json.sha384.digest.cose 注册为 transaction 2.13 # 已接收 output.cose ``` 或者,使用 `--wait-for-commit` 来阻塞直到事务被提交,并在单个请求中直接返回收据,而无需轮询: ``` scitt submit test/payloads/manifest.spdx.json.sha384.digest.cose --development --url "https://localhost:8000" --transparent-statement output.cose --wait-for-commit # 2025-11-06 13:19:16.006 | DEBUG | pyscitt.client:request:402 - POST /entries?waitForCommit=true 200 # 已将 test/payloads/manifest.spdx.json.sha384.digest.cose 注册为 transaction 2.13 # 已接收 output.cose ``` ## 支持的输入 请参阅 [inputs.md](./docs/inputs.md) 以了解您可以在服务中注册和存储的内容。 ## 用法示例 请参阅 [demo/](demo/) 目录以获取启动和使用该服务的步骤。 ## 开发和测试 请参阅 [DEVELOPMENT.md](DEVELOPMENT.md) 以获取有关构建、运行和测试 scitt-ccf-ledger 的说明。 ## 可用客户端 请参阅 [clients.md](./docs/clients.md) 获取可与该服务交互的可用客户端列表。 ## 配置 请参阅 [configuration.md](./docs/configuration.md) 获取有关如何配置注册策略和身份验证的说明。 ## 复现构建 请参阅 [reproducibility.md](./docs/reproducibility.md) 获取有关复现构建的说明。 ## 贡献 本项目欢迎贡献和建议。请参阅[贡献指南](CONTRIBUTING.md)。 ### 商标 本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标受 Microsoft 商标和品牌指南的约束并必须遵循该指南。在修改后的本项目中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受这些第三方的政策约束。
标签:供应链溯源, 分布式账本, 区块链, 可信执行环境, 请求拦截, 逆向工具, 防篡改