Use la combinación de certificados digitales y criptografía de clave simétrica

2

Suponiendo que:  
- A tener CertA y clave secreta KsA  
- B tiene CertB y clave secreta KsB
La necesidad de transferir los datos M a B con el requisito de confidencialidad y autenticidad , PERO El cifrado de datos debe realizarse mediante cifrado simétrico .
¿Cómo hacen A y B para lograr todos los requisitos?

    
pregunta Việt Dũng Lê 21.12.2018 - 05:15
fuente

2 respuestas

1

Para resolver este problema, una solución común es utilizar un Cryptosystem híbrido .

Cree una nueva clave de sesión aleatoria ( clave efímera ) para el cifrado simétrico (AES), a continuación, cifre los datos con esta clave con el modo de operación adecuado con un href="https://en.wikipedia.org/wiki/Padding_(cryptography)"> esquema de relleno como pkcs # 5

key = generate_random_key()
encrypted_data = AES(k, data)

Ahora, A encripta la clave de sesión con la clave pública de B.

encrypted_key = Encrypt(key, B_private_key)

Finalmente, A firma digitalmente todo

sign = Sign(Hash(encrypted_key || encrypted_data)

y enviar

Send(encrypted_data, encrypted_key, sign)

De esta manera;

  • datos cifrados con un algoritmo simétrico que es mucho más rápido que el cifrado asimétrico.
  • los datos son confidenciales desde que se cifraron con una clave.
  • los datos están autenticados , ya que A usa su clave secreta para firmar, y B puede verificar esto con el certificado público de A.
respondido por el kelalaka 21.12.2018 - 08:53
fuente
1

Así es como todo HTTPS y TLS trabajo de comunicaciones.

2x Async certs / keys se utilizan para crear un secreto compartido que se utiliza como una clave simétrica para la parte de la comunicación de los leones.

En el paso 6/7 de este diagrama, es donde se crea la clave simétrica y ambos lados ChangeCipherSpec para hacer uso de esta clave compartida recién establecida.

    
respondido por el CaffeineAddiction 21.12.2018 - 08:53
fuente

Lea otras preguntas en las etiquetas