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.
security
encryption
aes
blowfish
mimrock
fuente
fuente
Respuestas:
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 aparte: en un momento de la competencia, se les pidió a todos los participantes que dieran su opinión sobre cómo se clasificaban los cifrados. Probablemente no sea una sorpresa que cada equipo eligiera su propia entrada como la mejor, pero todos los demás equipos eligieron a Rijndael como el segundo mejor.
Dicho esto, existen algunas diferencias básicas en los objetivos básicos de Blowfish frente a AES que pueden (posiblemente) favorecer a Blowfish en términos de seguridad absoluta. En particular, Blowfish intenta dificultar un ataque de fuerza bruta (agotamiento de la clave) haciendo que la configuración inicial de la clave sea una operación bastante lenta. Para un usuario normal, esto tiene pocas consecuencias (todavía es menos de un milisegundo) pero si está probando millones de claves por segundo para romperlo, la diferencia es bastante sustancial.
Sin embargo, al final, no veo eso como una gran ventaja. Generalmente recomiendo AES. Mis próximas opciones probablemente serían Serpent, MARS y Twofish en ese orden. Blowfish vendría en algún lugar después de esos (aunque hay un par de otros que probablemente recomendaría antes de Blowfish).
fuente
Blowfish
es el más rápidoEs un hecho poco reconocido que el tamaño de bloque de un cifrado de bloque también es una consideración de seguridad importante (aunque no es tan importante como el tamaño de la clave).
Blowfish (y la mayoría de los otros cifrados de bloques 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 en estos días (cuanto más grande es el archivo y más pequeño el tamaño del bloque , mayor es la probabilidad de que se repita un bloque en el texto cifrado, y tales bloques repetidos son extremadamente útiles en el criptoanálisis).
AES, por otro lado, tiene un tamaño de bloque de 128 bits. Esta consideración por sí sola es una justificación para utilizar AES en lugar de Blowfish.
fuente
En cuanto a los algoritmos en sí, me decantaría por AES, por la sencilla razón de que ha sido aceptado por 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ía un algoritmo mejor que AES y Blowfish), el uso de cualquiera de estos algoritmos ganó no hace mucha 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 utilizan las 16 rondas completas. Y aunque AES es más nuevo, ese hecho debería hacer que se incline más hacia BlowFish (si solo tuviera en cuenta la edad). Piénsalo de esta manera,
Esto es lo que le plantearía ... en lugar de mirar estos dos algoritmos y tratar de elegir entre el algoritmo, ¿por qué no mira su esquema de generación de claves? Un atacante potencial que quiera descifrar su archivo no se quedará allí sentado y creará 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, va a explotar otra cosa, como atacar el hardware de su servidor, realizar ingeniería inversa en su ensamblaje para ver la clave, tratar de encontrar algún archivo de configuración que contenga la clave o tal vez chantajear a su amigo para que copie un archivo de su computadora. . Esos serán los lugares donde sea más vulnerable, no el algoritmo.
fuente
AES.
(También supongo que te refieres a dos peces, no al 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 dos, estaba ligeramente por delante en mérito técnico, TODAVÍA 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 utilizan. Un criptoanalista talentoso simplemente obtiene más "beneficios por el dinero" al encontrar una falla en AES que para los menos conocidos y usados.
La oscuridad no proporciona protección en el cifrado. Más cuerpos mirando, estudiando, investigando, atacando un algoritmo siempre es mejor. Quiere el algoritmo más "examinado" posible y ahora mismo es AES. Si un algoritmo no está sujeto a un escrutinio intenso y continuo, debe confiar menos en su fortaleza. Seguro que dos peces no se han visto comprometidos. ¿Es por la fuerza del cifrado o simplemente porque no hay suficientes personas que lo hayan mirado de cerca ... TODAVÍA?
fuente
La elección del algoritmo probablemente no importa tanto. Usaría AES ya que se ha investigado mejor. Lo que es mucho más importante es elegir el modo de operación correcto y la función de derivación de clave .
Es posible que desee echar un vistazo a la especificación del formato TrueCrypt para inspirarse 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 lo hacen. Y es posible que también desee agregar algún tipo de verificación de integridad (o código de autenticación de mensajes).
fuente
Sé que esta respuesta viola los términos de su pregunta, pero creo que la respuesta correcta a su intención es simplemente esta: use el algoritmo que le permita la longitud de 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 superadas por unos pocos bits adicionales de una clave.
fuente
Ambos algoritmos (AES y twofish) se consideran muy seguros. Esto se ha cubierto ampliamente en otras respuestas.
Sin embargo, dado que AES se usa mucho ahora en 2016, se ha acelerado específicamente por hardware en varias plataformas, como ARM y x86. Si bien no es significativamente más rápido que dos peces antes de la aceleración del hardware, AES ahora es mucho más rápido gracias a las instrucciones dedicadas de la CPU.
fuente