¿En qué se diferencia la autenticidad proporcionada por la firma RSA y AES-GCM?

1

Backstory

El sistema que estoy diseñando requiere mensajes cifrados y autenticación de mensajes. AES-GCM parece ser la opción lógica debido a sus capacidades de autenticación y alto rendimiento.

La clave utilizada para cifrar un mensaje generalmente se genera aleatoriamente por mensaje y se cifra mediante la clave pública del destinatario. La clave cifrada se envía junto con el mensaje.

En general, no hay una clave persistente entre ambas partes.

Ejemplo

Tomemos el siguiente mensaje como ejemplo:

{
  "timestamp": "2017-01-01",
  "encryptedMessage": "...",
  "sign": "..."
  "key": "..."
}

El valor "timestamp" está en texto claro, "encryptedMessage" encrypted, "sign" contiene la firma RSA de "timestamp" y "key" guarda la clave cifrada. En este ejemplo. ¿Tendría sentido también firmar "mensajes encriptados"?

aclaración de la pregunta

¿Hay algún beneficio al utilizar la firma RSA sobre la autenticidad proporcionada por AES-GCM?

¿Tendría sentido firmar un mensaje ya cifrado mediante AES-GCM?

    
pregunta Alex 22.09.2017 - 19:50
fuente

1 respuesta

1

La parte de autenticación de AES-GCM se basa en una clave compartida entre el remitente y el destinatario, que solo es conocida por el remitente y el destinatario. En su esquema, la clave de cifrado (y, por lo tanto, de autenticación) no está vinculada a un remitente específico, es decir, todos los que saben que la clave pública del destinatario puede crear dicho mensaje. Y dado que la clave pública se considera pública, esto significa que todos pueden hacerlo. Por lo tanto, la parte de autenticación de AES-GCM no prueba que el mensaje proviene de un remitente específico, sino que todas las partes del mensaje provienen del mismo remitente, es decir, la que generó la clave secreta.

El cifrado de clave pública con RSA u otro permite, en cambio, probar que el mensaje proviene de un remitente específico, es decir, el que posee una clave privada específica donde el destinatario ya conoce la clave pública del remitente. Esta prueba implica que una parte relevante de la comunicación está firmada por la clave privada del remitente. Si bien el remitente podría firmar la clave aleatoria, el sistema podría romperse si algún atacante tiene acceso a una única clave (pirateando al destinatario) y luego podría reutilizar la clave capturada y la firma correspondiente en todos los demás mensajes (es decir, repetir la firma). Por lo tanto, en lugar de eso, el mensaje debe estar firmado.

En resumen, AES-GCM y RSA proporcionan diferentes niveles de autenticación. Cuál necesita depende de su caso de uso específico. Pero, si necesita asegurarse de que el mensaje proviene de un remitente específico (y no de un atacante), entonces AES-GCM solo no es suficiente.

    
respondido por el Steffen Ullrich 22.09.2017 - 20:26
fuente

Lea otras preguntas en las etiquetas