¿Qué tan valioso es el secreto de un algoritmo?

41

En la superficie, la inadmisibilidad de seguridad a través de la oscuridad está directamente en desacuerdo con el concepto de secretos compartidos (es decir, "contraseñas"). Es decir, si el secreto en torno a las contraseñas es valioso, entonces, por extensión, seguramente debe ser de algún valor para mantener en secreto el algoritmo que usa la contraseña. Muchas organizaciones (posiblemente equivocadas) pueden incluso ir tan lejos como para decir que el sistema es la contraseña.

Pero, ¿hasta qué punto se puede confiar en el secreto de un algoritmo? O tal vez más apropiadamente, ¿de qué manera el secreto que rodea a un algoritmo condenado al fracaso, mientras que el secreto que rodea a las contraseñas no lo es?

Si, por otro lado, el secreto de un algoritmo es deseable, entonces, ¿qué tan importante es? ¿Hasta qué punto debe un desarrollador ir razonablemente para mantener su secreto de criptografía?

EDIT
Para que quede claro, no se trata de crear un algoritmo nuevo y no probado, sino de mantener en secreto los detalles del algoritmo que elija. Por ejemplo, la técnica que Windows usa para las contraseñas de hash es aplicar algoritmos de hash conocidos en una secuencia que no está publicada y que parece cambiar entre diferentes versiones de Windows.

    
pregunta tylerl 24.11.2012 - 08:21
fuente

5 respuestas

67

Gran parte del trabajo sobre contraseñas y claves está relacionado con el control de dónde se almacenan y se copian.

  • Una contraseña se almacena en la mente de un usuario humano. Se ingresa en un teclado (o equivalente) y pasa por los registros de una CPU y la RAM de la computadora, mientras se procesa. A menos que se cometan errores terribles, la contraseña nunca llega a un área de almacenamiento permanente como un disco duro.

  • Un algoritmo existe como código fuente en algún lugar, en la máquina de un desarrollador, un sistema de versiones de origen y copias de seguridad. Existen documentos de diseño, que se han mostrado a varias personas (por ejemplo, aquellos que deciden si financiar el desarrollo del sistema o no) y, a menudo, se depositan de forma negligente en un estante anónimo en alguna capa de corteza en el escritorio típico. Más importante aún, el algoritmo también existe como un archivo ejecutable en el propio sistema implementado; binario no es tan legible como el código fuente, pero la ingeniería inversa funciona sin embargo.

Por lo tanto, no podemos considerar razonablemente que el algoritmo sea secreto, o al menos tan secreto como la contraseña (o la clave).

Realmente, los métodos criptográficos se dividieron hace un siglo en el algoritmo y la clave precisamente por eso: en un sistema en funcionamiento, parte Del método necesariamente se filtra trazas por todas partes. Tener una llave significa concentrar el secreto en la otra mitad, la parte que podemos mantener en secreto.

"Seguridad a través de la oscuridad" es una expresión que usa el término oscuridad>, no secreto . La criptografía se trata de lograr seguridad a través del secreto . Esa es toda la diferencia: una contraseña puede ser secreta ; un algoritmo es, en el mejor de los casos, oscuro . La oscuridad se disipa tan pronto como un chico inteligente piensa en traer una linterna metafórica. El secreto es más como una caja fuerte de acero: para romperla, necesitas herramientas más poderosas.

Smart guy Auguste Kerckhoffs ya lo escribió hace más de un siglo. A pesar de la invención de la computadora y de toda la tecnología actual, sus hallazgos siguen vigentes. A los practicantes de criptografía les tomó un tiempo aprender esa lección; 60 años después, los alemanes seguían apostando mucho por el "secreto" del diseño de la máquina Enigma . Tenga en cuenta que cuando los alemanes pusieron en uso el Enigma naval de 4 rotores, los criptógrafos aliados tuvieron inconvenientes (el craqueo de rutina se detuvo durante algunos meses) pero no se desconcertó por completo porque algunos documentos capturados del año anterior se referían al desarrollo de la nueva versión, con Un cuarto rotor "reflector". Ahí lo tiene: el algoritmo secreto no se pudo lograr en la práctica.

Un giro adicional es que la oscuridad del algoritmo puede dañar la seguridad . Lo que explico anteriormente es que no se puede confiar en la oscuridad para la seguridad: podría aumentar la seguridad, pero no mucho (y realmente no se puede saber "cuánto"). Resulta que también puede disminuir la seguridad. El problema es el siguiente: es muy difícil hacer un algoritmo criptográfico seguro. El único método conocido es publicar el algoritmo y esperar a que la sabiduría colectiva de los criptógrafos de todo el mundo lo roe y llegue a una conclusión que puede expresarse como "se puede romper de esa manera" o "aparentemente robusto". Un algoritmo se declara "bueno" solo si resistió el ataque de docenas o cientos de criptógrafos competentes durante al menos tres o cuatro años.

Internet, la dilación académica y la arrogancia humana son tales que, con la campaña de comunicaciones adecuada, puede hacer que estos pocos cientos de criptógrafos hagan ese trabajo difícil de evaluar de forma gratuita; siempre que realice la Algoritmo público (y "atractivo" de alguna manera). Si desea mantener el algoritmo oscuro, entonces no puede beneficiarse de dicha consulta gratuita. En cambio, tienes que pagar. Veinte buenos criptógrafos por, digamos, dos años de esfuerzo: aquí estamos hablando de millones de dólares. Nadie hace eso, eso es demasiado caro. En consecuencia, los algoritmos oscuros son invariablemente mucho menos probados por el estrés que los algoritmos públicos y, por lo tanto, menos seguros .

