17. 安全、隐私与滥用防护

本章说明 OpenAgenet (OAN) 的安全边界如何覆盖资源控制权、节点授权、根平台发布、发现结果、治理状态、调用端点和用户本地身份。攻击者可发送公开请求、提交伪造或低质量资源、重复请求、观察公开 DID 与 VC,或运行受损节点;安全控制必须说明保护对象、攻击前提、控制点、失败结果和验证证据。发现结果的可信性不等于业务端点安全。

安全要求统一使用以下判断链,后续小节中的表格和清单均应能回到这条链:

攻击前提 -> 被保护对象 -> 验证或控制点 -> 失败结果 -> 审计证据 -> 恢复动作
安全对象 主要攻击面 首要控制点 不应误判为安全的信号
资源控制权 复制 DID、伪造文档、重放签名 控制公钥、challenge、版本和签名 DID 字符串相同、HTTP 200
节点授权 冒充节点、越权、授权过期 节点 DID、授权 VC、治理状态 网络可达、历史成功
发布与分发 篡改资源包、伪造发布状态 哈希、根平台可信发布证明、批次校验 注册受理、缓存命中
发现与调用 索引污染、恶意端点、SSRF 来源、生命周期、端点策略和调用前验证 排名靠前、语义相关
可用性与隐私 洪泛、资源耗尽、凭证泄露 配额、隔离、脱敏和最小权限 单一健康端点成功

17.1 威胁模型与信任假设

威胁模型分别看待资源提供方、注册服务节点、根平台、内容分发平台、发现服务节点、链下信任索引器、浏览器和调用端点。资源控制私钥由控制方保管,治理密钥只用于治理动作,索引器是链上事实的读侧投影;协议不能自动修复已泄露密钥、完全失控主机或业务端点漏洞。

信任假设应按组件和材料拆开记录:

组件或材料 信任边界 失陷后的直接影响 仍需由其他组件重新验证的事实
资源控制私钥 由资源控制方保管 该资源控制权可能被转移或滥用 节点授权、治理状态和发布结果
注册服务节点 只在授权域内受信 可接收、篡改或拒绝请求 控制证明、资源包哈希和根平台发布
根平台 负责根验证、发布与治理衔接 发布状态或根平台可信发布证明受影响 资源控制权和外部治理事实
发现服务节点 提供查询和索引视图 结果缺失、过期或被污染 来源授权、版本和根平台证明
链下信任索引器 提供链上治理事实的读侧投影 状态延迟或查询错误 原始链上事实和同步序列
业务端点 不属于 OAN 的安全信任根 业务调用本身可能被攻击 调用方的协议、认证和业务策略

17.1.1 资源控制权威胁

资源控制权威胁包括复制公开 DID、DID文档和 VC 后冒充控制者,或用新文档覆盖同一 DID。控制点是 verification method、控制 challenge、签名和版本关系;错误公钥、错误 challenge、伪造签名和旧版本覆盖必须拒绝。

17.1.2 节点信任威胁

节点信任威胁包括未授权节点冒充注册服务节点、已授权节点越权,以及暂停或撤销后继续工作。控制点是节点 DID、节点授权 VC、治理事件、授权域和能力范围;网络可达或历史成功不能替代当前授权。

17.1.3 数据污染和滥用威胁

数据污染包括批量虚假资源、重复 DID、低质量描述、恶意标签、虚假端点和伪造排序信号。控制点包括控制证明、幂等规则、生命周期、根平台独立验证、标签边界、审核和限流;拒绝记录应区分具体原因。

17.1.4 可用性威胁

可用性威胁包括注册洪泛、复杂语义查询、超大资源包、并发同步、数据库锁争用和外部依赖不可用。控制点是大小限制、超时、并发配额、分页、查询降级、队列隔离和退避;不得无限重试。

17.1.5 调用端点安全威胁

