¿Cómo se verifica un algoritmo de cifrado?

0

Siempre he pensado en cómo se verifican las cifras simétricas. Digamos que inventaría una nueva clave. (en realidad no :-)) ¿Cómo debo racionalizar su seguridad al público? Por lo que he visto artículos sobre cyphers y su seguridad, nunca he visto ninguna prueba matemática real sobre su seguridad. Acabo de ver una especie de razonamiento, no pruebas matemáticas reales. ¿Cómo probarías que una cifra simétrica es segura? No tengo idea ... ¡Pensar en eso me está acercando a P! = NP como preguntas.

Lo veo así, para poder inventar una nueva clave, tú ...

  1. debe ser una persona bien educada y conocida para convencer a los demás de que simplemente lo escuchen
  2. si cumple (1), las otras personas de su interés estudiarían su algoritmo, verificando si alguno de los métodos conocidos sería aplicable contra su seguridad.
  3. se debe discutir la clave, cuán resistente es contra esos métodos comunes. Probablemente tú y la gente de (2) harían eso.
  4. el cifrado debe ser adecuado para las CPU, debe ser rápido y fácil de calcular, fácil de implementar incluso en el nivel de CPU y en diferentes plataformas
  5. de alguna manera, el cifrado debe mostrar que no tiene puertas traseras. Por ejemplo, las matrices constantes (cajas S) deben ser una serie numérica común bien conocida.

Desde mi punto de vista, la criptografía simétrica tiene mucho menos que ver con las matemáticas que la gente cree que sí. No se trata más de la imaginación de cómo mezclar los bits y confundir los datos de manera eficiente al usar las instrucciones de CPU tan poco como sea posible. La verificación es más sobre una discusión que sobre una matemática real.

¿Soy ingenuo?

gracias

    
pregunta smrt28 26.09.2014 - 21:01
fuente

2 respuestas

2

No hay ninguna prueba matemática de que los sistemas de encriptación seguros puedan existir, y mucho menos que cualquier candidato específico sea seguro. En el mejor de los casos, se puede probar que el algoritmo de encriptación es seguro (para cierta noción de seguridad) siempre que un problema matemático determinado sea intratable con el conocimiento existente. P.ej. el criptosistema Rabin puede probarse (con algunas advertencias que son un poco demasiado largas para explicar) como seguro si no es factible factorizar un gran número entero dado en sus factores primos.

Los algoritmos de cifrado simétricos (como AES o 3DES) no suelen mostrar ni siquiera ese tipo de prueba.

En la práctica, el "estándar de oro" para el algoritmo criptográfico es supervivencia . Para evaluar la seguridad de algunos algoritmos criptográficos, el procedimiento es el siguiente:

  1. Publique el algoritmo con una especificación completa no ambigua, junto con una implementación de referencia y algunos vectores de prueba (no, la implementación de referencia es no la especificación; eso es otra cosa).

  2. Deje que el diseño se cocine bajo la ardiente mirada de muchos otros criptógrafos durante algunos años.

  3. Si ninguno de ellos encontró algo malo que decir sobre el algoritmo después de ese tiempo, entonces el algoritmo resultante es "probablemente lo suficientemente bueno".

