本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS KMS ECDH Keyring
重要
鍵環僅適用於適用於 的 4.x NET版和 AWS Encryption SDK 適用於 AWS KMS ECDH的 3.x 版 適用於 JAVA 的 AWS Encryption SDK。鍵環會在 Material Providers Library AWS KMS ECDH的 1.5.0 版中推出。
AWS KMS ECDH 鍵控使用非對稱金鑰協議AWS KMS keys,在兩方之間衍生共用的對稱包裝金鑰。首先, 鍵環使用橢圓曲線 Diffie-Hellman (ECDH) 金鑰協議演算法,從寄件者金鑰對中的私有KMS金鑰和收件者的公有金鑰衍生共用密碼。然後, 鍵環會使用共用密碼來衍生保護資料加密金鑰的共用包裝金鑰。 AWS Encryption SDK 使用 (KDF_CTR_HMAC_SHA384
) 衍生共用包裝金鑰的金鑰衍生函數,符合NIST金鑰衍生的建議
金鑰衍生函數會傳回 64 個位元組的金鑰材料。為了確保雙方都使用正確的金鑰材料, AWS Encryption SDK 會使用前 32 個位元組作為承諾金鑰,最後 32 個位元組作為共用包裝金鑰。在解密時,如果鍵環無法重現儲存在訊息標頭密碼文字上的相同承諾金鑰和共用包裝金鑰,操作會失敗。例如,如果您使用以 Alice 私有金鑰和 Bob 公有金鑰設定的鍵環加密資料,則以 Bob 私有金鑰和 Alice 公有金鑰設定的鍵環將重現相同的承諾金鑰和共用包裝金鑰,並能夠解密資料。如果 Bob 的公有金鑰不是來自KMS金鑰對,則 Bob 可以建立原始ECDH金鑰來解密資料。
AWS KMS ECDH 鍵控使用 AES- 使用對稱金鑰加密資料GCM。然後,資料金鑰會使用 AES- 使用衍生的共用包裝金鑰進行信封加密GCM。每個 AWS KMS ECDH鍵環只能有一個共用包裝金鑰,但您可以在多 AWS KMS ECDH鍵環 中單獨包含多個鍵環或與其他鍵環一起包含。
鍵環的必要 AWS KMS ECDH許可
AWS Encryption SDK 不需要 AWS 帳戶,也不依賴任何 AWS 服務。不過,若要使用 AWS KMS ECDH鍵環,您需要 AWS 帳戶和下列鍵環 AWS KMS keys 中 的最低許可。許可會根據您使用的金鑰協議結構描述而有所不同。
-
若要使用
KmsPrivateKeyToStaticPublicKey
金鑰協議結構描述加密和解密資料,您需要寄件者非對稱KMS金鑰對上的 kms:GetPublicKey 和 kms:DeriveSharedSecret。如果您在實例化鍵環時直接提供寄件者的 DER編碼公有金鑰,則只需要公里:DeriveSharedSecret寄件者的非對稱KMS金鑰對的許可。 -
若要使用
KmsPublicKeyDiscovery
金鑰協議結構描述解密資料,您需要指定非對稱KMS金鑰對的 kms:DeriveSharedSecret 和 kms:GetPublicKey 許可。
建立 AWS KMS ECDH鍵控
若要建立 AWS KMS ECDH加密和解密資料的金鑰環,您必須使用KmsPrivateKeyToStaticPublicKey
金鑰協議結構描述。若要使用金鑰協議結構描述初始化 AWS KMS ECDHKmsPrivateKeyToStaticPublicKey
鍵環,請提供下列值:
-
寄件者的 AWS KMS key ID
必須識別
KeyUsage
值為 的非對稱 - NIST建議的橢圓曲線 (ECC) KMS金鑰對KEY_AGREEMENT
。寄件者的私有金鑰用於衍生共用密碼。 -
(選用) 寄件者的公有金鑰
必須是 DER編碼的 X.509 公有金鑰,也稱為
SubjectPublicKeyInfo
(SPKI),如 RFC5280所定義。 AWS KMS GetPublicKey 操作會以所需的 DER編碼格式傳回非對稱金鑰對的公KMS有金鑰。
若要減少鍵環的 AWS KMS 呼叫次數,您可以直接提供寄件者的公有金鑰。如果未為寄件者的公有金鑰提供值,則 鍵環會呼叫 AWS KMS 來擷取寄件者的公有金鑰。
-
收件人的公有金鑰
您必須提供收件人DER編碼的 X.509 公有金鑰,也稱為
SubjectPublicKeyInfo
(SPKI),如 RFC5280所定義。 AWS KMS GetPublicKey 操作會以所需的 DER編碼格式傳回非對稱金鑰對的公KMS有金鑰。
-
曲線規格
識別指定金鑰對中的橢圓曲線規格。寄件者和收件人的金鑰對必須具有相同的曲線規格。
有效值:
ECC_NIST_P256
、ECC_NIS_P384
、ECC_NIST_P512
-
(選用) 授予權杖清單
如果您使用 授予來控制對鍵環中KMS AWS KMS ECDH金鑰的存取,則必須在初始化鍵環時提供所有必要的授予權杖。
建立 AWS KMS ECDH探索鍵控
解密時,最佳實務是指定 AWS Encryption SDK 可以使用的金鑰。若要遵循此最佳實務,請使用 AWS KMS ECDH具有KmsPrivateKeyToStaticPublicKey
金鑰協議結構描述的 鍵環。不過,您也可以建立 AWS KMS ECDH探索鍵環,也就是可 AWS KMS ECDH解密指定金鑰對之公有金鑰與儲存在訊息密碼文字上的收件人公有金鑰相符的任何訊息的KMS鍵環。
重要
當您使用KmsPublicKeyDiscovery
金鑰協議結構描述解密訊息時,您接受所有公有金鑰,無論誰擁有它。
若要使用金鑰協議結構描述初始化 AWS KMS ECDHKmsPublicKeyDiscovery
鍵環,請提供下列值:
-
收件人的 AWS KMS key ID
必須識別
KeyUsage
值為 的非對稱 - NIST建議的橢圓曲線 (ECC) KMS金鑰對KEY_AGREEMENT
。 -
曲線規格
識別收件人KMS金鑰對中的橢圓曲線規格。
有效值:
ECC_NIST_P256
、ECC_NIS_P384
、ECC_NIST_P512
-
(選用) 授予權杖清單
如果您使用 授予來控制對鍵環中KMS AWS KMS ECDH金鑰的存取,則必須在初始化鍵環時提供所有必要的授予權杖。