调用端点威胁包括恶意 URL、内网回调、不安全协议、重定向绕过和端点被接管。控制点是协议、域名、解析地址、端口、重定向和认证校验;失败时阻止高风险访问并记录脱敏原因。

17.2 资源冒用与 DID 控制权保护

资源 DID 的控制关系由 DID文档中的公钥和控制证明建立。公开 DID、文档、注册 VC 或根平台可信发布证明不能单独取得更新权;同 DID 更新必须使用原控制关系或规范允许的控制权转移流程,不能仅凭新文档自洽就接受。

资源控制权的验证关系可以按下表逐项核对:

检查项 验证内容 失败处理
DID 与文档 文档声明的 DID 与请求资源 DID 一致 拒绝请求,不进入发布流程
公钥关系 verification method 与控制关系匹配 标记控制关系无效
签名挑战 签名覆盖当前请求、版本或 challenge 拒绝旧签名和跨请求签名
版本链 更新声明前序版本、摘要和控制权 不允许旧版本覆盖当前记录
状态约束 资源未被暂停、撤销或限制更新 按治理状态拒绝或暂停

仅有“签名格式正确”不足以证明控制权;验证者必须确认签名公钥确实由目标 DID文档声明,并且签名覆盖了本次具体操作。

17.3 伪造注册与未授权更新防护

注册和更新分别校验来源、节点授权、控制证明、文档哈希、元数据哈希、资源包哈希、版本和幂等状态。旧版本、旧 nonce 或错误哈希不得覆盖当前记录;测试覆盖缺失证明、错签名、错版本、错哈希和重复提交。

注册与更新的拒绝条件应能被客户端区分:

情形 控制失败点 允许的结果
缺少控制证明 资源控制权未建立 拒绝注册或更新
节点授权无效 请求来源不具备接入资格 拒绝并记录授权原因
版本或前序版本错误 更新链不连续 拒绝覆盖,不改变当前版本
哈希不一致 文档、元数据或资源包被篡改 拒绝发布
已处理的有效请求重试 幂等键或请求 ID已存在 返回稳定结果,不重复产生副作用

17.4 恶意或受损注册节点

根平台不能只信任注册服务节点转发的结论,而应重新验证节点身份、授权、控制证明、DID文档、资源包和请求签名。越权或材料篡改时拒绝发布;注册节点历史记录不自动成为根平台发布事实。

17.5 恶意或受损发现节点

调用方应核验发现响应来源、查询节点身份、索引版本、资源 DID、DID文档、版本、根平台可信发布证明、生命周期、授权域和治理状态。高相关性或 HTTP 成功不能替代验证;发现节点受损时可撤销授权并停止采用其索引。

17.6 根平台受损与密钥保护

根平台受损可能篡改待发布材料、伪造根平台可信发布证明、阻断传播或泄露配置。应隔离发布密钥和数据库,实行最小权限、受控签名、哈希、审计、备份校验和节点重新同步;恢复不改变资源控制私钥或链上事实。

17.7 垃圾注册与资源目录污染

目录污染治理关注资源真实性、可用性和语义质量。注册入口保留控制证明和主体,根平台独立验证并隔离可疑资源,发现节点过滤生命周期、治理状态和发布证据;清理要区分拒绝、暂停、撤销和节点授权撤销。

垃圾注册治理不应只依赖单一评分。处理前应组合控制证明、资源类型、标签命名空间、端点可验证性、重复度、来源节点和治理状态;处理后应记录动作和传播范围。

  • [ ] 对批量请求实施主体、节点、接口和时间窗口多维限流。
  • [ ] 对重复 DID 区分网络重试、幂等提交和真正版本更新。
  • [ ] 对低质量或恶意标签保留规范标签、别名和推断命中的区别。
  • [ ] 对已发布资源区分暂停、撤销、下线和节点授权撤销。
  • [ ] 清理后复核根平台、内容分发平台和发现服务节点的收敛状态。

