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).