Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crittografa gli input sensibili dei clienti in Amazon Connect
È possibile crittografare i dati sensibili raccolti dai flussi. Per eseguire questa operazione, è necessario usare la crittografia a chiave pubblica.
Durante la configurazione di Amazon Connect, è necessario prima fornire la chiave pubblica. Questa è la chiave utilizzata per crittografare i dati. Successivamente, è necessario fornire il certificato X.509, che include una firma che dimostra che si è in possesso della chiave privata.
In un flusso che raccoglie dati, viene fornito un certificato X.509 per crittografare i dati acquisiti utilizzando l'attributo di sistema Input del cliente archiviato. Per utilizzare questa funzionalità, è necessario caricare la chiave in formato .pem
. La chiave di crittografia viene utilizzata per verificare la firma del certificato utilizzato nel flusso.
Nota
Per facilitare la rotazione, è possibile attivare fino a due chiavi di firma alla volta.
Per decrittografare i dati nell'attributo Input del cliente archiviato usa il kit AWS Encryption SDK. Per ulteriori informazioni, consulta la Guida per gli sviluppatori di AWS Encryption SDK.
Come decrittare i dati crittografati da Amazon Connect
Il seguente esempio di codice mostra come decrittografare i dati utilizzando Encryption SDK. AWS
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;
}
}