17.7.1 虚假资源注册

虚假注册由缺少控制证明、DID文档不一致、端点不可验证或元数据伪造等信号识别,并在进入发布前拒绝。公开错误不得回显私钥或完整签名材料。

17.7.2 重复注册和版本污染

重复注册可能是网络重试、同 DID 更新或恶意提交。系统用资源 DID、版本、文档和资源包哈希及请求 ID 区分;重复有效请求返回稳定结果,真正更新遵守控制权和版本规则。

17.7.3 语义标签污染

标签污染包括占用热门标签、伪装规范标签、跨类型错配和误导关键词。注册校验标签 ID、词汇版本、类型关系和命名空间;发现区分规范、别名、原文和语义推断命中。

17.7.4 限流、审核和清理

限流、审核和清理按来源、主体、节点 DID、资源 DID、接口和风险等级实施,并保留原因、操作者和影响范围。清理后应验证根平台、内容分发平台和发现索引收敛。

17.8 拒绝服务与资源耗尽

注册、发现、同步、健康和治理查询分开配置资源预算,限制请求体、批次、压缩展开、查询深度、并发、数据库连接和外部调用时间。语义后端失败可退回受限路径,但不能放宽可信过滤;降级需标注不完整或不可确认。

资源预算应按路径隔离,避免发现查询的高开销拖垮注册和健康检查:

路径 主要预算 超限动作 安全底线
注册 请求体、验签次数、并发和外部依赖时间 限流、排队或拒绝 不跳过控制证明
发现 查询长度、页大小、候选数和执行时间 截断、缓存或降级 不绕过治理过滤
节点同步 批次、游标、并行度和重试次数 退避、暂停或重置游标 不重复推进已处理序列
数据库/索引 连接、锁、磁盘和索引增长 隔离、告警或保护性只读 优先保留已验证数据
flowchart TD
    A[收到请求] --> B{大小与速率通过?}
    B -- 否 --> C[拒绝并记录限流原因]
    B -- 是 --> D{预算与依赖可用?}
    D -- 否 --> E[有限降级或排队]
    D -- 是 --> F[执行协议验证]
    F --> G{验证通过?}
    G -- 否 --> H[拒绝且不触发持续重试]
    G -- 是 --> I[返回结果并记录请求 ID]

17.8.1 注册接口攻击

注册攻击包括高频提交、超大 JSON、重复 DID、昂贵验签和依赖调用。入口先做大小、速率、幂等和格式检查,再执行高成本验证;失败请求不得触发持续发布重试。

17.8.2 发现查询攻击

发现攻击包括无上限宽查询、复杂语义检索、重复查询和结果放大。限制输入长度、页大小、候选数量、执行时间和并发,使用稳定游标与缓存;降级不能绕过治理过滤。

17.8.3 节点间同步压力

同步压力包括大批次、游标重放、过多并行、重试风暴和分发不可用。同步方使用批次和并发上限、指数退避及游标幂等,重复批次不得重复写入或推进状态。

17.8.4 数据库和索引资源耗尽

数据库和索引耗尽包括连接池、锁、磁盘和索引膨胀。应有字段批次限制、索引维护、超时、隔离队列、保留策略和容量告警;资源不足时优先保护有效数据和健康查询。

17.9 重放、重复提交与过期发布

重放防护区分请求、登记、发布、同步批次和旧缓存。请求 ID、nonce、时间窗口和签名防止再次接受,DID、版本、前序版本和哈希判断业务更新,游标和批次序列保证同步幂等。

重放和重复提交的判断顺序应保持幂等优先、状态更新谨慎:

