# sgcc-trust-data-space **Repository Path**: sober1107/sgcc-trust-data-space ## Basic Information - **Project Name**: sgcc-trust-data-space - **Description**: 源信智链可信协作平台面向电网数据的跨区域安全协作。它把可信身份、属性授权、客户端保护、加密资料服务、跨链存证、安全计算、联邦分析和 AI 助手组织成一套可运行的业务系统,使资料能够在“可使用但不暴露原文”的前提下流通、核验和计算。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-15 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 源信智链可信协作平台 源信智链可信协作平台面向电网数据的跨区域安全协作。它把可信身份、属性授权、客户端保护、加密资料服务、跨链存证、安全计算、联邦分析和 AI 助手组织成一套可运行的业务系统,使资料能够在“可使用但不暴露原文”的前提下流通、核验和计算。 平台的核心原则是:原始资料先在客户端本地保护;网页只处理加密资料和业务元数据;每一次授权、保存、核验、下载和计算都留下可追溯记录;计算结果仍以受保护文件返回,由用户在本地查看最终结果。 ## 核心能力 | 能力 | 说明 | | --- | --- | | 可信身份 | 通过 DID、设备传输公钥和权威签发材料建立用户身份。 | | 多权威属性 | 总公司及五个区域属性权威分别管理自己的属性,用户可以拥有多个独立属性分量。 | | 客户端保护 | 桌面客户端完成身份材料生成、AES 资料保护、核心指标保护、授权包导入、解密和联邦扰动。 | | 安全存储 | 保存 AES 密文、访问策略、核心指标密文和业务索引,不接收原始明文。 | | 可信检查 | 对资料摘要、区域记录、跨链回执和可验证数据结构进行一致性检查。 | | 数据服务 | 查找资料、申请下载权限、申请安全计算、下载密文包并查看使用记录。 | | 安全计算 | 在不下载源指标明文的情况下,对多个区域的指标进行加法、加权等受控计算。 | | 跨链协作 | 将区域链摘要、中继链回执和业务记录关联起来,支持跨区域追溯。 | | 电网趋势 | 查看过去一天、七天、三十天输入窗口对应的未来预测、置信区间、风险依据和告警。 | | 联邦分析 | 以五个区域的扰动特征作为逻辑客户端,完成本地训练、加权聚合、预测和风险后处理。 | | AI 助手 | 用自然语言查询资料、核验记录、查看趋势,并在确认后执行保存、任务和安全计算操作。 | ## 系统组成 ```text 源信智链可信协作平台 ├─ frontend │ ├─ user-web 用户与属性权威共用的业务工作台 │ └─ admin-web 系统管理工作台 ├─ backend │ ├─ platform-api 身份、授权、资料、链、联邦和安全计算业务接口 │ └─ agent-service AI 助手编排、确认和会话服务 ├─ clients │ └─ desktop-client 桌面端身份、加密、解密和联邦扰动能力 ├─ services │ ├─ ma-cp-abe 多权威属性加密与授权包服务 │ ├─ privacy-service 隐私计算和可验证数据结构网关 │ └─ verkle-service 持久化可验证数据结构服务 ├─ PFL-EPM 五区域联邦分析 Worker 和训练组件 ├─ contracts 区域链、中继链和存证/计算合约 ├─ chain-config 多区域链及 WeCross/WeBASE 配置 ├─ infra Redis、IPFS 等基础设施示例配置 ├─ deploy 网页和服务部署配置 └─ scripts 联调、性能、数据准备和运维辅助脚本 ``` 目录名称是仓库内的模块导航。运行时数据、密钥和部署凭据不应提交到源码仓库。 ## 技术栈 | 层次 | 主要技术 | | --- | --- | | 用户网页 | Vue 3、TypeScript、Vite、Element Plus、ECharts、Lucide 图标。 | | 平台接口 | Java 17、Spring Boot 3.3、MyBatis-Plus、MySQL、Redis。 | | AI 助手 | Java 17、Spring Boot、LangChain4j、SSE 流式输出、Redis 会话记忆。 | | 桌面客户端 | Python、PySide6、PyInstaller;通过内置 Java 加密桥接调用多权威属性加密能力。 | | 属性加密 | Java、JPBC、MA-CP-ABE;支持全局参数、权威密钥、策略树和 GID 绑定。 | | 对称加密 | AES-GCM;资料密钥由访问策略保护,策略由客户端生成并随密文登记。 | | 受控计算 | Paillier 公钥加密、FISCO BCOS 计算合约和中继链回执。 | | 可验证存证 | Rust、Axum、sled、rust-verkle/IPA;保存区域树状态、版本和证明。 | | 联邦分析 | Python、NumPy、PyTorch、PyYAML;按有效样本数执行 FedAvg。 | | 区块链协作 | 五个区域链、一条中继链、FISCO BCOS、WeCross 和 WeBASE。 | | 对象与索引 | IPFS 保存密文对象,MySQL 保存业务索引,Redis 保存会话和证明辅助信息。 | ## 业务角色 ### 普通用户 普通用户可以注册 DID、申请属性、导入授权材料、保护并保存资料、查找资料、申请下载或安全计算、执行跨区域安全计算、在客户端解密结果、查看电网趋势,并使用 AI 助手办理业务。 普通用户不能管理合约。资料查验、资料下载和安全计算通过数据服务页面完成,页面不会要求用户理解合约调用细节。 ### 区域属性权威 青岛、潍坊、济南、泰安、烟台各有一个区域属性权威。区域权威负责审核本区域用户属性、本区域资料访问申请和本区域授权材料,不能越权代替其他区域审批。 ### 总公司属性权威 总公司属性权威负责总公司级属性、系统公钥初始化、结果解密保护材料和合约中心管理,也可以查看五区域综合趋势。总公司权威不能代替区域权威批准地市资料的访问申请。 ### 联邦 Worker Worker 负责领取联邦分析任务、校验扰动包、启动区域训练进程、执行加权聚合、生成未来预测和回写结果。当前部署用一个协调器启动五个逻辑区域进程,属于单主机的进程隔离模型。 ## 端到端业务流程 ### 1. 注册与可信身份 1. 用户从网页注册入口获取桌面客户端。 2. 客户端生成 DID、设备传输公钥和仅保存在本地的身份私钥。 3. 用户在网页填写组织、角色、区域、部门和申请属性,上传公开身份材料。 4. 对应属性权威审核申请,总公司和区域权威分别签发自己负责的属性。 5. 用户下载各权威签发的授权包,在客户端导入同一个本地授权材料集合。 注册材料用于建立身份,授权包用于后续访问策略求值。两者都不能用他人的材料替代。 ### 2. 系统公钥与资料保护 总公司权威先在合约中心登记本轮系统公钥和结果解密保护材料。用户再下载当前公钥到客户端。 客户端处理两类内容: - 完整电网资料使用 AES-GCM 保护,并生成访问策略文件和密钥保护信封。 - 需要参与安全计算的核心指标使用系统公钥保护,生成核心指标密文文件和对应的策略信息。 网页登记时只接收客户端输出的密文、策略和业务字段。原始明文、用户私钥和本地授权材料不上传。 ### 3. 保存与可信检查 平台为每份资料建立业务编号,保存密文对象、摘要、策略、区域和采集信息,并形成可验证数据结构版本。区域链保存本域摘要,中继链保存跨区域关联回执。 资料可信检查会分别检查:密文摘要、业务索引、区域树版本、区域链回执、中继链回执和跨区域关联。检查结果只对当前展示的证据负责,不把空列表当作“通过”。 ### 4. 访问申请与数据服务 资料目录可用于发现资料,但查看目录不等于获得使用权。下载和安全计算是两个独立权限: - 缺少下载权限时显示“申请下载密文”。 - 缺少安全计算权限时显示“申请安全计算”。 - 两种权限都缺少时同时显示两个按钮。 - 已获得下载权限不自动获得安全计算权限。 - 已获得安全计算权限也不自动获得源资料下载权限。 申请提交后由对应区域权威处理。用户可以在用户中心查看待审核、已批准、已拒绝和已撤销状态。 ### 5. 安全计算与本地解密 用户选择已获批的多个区域核心指标和计算公式,平台在计算合约中处理密文,只返回受保护的结果文件。源指标密文不会作为普通下载内容返回。 用户将结果文件、本人本地授权材料和结果解密保护材料交给桌面客户端。客户端完成授权校验、结果解密和本地明文导出,平台不会在网页上直接展示最终明文。 ### 6. 联邦趋势与未来预测 用户在客户端将本地区域特征转换为扰动包,网页登记扰动包并创建联邦分析任务。Worker 对五个逻辑区域分别训练,再按有效样本数进行 FedAvg,最后回写预测、态势和告警。 电网趋势页面的时间含义如下: - 历史部分用于说明模型对已有观测的拟合效果。 - 未来部分从最新观测之后开始,不能把已经发生的日期标记成未来预测。 - 一天窗口默认覆盖未来 24 小时,七天窗口默认覆盖未来 72 小时,三十天窗口默认覆盖未来 168 小时。 - 五个区域图例始终保留,普通用户和总公司权威均可选择区域或五区域综合。 - 实测对照默认关闭,缺失实测值保持为空,不用零值填充。 - 置信区间表示模型对未来波动范围的估计,不是事故结论。 进入页面、切换筛选条件或点击“刷新曲线”只读取最新已完成结果,不会自动重新训练;新任务完成且结果通过当前性检查后,才会成为相同查询范围的新展示来源,历史任务不会被覆盖。 ## 页面导航 | 页面 | 主要用途 | | --- | --- | | 电网门户 | 查看身份状态、常用入口、五区域协作概览和待办事项。 | | 安全存储 | 登记客户端生成的 AES 密文、访问策略和核心指标密文。 | | 数据服务 | 查找资料、提交下载/安全计算申请、下载密文包和查看使用记录。 | | 资料可信检查 | 查看摘要、可验证证明、跨链回执和批量检查历史。 | | 电网趋势 | 查看历史拟合、未来预测、置信区间、风险依据和告警。 | | AI 助手 | 对话查询资料和趋势,确认后执行保存、任务或安全计算。 | | 用户中心 | 查看 DID、属性申请、资料申请、授权包、消息和账户状态。 | | 合约中心 | 仅属性权威使用,用于系统公钥登记、合约信息和链上管理。 | ## 接口分层 平台接口按业务边界组织,前端和 AI 助手共享相同的权限判断: | 接口分组 | 典型能力 | | --- | --- | | `/api/biz-auth`、`/api/did-vc` | 注册、登录、DID、设备绑定和身份验证。 | | `/api/abe-authorities`、`/api/user-center` | 权威目录、属性申请、授权包和消息。 | | `/api/trust-data`、`/api/resources` | 资料保存、查找、访问、下载和可信记录。 | | `/api/integrity`、`/api/audit` | 证明、核验、审计时间线和跨链证据。 | | `/api/paillier`、`/api/contracts` | 系统公钥、核心指标、安全计算和合约中心。 | | `/api/federated/query`、`/api/federated/exchange` | 用户查询与 Worker 任务交换;联邦对外接口保持这两个入口。 | | `/api/agent` | 对话流、确认写操作、文件上传和历史会话。 | | `/api/cross-chain/messages` | 跨链消息提交、状态查询和回执查看。 | 接口权限由登录 DID、已签发属性、资源审批和业务区域共同决定。客户端私钥、密钥环密码和原始明文不作为接口参数提交。 ## 关键模块说明 ### platform-api 平台主服务,负责业务编排和权限边界,连接关系型索引、对象存储、可验证数据结构、区域链、中继链、系统公钥和联邦 Worker。资料服务、审批服务、身份服务、合约中心和趋势查询均在这一层统一执行授权判断。 ### agent-service AI 助手服务使用流式对话输出工作计划和执行进度。查询操作可以直接返回;保存资料、创建联邦任务、发起安全计算等写操作必须经过二次确认。会话历史和摘要存放在独立的 Agent 会话空间。 ### desktop-client 桌面客户端是敏感数据的本地边界,包含身份与公钥管理、授权材料导入、AES 保护、核心指标保护、资料解密、计算结果解密和联邦扰动等功能。网页下载的授权包只在客户端本地导入,用户私钥不上传。 ### ma-cp-abe 多权威 CP-ABE 模块实现全局参数、权威主密钥、GID 绑定密钥、策略树、密钥信封、签名和序列化。策略使用结构化树表达,`AND`、`OR` 和嵌套节点由客户端生成,网页只登记策略结果。 ### privacy-service 与 verkle-service 隐私计算服务只持有执行所需的公开材料和密文操作能力,不提供结果明文解密接口。可验证数据结构服务维护区域树的版本、根和证明,平台把证明摘要与链上锚定关联起来。 ### PFL-EPM 联邦 Worker 使用统一任务协议领取任务。每个区域进程只处理对应区域的扰动包,完成时间窗口裁剪、本地训练、评估和预测;协调器按有效样本数执行标准 FedAvg,再统一写回态势、风险和告警。 ## 本地开发与验证 仓库模块可以独立构建和测试。命令应在对应模块目录执行,并使用该模块的运行配置。 ### 用户网页 ```bash npm ci npm run build ``` ### 平台接口和 AI 助手 ```bash mvn test mvn package ``` 两个 Java 服务分别在自己的模块目录执行上述命令。运行时需要提供数据库、Redis、对象存储、链节点和隐私服务的连接配置。 ### 多权威属性加密 ```bash mvn test mvn package ``` 客户端构建会把生成的属性加密桥接程序和运行时材料打包进桌面应用。 ### 联邦 Worker ```bash python -m pip install -r requirements.txt python -m pytest -q tests python -m pfl_epm.run --config configs/default.yaml ``` 样例输入可以通过仓库提供的生成器创建。真实联调输入应由桌面客户端生成,不能把原始明文 CSV 直接作为 Worker 输入。 ### 隐私与可验证数据服务 隐私服务使用 Python 依赖运行,Verkle 服务使用 Rust 工具链构建。两者均提供独立测试,平台接口通过配置的服务地址调用它们。 ## 配置边界 运行平台至少需要配置以下类别的参数: - 数据库和 Redis 连接。 - IPFS API 与网关地址。 - 隐私服务和可验证数据结构服务地址。 - 区域链、中继链、WeCross 和 WeBASE 地址。 - 链上服务账号及其签名材料。 - AI 助手模型地址、模型名和访问令牌。 - 系统公钥初始化状态和联邦 Worker 任务令牌。 密钥、令牌、数据库密码、链账号私钥和原始业务数据只能通过运行环境的安全配置注入,不能写入源码、测试样例或 README。 ## 安全边界与诚实说明 - AES 密文和访问策略由客户端生成,网页不会替用户把原始明文转换成密文。 - Paillier 计算返回的是结果密文,最终解密必须在拥有授权材料的客户端完成。 - 联邦扰动包不是密码学密文。当前 Worker 可以读取扰动后的特征值,因此不能宣称已经实现安全聚合、同态加密或 MPC。 - 一个 Worker 进程可以模拟五个逻辑区域客户端,但这不等同于五个机构在五台物理服务器上独立运行。 - 区域权威只审批本区域资源,总公司权威负责总公司级属性和系统级操作。 - 资料目录可见不代表可以下载;下载权限和安全计算权限始终分开判断。 - 核验通过只表示当前检查的摘要、证明和回执一致,不等同于对原始业务内容作无限范围担保。 - 撤销授权会阻止新的下载、计算和结果获取,但无法远程删除用户此前合法保存到本机的文件。 ## 常见问题 ### 为什么注册后不能立即登录? 注册只提交身份和属性申请。归属区域权威完成必要审核后,账号才具备登录条件;其他属性申请可以继续在用户中心查看。 ### 为什么能看到资料却不能下载? 资料目录用于发现和筛选,下载属于单独授权。请在对应资料行点击“申请下载密文”,等待区域权威审批。 ### 为什么能下载却不能安全计算? 下载和安全计算是两种独立能力。请确认账号拥有安全计算属性,并且目标核心指标已批准当前用户使用。 ### 为什么安全计算结果不能在网页直接显示? 结果文件仍受保护。下载后需要在桌面客户端使用本地授权材料解密,平台不会把最终明文返回网页。 ### 创建新的联邦任务会覆盖旧结果吗? 不会。每个任务都有独立编号和历史记录。只有新任务完成、结果可靠且预测终点仍在未来时,它才会成为同一查询范围的新展示来源。 ### 点击刷新曲线会重新训练吗? 不会。刷新曲线只读取已经完成的最新结果,不创建任务,不改变历史记录,也不会整页闪白。 ### 置信区间是什么? 置信区间是模型对未来波动范围的估计。实测值落在区间外表示该时点需要复核,不等于平台自动认定发生故障。 ### AI 助手会自动执行写操作吗? 不会。保存、创建任务和安全计算等写操作必须经过用户确认,取消确认不会产生业务记录。 ## 使用建议 1. 首次使用先完成身份材料、属性审批和客户端授权材料导入,再保存资料。 2. 保存资料前核对区域、主题、采集时间、访问策略和核心指标是否属于同一批业务。 3. 进行跨区域安全计算前,确认每个参与区域都有同一轮系统公钥生成的核心指标。 4. 看到“需要复核”或申请被拒绝时,先查看申请意见和核验详情,再决定是否重新提交。 5. 私钥、本地授权材料、原始明文和解密结果应按本单位数据管理要求单独保管。 6. 演示和录屏时不要展示密码、私钥、授权材料内容或敏感业务明文。 ## 许可证与第三方组件 本仓库包含 Java、Python、Rust 和前端组件。各第三方库继续遵循其原始许可证;发布产品或二次分发时,应一并保留相应的版权和许可证声明。