¿Por qué la seguridad a través de la oscuridad no es una buena opción para el cifrado? [duplicar]

20

Siento que debe haber una explicación simple, pero he estado mirando alrededor y no he encontrado ninguna respuesta saludable.

Por ejemplo, mi nombre es Alice y mi mejor amigo Bob, y queremos comunicarnos de manera segura.

Si escribo un programa que toma mi texto y lo oculta a través de varias docenas de filtros y puedo revertir exitosamente el proceso, asumiendo que luego escribí el programa en un pedazo de papel y le di a Bob mi papel en el medio del desierto donde luego lo memorizó y lo quemó, ¿cómo podría alguien alguna vez descifrar nuestro código?

Para profundizar en la oscuridad, por ejemplo, hago lo siguiente:

  • Toma mi cadena original y la convierte a binario
  • Desde allí agrego el último dígito del año a cada número
  • Luego invirtí el texto
  • Luego agregué un carácter generado aleatoriamente una vez cada 3 caracteres
  • Y así sucesivamente, una y otra vez, hasta que tuve docenas de oscuridades filtradas a través.

¿Por qué no sería más o menos imposible descifrar nuestro mensaje sin el programa o la fórmula en sí (o al menos durante varios años)?

Nota al margen: entendería completamente por qué la seguridad a través de la oscuridad no funcionaría para las personas que dicen cosas como "Simplemente usaré sistemas operativos extraños y estaré a salvo porque ¡quién diablos entiende sistemas operativos extraños!" Estoy preguntando puramente acerca de enviar un mensaje cifrado de un lado a otro, que si es interceptado por un tercero, no sería capaz de descifrar de manera realista debido a su oscuridad.

    
pregunta ArnoldM904 02.09.2014 - 02:18
fuente

5 respuestas

19

Si solo está enviando un mensaje corto (una oración o dos), sería difícil interrumpirlo. Sin embargo, una vez que empieces a enviar mensajes grandes o frecuentes, probablemente sea muy fácil de romper utilizando técnicas como la frecuencia de las letras en el idioma.

Por ejemplo, con muchas técnicas de encriptación simples, una "a" siempre se traducirá en la misma letra encriptada. Como resultado, con suficiente texto, es fácil averiguar qué letras son las que se basan en la frecuencia.

Incluso puedes hacerlo sin saber nada sobre la fórmula que cifró el texto. Incluso los cifrados que parecen ocultar la frecuencia de las letras aún pueden exponerlo (consulte esta por ejemplo). Con las computadoras, la evaluación de la frecuencia de las letras se puede automatizar y hacer muy rápidamente.

Hay otras formas de romper códigos; La frecuencia de las letras es solo un ejemplo fácil de entender.

    
respondido por el Daniel 02.09.2014 - 02:35
fuente
22

La razón por la que se confunde la confianza en la seguridad a través de la oscuridad es que una vez que el algoritmo se filtra o se rompe, se pierde totalmente la seguridad obtenida por la oscuridad. Entonces, si algún actor con acceso al algoritmo deja su organización o lo piratean, o el código fuente (o un ejecutable) de un programa de cifrado / descifrado de alguna manera se filtra / es robado, entonces ha perdido por completo toda la seguridad de su el algoritmo es oscuro.

Para recuperar la seguridad a través de la oscuridad, debe crear un algoritmo criptográfico totalmente nuevo, hacer que los expertos en criptografía analicen de forma segura el nuevo algoritmo e intercambiar en secreto el algoritmo con todas las partes que necesitan comunicarse.

Mientras tanto, mientras usamos algoritmos criptográficos estándar bien examinados, separamos el algoritmo (donde no le importa si alguien lo roba) de la clave que no es factible computacionalmente a la fuerza bruta (por ejemplo, a fuerza bruta a 256 -bit clave simétrica si cada protón / neutrón en la Tierra (todos los 10 ^ 51 de ellos) probaron mil millones de teclas por segundo, en un millón de años de fuerza bruta, solo tendrías 1 en 1000 posibilidades de romperla) .

Solo la clave debe mantenerse en secreto. Si pierde una clave a través de un ataque o necesita enviar mensajes de forma segura con un nuevo interlocutor, no necesita inventar un algoritmo totalmente nuevo. Solo necesitas generar una nueva clave.

Con un algoritmo público bien evaluado, cualquiera puede venir e intentar analizarlo y ver si hay vulnerabilidades graves. Eso no se puede hacer con su algoritmo privado, que a menudo es mucho más débil de lo que el implementador puede pensar. (Por ejemplo, como Daniel mencionó, el algoritmo que describió sería vulnerable a muchos ataques estándar, como el análisis de frecuencia de letras, el análisis de los períodos en el texto, la explotación de patrones en el texto plano subyacente, etc.)

Además, usar algoritmos secretos es significativamente más difícil desde el punto de vista de la usabilidad. Hay mucho más que el usuario debe recordar para cada intercambio con cada otro usuario. Cuando encuentre un archivo que cifró hace 5 años o alguien le envía un archivo, incluso si todavía tiene la clave / contraseña, será mucho más fácil de descifrar si sabe que estaba cifrado con AES256 en modo CBC, ya que hay un archivo meta -datos que indican esa información, en lugar de tratar de recordar qué tipo de algoritmo de cifrado personalizado secreto podría estar usando con esta persona en particular. Si los usuarios trabajan en una variedad de plataformas, se vuelve problemático hacer que su algoritmo de cifrado secreto personalizado funcione perfectamente en todas ellas.

    
respondido por el dr jimbob 02.09.2014 - 06:42
fuente
3

