¿Por qué la seguridad a través de la oscuridad es una mala idea?

Recientemente me encontré con un sistema en el que todas las conexiones de bases de datos se administraban mediante rutinas oscurecidas de varias maneras, incluida la encoding de base 64, md5sums y varias otras técnicas.

¿Soy solo yo, o es esto exagerado? ¿Cuáles son las alternativas?

La seguridad a través de la oscuridad sería enterrar tu dinero debajo de un árbol. Lo único que lo hace seguro es que nadie sabe que está allí. La seguridad real lo está colocando detrás de un candado o combinación, por ejemplo, en una caja fuerte. Puedes poner la caja de seguridad en la esquina de la calle porque lo que la hace segura es que nadie puede entrar sino .

Como se menciona por @ ThomasPadron-McCarty a continuación en un comentario a continuación:

Si alguien descubre la contraseña, puede cambiar la contraseña, lo cual es fácil. Si alguien encuentra la ubicación, necesita desenterrar el dinero y moverlo a otro lugar, lo cual es mucho más trabajo. Y si utiliza la seguridad por oscuridad en un progtwig, tendría que volver a escribir el progtwig.

Se puede decir que la seguridad a través de la oscuridad es mala porque a menudo implica que la oscuridad se está utilizando como el principal medio de seguridad. La oscuridad está bien hasta que se descubre, pero una vez que alguien ha resuelto tu oscuridad particular, entonces tu sistema vuelve a ser vulnerable. Dada la persistencia de los atacantes, esto no equivale a ninguna seguridad en absoluto.

La oscuridad nunca debe usarse como una alternativa a las técnicas de seguridad adecuadas.

La oscuridad como un medio para ocultar su código fuente para evitar la copia es otro tema. Estoy bastante dividido sobre ese tema; Puedo entender por qué es posible que desee hacer eso, personalmente nunca he estado en una situación en la que se quisiera.

La seguridad a través de la oscuridad es un tema interesante. Es (correctamente) difamado como un sustituto de la seguridad efectiva. Un principio típico en la criptografía es que un mensaje es desconocido pero los contenidos no lo son. Los algoritmos de encriptación suelen ser ampliamente publicados, analizados por los matemáticos y, después de un tiempo, se genera cierta confianza en su efectividad, pero nunca hay una garantía de que sean efectivos.

Algunas personas ocultan sus algoritmos criptográficos, pero esto se considera una práctica peligrosa porque esos algoritmos no han pasado por el mismo escrutinio. Solo organizaciones como la NSA, que tiene un presupuesto importante y personal de matemáticos, pueden salirse con la suya con este tipo de enfoque.

Uno de los desarrollos más interesantes en los últimos años ha sido el riesgo de la esteganografía , que es la práctica de ocultar mensajes en imágenes, archivos de sonido u otro medio. El mayor problema del esteganálisis es identificar si un mensaje está o no presente, lo que hace que esta seguridad sea oscura.

El año pasado me encontré con una historia que los investigadores calculan la capacidad de un canal esteganográfico, pero lo realmente interesante de esto es:

Estudiar un canal estego de esta manera conduce a algunos resultados contraintuitivos: por ejemplo, en ciertas circunstancias, duplicar el número de algoritmos que buscan datos ocultos puede boost la capacidad del canal esteganográfico.

En otras palabras, cuantos más algoritmos use para identificar los mensajes, menos efectivo se vuelve, lo que va en contra de la crítica normal de la seguridad a través de la oscuridad.

Cosas interesantes.

La razón principal por la cual es una mala idea es que no soluciona los problemas subyacentes, solo intenta ocultarlos. Tarde o temprano, los problemas serán descubiertos.

Además, el cifrado adicional tendrá gastos adicionales.

Finalmente, la oscuridad excesiva (como el uso de sums de comprobación) hace que el mantenimiento sea una pesadilla.

Mejores alternativas de seguridad es eliminar las debilidades potenciales en su código, como las entradas forzadas para prevenir ataques de inyección.

