Por qué le decimos NO a la seguridad por oscuridad
Una de mis críticas favoritas a la seguridad por oscuridad es de hace casi 200 años. Aparece en un libro escrito por el cerrajero A. C. Hobbs, titulado Construction of Locks and Safes. En él detalla el funcionamiento de los candados comunes de 1850, lo que permitiría abrirlos sin la llave original.
Según los críticos al trabajo de Hobbs, estos textos facilitaban las actividades ilícitas como abrir una chapa ajena. Para ellos, el desconocimiento sobre cómo funcionan los candados era su mecanismo principal de seguridad. Esa es la definición de seguridad por oscuridad.
Hobbs, al contrario, planteaba que los criminales han conocido desde siempre, e incluso a veces mejor que él, la información que difundía, y que la única forma de hacer frente a esas amenazas es democratizando este conocimiento. El trabajo de Hobbs sugiere que la seguridad del candado debería depender de la fortaleza del diseño del candado y de poseer la llave. De esa manera, aún conociendo todo sobre el funcionamiento del candado, no se debería poder abrir sin la llave.
Libros como el de Hobbs ponen la sabiduría de unos pocos (algunos buenos, otros malos) en manos de muchas personas (algunas buenas, otras malas). Lo positivo es que podemos usar esos conocimientos para mejorar los objetos, procesos o sistemas que no son lo suficientemente seguros por diseño: la idea es alcanzar un nivel de seguridad que no se ve comprometida si el mecanismo pasa a ser conocido por todo el mundo.
Principio de Kerckhoffs
Este principio propone que la seguridad de un sistema no debe depender de que su funcionamiento interno sea secreto. En general, la seguridad recaería en que el mecanismo pueda ser configurado con parámetros que no son parte de él, por lo que se pueden cambiar fácilmente si son comprometidos.
En otras palabras, la seguridad de un candado se mantiene incluso cuando todos conocemos cómo funciona, siempre y cuando la llave que utilizas para abrirlo no se la muestres a nadie. Además, en caso de que la llave se filtre, el candado permite cambiarla por otra sin necesidad de cambiar su estructura.
Lo mismo pasa con los algoritmos criptográficos que se usan para proteger la información. Tienen que cumplir el principio de Kerckhoffs y por eso, a pesar de estar públicamente documentados, su seguridad se mantiene mientras se guarde el secreto de la "llave criptográfica".
En Internet
Las aplicaciones expuestas a Internet son un muy buen ejemplo de "mecanismos" accesibles por muchas personas.
Si bien muchas de estas aplicaciones no son código abierto, basta una filtración del código fuente para que esa ruta ingeniosa que creaste para ocultar archivos privados de tus clientes sea de conocimiento público y se expongan datos sensibles.
A veces no es necesaria una filtración. La intuición de un atacante con mucho tiempo libre puede ser suficiente para que adivine rutas ocultas o imagine cómo opera una función.
Pero existen cosas que se pueden hacer para atajar la creatividad de alguien curioso que quiere acceder a lugares “cerrados”. Por ejemplo:
- Requerir mecanismos de autentificación para el acceso a datos sensibles de los usuarios
- Usar algoritmos y librerías conocidas y con buena reputación para la implementación de las barreras de seguridad
- Evitar subestimar la facilidad con la que se pierde o filtra la información (como insinúe más arriba, jamás hay que subestimar la creatividad de las personas curiosas con tiempo libre)
Ir más allá
Los ejemplos anteriores funcionan como una base para que cualquier empresa o proyecto pueda proteger su información. Pero, ¿cuál es el paso siguiente a no abusar de la seguridad por oscuridad?
Para mí, es desafiar el hecho de que habría que mantener cierta información en secreto. ¿Es útil esconder que uno puede equivocarse al programar —algo completamente inevitable— o es bueno mantener el secreto de que encontramos una forma interesante de cuidar los datos de tus clientes?
Entender que estos errores y hallazgos nos permiten estar abiertos a poder corregirlos. Y para eso existen los programas de Bug Bounty (en fintual tenemos uno desde hace tiempo): mecanismos que tienen la mayoría de las empresas de tecnología para premiar a cualquier hacker que señale alguna vulnerabilidad encontrada en tu página o aplicación. Una vez resueltos, considero que es conveniente publicar esos bugs (el problema original y su solución) por tres motivos:
- Aumentan la transparencia de la empresa y le entregan el poder a los clientes de consultar nuestros errores y saber cómo los hemos arreglado
- Permiten compartir metodologías y herramientas para solucionar bugs con la industria local
- Motivan a la industria local a publicar sus errores de seguridad para que se pueda crear una comunidad de aprendizaje mutuo
Esto lo entienden hace años empresas de tecnología en el mundo: Gitlab publica constantemente cifras sobre su programa de Bug Bounties e incluso han subido postmortems de eventos de seguridad importantes, explicando minuto a minuto qué pasó y cómo lo fueron solucionando.
Hace unas semanas Coinbase publicó un postmortem de un reporte de Bug Bounty de severidad crítica por 250.000 dólares, con un fallo en la validación de su API que hubiese permitido a un atacante quedarse con criptomonedas sin gastar un peso.
Es cierto que existen motivos transversales que limitan qué tanta información puede compartir una organización de manera pública. Por ejemplo: propiedad intelectual, ventajas estratégicas de una empresa, divulgación responsable de vulnerabilidades o información sensible de sus integrantes y clientes. Pero para los casos en que no haya una limitación para publicar información, vale la pena dar ese paso.
Por eso queremos publicar artículos en El Fintualist sobre temas transversales de seguridad y privacidad que nos interesan y preocupan, junto con algunos casos de bugs reportados a través de nuestro programa de Bug Bounty.
Tengan en cuenta que de nada nos serviría comentar estos casos si no llegan a la mayor cantidad de personas posible (a veces técnicas y otras no tanto), por lo que les pedimos que los compartan con quienes crean que puedan apreciarlos. También pueden darnos sus opiniones o reflexiones técnicas escribiendo a cartas@fintualist.com.
*La imagen es de la Exhibición Universal de 1851, la famosa feria de Londres en la que se mostraban innovaciones de todas partes del mundo. Ahí A.C. Hobbs le abrió candados frente al público que se suponían impenetrables.