本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS 数据库加密中支持的算法套件 SDK
我们的客户端加密库已重命名为 AWS 数据库加密SDK。本开发人员指南仍提供有关 DynamoDB 加密客户端的信息。 |
算法套件 是一组加密算法和相关的值。密码系统使用算法实现来生成密文。
AWS 数据库加密SDK使用算法套件对数据库中的字段进行加密和签名。所有支持的算法套件都使用带有 Galois/Counter 模式 (GCM) 的高级加密标准 () 算法来加密GCM原始数据。AES AES AWS 数据库加密SDK支持 256 位加密密钥。身份验证标签长度始终为 16 字节。
算法 | 加密算法 | 数据密钥长度(位) | 密钥派生算法 | 对称签名算法 | 非对称签名算法 | 密钥承诺 |
---|---|---|---|---|---|---|
默认 | AES-GCM | 256 | HKDF有 SHA -512 | HMAC-SHA -384 | ECDSA使用 P-384 和 SHA -384 | HKDF有 SHA -512 |
AES-GCM 没有ECDSA数字签名 | AES-GCM | 256 | HKDF有 SHA -512 | HMAC-SHA -384 | 无 | HKDF有 SHA -512 |
- 加密算法
-
与加密算法一起使用的名称和模式。 AWS 数据库加密中的算法套件SDK使用高级加密标准 (AES) 算法和 Galois/Counter 模式 ()。GCM
- 数据密钥长度
-
数据密钥的长度(以位为单位)。 AWS 数据库加密SDK支持 256 位数据密钥。数据密钥用作HMAC基于密 extract-and-expand 钥派生函数 (HKDF) 的输入。的输出HKDF用作加密算法中的数据加密密钥。
- 密钥派生算法
-
HMAC基于 extract-and-expand 密钥的派生函数 (HKDF),用于派生数据加密密钥。 AWS 数据库加密SDK使用 RFC5869
中HKDF定义的。 -
使用的哈希函数是 SHA -512
-
对于提取步骤:
-
不使用加密盐。根据这个RFC,盐被设置为一串零。
-
-
对于扩展步骤:
-
输入伪随机密钥是提取步骤的输出。
-
密钥标签是按大字节顺序排列的
DERIVEKEY
字符串的 UTF -8 编码字节。 -
输入信息是将算法 ID 和密钥标签(按此顺序)串联在一起的结果。
-
输出加密材料的长度是数据密钥长度。该输出用作加密算法中的数据加密密钥。
-
-
- 对称签名算法
-
用于生成对称签名的基于哈希的消息身份验证码 (HMAC) 算法。所有支持的算法套件都包括HMAC验证。
AWS 数据库加密对材料描述和所有标有
ENCRYPT_AND_SIGN
SIGN_ONLY
、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
的字段进行SDK序列化。然后,它HMAC使用加密哈希函数算法 (SHA-384) 对规范化进行签名。对称HMAC签名存储在 AWS 数据库加密SDK添加到记录中的新字段 (
aws_dbe_foot
) 中。 - 非对称签名算法
-
用于生成非对称数字签名的签名算法。
AWS 数据库加密对材料描述和所有标有
ENCRYPT_AND_SIGN
SIGN_ONLY
、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
的字段进行SDK序列化。然后,它使用具有以下细节的 Elliptic Curve 数字签名算法 (ECDSA) 对规范化进行签名:-
使用的椭圆曲线是 P-384,定义见数字签名标准 (DSS) (FIPSPUB186-4)
。 -
使用的哈希函数是 SHA -384。
非对称ECDSA签名与对称签名一起存储在HMAC字段中。
aws_dbe_foot
ECDSA默认情况下包括数字签名,但不是必需的。
-
- 密钥承诺
-
用于派生提交 extract-and-expand 密钥HMAC的基于密钥的派生函数 (HKDF)。
-
使用的哈希函数是 SHA -512
-
对于提取步骤:
-
不使用加密盐。根据这个RFC,盐被设置为一串零。
-
-
对于扩展步骤:
-
输入伪随机密钥是提取步骤的输出。
-
输入信息是按大字节顺序排列的
COMMITKEY
字符串的 UTF -8 编码字节。 -
输出键控材料的长度为 256 位。此输出用作提交密钥。
-
提交密钥计算记录承诺,即一个不同的 256 位基于哈希的消息身份验证码 (HMAC) 哈希,而不是材料描述。有关向算法套件添加密钥承诺的技术说明,请参阅 Cryptology Ar ePrint chive AEADs 中的密钥提交
。 -
默认的算法套件
默认情况下, AWS 数据库加密SDK使用带有 AES-GCM、HMAC基于 extract-and-expand 密钥派生函数 (HKDF)、HMAC验证、ECDSA数字签名、密钥承诺和 256 位加密密钥的算法套件。
默认算法套件包括HMAC验证(对称签名)和ECDSA数字签名(非对称签名)。这些签名存储在 AWS 数据库加密SDK添加到记录中的新字段 (aws_dbe_foot
) 中。ECDSA当授权策略允许一组用户加密数据,允许另一组用户解密数据时,数字签名特别有用。
默认算法套件还会派生一个密钥承诺 ——一个将数据密钥与记录关联起来的HMAC哈希。密钥承诺值是HMAC根据材料描述和提交密钥计算得出的。然后,密钥承诺值将存储在材料描述中。密钥承诺确保每个加密文字仅解密为一个明文。这些算法套件通过验证用作加密算法输入的数据密钥达到上述目的。加密时,算法套件会生成密钥承诺。HMAC在解密之前,他们会验证数据密钥是否产生相同的密钥承诺。HMAC如果没有,Decrypt 调用会失败。
AES-GCM 没有ECDSA数字签名
尽管默认算法套件可能适用于大多数应用程序,但您可以选择其他算法套件。例如,没有ECDSA数字签名的算法套件可以满足某些信任模型的需求。仅当加密数据的用户和解密数据的用户同样受到信任时,才使用此套件。
所有 AWS 数据库加密SDK算法套件都包括HMAC验证(对称签名)。唯一的区别是,没有ECDSA数字签名的GCM算法套件缺少提供额外真实性和不可否认性的非对称签名。AES
例如,如果您的密钥环、、和中有多个包装密钥 wrappingKeyA
wrappingKeyB
wrappingKeyC
,并且您使用解密记录wrappingKeyA
,则HMAC对称签名会验证该记录是否由有权访问的用户加密。wrappingKeyA
如果您使用默认算法套件,则会HMACs提供相同的验证wrappingKeyA
,并使用ECDSA数字签名来确保记录由具有加密权限的用户加密wrappingKeyA
。
要选择不带数字签名的GCM算法套件,请在加密配置中加入以下片段。AES