AESGantungan kunci mentah - AWS Encryption SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AESGantungan kunci mentah

AWS Encryption SDK Memungkinkan Anda menggunakan kunci AES simetris yang Anda berikan sebagai kunci pembungkus yang melindungi kunci data Anda. Anda perlu membuat, menyimpan, dan melindungi materi utama, sebaiknya dalam modul keamanan perangkat keras (HSM) atau sistem manajemen kunci. Gunakan AES keyring Raw saat Anda perlu menyediakan kunci pembungkus dan mengenkripsi kunci data secara lokal atau offline.

Raw AES keyring mengenkripsi data dengan menggunakan GCM algoritma AES - dan kunci pembungkus yang Anda tentukan sebagai array byte. Anda hanya dapat menentukan satu kunci pembungkus di setiap AES keyring Raw, tetapi Anda dapat menyertakan beberapa AES gantungan kunci Raw, sendiri atau dengan gantungan kunci lainnya, dalam multi-keyring.

Raw AES keyring setara dengan dan berinteraksi dengan JceMasterKeykelas di AWS Encryption SDK for Java dan RawMasterKeykelas di AWS Encryption SDK for Python saat mereka digunakan dengan kunci AES enkripsi. Anda dapat mengenkripsi data dengan satu implementasi dan mendekripsi data dengan implementasi lain menggunakan kunci pembungkus yang sama. Untuk detailnya, lihat Kompatibilitas keyring.

Ruang nama dan nama kunci

Untuk mengidentifikasi AES kunci dalam keyring, keyring Raw AES menggunakan namespace kunci dan nama kunci yang Anda berikan. Nilai-nilai ini bukan rahasia. Mereka muncul dalam teks biasa di header pesan terenkripsi yang dikembalikan oleh operasi enkripsi. Sebaiknya gunakan namespace kunci Anda HSM atau sistem manajemen kunci dan nama kunci yang mengidentifikasi AES kunci dalam sistem itu.

catatan

Namespace kunci dan nama kunci setara dengan kolom ID Penyedia (atau Penyedia) dan ID Kunci di JceMasterKey dan. RawMasterKey

AWS Encryption SDK for C Dan AWS Encryption SDK untuk. NETmenyimpan nilai namespace aws-kms kunci untuk KMS kunci. Jangan gunakan nilai namespace ini dalam keyring Raw atau AES Raw keyring dengan RSA pustaka ini.

Jika Anda membuat keyring yang berbeda untuk mengenkripsi dan mendekripsi pesan yang diberikan, namespace dan nilai nama sangat penting. Jika namespace kunci dan nama kunci dalam keyring dekripsi bukan kecocokan yang tepat dan peka huruf besar/kecil untuk namespace kunci dan nama kunci dalam keyring enkripsi, keyring dekripsi tidak digunakan, meskipun byte materi kunci identik.

Misalnya, Anda mungkin mendefinisikan AES keyring Raw dengan namespace kunci HSM_01 dan nama kunci. AES_256_012 Kemudian, Anda menggunakan keyring itu untuk mengenkripsi beberapa data. Untuk mendekripsi data tersebut, buat AES keyring Raw dengan namespace kunci, nama kunci, dan material kunci yang sama.

Contoh berikut menunjukkan cara membuat AES keyring Raw. AESWrappingKeyVariabel mewakili materi utama yang Anda berikan.

C

Untuk membuat instance AES keyring Raw di, gunakan. AWS Encryption SDK for Caws_cryptosdk_raw_aes_keyring_new() Untuk contoh lengkap, lihat raw_aes_keyring.c.

struct aws_allocator *alloc = aws_default_allocator(); AWS_STATIC_STRING_FROM_LITERAL(wrapping_key_namespace, "HSM_01"); AWS_STATIC_STRING_FROM_LITERAL(wrapping_key_name, "AES_256_012"); struct aws_cryptosdk_keyring *raw_aes_keyring = aws_cryptosdk_raw_aes_keyring_new( alloc, wrapping_key_namespace, wrapping_key_name, aes_wrapping_key, wrapping_key_len);
C# / .NET

Untuk membuat AES keyring Raw di AWS Encryption SDK for. NET, gunakan materialProviders.CreateRawAesKeyring() metodenya. Untuk contoh lengkap, lihat R awAESKeyring Example.cs.

Contoh berikut menggunakan versi 4. x dari AWS Encryption SDK untuk. NET.

// Instantiate the AWS Encryption SDK and material providers var esdk = new ESDK(new AwsEncryptionSdkConfig()); var mpl = new MaterialProviders(new MaterialProvidersConfig()); var keyNamespace = "HSM_01"; var keyName = "AES_256_012"; // This example uses the key generator in Bouncy Castle to generate the key material. // In production, use key material from a secure source. var aesWrappingKey = new MemoryStream(GeneratorUtilities.GetKeyGenerator("AES256").GenerateKey()); // Create the keyring that determines how your data keys are protected. var createKeyringInput = new CreateRawAesKeyringInput { KeyNamespace = keyNamespace, KeyName = keyName, WrappingKey = aesWrappingKey, WrappingAlg = AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16 }; var keyring = materialProviders.CreateRawAesKeyring(createKeyringInput);
JavaScript Browser

AWS Encryption SDK for JavaScript Di browser mendapatkan primitif kriptografinya dari. WebCryptoAPI Sebelum Anda membuat keyring, Anda harus menggunakan RawAesKeyringWebCrypto.importCryptoKey() untuk mengimpor bahan kunci mentah ke backend. WebCrypto Ini memastikan bahwa keyring selesai meskipun semua panggilan ke WebCrypto asinkron.

Kemudian, untuk membuat instance AES keyring Raw, gunakan metode ini. RawAesKeyringWebCrypto() Anda harus menentukan algoritma AES pembungkus (“wrapping suite) berdasarkan panjang materi kunci Anda. Untuk contoh lengkap, lihat aes_simple.ts (Browser). JavaScript

const keyNamespace = 'HSM_01' const keyName = 'AES_256_012' const wrappingSuite = RawAesWrappingSuiteIdentifier.AES256_GCM_IV12_TAG16_NO_PADDING /* Import the plaintext AES key into the WebCrypto backend. */ const aesWrappingKey = await RawAesKeyringWebCrypto.importCryptoKey( rawAesKey, wrappingSuite ) const rawAesKeyring = new RawAesKeyringWebCrypto({ keyName, keyNamespace, wrappingSuite, aesWrappingKey })
JavaScript Node.js

Untuk membuat instance AES keyring Raw di AWS Encryption SDK for JavaScript for Node.js, buat instance kelas. RawAesKeyringNode Anda harus menentukan algoritma AES pembungkus (“wrapping suite”) berdasarkan panjang materi kunci Anda. Untuk contoh lengkap, lihat aes_simple.ts (Node.js). JavaScript

const keyName = 'AES_256_012' const keyNamespace = 'HSM_01' const wrappingSuite = RawAesWrappingSuiteIdentifier.AES256_GCM_IV12_TAG16_NO_PADDING const rawAesKeyring = new RawAesKeyringNode({ keyName, keyNamespace, aesWrappingKey, wrappingSuite, })
Java

Untuk membuat instance AES keyring Raw di, gunakan. AWS Encryption SDK for JavamatProv.CreateRawAesKeyring()

final CreateRawAesKeyringInput keyringInput = CreateRawAesKeyringInput.builder() .keyName("AES_256_012") .keyNamespace("HSM_01") .wrappingKey(AESWrappingKey) .wrappingAlg(AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16) .build(); final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(keyringInput);