(Tenga en cuenta la letra pequeña: la seguridad no solo consiste en no romperse, sino también en tener un conocimiento a priori de que no se producirán infracciones. Quiero poder dormir por la noche. )

Summary:

  • Usted no debería mantener su algoritmo en secreto.
  • Usted no sabe cuánto es secreto su algoritmo.
  • Usted no puede mantener en secreto su algoritmo.
  • Pero puede y debe mantener su contraseña en secreto, y puede saber "cuánta" es en secreto (eso es todo el asunto de la "entropía").
respondido por el Thomas Pornin 24.11.2012 - 14:08
fuente
8

No es posible mantener tu secreto de criptografía. Necesitas tenerlo ahí fuera, si fuera solo para que la gente pudiera probarlo si realmente funciona. No veo ninguna razón para mantener el secreto criptográfico. Puede poner una cerradura en la puerta para que todos puedan ver su cerradura. Todos saben cómo funciona su cerradura y saben que sin la llave es inútil. La contraseña es tu clave.

Además de todo esto, hay algunas reglas de oro como "no reinventar la rueda" y "no intentes crear tu propio criptográfico". Tenemos estándares criptográficos porque pueden probarlo a gran escala. Además, consulte principio de Kerckhoffs

    
respondido por el Lucas Kauffman 24.11.2012 - 08:47
fuente
6

Hay dos diferencias importantes entre algoritmos y contraseñas / claves:

  1. Usted puede (y debería) cambiar las claves criptográficas de forma rutinaria, o cuando se sospecha un compromiso. Esto mitiga la pérdida del secreto. Del mismo modo, debe cambiar su contraseña siempre que tenga motivos para sospechar que la contraseña puede estar comprometida. Por el contrario, rara vez es posible cambiar el algoritmo de cifrado que se utiliza de manera oportuna, por lo que debe poder sobrevivir (sin pérdida de seguridad) en situaciones en las que el algoritmo se conozca.

  2. Se incluye una copia del algoritmo en cada pieza de software que puede cifrar o descifrar. Esto significa que todo lo que necesita es un usuario del software para aplicar ingeniería inversa al algoritmo y publicarlo en Internet, y el algoritmo ya no es secreto. En otras palabras, no puedes esperar razonablemente mantener el algoritmo en secreto. Por el contrario, su contraseña o su clave de cifrado se almacenan solo en su máquina, no en la máquina de millones de otros usuarios.

Estas razones fueron expresadas por Auguste Kerckhoffs en 1883, sí, hace más de un siglo. (¡Parece que esas personas no eran tontos!) Consulte Wikipedia sobre el principio de Kerckhoff , especialmente la regla 2 ("[El algoritmo ] no se debe exigir que sea secreto, y debe ser capaz de caer en las manos del enemigo sin inconvenientes ").

También recomiendo que lea otras preguntas aquí sobre 'seguridad en la oscuridad', que incluyen, por ejemplo, Cómo definir los requisitos de seguridad para garantizar que los desarrolladores ... ¿no proporcionan seguridad por obscurity? y El rol válido de obscurity y demostración de cómo la seguridad a través de la oscuridad no funciona y NSA Suite A Cryptography: ¿Seguridad a través de la oscuridad? y Versión oculta: valiosa o ¿Solo seguridad por oscuridad? . Cubren temas relacionados y justificación. Recuerde usar la barra de búsqueda, o mire a la derecha la barra lateral "Relacionado".

    
respondido por el D.W. 24.11.2012 - 08:56
fuente
3

Solo hay un puñado de buenos algoritmos, mientras que quizás hay 10 40 buenas contraseñas con 20 caracteres o menos. Entonces, para un atacante es bastante fácil adivinar su algoritmo o enumerar todos los algoritmos probables, mientras que es imposible que ellos hagan lo mismo con una contraseña bien elegida. Imagine la situación si los usuarios tuvieran que elegir su contraseña de una lista de diez posibilidades, y era la misma lista para todos: esa es básicamente la posición de los algoritmos.

    
respondido por el Mike Scott 24.11.2012 - 08:43
fuente
2

Una cosa que todos aquí no habían mencionado es que presuponer que el conocimiento público del algoritmo hace que sea mucho más fácil probar que un esquema de seguridad es verdaderamente seguro. Suponiendo que su atacante conoce el esquema que utilizó, es más fácil probar que un esquema es inseguro. Por lo tanto, deberías saber evitar el uso del esquema.

Asegurar el algoritmo es mucho más difícil que asegurar la clave por las diversas razones mencionadas en las otras publicaciones, por lo tanto, si alguien puede obtener la clave, es muy probable que también puedan obtener el algoritmo; pero lo contrario es mucho menos probable.

Además, es un principio de seguridad general que cuanto menos se base el esquema para mantener su seguridad, más seguro es el esquema. En última instancia, esto se reduce a: en los esquemas más seguros, solo se requiere que la clave se mantenga en secreto.

Esto no significa necesariamente que debas publicar el algoritmo que utilizas. La oscuridad se puede usar como una capa de defensa (aunque, como se mencionó, la publicación objetaría el esquema a un mayor escrutinio público), pero la oscuridad nunca se debe usar como la única capa de defensa.

    
respondido por el Lie Ryan 24.11.2012 - 18:46
fuente

Lea otras preguntas en las etiquetas