Eche un vistazo a Esta pregunta , y en particular, Esta respuesta . Su pregunta es casi idéntica a la mía, y Thomas Pornin dio la mejor respuesta a esta pregunta como nunca antes. Será mejor que vayas a leerlo. Aquí hay un extracto:

  

"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 la 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.

    
respondido por el tylerl 02.09.2014 - 08:23
fuente
3

El uso de claves o el uso de un algoritmo secreto es el mismo . Permítame repetir que: usar claves en un algoritmo de cifrado bien conocido o usar un algoritmo inteligente especial de su invención es lo mismo: en ambos sentidos, hay un secreto compartido que se puede medir en bits de información sin procesar.

Todos los métodos de cifrado se basan en 'oscuridad' , lo que básicamente es la protección del secreto compartido . Básicamente, se trata de mantener en secreto secreto compartido . El secreto de su clave se correlaciona con la aleatoriedad de la misma (su entropía). Cuanto menos aleatorio sea, más podría adivinar parte de tu secreto. Como estas partes adivinadas ya no son un secreto, y podríamos decir que el secreto compartido es un fragmento de información en bruto.

Y, tiene toda la razón, en el sentido de que puede idear una manera que sea irrompible siempre que tenga un secreto precomprimido lo suficientemente largo.

Sin embargo, no es necesario que se complique demasiado con el algoritmo: si utiliza un cifrado con clave estándar y su clave es lo suficientemente larga (más larga que el mensaje, por ejemplo), es bastante fácil comprender que su protección es perfecta . Solo como recordatorio: un simple cifrado XOR con una clave verdaderamente aleatoria más larga que el mensaje es irrompible. Pero no olvide lo siguiente: necesita un secreto previamente compartido lo suficientemente largo (y uno nuevo para cada comunicación).

Entonces, ¿dónde está el problema? ¿Por qué no hacemos esto? Porque su secreto compartido se desgasta cada vez que lo usa . Y eventualmente te quedarás sin ella. El uso de su clave proporciona una parte sutil de la misma: por ejemplo, observar qué produce su algoritmo proporciona algunas sugerencias sutiles. Cuanto más veamos salir de su algoritmo, más se notarán los patrones.

Entonces, en la mayoría de los casos prácticos, nos gusta comenzar desde el punto en que Alicia y Bob no comparten al principio un secreto , o al menos este secreto no es suficiente para cubrir su comunicación. Recuerde que en su caso, el secreto es el algoritmo, y en el caso estándar, a menudo es una clave y lo llamamos secreto compartido .

Por lo tanto, en el caso criptográfico estándar, las preocupaciones se desvían hacia la creación de (más) secreto compartido . Entonces, la mayor parte del esfuerzo se gasta para encontrar la forma de crear una clave que luego llevará al punto en el que Bob y Alice están protegidos por la teoría y un cifrado estándar irrompible: tener un secreto lo suficientemente largo .

La mayoría de las comunicaciones criptográficas de hoy en día funcionarán de esta manera: cree una clave compartida sobre la marcha (a menudo a intervalos regulares en comunicación continua), luego use cualquier trivial pero perfecto algoritmo de cifrado (como el XOR por ejemplo) con esta clave. Diffie Hellman es uno de estos algoritmos. Por lo general, la primera parte es la más complicada y puede llevar mucha potencia de la computadora, y la segunda es trivial.

Por lo tanto, lo difícil es tener (o generar) suficiente secreto compartido para cifrar sus datos.

    
respondido por el vaab 02.09.2014 - 09:23
fuente
1

Imo es seguro y poder demostrar que estás seguro son dos cosas diferentes. Lo ideal es que usted pueda colocar todo sobre la mesa para su inspección.

Eso implica identificar tus puntos de falla y los secretos que hay en el sistema, y cómo se protegen esos secretos.

Para secretos de infraestructura, sus aplicaciones pueden usar frases clave para acceder a los recursos, y esas claves están protegidas dentro del firewall DMZ y cifradas por claves de máquina. Y puedes probar eso y los auditores y ellos están felices.

Para el acceso de los usuarios, la idea es que solo el usuario conozca ese secreto, y usted puede demostrar a los auditores que no está almacenando los secretos en ninguna parte de una manera que se pueda derivar, entre otras buenas prácticas de contraseña, y usted Puede probárselo a los auditores y están contentos.

La oscuridad es cuando ocultas algo, y esto es diferente a mantener tus claves y contraseñas en secreto. Estás ocultando cómo funciona el sistema o tu algoritmo.

No creo que la oscuridad sea mala. Creo que es probablemente una mala elección para la mayoría de las empresas. No es necesario y puede causar complicaciones en toda la empresa.

    
respondido por el Andrew Hoffman 02.09.2014 - 07:46
fuente

Lea otras preguntas en las etiquetas