Un factor es la capacidad de recuperarse de una violación de seguridad. Si alguien descubre su contraseña, simplemente reiníciela. Pero si alguien descubre su oscuro esquema, te rocían.

Usar la oscuridad como todas estas personas están de acuerdo no es seguridad, es comprar tiempo. Dicho esto, tener un sistema de seguridad decente implementado y luego agregar una capa adicional de oscuridad aún es útil. Digamos que mañana alguien encuentra una grieta / agujero inmejorable en el servicio ssh que no se puede reparar de inmediato.

Como regla, lo he implementado en mi propia casa … todos los servidores públicos exponen solo los puertos necesarios (http / https) y nada más. Un servidor público tendrá entonces ssh expuesto a internet en algún puerto obscuro de alto número y una configuración de disparo de exploración de puertos para bloquear cualquier IP que intente encontrarlo.

La oscuridad tiene su lugar en el mundo de la seguridad, pero no como la primera y última línea de defensa. En el ejemplo anterior, no recibo ningún ataque de script / bot en ssh porque no quieren perder el tiempo buscando un puerto de servicio ssh no estándar y, si lo hacen, es poco probable que lo encuentren antes de otra capa de la seguridad interviene y los interrumpe.

Todas las formas de seguridad disponibles son en realidad formas de seguridad a través de la oscuridad. Cada método aumenta en complejidad y proporciona una mejor seguridad, pero todos confían en algún algoritmo y una o más claves para restaurar los datos encriptados. “Seguridad a través de la oscuridad”, como la mayoría lo llama, es cuando alguien elige uno de los algoritmos más simples y fáciles de descifrar.

Algoritmos como el cambio de caracteres son fáciles de implementar y fáciles de descifrar, por eso son una mala idea. Probablemente sea mejor que nada, pero a lo sumo, solo detendrá una mirada casual para que los datos sean fáciles de leer.

Hay excelentes recursos en Internet que puede utilizar para informarse sobre todos los métodos de encriptación disponibles y sus fortalezas y debilidades.

La seguridad consiste en permitir el ingreso de personas o mantenerlas fuera según lo que saben, quiénes son o qué tienen. Actualmente, la biometría no es buena para encontrar quién eres, y siempre habrá problemas con ella (lectores de huellas dactilares para alguien que ha tenido un accidente grave, huellas digitales falsificadas, etc.). Entonces, en realidad, gran parte de la seguridad se trata de ofuscar algo.

La buena seguridad consiste en mantener al mínimo las cosas que debe mantener en secreto. Si tienes un canal AES correctamente encriptado, puedes dejar que los tipos malos lo vean todo excepto la contraseña, y estás a salvo. Esto significa que tiene un área mucho más pequeña para atacar y puede concentrarse en proteger las contraseñas. (No es que eso sea trivial)

Para hacer eso, debes tener confianza en todo menos en la contraseña. Esto normalmente significa usar criptografía estándar de la industria que muchos expertos han examinado. Cualquiera puede crear un cifrado que no pueden romper, pero no todos pueden hacer un cifrado que Bruce Schneier no puede descifrar. Dado que hay una falta total de fundamentos teóricos para la seguridad de cifrado, la seguridad de un cifrado está determinada por la gran cantidad de gente muy inteligente y conocedora que intenta atacar, incluso si no son prácticos (los ataques a las cifras siempre mejoran) , nunca peor). Esto significa que el algoritmo de criptografía necesita ser ampliamente conocido. Tengo una gran confianza en el Estándar de Encriptación Avanzado, y casi ninguno en un algoritmo patentado que Joe escribió y ofuscó.

Sin embargo, ha habido problemas con las implementaciones de algoritmos de cifrado. Es fácil, sin darse cuenta, dejar huecos por los cuales se pueda encontrar la llave u otra travesura. Sucedió con un campo de firma alternativo para PGP y debilidades con SSL implementadas en Debian Linux. Incluso le pasó a OpenBSD, que es probablemente el sistema operativo más seguro disponible (creo que se trata de hasta dos exploits en diez años). Por lo tanto, estas deberían ser realizadas por una empresa confiable, y me sentiría mejor si las implementaciones fueran de código abierto. (La fuente cerrada no detendrá a un atacante determinado, pero hará que sea más difícil para los tipos buenos al azar encontrar agujeros para cerrar).

