# cbbc **Repository Path**: teddycode/cbbc ## Basic Information - **Project Name**: cbbc - **Description**: 跨域认证区块链项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-10-30 - **Last Updated**: 2026-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 可信跨域联合试训安全管控系统 域安全配置及跨域交互当前使用[平台模式](docs/operations/platform-security.md):设备绑定的资源版本、策略审批、受约束服务链、信息存证和授权资源读取。原接口仅保留管理端只读历史,使用方法及模拟边界以该说明为准。 本项目面向联合试训中的多中心、跨物理信息域资源接入与交互控制,提供资源发现、可信认证、域内编排、策略控制和全过程溯源能力。 系统设计以 [`DESIGN.md`](DESIGN.md) 为准。当前仓库代码是工程基线,尚不等同于完整业务实现;接口、部署和验收以对应版本的设计与实现为准。 ## 设计边界 - 管理中心、域、设备、资源、协议和访问策略,不替代设备或仿真系统的实时控制器。 - 控制指令和业务数据由域间适配器传输;Fabric 仅保存身份、策略、配置版本、摘要和审计证据。 - 跨物理信息域第一版只做源域、目标域、对象引用和 SHA-256 摘要上链,不转发业务明文或大载荷。 - 动态加入、退出和撤销均可追溯;跨域操作默认拒绝,经身份、策略和协议校验后才允许执行。 ## 架构 系统采用“前端展示层—业务服务层—跨域适配层—区块链与数据层”四层架构: - **前端**:展示拓扑、设备、域、策略、链状态、审计和证明会话。 - **后端**:负责认证、设备与域管理、资源编排、策略决策、审计、链上交易和对账。 - **适配层**:将设备或仿真节点的原生协议映射为统一资源模型,并执行跨域边界控制。 - **数据层**:MySQL 保存配置、索引、缓存状态和查询投影;Fabric 保存可验证的状态和摘要。 核心对象为 `Center`、`Domain`、`Device`、`Resource`、`Protocol` 和 `Policy`。Fabric 节点与设备分开建模,设备数量不计入 Fabric 节点数量。 ## 组件与技术栈 - `frontend/`:Node.js 20、TypeScript、React 18、Vite、Ant Design;REST 用于管理操作,WebSocket(必要时降级为 SSE)用于状态推送。 - `backend/`:Go 1.22、Gin、GORM、MySQL 8.0;通过 Fabric Gateway 调用账本和订阅事件。 - `blockchain/`:Hyperledger Fabric 3.1.5、SmartBFT、TLS、Fabric CA;Go 链码登记身份、域、资源、协议、策略和审计证据。 - `scripts/`:统一启动、停止、诊断和跨域摘要上链脚本。 开发网络固定为 **5 个 Orderer + 2 个 Peer**:五个 Orderer 组成 SmartBFT 集群,`peer0.org1.example.com` 和 `peer0.org2.example.com` 各属于一个组织。Gateway、服务、适配器和编排器是接入实体,不扩展为 Peer。开发环境可使用 `cryptogen`;生产环境应使用 Fabric CA 和受控密钥存储。 控制台初始控制面固定展示两个服务节点:接入网关(默认 `127.0.0.1:8080`)和边界策略编排器(默认 `127.0.0.1:8090`)。它们与 7 个 Fabric 节点分层计数;可用 `BACKEND_ADDR`、`ORCHESTRATOR_ADDR` 覆盖端点。 ## 关键流程 1. **设备可信接入**:验证设备证书、挑战应答和状态,经审批后入域并登记设备、成员和资源。 设备面接入与控制台访问分开监听:控制台和验收脚本继续使用 `BACKEND_ADDR`(默认 `127.0.0.1:8080`)明文端口;真实设备使用 TLS 端点(`BACKEND_TLS_ADDR`,默认 `8443`)并出示客户端证书,挑战应答的签名绑定服务端下发的 `challengeHash` 而不是未下发的 nonce。开发设备 CA 持久化在 `DEVICE_CA_DIR`,重启不再轮换,服务器证书用 `./scripts/device-tls-cert.sh` 签发,设备侧参考程序为 `./scripts/physical-device-agent.mjs`。 2. **跨域摘要上链**:提交摘要 → 审批 → Fabric 锚定,状态为 `PENDING → APPROVED → ANCHORING → ANCHORED`;失败状态可恢复。 3. **证明展示**:一次性 `PresentationSession` 绑定受众、策略摘要、statement hash、nonce 和有效期;验证成功后原子消费会话,Fabric 只锚定摘要和结果。 4. **撤销处置**:证书、设备或策略异常时立即阻断新请求,终止相关会话并保留审计证据。 设备证书和 TPM/mTLS 证明“哪个设备正在接入”;零知识证明只证明属性或谓词成立,不能替代设备身份、人员会话或策略决策。 设备和节点列表、详情页的证书验证入口使用同一验证面板:确认对象与范围后执行请求,保留本次返回的证书主体、完整指纹、有效期、请求编号和失败原因。请求往返耗时只表示该次检查的等待时间;不作为完整设备认证的端到端耗时。设备证书检查不验证私钥持有,需另行发起设备挑战认证;节点探测当前未逐项返回 CA 信任链、主机名和登记指纹绑定结果,面板不会将这些项目显示为已通过。 ## API 与数据约束 - API 统一使用 `/api/v1`、JSON 和 UTC 时间。 - 写操作携带 `Idempotency-Key`;全链路携带 `X-Request-ID`。 - MySQL 保存业务投影;链上对象保存版本、`transactionId`、区块号和摘要用于核验。 - 私钥、令牌、witness、完整 proof 和业务明文不得进入日志、普通响应或公共账本。 ## 本地运行 环境要求:Linux/amd64、Docker Compose v2、Go 1.22(CGO)、Node.js 20 和 npm。仓库根目录执行: ```bash # 安装依赖 (cd backend && go mod download) (cd frontend && npm install) # 启动区块链、后端和前端 ./scripts/manage.sh start all ./scripts/manage.sh status all ``` 访问前端:`http://127.0.0.1:8000`;后端健康检查:`http://127.0.0.1:8080/health`。 ```bash # 查看日志或停止服务 ./scripts/manage.sh logs all ./scripts/manage.sh stop all ``` 单组件命令、环境变量和故障诊断见 [`scripts/README.md`](scripts/README.md)。完整文档索引见 [`docs/README.md`](docs/README.md);Fabric 拓扑细节见 [`docs/design/Fabric部署拓扑.md`](docs/design/Fabric部署拓扑.md)。 ## 验证 ```bash ./scripts/manage.sh doctor --component all --deep node scripts/cross-domain-workflow.mjs XDG_RUNTIME_DIR=/tmp/cbbc-xdg node scripts/console-workflow.mjs ``` `console-workflow.mjs` 按页面点击顺序验收设备注册/入域/可信认证计时、节点配置与动态隔离、边界策略切换和策略禁用后的实际拒绝/恢复放行;零知识展示证明不纳入本阶段。正式验收还应覆盖跨域摘要上链、审计核验、撤销传播、TLS/越权/重放检查,以及认证和交互的 P95/P99 压测。指标以真实设备 Provider、目标网络和验收报告为准。