El punto crucial es que debe atraer el interés colectivo de muchos investigadores durante mucho tiempo, lo que no es una tarea fácil. Algunos ingredientes clave incluyen los siguientes:

  • Asegúrese de publicar su algoritmo con la mayor claridad y de utilizar la terminología aceptada entre los criptógrafos. No les hagas perseguir gansos salvajes; no lo harán Consulte (por ejemplo) el portafolio eSTREAM para ver ejemplos de cómo se hace esto. (En particular, evite usar la palabra "cifrado", que lo califica como "alguien que vio la película Matrix demasiadas veces" en lugar de "alguien que realmente conoce un poco de criptografía.)

  • El algoritmo debería ser interesante de alguna manera; por ejemplo, podría ser sustancialmente más rápido que las alternativas existentes (consulte nuevamente eSTREAM para obtener información sobre lo que significa "rápido" para los criptógrafos).

  • No patentar. Para los criptógrafos, las patentes significan que no podrán publicar su resultado, o que el titular de la patente (usted) ganará dinero de sus esfuerzos, o ambos. Las patentes también significan que nadie utilizará realmente su algoritmo, ya que existen alternativas no patentadas y son, por definición, más baratas.

Normalmente, un alto nivel de escrutinio entre pares se logra como parte de competitions , donde algunas organizaciones se toman la molestia de formalizar los requisitos, reunir candidatos y organizar reuniones y conferencias regulares. NIST hizo exactamente eso cuando querían un nuevo algoritmo de cifrado simétrico: era la competencia AES .

Si operas fuera de una competencia de este tipo, y tu algoritmo no es tan interesante, entonces puedes salvarlo al usarlo para proteger datos valiosos. Por ejemplo, convencer a una emisora de televisión por satélite para que confíe en su algoritmo. Luego, a algunos criptógrafos les puede resultar divertido destruirlos en pequeñas hembras, solo para mostrarles que las cosas no se harán de esa manera .

    
respondido por el Thomas Pornin 26.09.2014 - 21:22
fuente
2

Hay algunos enfoques diferentes para este problema.

Prueba formal : muy pocos sistemas criptográficos han demostrado ser formalmente seguros. Sin embargo, dos ejemplos notables que se han demostrado formalmente seguros son los códigos de autenticación de mensajes y de una sola vez basados en familias casi universales de funciones hash.

Ambos no son prácticos para la mayoría de los casos de uso debido al consumo de bits clave cada vez que se usan. Pero en ciertas configuraciones limitadas podrían ser utilizables.

Supuestos físicos : los sistemas criptográficos basados en canales ruidosos o la física cuántica se han demostrado seguros bajo ciertos supuestos sobre la física.

Supuestos matemáticos estándar : Se ha comprobado que muchos sistemas criptográficos son seguros basándose en algunos supuestos estándar sobre la intratabilidad de ciertos problemas matemáticos. Los ejemplos incluyen factorización, logaritmo discreto, el supuesto RSA.

Primitivas estándar : los cifrados de bloque y los hashes criptográficos son dos clases de primitivas estándar. Se puede probar que muchas construcciones que combinan esas dos cosas son seguras bajo el supuesto de que las primitivas son seguras. Si se rompe una primitiva, puede reemplazarla con otra primitiva de la misma clase. Por ejemplo, puede cambiar de MD5 a SHA2 y seguir utilizando las mismas construcciones.

Seguridad contra ataques conocidos : al diseñar una nueva construcción, puedes probar que es segura contra los métodos de ataque que rompieron la construcción anterior que deseas reemplazar.

No lo rompe : cuantos más expertos en criptografía pueda intentar romper una construcción y no hacerlo, más confianza tendrá en la construcción, que es realmente segura.

Combinaciones de lo anterior : por ejemplo, la criptografía cuántica combina las dos construcciones probadamente seguras que mencioné con los supuestos físicos para producir un sistema completo, lo cual es seguro si asumimos que nuestra comprensión de la física cuántica es correcta. Sin embargo, las pruebas de seguridad no son garantía contra fallas de implementación si lo que implementa es diferente de lo que demostró ser seguro.

Los supuestos matemáticos estándar y los primitivos estándar están sujetos a pruebas contra ataques conocidos, así como a intentos fallidos de romperlos. Muchas construcciones útiles son posibles si tiene un cifrado de bloque seguro. Por lo tanto, muchos expertos están intentando romper AES para que podamos saber si AES puede considerarse un cifrado de bloque seguro. Y cuando AES se introdujo por primera vez, se analizó su seguridad contra métodos de ataque conocidos.

    
respondido por el kasperd 26.09.2014 - 21:49
fuente

Lea otras preguntas en las etiquetas