RSA y autenticación cifrada

2

Los algoritmos simétricos, como AES, proporcionan modos como GCM que se pueden usar para el cifrado autenticado. Suponiendo que estoy usando RSA en lugar de AES, ¿todavía tiene sentido agregar verificaciones de autenticación basadas en HMAC a los datos cifrados?

[EDITAR] El caso de uso es que debo almacenar datos en una máquina y deseo cifrarlos. Puedo elegir entre RSA y AES, sin embargo, verificar su autenticidad (ya sea que haya sido manipulado / reemplazado, etc.) antes o durante el descifrado es importante.

    
pregunta 06.12.2012 - 05:55
fuente

4 respuestas

2

Normalmente no se cifran los datos con RSA. Lo que hace es cifrar una clave aleatoria con RSA, y luego cifrar los datos con un algoritmo de cifrado simétrico (como AES), utilizando la clave aleatoria. Esto se denomina cifrado híbrido . La razón principal por la que esto sucede es porque el cifrado RSA tiene un tamaño muy limitado: con una clave RSA de 1024 bits, puede cifrar a lo más 117 bytes, no más.

Por lo tanto, necesariamente hay algo de cifrado simétrico en el proceso (a menos que lo esté haciendo mal, o los datos a cifrar son muy cortos) y esa parte debe incluir una verificación de integridad, que es lo que proporciona GCM o EAX junto con el cifrado.

De todos modos, independientemente de la forma en que cifre los datos, necesita una comprobación de integridad y RSA, por sí sola, no la proporcionará. Dado que ensamblar varios algoritmos criptográficos es una tarea difícil (es fácil hacerlo mal), realmente debería confiar en una biblioteca que haga el trabajo por usted y que se haya verificado razonablemente que haga las cosas correctamente (por ejemplo, GnuPG ).

    
respondido por el Thomas Pornin 06.12.2012 - 15:00
fuente
2

Realmente no sé cuál es el problema? Si quiere mantener el secreto, use encryption , si quiere autenticidad, use Digital Signatures , y en el mismo sentido de integridad. Si firma un Hash (RSA) antes o después del cifrado (AES). Depende de cuándo quieras validar su integridad.

    
respondido por el damiankolasa 06.12.2012 - 09:36
fuente
0

Solo una sugerencia:

Primero puede intentar generar un hash de los datos usando cualquier Algoritmo de hash conocido (Ej .: SHA-256) y luego agregar el hash al final de los datos y cifrar tanto los datos como el hash con un algoritmo simétrico (AES ).

Necesita encontrar una manera de mantener un registro de dónde terminan sus datos y dónde comienza el hash (puede registrar las longitudes al principio del bloque)

Cuando recupere los datos, primero descifre, luego genere nuevamente el hash de la parte de datos y verifíquelo con el hash presente anteriormente. Esto ayudará tanto con la integridad como con la confidencialidad. El enfoque es algo similar a la forma en que TLS protege sus registros.

Por favor, tenga en cuenta que esto no proporciona autenticación (aunque proporciona una manera de verificar la autenticidad de los datos) que supongo que no es necesario para usted.

Espero que esto ayude.

    
respondido por el Jay 06.12.2012 - 10:45
fuente
0

Como observará, al hacer referencia a GCM, hay varias formas de realizar el cifrado y la autenticación al mismo tiempo: Encriptación autenticada con Asociado Datos o cifrado autenticado . Esto debería proporcionar de una vez y evitar el problema de si debe autenticarse y luego cifrar o cifrar y luego autenticar.

Para el beneficio de las personas que leen algunos de los otros comentarios, el consenso es que si debe usar uno y luego el otro que está encriptado, entonces la autenticación es better from a punto de vista de la criptografía .

Si es solo para copias de seguridad, no veo el caso de uso para el uso de claves públicas, parece que las cosas se complican más, a menos que tenga una solución llave en mano.

    
respondido por el Paul Rubel 06.12.2012 - 15:26
fuente

Lea otras preguntas en las etiquetas