Por lo tanto, si quisiera seguridad, trataría de que mi sistema sea lo más confiable posible, lo que significa que es lo más abierto posible, excepto la contraseña.

La capa de seguridad por oscuridad sobre un sistema ya seguro podría ayudar a algunos, pero si el sistema es seguro no será necesario, y si es inseguro, lo mejor es hacerlo seguro. Piense en la oscuridad como las formas menos confiables de “medicina alternativa”: es poco probable que ayude demasiado, y si bien es poco probable que duela demasiado, es menos probable que el paciente vea a un médico competente o un especialista en seguridad informática, cualquiera que sea.

Por último, me gustaría hacer un complemento completamente no solicitado y desinteresado para el blog de Bruce Schneier , como nada más que un lector interesado. Aprendí mucho sobre la seguridad de esto.

Una de las mejores formas de evaluar, probar o mejorar un producto de seguridad es hacer que un gran grupo inteligente lo golpee.

Los productos que confían para su seguridad en ser una “caja negra” no pueden tener el beneficio de este tipo de prueba. Por supuesto, ser una “caja negra” siempre invita a la sospecha (a menudo justificada) de que no resistirían ese tipo de escrutinio de todos modos.

Argumenté en un caso que la protección con contraseña es realmente seguridad a través de la oscuridad. La única seguridad que puedo pensar que no sería STO es algún tipo de seguridad biométrica.

Además de ese pedazo de semántica y nit picking, STO (Seguridad a través de la oscuridad) es obviamente malo en cualquier caso donde se necesita una seguridad real. Sin embargo, puede haber casos en los que no importa. A menudo voy a rellenar con XOR un archivo de texto que no quiero que nadie lea. Pero realmente no me importa si lo hacen, prefiero que no se lea. En ese caso, no importa, y un pad XOR es un ejemplo perfecto de un STO fácil de encontrar.

Casi nunca es una buena idea. Es lo mismo decir, ¿es una buena idea conducir sin cinturón de seguridad? Por supuesto, puede encontrar algunos casos en los que se ajusta, pero el resultado debido a la experiencia parece obvio.

El cifrado débil solo disuadirá a los piratas informáticos menos motivados, por lo que no tiene ningún valor, simplemente no es muy valioso, especialmente cuando está disponible el cifrado fuerte, como AES.

La seguridad a través de la oscuridad se basa en la suposición de que eres inteligente y tus usuarios son estúpidos. Si esa suposición se basa en la arrogancia, y no en datos empíricos, entonces sus usuarios y hackers determinarán cómo invocar el método oculto, abrirán la página no enlazada, descomstackrán y extraerán la contraseña del texto sin formato del .dll, etc.

Dicho esto, proporcionar metadatos integrales para los usuarios no es una buena idea, y oscurecer es una técnica perfectamente válida siempre que lo respalde con encriptación, autorización, autenticación y todos esos otros principios de seguridad.

Si el sistema operativo es Windows, consulte usando la API de protección de datos (DPAPI). No es seguridad por oscuridad, y es una buena forma de almacenar las credenciales de inicio de sesión para un proceso desatendido. Como casi todo el mundo dice aquí, la seguridad a través de la oscuridad no te brinda mucha protección.

http://msdn.microsoft.com/en-us/library/ms995355.aspx

http://msdn.microsoft.com/en-us/library/ms998280.aspx

El único punto que debo agregar y que no se ha tocado todavía es la increíble capacidad de Internet para destruir la seguridad a través de la oscuridad.

Como se ha demostrado una y otra vez, si su única defensa es que “nadie sabe que la puerta de atrás / error / exploit está ahí”, todo lo que se necesita es que una persona se tropiece con ella y, en cuestión de minutos, cientos de personas saber. Al día siguiente, casi todos los que quieran saber lo harán. Ay.