Enkripsi masukan pelanggan sensitif di Amazon Connect - Amazon Connect

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

Enkripsi masukan pelanggan sensitif di Amazon Connect

Anda dapat mengenkripsi data sensitif yang dikumpulkan oleh aliran. Untuk melakukan ini, Anda perlu menggunakan kriptografi kunci publik.

Saat mengonfigurasi Amazon Connect, pertama-tama Anda memberikan kunci publik. Ini adalah kunci yang digunakan saat mengenkripsi data. Kemudian, Anda memberikan sertifikat X.509, yang mencakup tanda tangan yang membuktikan bahwa Anda memiliki kunci pribadi.

Dalam alur yang mengumpulkan data, Anda memberikan sertifikat X.509 untuk mengenkripsi data yang ditangkap menggunakan atribut sistem input pelanggan Tersimpan. Anda harus mengunggah kunci dalam .pem format untuk menggunakan fitur ini. Kunci enkripsi digunakan untuk memverifikasi tanda tangan sertifikat yang digunakan dalam alur.

catatan

Anda dapat memiliki hingga dua kunci enkripsi aktif pada satu waktu untuk memfasilitasi rotasi.

Untuk mendekripsi data dalam atribut input pelanggan Tersimpan, gunakan Enkripsi. AWS SDK Lihat informasi selengkapnya di Panduan Developer AWS Encryption SDK.

Cara mendekripsi data yang dienkripsi oleh Amazon Connect

Contoh kode berikut menunjukkan cara mendekripsi data menggunakan Enkripsi. AWS SDK

package com.amazonaws; import com.amazonaws.encryptionsdk.AwsCrypto; import com.amazonaws.encryptionsdk.CryptoResult; import com.amazonaws.encryptionsdk.jce.JceMasterKey; import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyFactory; import java.security.Security; import java.security.interfaces.RSAPrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; public class AmazonConnectDecryptionSample { // The Provider 'AmazonConnect' is used during encryption, this must be used during decryption for key // to be found private static final String PROVIDER = "AmazonConnect"; // The wrapping algorithm used during encryption private static final String WRAPPING_ALGORITHM = "RSA/ECB/OAEPWithSHA-512AndMGF1Padding"; /** * This sample show how to decrypt data encrypted by Amazon Connect. * To use, provide the following command line arguments: [path-to-private-key] [key-id] [cyphertext] * Where: * path-to-private-key is a file containing the PEM encoded private key to use for decryption * key-id is the key-id specified during encryption in your flow * cyphertext is the result of the encryption operation from Amazon Connect */ public static void main(String[] args) throws IOException, GeneralSecurityException { String privateKeyFile = args[0]; // path to PEM encoded private key to use for decryption String keyId = args[1]; // this is the id used for key in your flow String cypherText = args[2]; // the result from flow Security.addProvider(new BouncyCastleProvider()); // read the private key from file String privateKeyPem = new String(Files.readAllBytes(Paths.get(privateKeyFile)), Charset.forName("UTF-8")); RSAPrivateKey privateKey = getPrivateKey(privateKeyPem); AwsCrypto awsCrypto = new AwsCrypto(); JceMasterKey decMasterKey = JceMasterKey.getInstance(null,privateKey, PROVIDER, keyId, WRAPPING_ALGORITHM); CryptoResult<String, JceMasterKey> result = awsCrypto.decryptString(decMasterKey, cypherText); System.out.println("Decrypted: " + result.getResult()); } public static RSAPrivateKey getPrivateKey(String privateKeyPem) throws IOException, GeneralSecurityException { String privateKeyBase64 = privateKeyPem .replace("-----BEGIN RSA PRIVATE KEY-----\n", "") .replace("-----END RSA PRIVATE KEY-----", "") .replaceAll("\n", ""); byte[] decoded = Base64.getDecoder().decode(privateKeyBase64); KeyFactory kf = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decoded); RSAPrivateKey privKey = (RSAPrivateKey) kf.generatePrivate(keySpec); return privKey; } }