Enkripsi masukan pelanggan - 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

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 diambil menggunakanInput pelanggan yang tersimpanAtribut sistem. Anda harus mengunggah kunci.pemformat untuk menggunakan fitur ini. Kunci enkripsi digunakan untuk memverifikasi tanda tangan sertifikat yang digunakan dalam alur.

catatan

Anda dapat mengaktifkan hingga dua kunci enkripsi sekaligus untuk memfasilitasi rotasi.

Untuk mendekripsi data diInput pelanggan yang tersimpanatribut, gunakanAWSEnkripsi SDK. Untuk informasi selengkapnya, lihat Panduan Developer AWS Encryption SDK.

Untuk panduan mendetail, lihatMembuat solusi IVR yang aman dengan Amazon Connect. Itu menunjukkan cara:

  • Konfigurasikan Amazon Connect untuk mengumpulkan nomor kartu kredit.

  • Enkripsi digit kartu kredit.

  • Kirim ke backend kamiAWS Lambdauntuk dekripsi, menggunakan pelanggan disediakan kunci dekripsi.

Ini menyediakan dua perintah menggunakan OpenSSL:

  • Satu untuk membuat key pair RSA dan sertifikat X.509 yang ditandatangani sendiri

  • Lain untuk mengekstraksi kunci publik dari key pair RSA

Cara mendekripsi data yang dienkripsi oleh Amazon Connect

Contoh kode berikut menunjukkan cara mendekripsi data menggunakanAWSEnkripsi 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; } }