AWS 数据库加密中支持的算法套件 SDK - AWS 数据库加密 SDK

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

AWS 数据库加密中支持的算法套件 SDK

我们的客户端加密库已重命名为 AWS 数据库加密SDK。本开发人员指南仍提供有关 DynamoDB 加密客户端的信息。

算法套件 是一组加密算法和相关的值。密码系统使用算法实现来生成密文。

AWS 数据库加密SDK使用算法套件对数据库中的字段进行加密和签名。所有支持的算法套件都使用带有 Galois/Counter 模式 (GCM) 的高级加密标准 () 算法来加密GCM原始数据。AES AES AWS 数据库加密SDK支持 256 位加密密钥。身份验证标签长度始终为 16 字节。

AWS 数据库加密SDK算法套件
算法 加密算法 数据密钥长度(位) 密钥派生算法 对称签名算法 非对称签名算法 密钥承诺
默认 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

  • 对于提取步骤:

  • 对于扩展步骤:

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

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

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

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

对称签名算法

用于生成对称签名的基于哈希的消息身份验证码 (HMAC) 算法。所有支持的算法套件都包括HMAC验证。

AWS 数据库加密对材料描述和所有标有ENCRYPT_AND_SIGNSIGN_ONLY、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT的字段进行SDK序列化。然后,它HMAC使用加密哈希函数算法 (SHA-384) 对规范化进行签名。

对称HMAC签名存储在 AWS 数据库加密SDK添加到记录中的新字段 (aws_dbe_foot) 中。

非对称签名算法

用于生成非对称数字签名的签名算法。

AWS 数据库加密对材料描述和所有标有ENCRYPT_AND_SIGNSIGN_ONLY、或SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT的字段进行SDK序列化。然后,它使用具有以下细节的 Elliptic Curve 数字签名算法 (ECDSA) 对规范化进行签名:

非对称ECDSA签名与对称签名一起存储在HMAC字段中。aws_dbe_foot

ECDSA默认情况下包括数字签名,但不是必需的。

密钥承诺

用于派生提交 extract-and-expand 密钥HMAC的基于密钥的派生函数 (HKDF)。

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

  • 对于提取步骤:

  • 对于扩展步骤:

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

    • 输入信息是按大字节顺序排列的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 wrappingKeyBwrappingKeyC,并且您使用解密记录wrappingKeyA,则HMAC对称签名会验证该记录是否由有权访问的用户加密。wrappingKeyA如果您使用默认算法套件,则会HMACs提供相同的验证wrappingKeyA,并使用ECDSA数字签名来确保记录由具有加密权限的用户加密wrappingKeyA

要选择不带数字签名的GCM算法套件,请在加密配置中加入以下片段。AES

Java

以下代码段指定了不带ECDSA数字签名的 AES-GCM 算法套件。有关更多信息,请参阅 DynamoD AWS B 数据库加密SDK中的加密配置

.algorithmSuiteId( DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
C# / .NET

以下代码段指定了不带ECDSA数字签名的 AES-GCM 算法套件。有关更多信息,请参阅 DynamoD AWS B 数据库加密SDK中的加密配置

AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384