第七章 安全与加密

7.1 端到端加密设计

DTP 实现端到端加密,确保数据在传输过程中即使经过不可信的中间环境(如 FayGer 运行时),也无法被窃取或篡改。

核心保证:仅目标 iFay 实例能够解密接收到的载荷数据,FayGer 运行时环境无法访问明文。

即使 iFay 运行在公有云的 FayGer 实例上,云服务商也无法读取用户的健康数据、位置信息或消费记录。

7.2 加密范围

┌─────────────────────────────────────┐
│           Logical_Frame              │
├─────────────────────────────────────┤
│  Header(帧头)── 明文传输           │
│  ┌─────────────────────────────────┐│
│  │ ...                             ││
│  │ encryptionMetadata ── 明文      ││
│  │   algorithm: "AES-256-GCM"     ││
│  │   keyVersion: 3                ││
│  └─────────────────────────────────┘│
├─────────────────────────────────────┤
│  Payload(载荷)── 加密传输          │
│  ┌─────────────────────────────────┐│
│  │ ████████████████████████████    ││
│  │ ████████ 加密数据 ████████████  ││
│  │ ████████████████████████████    ││
│  └─────────────────────────────────┘│
└─────────────────────────────────────┘
  • 帧头:明文传输,包含路由和处理所需的元信息
  • 加密元数据:明文传输,包含加密算法标识和密钥版本号,以便接收方确定解密方式
  • 载荷:加密传输,包含实际的数据内容

7.3 密钥管理

DTP 不自行管理密钥,而是依赖 CAP(控制授权协议)预协商的密钥:

  1. CAP 在连接建立阶段完成身份验证和密钥交换
  2. DTP 使用 CAP 提供的密钥进行 Payload 加密/解密
  3. 密钥版本号(keyVersion)用于标识当前使用的密钥

CAP 前置条件

DTP 在开始数据传输前,必须验证 CAP 已完成身份验证和密钥交换流程。若 CAP 密钥交换尚未完成,DTP_Engine 拒绝发送数据并返回"密钥未就绪"(KEY_NOT_READY)错误。

7.4 加密元数据

每个 Logical_Frame 的帧头携带加密元数据:

字段说明
algorithm加密算法标识,如 "AES-256-GCM"
keyVersion密钥版本号,标识使用哪个版本的密钥

加密元数据本身不加密,确保接收方能在解密前获知解密参数。

7.5 加密往返一致性

DTP 保证加密的往返一致性:

  • 使用正确密钥加密后再解密,应产生与原始数据等价的 Payload
  • 使用错误密钥解密,应失败并返回 DECRYPTION_FAILED 错误

7.6 终端侧解密

当终端作为接收方时(数据注入场景),DTP_Engine 使用终端在 CAP 连接建立阶段提交的密钥进行解密。

7.7 安全威胁防护

威胁DTP 防护措施
中间人窃听Payload 端到端加密,中间节点无法读取明文
FayGer 窥探FayGer 仅能看到加密后的 Payload,无法解密
密钥泄露密钥版本号机制支持密钥轮换
身份伪造依赖 CAP 的身份验证机制
重放攻击序列号单调递增 + 会话绑定