Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cifrado de las entradas confidenciales de los clientes en Amazon Connect
Puede cifrar los datos confidenciales que se recopilan mediante los flujos. Para ello, tendrá que utilizar la criptografía de clave pública.
Al configurar Amazon Connect, primero debe proporcionar la clave pública. Es la clave que se utiliza al cifrar datos. Posteriormente, debe proporcionar el certificado X.509, que incluye una firma que demuestra que posee la clave privada.
En un flujo que recopila datos, debe proporcionar un certificado X.509 para cifrar los datos que se capturan mediante el atributo del sistema Entrada del cliente almacenada. Debe cargar la clave en formato .pem
para utilizar esta característica. La clave de cifrado se usa para verificar la firma del certificado que se utiliza en el flujo.
nota
Como máximo, puede tener dos claves de cifrado activas simultáneamente para facilitar la rotación.
Para descifrar los datos del atributo Entrada del cliente almacenada, utilice el SDK de cifrado de AWS . Para obtener más información, consulte la Guía para desarrolladores de AWS Encryption SDK.
Cómo descifrar datos cifrados por Amazon Connect
El siguiente ejemplo de código muestra cómo descifrar datos mediante el SDK de AWS cifrado.
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;
}
}