本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
靜態資料提供者
靜態材料提供者 (靜態 CMP) 是非常簡單的加密材料供應商 (CMP),旨在用於測試、proof-of-concept示範和傳統相容性。
若要使用靜態 CMP 加密資料表項目,請提供進階加密標準 (AES) 對稱加密金鑰與簽署金鑰或金鑰對。您必須提供相同的金鑰,才能將已加密的項目解密。靜態 CMP 不會執行任何密碼編譯操作。它反而會以原狀傳遞您提供給項目加密程式的加密金鑰。項目加密程式會直接以加密金鑰加密項目。然後,直接使用簽署金鑰進行簽署。
因為靜態 CMP 不會產生任何獨特的密碼編譯資料,您處理的所有資料表項目都會使用相同加密金鑰進行加密並由相同的簽署金鑰進行簽署。當您使用相同的金鑰加密眾多項目的屬性值,或使用相同金鑰或金鑰對來簽署所有項目時,可能會超出金鑰的密碼編譯限制。
Java 程式庫中的非對稱靜態提供者不是靜態提供者。其僅提供包裝 CMP 的替代建構函數。此可在生產環境中安全地使用,但只要情況允許,您即應直接使用包裝 CMP。
靜態 CMP 是 DynamoDB 加密用戶端支援的數個加密材料提供者 (CMP) 之一。如需其他 CMP 的相關資訊,請參閱密碼材料供應商。
如需範例程式碼,請參閱:
使用方式
若要建立靜態提供者,請提供加密金鑰或金鑰對和簽署金鑰或金鑰對。您必須提供金鑰資料才能加密和解密資料表項目。
- Java
// To encrypt
SecretKey cek = ...; // Encryption key
SecretKey macKey = ...; // Signing key
EncryptionMaterialsProvider provider = new SymmetricStaticProvider(cek, macKey);
// To decrypt
SecretKey cek = ...; // Encryption key
SecretKey macKey = ...; // Verification key
EncryptionMaterialsProvider provider = new SymmetricStaticProvider(cek, macKey);
- Python
# You can provide encryption materials, decryption materials, or both
encrypt_keys = EncryptionMaterials(
encryption_key = ...,
signing_key = ...
)
decrypt_keys = DecryptionMaterials(
decryption_key = ...,
verification_key = ...
)
static_cmp = StaticCryptographicMaterialsProvider(
encryption_materials=encrypt_keys
decryption_materials=decrypt_keys
)
運作方式
靜態提供者會傳遞您提供給項目加密程式的加密和簽署金鑰,直接用來加密和簽署資料表項目。除非您針對每個項目提供不同的金鑰,否則每個項目都會使用相同金鑰。
取得加密資料
本節將詳細說明靜態資料提供者 (靜態 CMP) 在接收到加密資料請求時的輸入、輸出和處理情形。
輸入 (從應用程式)
輸入 (從項目加密程式)
輸出 (到項目加密程式)
取得解密資料
本節將詳細說明靜態資料提供者 (靜態 CMP) 在接收到解密資料請求時的輸入、輸出和處理情形。
雖然它包括取得加密資料及取得解密資料的個別方法,但是行為相同。
輸入 (從應用程式)
輸入 (從項目加密程式)
輸出 (到項目加密程式)
-
當作輸入傳遞的加密金鑰。
-
當作輸入傳遞的簽署金鑰。