3. 证据概念

在调度器签名证据校验体系中,证据(Evidence)是连接调度决策与密码学签名的核心载体。它既不是单纯的日志记录,也不是原始的签名数据,而是一个经过结构化封装的、可独立验证的数据单元。本节从定义、意义、完整性要求和不可否认性四个维度,系统阐述证据的本质。

3.1 证据的定义

证据是指由调度器在完成一次调度决策后,将决策内容、上下文信息、时间戳以及调度器签名进行结构化打包,形成的一个自包含、可校验的数据对象。它必须满足以下形式化描述:

Evidence := {
    "schedule_id":       "唯一调度标识",
    "decision":          "调度决策内容(如节点分配、资源配额)",
    "context": {
        "input_state":   "调度输入状态哈希",
        "policy_hash":   "调度策略规则哈希",
        "timestamp":     "决策生成时间(Unix 毫秒)"
    },
    "signature": {
        "algorithm":     "签名算法标识(如 ECDSA-SHA256)",
        "signer_id":     "调度器身份标识",
        "signature_value": "对 evidence 主体部分的数字签名"
    }
}

证据的生成过程遵循“先封装、后签名”原则:调度器先将决策与上下文序列化为规范字节流,再对该字节流施加数字签名,最后将签名值附加到证据结构中。任何对证据内容的篡改都会导致签名校验失败。

关键区分:证据 ≠ 日志。日志面向人工审计,证据面向机器自动校验。证据必须包含密码学签名,而日志通常不包含。

3.2 证据在调度中的意义

证据在分布式调度系统中承担三重核心职能,其意义远超简单的“记录”范畴:

职能维度 具体意义 典型场景
审计追溯 为每一次调度决策提供不可篡改的原始凭证,支持事后审计与故障根因分析 集群资源分配异常时,通过证据回溯决策过程
一致性校验 下游组件(如执行器、监控系统)可独立验证调度决策是否由合法调度器签发 执行器收到调度指令后,先校验证据再执行
争议仲裁 当多个调度器或组件对同一资源产生冲突时,证据作为权威裁决依据 双调度器主备切换时的决策冲突仲裁

从系统架构视角看,证据将调度器的信任边界从调度器自身扩展到了整个分布式系统。任何持有调度器公钥的组件,都可以在不依赖调度器在线的情况下,独立验证证据的真实性。

证据在调度系统中的位置与流转 调度器 生成证据 证据存储 持久化 / 分发 执行器 校验证据后执行 审计系统 离线校验证据 证据生成后不可篡改 签名保证完整性 执行器本地校验 无需调度器在线

3.3 证据的完整性要求

完整性是证据可信的基石。一个完整的证据必须满足以下四个层次的要求:

  1. 结构完整性:证据必须包含所有必需字段(决策内容、上下文、签名),不允许缺失或空值字段。
  2. 内容完整性:证据中的决策内容与上下文必须精确反映调度器当时的真实决策,不允许任何字段被篡改或替换。
  3. 签名完整性:签名值必须覆盖证据中除签名本身之外的所有字段,且签名算法必须符合系统安全策略。
  4. 链式完整性:当证据之间存在依赖关系时(如调度决策的先后顺序),必须通过哈希链或时间戳序列保证证据间的顺序不被破坏。
完整性校验公式:
Verify(Evidence.signature, Serialize(Evidence.decision + Evidence.context), PublicKey) == True

完整性校验失败的常见原因包括:网络传输中的比特翻转、存储介质的静默数据损坏、恶意中间人的篡改攻击,以及调度器自身代码缺陷导致的错误封装。系统设计时应采用端到端完整性校验策略,即在证据生成时立即计算校验和,在每次使用前重新验证。

3.4 证据的不可否认性

不可否认性(Non-repudiation)确保调度器在生成证据后,无法否认该证据是由其自身签发的。这一性质依赖于数字签名的私钥唯一性和公钥可验证性。

不可否认性的实现需要满足以下条件:

条件 说明 威胁场景
私钥安全 调度器的签名私钥必须存储在硬件安全模块(HSM)或可信执行环境(TEE)中,防止泄露 私钥被窃取后,攻击者可伪造证据
公钥可信分发 调度器的公钥必须通过可信渠道(如 PKI 证书链)分发给所有校验方 公钥被替换后,校验方可能接受伪造证据
签名算法抗碰撞 使用的签名算法(如 ECDSA、EdDSA)必须具有强抗碰撞性,防止签名伪造 弱算法可能被找到碰撞,生成相同签名
时间戳绑定 证据中的时间戳必须与可信时间源同步,防止重放攻击 旧证据被重放,模拟新的调度决策

不可否认性在调度系统中的实际价值体现在:当出现资源分配争议时,调度器无法以“系统故障”“日志丢失”等理由否认其做出的决策。证据的签名值就是调度器对决策的数字承诺,具有法律级别的可追溯效力。

证据不可否认性的技术实现架构 调度器内部 决策引擎 HSM/TEE 证据封装模块 证据对象 决策 + 上下文 + 签名 校验方(执行器 / 审计系统) 签名校验 公钥库 决策执行 / 审计记录 私钥签名 → 公钥验证 调度器无法否认
工程注意:不可否认性依赖于私钥的安全。如果调度器的签名私钥被泄露,攻击者可以伪造任意证据,此时不可否认性彻底失效。生产环境中必须使用 HSM 或 TEE 保护私钥,并定期轮换密钥对。