ventajas idea encriptacion ejemplo desventajas cifrado cbc algoritmos algoritmo security encryption aes blowfish

security - idea - AES vs Blowfish para el cifrado de archivos



cifrado aes ejemplo (7)

Quiero cifrar un archivo binario. Mi objetivo es evitar que alguien lea el archivo que no tenga la contraseña.

¿Cuál es la mejor solución, AES o Blowfish con la misma longitud de clave? Podemos suponer que el atacante tiene grandes recursos (software, conocimiento, dinero) para descifrar el archivo.


AES.

(También estoy asumiendo que quieres decir doble, no el pez globo mucho más viejo y más débil)

Ambos (AES y twofish) son buenos algoritmos. Sin embargo, incluso si fueran iguales o doblemente avanzados por mérito técnico, SIEMPRE elegiría AES.

¿Por qué? Publicidad. AES es EL estándar para el cifrado gubernamental y, por lo tanto, millones de otras entidades también lo usan. Un criptoanalista talentoso simplemente obtiene más "por el dinero" encontrando un defecto en AES, y lo hace por el mucho menos conocido y usado dos veces.

La oscuridad no proporciona protección en el cifrado. Más cuerpos buscando, estudiando, explorando, atacando un algoritmo son siempre mejores. Desea el algoritmo más "comprobado" posible y ahora mismo es AES. Si un algoritmo no está sujeto a un escrutinio intenso y continuo, debe confiar menos en su fortaleza. Sure twofish no ha sido comprometido. ¿Es eso por la fuerza del cifrado o simplemente porque no hay suficientes personas que hayan mirado de cerca ..... AÚN


Ambos algoritmos (AES y twofish) se consideran muy seguros. Esto ha sido ampliamente cubierto en otras respuestas.

Sin embargo, dado que AES se usa mucho ahora en 2016, se ha acelerado específicamente en hardware en varias plataformas como ARM y x86. Si bien no es significativamente más rápido que dos veces antes de la aceleración del hardware, AES ahora es mucho más rápido gracias a las instrucciones dedicadas de la CPU.


En términos de los propios algoritmos, me gustaría ir con AES, por la sencilla razón de que ha sido aceptado por el NIST y será revisado por pares y criptoanalizado durante años. Sin embargo, sugeriría que en aplicaciones prácticas, a menos que esté almacenando algún archivo que el gobierno quiera mantener en secreto (en cuyo caso la NSA probablemente le proporcionará un algoritmo mejor que AES y Blowfish), utilizando cualquiera de estos algoritmos ganados. No hace demasiada diferencia. Toda la seguridad debe estar en la clave, y ambos algoritmos son resistentes a los ataques de fuerza bruta. Blowfish solo ha demostrado ser débil en implementaciones que no hacen uso de las 16 rondas completas. Y aunque AES es más nuevo, ese hecho debería hacer que te inclinas más hacia BlowFish (si solo tomaras la edad en consideración). Piénselo de esta manera, BlowFish ha existido desde los años 90 y nadie (que sepamos) lo ha roto aún ....

Esto es lo que te plantearía ... en lugar de mirar estos dos algoritmos e intentar elegir entre el algoritmo, ¿por qué no miras tu esquema de generación de claves? Un posible atacante que quiera descifrar su archivo no se sentará allí y elaborará un conjunto teórico de claves que se pueden usar y luego realizará un ataque de fuerza bruta que puede llevar meses. En su lugar, explotará otra cosa, como atacar el hardware de su servidor, realizar ingeniería inversa de su ensamblaje para ver la clave, tratar de encontrar algún archivo de configuración que tenga la clave, o tal vez chantajear a su amigo para copiar un archivo de su computadora . Esos van a estar donde eres más vulnerable, no el algoritmo.


Es un hecho no reconocido a menudo que el tamaño de bloque de un cifrado de bloque también es una consideración de seguridad importante (aunque no tan importante como el tamaño de la clave).

Blowfish (y la mayoría de los otros sistemas de cifrado de la misma época, como 3DES e IDEA) tienen un tamaño de bloque de 64 bits, que se considera insuficiente para los tamaños de archivo grandes que son comunes hoy en día (cuanto más grande es el archivo y más pequeño es el tamaño del bloque , mayor es la probabilidad de un bloque repetido en el texto cifrado, y dichos bloques repetidos son extremadamente útiles en el criptoanálisis).

AES, por otro lado, tiene un tamaño de bloque de 128 bits. Solo esta consideración es una justificación para usar AES en lugar de Blowfish.


La elección del algoritmo probablemente no importe tanto. Utilizaría AES ya que ha sido mejor investigado. Lo que es mucho más importante es elegir el modo de operación correcto y la función de derivación de tecla .

Es posible que desee echar un vistazo a la especificación del formato TrueCrypt para obtener inspiración si desea un acceso aleatorio rápido. Si no necesita acceso aleatorio, XTS no es el modo óptimo, ya que tiene debilidades que otros modos no tienen. Y es posible que desee agregar algún tipo de verificación de integridad (o código de autenticación de mensaje) también.


Sé que esta respuesta infringe los términos de su pregunta, pero creo que la respuesta correcta a su intención es simplemente esto: use el algoritmo que le permita la longitud de la clave más larga, luego asegúrese de elegir una clave realmente buena. Las pequeñas diferencias en el rendimiento de la mayoría de los algoritmos bien considerados (criptográficamente y cronológicamente) se ven desbordados por unos pocos bits adicionales de una clave.


Probablemente AES. Blowfish fue el predecesor directo de Twofish. Twofish fue la entrada de Bruce Schneier en la competencia que produjo AES. Fue juzgado como inferior a una entrada llamada Rijndael, que fue lo que se convirtió en AES.

Interesante a un lado: en un punto de la competencia, se les pidió a todos los participantes que dieran su opinión sobre cómo se clasificaban las cifras. Probablemente no sea una sorpresa que cada equipo elija su propia entrada como el mejor, pero cada otro equipo escogió a Rijndael como el segundo mejor.

Dicho esto, hay algunas diferencias básicas en los objetivos básicos de Blowfish vs. AES que (posiblemente) favorecen a Blowfish en términos de seguridad absoluta. En particular, Blowfish intenta dificultar un ataque de fuerza bruta (agotamiento de la llave) al hacer que la configuración inicial de la tecla sea una operación bastante lenta. Para un usuario normal, esto tiene poca importancia (aún es menos de un milisegundo), pero si está probando millones de claves por segundo para romperlo, la diferencia es bastante considerable.

Al final, no veo eso como una gran ventaja, sin embargo. En general, recomendaría AES. Mis próximas elecciones probablemente serían Serpent, MARS y Twofish en ese orden. Blowfish vendría a algún lugar después de eso (aunque hay un par de otros que probablemente recomendaría antes de Blowfish).