4. Requirements on AEAD Algorithm Specifications (AEAD 算法规范要求)
4. Requirements on AEAD Algorithm Specifications (AEAD 算法规范要求)
每种 AEAD 算法必须 (MUST) 仅接受固定密钥长度 K_LEN 的密钥, 且不得 (MUST NOT) 要求输入密钥具有特定数据格式。若算法需要此类结构 (例如, 子密钥须满足特定奇偶校验格式), 须在算法内部自行提供。
每种 AEAD 算法必须 (MUST) 接受长度在零到 P_MAX 个八位字节之间 (含端点) 的任意明文, P_MAX 由该算法具体规定。P_MAX 必须 (MUST) 大于零, 且应该 (SHOULD) 至少为 65,536 (2^16) 个八位字节。该尺度是网络数据分组的典型上限。其他应用可能使用更大的 P_MAX, 因此通用算法宜支持更高上限。
每种 AEAD 算法必须 (MUST) 接受长度在零到 A_MAX 个八位字节之间 (含端点) 的任意关联数据, A_MAX 由该算法具体规定。A_MAX 必须 (MUST) 大于零, 且应该 (SHOULD) 至少为 65,536 (2^16) 个八位字节。其他应用可能使用更大的 A_MAX, 因此通用算法宜支持更高上限。
每种 AEAD 算法必须 (MUST) 接受长度在 N_MIN 与 N_MAX 个八位字节之间 (含端点) 的任意 nonce, N_MIN 与 N_MAX 由该算法具体规定。N_MAX 与 N_MIN 可以 (MAY) 相等。每种算法应该 (SHOULD) 接受长度为十二 (12) 个八位字节的 nonce。下文所述随机化或有状态算法可以 (MAY) 令 N_MAX 等于零。
AEAD 算法可以 (MAY) 以任意方式组织其密文输出; 例如, 密文可包含认证标签。每种算法应该 (SHOULD) 选择便于高效处理的结构。
认证加密算法可以 (MAY) 纳入或使用随机源, 例如生成并入密文输出的内部初始化向量 (initialization vector)。此类 AEAD 算法称为随机化算法; 注意仅加密是随机的, 解密恒为确定性。随机化算法可以 (MAY) 令 N_MAX 等于零。
认证加密算法可以 (MAY) 在多次加密调用之间维护内部状态, 例如用于构造算法内部使用的互异值 (内部 nonce)。此类 AEAD 算法称为有状态算法。当应用输入零长度 nonce 时, 算法可采用该方法仍保持良好安全性。有状态算法可以 (MAY) 令 N_MAX 等于零。
AEAD 算法规范必须 (MUST) 包含上文定义的 K_LEN, P_MAX, A_MAX, N_MIN, N_MAX。此外, 必须 (MUST) 规定最大可能密文的八位字节数, 记为 C_MAX。
每种 AEAD 算法必须 (MUST) 说明明文长度与密文长度之间的关系。该关系不得 (MUST NOT) 依赖外部参数, 例如认证强度参数 (如认证标签长度)。若存在此类依赖, 会使算法使用复杂化, 导致仅凭 AEAD 注册表信息不足以保证互操作性。
每种 AEAD 算法规范应该 (SHOULD) 说明无意中重用 nonce 值会导致何种安全性下降。
每种 AEAD 算法规范应该 (SHOULD) 引用详细的安全分析。本文档不规定特定安全模型, 因为文献中已使用多种模型。安全分析应该 (SHOULD) 定义或引用安全模型。
属于上文所定义随机化或有状态的算法, 应该 (SHOULD) 用这些术语描述自身。