"Confianza en el diseño seguro" vs. "Seguro, confiamos en el diseño" (Otra historia de Star Wars)
Veamos algunos métodos más para el desarrollo seguro, pero en este caso solo dos de los más importantes que afectan a cómo se desarrolla un software seguro y privado, con independencia del resto del ciclo de vida.
Este método es menos formal que los que hemos visto hasta ahora y se compone de:
- Una gestión eficiente y autogestionada de los repositorios de software seguro, junto a...
- ...la utilización sostenible y supervisada de primitivas tanto de funciones criptográficas como protocolos. Gracias a la centralización de los componentes, funciones y librerías de seguridad utilizadas en la empresa, junto a un correcto conocimiento de las funciones criptográficas y protocolos, permitirán a los desarrolladores saber de antemano si un protocolo sufre de vulnerabilidades por overflow o si una función criptográfica de hasheo ha sido comprometida y se pueden provocar colisiones de forma intencionada.

- La especificación de requisitos funcionales e integración en la fase de diseño, y...
- ....en la validación y verificación en la fase de desarrollo. El objetivo de estos métodos persigue proporcionar mecanismos que pueden mejorar la corrección del sistema en desarrollo, en este caso comprobar que se consigue el mayor grado de seguridad y privacidad en el sistema.
Los métodos formales permiten recoger requisitos y decisiones de diseño utilizando un lenguaje preciso y común tanto para expresar el qué se quiere obtener, qué tests debe superar y en qué restricciones debe padecer. Estas tres estipulaciones definidas en lenguaje matemático son universales y verificables de forma inequívoca. En esencia, l a especificación indica qué queremos y qué no queremos conseguir desde los requisitos, y esta expresión va redefiniéndose a través de las funciones y los componentes donde, una vez llegado a las decisiones de diseño, su forma está tan próxima a la programación que su conversión es casi inmediata.
Una vez obtenida la especificación y realizada la implementación, llega el proceso de la verificación formal, para ello gracias a la expresión matemática es posible comprobar la correctitud del sistema implementado. Durante el desarrollo la especificación se verifica a partir de pre y post condiciones que se cumplen en el código desarrollado. Es decir, de cada sentencia, función, clase, método y librería, se deben cumplir todas las precondiciones y postcondiciones que garantizan que se están cumpliendo con los formalismos matemáticos especificados, garantizando que al menos matemáticamente el programa/sistema cumple con su propósito esperado. Esto incluye que se cumplan las restricciones de seguridad y privacidad que fueron incluidas como requisitos funcionales.
El equipo de diseño de sistemas informáticos del Imperio Galáctico hubiera solventado algunos de los problemas de seguridad mediante una especificación matemática de ciertos requisitos:
- Reducir la superficie de exposición a los riesgos.
- Regular y establecer políticas de seguridad y privacidad que validen el ciclo de vida de desarrollo
- Automatizar la integración de los mecanismos de seguridad y
- Reducir el factor humano en la decisión de factores de seguridad a integrar/desplegar en el sistema.

Y es que la práctica ha demostrado que las principales vulnerabilidades encontradas en los sistemas son introducidas por errores humanos, y que hubiesen sido fácilmente detectables de forma anticipada. Pero queda demostrado que todos los errores introducidos por factores humanos son los más complejos de resolver y corregir, ya que la mayoría se deben a malas prácticas, ignorancia y falta del seguimiento de procedimientos estandarizados. Anecdóticamente Darth Vader mataba a todos los que le fallaban, suponemos que también a los CISOs, por lo que es difícil que de los fallos que hubiesen cometidos pudiesen adquirir lecciones aprendidas para corregirlas en el futuro.
En definitiva, cada vez más necesitamos acudir a enfoques y ciclos de desarrollo que integren SPD en su núcleo y que permitan gracias a su asistencia corregir todos los errores que por nuestra propia naturaleza humana pudiésemos introducir. La mejora y optimización de los procesos desatendidos y automatizados ayudan a prevenir fallos del diseño y a remediar con bastante antelación fallos de seguridad. Confiar en la Fuerza está bien, pero dejarse ayudar por R2-D2, K2SO o BB-8 garantizará que haremos la tarea con mayor seguridad y privacidad.
Innovación y Laboratorio de ElevenPaths
marcos.arjona@11paths.com