¿El desarrollo de lenguajes de programación ‘seguros’ y la verificación formal reducirán la necesidad de expertos en ciberseguridad?

No.

No existe un lenguaje de programación “seguro”, ni puede existir uno. Si es realmente seguro, entonces no puede usarlo para resolver problemas complejos, esto está relacionado con el teorema de integridad de Gödel: Wikipedia.

La verificación formal es una buena idea … pero tiene límites inherentes que impiden su uso. Ya se ha demostrado que la verificación es una variante para resolver el problema de detención: Wikipedia, que no puede resolverse excepto en casos triviales.

Eso no significa que el lenguaje utilizado no pueda ayudar. Todo depende de lo que se esté haciendo. Lo mismo vale para la verificación. Puede AYUDAR, pero no puede ser todo lo que hay.

El problema habitual es que las especificaciones del programa son vagas y no necesariamente precisas. Esto lleva a problemas en el programa, incluso con un lenguaje de programación “seguro” (incluso puede ser imposible expresar la especificación en el lenguaje). Dado que las especificaciones son vagas, el resultado no será necesariamente correcto, a pesar de todo el lenguaje de programación “seguro” utilizado Y cualquier verificación formal. Cuando las especificaciones son deficientes, el resultado será deficiente y los problemas de seguridad continuarán.

¿Es este amigo adulto un experto en seguridad cibernética? Si es así, sabe que es imposible tener un lenguaje de programación totalmente “seguro”, y hay otro aspecto en el que no está pensando: el desarrollador. No puedes poner todas tus esperanzas en un lenguaje de programación y pensar que, al usarlo, todo está seguro. El desarrollador también tiene que codificar su software correctamente para contribuir a toda esta seguridad. Por ejemplo, supongamos que estoy usando un lenguaje de programación que se considera seguro, pero mientras estoy codificando, no manejé correctamente algunas operaciones de E / S que mi software debería poder hacer. Y, en situaciones específicas, mi software simplemente se bloquea cuando intenta escribir algún archivo en el disco. Los bloqueos, aunque puede que no parezca así al principio, podrían provocar piratería realmente peligrosa, conocida como inyección de código o desbordamiento del búfer. Y se debe a que los bloqueos pueden dejar algunas “brechas” de memoria que se pueden utilizar para ejecutar el código de un hacker, simplemente manejando algunos “saltos” entre las direcciones de memoria.

Ahora, simplemente descubre que el software del que estamos hablando es responsable de las operaciones confidenciales de la empresa … ¿Estoy seguro ahora? ¡Ni siquiera cerca de eso!

Aparecerán nuevos softwares y lenguajes de programación y eso es bueno. Pero ninguno de ellos estará tan seguro en el momento en que ya no necesitemos un experto en seguridad cibernética. La tecnología siempre está evolucionando y las nuevas tecnologías nos traen nuevas carencias de seguridad. Es imposible probar un software en todos sus aspectos antes de comercializarlo. Esto también es cierto cuando se habla de nuevos lenguajes de programación. De hecho, creo que tendremos más carencias de seguridad en el futuro que las que tenemos hoy.

Entonces no te preocupes. Vaya a su especialización de seguridad cibernética y forme parte de este importante equipo.