flowchart TD
    A[接收请求] --> B{请求 ID或幂等键已处理?}
    B -- 是 --> C{请求摘要完全一致?}
    C -- 是 --> D[返回原处理结果]
    C -- 否 --> E[拒绝冲突请求]
    B -- 否 --> F{签名、时间窗口和 nonce有效?}
    F -- 否 --> G[拒绝过期或重放请求]
    F -- 是 --> H{版本、前序版本和哈希有效?}
    H -- 否 --> I[拒绝旧版本或篡改材料]
    H -- 是 --> J[写入一次并记录结果]

17.10 端点滥用与不安全资源调用

调用前检查端点协议、证书、域名、解析地址、认证、版本、生命周期、治理状态和发布证据,必要时进行业务权限协商、请求签名和响应验证。OAN 不保证业务端点无漏洞或无恶意行为。

调用方在使用发现结果前至少完成以下检查:

  • [ ] 资源 DID、DID文档、公钥和版本摘要一致。
  • [ ] 根平台可信发布证明、生命周期和治理状态仍可验证。
  • [ ] 端点协议、域名、证书、解析地址、端口和重定向符合本地策略。
  • [ ] 调用所需的认证、授权域、请求签名和响应校验已明确。
  • [ ] 发现服务节点的结果新鲜度和来源不会被误当作业务服务保证。

17.11 敏感元数据与凭证暴露

私钥、本地身份备份、内部端点、数据库路径、管理令牌、未公开资源、完整签名原文和可关联个人的日志字段均属敏感信息。公开接口不得返回本地身份备份,服务端日志需白名单、脱敏和访问控制。

信息类别 是否可出现在公开响应 日志处理 失败后动作
DID、版本、公开元数据 按资源公开策略 可记录,保留关联 ID 发现或发布按状态处理
注册 VC、根平台可信发布证明 按披露策略 记录摘要和状态,不必记录完整敏感材料 验证失败则拒绝采用
私钥、本地身份备份 禁止记录 立即阻断并调查泄露路径
管理令牌、数据库路径、内部端点 脱敏或白名单记录 轮换凭证并限制暴露面
完整签名原文和个人关联日志 通常不应公开 脱敏、最小化和限权 删除不必要复制并复核访问

17.12 日志、审计与事件响应

安全日志关联请求 ID、资源 DID、节点 DID、版本、事件或游标、来源、结果、错误代码和时间,并区分链上证据、服务日志和手工记录。日志应限制写入权限,告警应能定位隔离、撤销、限流、补偿和恢复验证。

事件响应应保留最小但可关联的证据:

request_id / resource_did / node_did / version / event_or_cursor
source / result / error_code / observed_at / operator_action
flowchart LR
    A[发现异常] --> B[保留请求与状态证据]
    B --> C{是否仍在扩大?}
    C -- 是 --> D[限流、隔离或暂停来源]
    C -- 否 --> E[核对 DID、版本、证明和治理状态]
    D --> E
    E --> F[修复、撤销、补偿或重新同步]
    F --> G[验证传播收敛]
    G --> H[复盘规则与测试]

17.13 第三方节点安全要求

第三方节点自行保护主机、节点私钥、授权 VC、配置、数据库、依赖和端口,并通过节点 DID、DID文档、节点授权和请求签名接入。异常时可暂停或撤销授权,不得要求资源提供方交出主体或资源控制私钥。

第三方节点接入前应形成可审计的最低检查记录:节点 DID、DID文档、节点授权 VC、授权域、有效期、公开端点、软件版本、密钥保管方式和撤销联系人。资源提供方只提交资源控制证明,不应交出主体或资源控制私钥。

17.14 端点验证、回调安全与 SSRF 考量

读取或调用端点、回调和同步地址前验证协议、主机、端口、解析地址、重定向和认证。私有、回环、链路本地和云元数据地址按策略阻止,解析与连接之间防止 DNS 重绑定,拒绝原因可审计但不泄露拓扑。

SSRF 防护应覆盖解析前、解析后、连接前和重定向后四个时点;只在字符串层面检查 URL 不能作为充分控制。拒绝时记录策略命中类别和请求 ID,不回显内部地址、网络拓扑或解析细节。

