BLUEPRINT
第七章 安全与加密
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(控制授权协议)预协商的密钥:
- CAP 在连接建立阶段完成身份验证和密钥交换
- DTP 使用 CAP 提供的密钥进行 Payload 加密/解密
- 密钥版本号(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 的身份验证机制 |
| 重放攻击 | 序列号单调递增 + 会话绑定 |
