AWS Encryption SDK 算法参考 - AWS Encryption SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Encryption SDK 算法参考

本页面提供了在您构建与 AWS Encryption SDK兼容的加密库时可供参考的信息。如果您不需要构建自己的兼容加密库,则可能不需要此信息。

要 AWS Encryption SDK 在支持的编程语言之一中使用,请参阅编程语言

有关定义适当 AWS Encryption SDK 实现要素的规范,请参阅中的AWS Encryption SDK 规范 GitHub。

如果您正在构建自己的库,该库可以读取和写入与兼容的密文 AWS Encryption SDK,则需要了解如何 AWS Encryption SDK 实现支持的算法套件来加密原始数据。

AWS Encryption SDK 支持以下算法套件。所有AESGCM算法套件都有一个 12 字节的初始化向量和一个 16 字节的GCM身份验证AES标签。默认算法套件因 AWS Encryption SDK 版本和所选密钥承诺策略而异。有关详细信息,请参阅承诺策略和算法套件

AWS Encryption SDK 算法套件
算法 ID 消息格式版本 加密算法 数据密钥长度(位) 密钥派生算法 签名算法 密钥承诺算法 算法套件数据长度(字节)
05 78 0x02 AES-GCM 256 HKDF有 SHA -512 ECDSA使用 P-384 和 SHA -384 HKDF有 SHA -512 32(密钥承诺)
04 78 0x02 AES-GCM 256 HKDF有 SHA -512 HKDF有 SHA -512 32(密钥承诺)
03 78 0x01 AES-GCM 256 HKDF有 SHA -384 ECDSA使用 P-384 和 SHA -384 不适用
03 46 0x01 AES-GCM 192 HKDF有 SHA -384 ECDSA使用 P-384 和 SHA -384 不适用
02 14 0x01 AES-GCM 128 HKDF带有 SHA -256 ECDSA使用 P-256 和 SHA -256 不适用
01 78 0x01 AES-GCM 256 HKDF带有 SHA -256 不适用
01 46 0x01 AES-GCM 192 HKDF带有 SHA -256 不适用
01 14 0x01 AES-GCM 128 HKDF带有 SHA -256 不适用
00 78 0x01 AES-GCM 256 不适用
00 46 0x01 AES-GCM 192 不适用
00 14 0x01 AES-GCM 128 不适用
算法 ID

一个 2 字节十六进制值,用于唯一地标识算法实施。该值存储在加密文字的消息标头中。

消息格式版本

消息格式的版本。带有密钥承诺的算法套件使用消息格式版本 2(0x02)。没有密钥承诺的算法套件使用消息格式版本 1(0x01)。

算法套件数据长度

特定于算法套件的数据长度(以字节为单位)。只有消息格式版本 2(0x02)支持此字段。在消息格式版本 2(0x02)中,此数据出现在消息标头的 Algorithm suite data 字段中。支持密钥承诺的算法套件使用 32 字节作为密钥承诺字符串。有关更多信息,请参阅该列表中的密钥承诺算法

数据密钥长度

数据密钥的长度(以位为单位)。 AWS Encryption SDK 支持 256 位、192 位和 128 位密钥。数据密钥是由密钥环或主密钥生成的。

在某些实现中,此数据密钥用作HMAC基于密 extract-and-expand钥派生函数 (HKDF) 的输入。的输出HKDF用作加密算法中的数据加密密钥。有关更多信息,请参阅该列表中的密钥派生算法

加密算法

与加密算法一起使用的名称和模式。中的算法套件 AWS Encryption SDK 使用高级加密标准 (AES) 加密算法和 Galois/Counter 模式 ()。GCM

密钥承诺算法

用于计算密钥承诺字符串的算法。输出存储在消息标头的 Algorithm suite data 字段中,用于验证密钥承诺的数据密钥。

有关向算法套件添加密钥承诺的技术说明,请参阅 Cryptology Ar ePrint chive AEADs 中的密钥提交

密钥派生算法

HMAC基于 extract-and-expand密钥的派生函数 (HKDF),用于派生数据加密密钥。 AWS Encryption SDK 使用 RFC5869 中HKDF定义的。

没有密钥承诺的算法套件(算法 ID 01xx03xx

  • 使用的哈希函数是 SHA -384 或 SHA -256,具体取决于算法套件。

  • 对于提取步骤:

    • 不使用加密盐。根据这个RFC,盐被设置为一串零。字符串长度等于哈希函数输出的长度,SHA-384 为 48 字节,-256 为 SHA 32 字节。

    • 输入加密材料是来自密钥环或主密钥提供程序的数据密钥。

  • 对于扩展步骤:

    • 输入伪随机密钥是提取步骤的输出。

    • 输入信息是将算法 ID 和消息 ID(按此顺序)串联在一起的结果。

    • 输出加密材料的长度是数据密钥长度。该输出用作加密算法中的数据加密密钥。

带有密钥承诺的算法套件(算法 ID 04xx05xx

  • 使用的哈希函数是 SHA -512。

  • 对于提取步骤:

    • 加密盐是一个 256 位的加密随机值。在消息格式版本 2(0x02)中,此值存储在 MessageID 字段中。

    • 初始加密材料是来自密钥环或主密钥提供程序的数据密钥。

  • 对于扩展步骤:

    • 输入伪随机密钥是提取步骤的输出。

    • 密钥标签是按大字节顺序排列的DERIVEKEY字符串的 UTF -8 编码字节。

    • 输入信息是将算法 ID 和密钥标签(按此顺序)串联在一起的结果。

    • 输出加密材料的长度是数据密钥长度。该输出用作加密算法中的数据加密密钥。

消息格式版本

算法套件中使用的消息格式的版本。有关详细信息,请参阅消息格式参考

签名算法

用于在加密文字标头和正文上生成数字签名的签名算法。 AWS Encryption SDK 使用椭圆曲线数字签名算法 (ECDSA),具有以下细节:

  • 使用的椭圆曲线是 P-384 或 P-256 曲线(由算法 ID 指定)。这些曲线在数字签名标准 (DSS) (FIPSPUB186-4) 中定义。

  • 使用的哈希函数是 SHA -384(使用 P-384 曲线)或 SHA -256(使用 P-256 曲线)。