本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS Encryption SDK 算法参考
本页面提供了在您构建与 AWS Encryption SDK兼容的加密库时可供参考的信息。如果您不需要构建自己的兼容加密库,则可能不需要此信息。 要 AWS Encryption SDK 在支持的编程语言之一中使用,请参阅编程语言。 有关定义适当 AWS Encryption SDK 实现要素的规范,请参阅中的AWS Encryption SDK 规范 |
如果您正在构建自己的库,该库可以读取和写入与兼容的密文 AWS Encryption SDK,则需要了解如何 AWS Encryption SDK 实现支持的算法套件来加密原始数据。
AWS Encryption SDK 支持以下算法套件。所有AESGCM算法套件都有一个 12 字节的初始化向量和一个 16 字节的GCM身份验证AES标签。默认算法套件因 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
01xx
–03xx
)-
使用的哈希函数是 SHA -384 或 SHA -256,具体取决于算法套件。
-
对于提取步骤:
-
不使用加密盐。根据这个RFC,盐被设置为一串零。字符串长度等于哈希函数输出的长度,SHA-384 为 48 字节,-256 为 SHA 32 字节。
-
输入加密材料是来自密钥环或主密钥提供程序的数据密钥。
-
-
对于扩展步骤:
-
输入伪随机密钥是提取步骤的输出。
-
输入信息是将算法 ID 和消息 ID(按此顺序)串联在一起的结果。
-
输出加密材料的长度是数据密钥长度。该输出用作加密算法中的数据加密密钥。
-
带有密钥承诺的算法套件(算法 ID
04xx
和05xx
)-
使用的哈希函数是 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 曲线)。
-