阶段 必查对象 失败结果
解析前 scheme、主机、端口、凭据和编码 拒绝非法 URL
解析后 IPv4/IPv6、回环、私有、链路本地、云元数据地址 拒绝受限地址
连接前 实际连接目标、证书、超时和策略 失败关闭
重定向后 每一跳协议、主机、解析地址和端口 拒绝越界重定向

17.14.1 端点格式和协议验证

只允许支持的协议和端口范围,拒绝缺少主机、非法编码、嵌套凭据或类型不符的端点。HTTPS 证书和主机名按风险校验,开发环境 HTTP 不得默认为公网安全配置。

17.14.2 内网地址与回环地址限制

每次连接前检查 IPv4、IPv6、回环、私有、链路本地、保留和云元数据地址,使用标准解析和网络策略,不能只依赖字符串黑名单。

17.14.3 回调请求安全

回调绑定一次性请求 ID、来源上下文和目标,限制方法、请求头、响应大小和超时,禁止回调改变授权或治理状态;失败重试必须有限。

17.14.4 重定向和 DNS 解析风险

DNS 解析结果、连接目标和重定向链纳入同一次判断,重定向到不同主机、协议或受限地址时重新校验;超时、证书变化或解析不一致应失败关闭。

17.15 包与依赖的供应链完整性

源码、Cargo/npm 依赖、锁文件、构建产物和资源包属于供应链边界。构建使用锁定依赖、受控来源、哈希或签名校验和可追溯提交;资源包进入根平台或发现节点前重新计算哈希。

供应链核验应覆盖“来源—锁定—构建—产物—部署”链路:

  1. 核对源码提交、依赖锁文件和受控包源。
  2. 在可复现或受控环境构建 Rust、TypeScript 和社区 Skill 产物。
  3. 对二进制、npm 包、资源包和分发材料保存摘要或签名。
  4. 部署前比较产物摘要,部署后记录版本和回滚材料。
  5. 发现依赖或产物异常时停止发布,保留证据并重新构建。

17.16 可用性目标与优雅降级

安全状态和可用性分开表达。旧快照可支持带新鲜度标记的只读结果,但不能批准注册、发布、授权或高风险调用;依赖失败、索引滞后、治理未知和资源耗尽应有不同状态与恢复动作。

状态 可返回的内容 禁止执行的动作 必须标注的事实
正常且新鲜 当前查询、状态和证明 无额外限制 来源和时间
旧快照可用 带新鲜度的只读结果 注册、发布、授权、高风险调用 快照时间和滞后
索引滞后 已确认的部分事实 把未同步当作不存在或最新 当前序列和目标序列
治理未知 有限查询或错误状态 通过未知状态批准调用 未知原因
依赖不可用 健康错误或受限缓存 无限重试、放宽可信过滤 依赖和恢复状态

优雅降级的验收重点不是“页面仍有内容”,而是用户和调用方能够看见内容的新鲜度、来源和不确定性,并且不会因旧数据自动执行注册、发布、授权或高风险业务调用。

参考来源

来源 类型 链接
oan-protocol-common 代码仓:签名、哈希、凭证和安全请求结构 https://github.com/wolfbrother/oan-protocol-common
oan-root-services 代码仓:根平台验证、发布和节点授权 https://github.com/OpenAgenet/oan-root-services
oan-registrar-node 代码仓:注册入口、控制证明和滥用控制 https://github.com/OpenAgenet/oan-registrar-node
oan-discovery-node 代码仓:查询、索引和结果安全边界 https://github.com/OpenAgenet/oan-discovery-node
oan-trust-indexer 代码仓:治理状态和撤销状态投影 https://github.com/OpenAgenet/oan-trust-indexer
OAN Yellow Paper arXiv 黄皮书:安全、隐私和信任边界 https://arxiv.org/abs/2606.03163
On this page