跳到主要内容

10. Message Encoding (消息编码)

10. Message Encoding (消息编码)

本文档未指定 HPKE 消息的线格式编码 (wire format encoding)。因此, 采用 HPKE 的应用程序必须指定一个明确的编码机制, 该机制至少应包括: 封装值 (encapsulated value) enc, 密文值 (ciphertext value) (如果有多个, 还应包括顺序), 以及任何非隐式的 info 值。非隐式值的一个示例是用于封装的接收者公钥, 如果接收者拥有多个公钥, 可能需要该公钥。

本文档中使用的 AEAD 接口基于 [RFC5116], 该接口产生并消费单个密文值。如 [RFC5116] 中所述, 该密文值包含加密的明文以及任何认证数据, 以各个 AEAD 方案描述的方式编码。某些实现的结构并非如此, 而是提供单独的密文和认证标签 (authentication tag)。当在 HPKE 实现中使用此类 AEAD 实现时, HPKE 实现必须在 Seal() 内将这些输入组合成单个密文值, 并在 Open() 内解析它们, 其中解析细节由 AEAD 方案定义。例如, 对于本文档中指定的 AES-GCM 方案, GCM 认证标签放置在密文输出的最后 Nt 个字节中。