¿Por qué usaría AES-256-CBC si AES-256-GCM es más seguro?

20

Supongo que lo esencial de mi pregunta es: ¿Hay casos en los que CBC sea mejor que GCM?

La razón por la que pregunto es que al leer esta publicación por Matthew Green, y esta pregunta en el intercambio de pila de criptografía y esta explicación de un ataque a XML (ya que estoy cifrando json en mi trabajo, aunque no se transmite en ningún lugar, pero aparentemente es posible un ataque de cipertexto elegido), entonces nunca debería usar CBC y solo usar GCM.

En otras palabras: no hay razón para usar CBC, siempre que exista GCM ( que hace en OpenSSL , la biblioteca que utilizo para mi trabajo de encriptación). Porque:

GCM = CBC + Autenticación.

¿Podría alguien decirme si mis conclusiones son correctas?

ACTUALIZACIÓN IMPORTANTE: Como esta pregunta se está popularizando tan rápido, me gustaría señalar de mi investigación que GCM NO ES UNA BOLETA DE PLATA . Hay un gran problema con GCM, que es que si usa el mismo IV dos veces puede comprometer su clave (debido al uso de GMAC, por lo que no es infalible). En caso de que seas paranoico (como yo), CBC con HMAC ( cifrar luego MAC ) es probablemente el mejor si uno quiere estar en el lado seguro. (También corríjame si me equivoco en esta actualización).

    
pregunta The Quantum Physicist 22.04.2018 - 16:47
fuente

4 respuestas

19

CBC y GCM son bastante diferentes. Ambos son seguros cuando se usan correctamente, pero CBC no es paralelizable y carece de autenticación. Debido a esto, CBC solo es realmente práctico para cifrar archivos locales que no necesitan acceso aleatorio.

En cuanto a las ventajas que podría tener, CBC no falla tan catastróficamente si la IV se reutiliza, y puede ser más rápido si se implementa en hardware básico.

En cuanto a GCM, es básicamente GCM = CTR + Autenticación (no CBC). Es rápido y seguro si se usa correctamente, y muy versátil, de ahí su popularidad.

    
respondido por el Therac 22.04.2018 - 17:23
fuente
10
  1. CBC es más antiguo, lo que significa más compatibilidad y solo razones históricas en general.
  2. Hay ventajas de rendimiento , si no necesita GCM para la autenticidad. A menudo, es posible que desee su propio sistema de autenticidad con algunas características adicionales o puede que no lo necesite en absoluto.
respondido por el Peter Harmann 22.04.2018 - 17:21
fuente
5

En pocas palabras, CBC fue lo primero. Es posible que tenga sistemas que solo admitan CBC.

Esta sería la misma pregunta que "¿Por qué usaría RC4 y MD5 si AES y SHA-2 están disponibles?" Compatibilidad e historia. (Lo mismo con muchas otras opciones de cifrado).

Si todos sus sistemas son compatibles con AES-256-GCM, y tienen los recursos para ejecutarlo, y tienen una mayor necesidad de seguridad, entonces use AES = 256-GCM.

Por ejemplo, tengo sistemas que no admiten nada más nuevo que SSL3, RC4 y MD5, con certificados de 1024 bits. (En 2018, sí). Claro, eso no es mucho mejor que ROT13 en estos días, pero hace lo suficiente para estos datos que en realidad no requieren cifrado. (En estos días la gente llama a estas cosas IoT).

    
respondido por el MikeP 22.04.2018 - 23:05
fuente
5

Gran nitpick:

  

GCM = CBC + Autenticación.

No, GCM = CTR + Autenticación.

Pero en general tienes razón; CBC es un modo más antiguo que se inventó en la Edad Oscura de forma criptográfica (no más tarde de la década de 1970) y ahora está desfavorecido debido a la falta de autenticación integrada y todos los problemas causados por el relleno de los oráculos. Un buen ejemplo práctico de esto es que TLS 1.3 eliminó el soporte para CBC.

Sin embargo,

GCM no es una panacea. Es estrictamente correcto, pero en la práctica ha demostrado que está lejos de ser infalible:

  1. Falla espectacularmente si reutilizas un nonce. Un único nonce repetido permite a un adversario recuperar su subclave de autenticación, además de aprender el XOR de los dos mensajes con el mismo nonce.
  2. Sus nonces son incómodamente cortos (96 bits), que puede ser Es difícil de usar con fuentes aleatorias .

CBC no tiene estos problemas. Los IV aleatorios funcionan bien (y, de hecho, son necesarios), y si repite un IV, no se produce un fallo catastrófico, simplemente se filtra información sobre prefijos de texto simple igual.

    
respondido por el Luis Casillas 23.04.2018 - 07:46
fuente

Lea otras preguntas en las etiquetas