1. 引言
- 引言
对构成 Internet of Things (IoT) 的小型受限设备的关注不断增加. 这一过程中产生的标准之一是 "Concise Binary Object Representation (CBOR)" [STD94]. CBOR 扩展了 JavaScript Object Notation (JSON) [STD90] 的数据模型, 其中包括允许二进制数据等变更. 多个处理 IoT 领域的 IETF 工作组已经采用 CBOR 作为其数据结构编码方法. CBOR 的设计目标是使传输消息和实现规模都保持较小, 并具有无 schema 的解码器. IoT 需要消息安全服务, 因此使用 CBOR 作为消息编码格式是合理的.
核心 COSE 规范由两个文档组成. [RFC9052] 包含序列化结构以及使用不同加密算法的过程. 本文档提供一组可与这些结构一起使用的初始算法.
1.1. 要求术语
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 在且仅在以此处所示的全大写形式出现时, 应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.
1.2. 相对于 RFC 8152 的变更
-
提取处理特定算法的章节并将其放入本文档. 处理结构和通用处理规则的章节放在 [RFC9052] 中.
-
进行了文字澄清和术语变更.
-
移除了与 countersignatures 相关的所有细节, 并将其放入 [COUNTERSIGN].
1.3. 文档术语
本文档使用以下术语:
Byte: octet 的同义词.
Constrained Application Protocol (CoAP): 一种专用于受限系统的 Web 传输协议. 它定义于 [RFC7252].
Authenticated Encryption (AE) algorithms [RFC5116]: 在提供加密服务的同时对内容提供认证检查的加密算法. COSE 中使用的 AE 算法示例是 AES Key Wrap [RFC3394]. 这些算法用于密钥加密, 但更优选 Authenticated Encryption with Associated Data (AEAD) 算法.
AEAD algorithms [RFC5116]: 提供与 AE 算法相同的内容认证服务, 并且还允许把不属于加密主体的 associated data 纳入认证服务的加密算法. COSE 中使用的 AEAD 算法示例是 AES-GCM [RFC5116]. 这些算法用于内容加密, 也可用于密钥加密.
术语 "byte string" 用于字节序列, 而术语 "text string" 用于字符序列.
算法表包含以下列:
-
文档中使用的算法名称.
-
该算法在网络传输中使用的值. 该值的一个使用位置是消息的 algorithm 头参数.
-
简短描述, 便于扫描 IANA 注册表时识别算法.
根据算法不同, 表中还可能存在其他列.
1.4. CBOR 数据结构的 CDDL 语法
最初编写 COSE 时, Concise Data Definition Language (CDDL) [RFC8610] 尚未以 RFC 形式发布, 因此不能将其作为数据描述语言来规范性地描述 COSE 采用的 CBOR 数据结构. 因此, 此处定义的 CBOR 数据对象以文字描述. [RFC9052] 中描述的 CDDL 子集提供了 COSE 数据对象的额外 (非规范性) 描述.
1.5. 示例
[GitHub-Examples] 中已经创建一个 GitHub 项目, 其中包含一组测试示例. 每个示例都位于一个 JSON 文件中, 该文件包含用于创建示例的输入, 可用于调试的一些中间值, 以及示例输出. 结果同时使用十六进制和 CBOR diagnostic notation 格式编码.
其中一些示例被设计为失败测试用例; 这些示例在 JSON 文件中有清楚标记.