¿Existe la inseguridad informática debido a la naturaleza de las computadoras?
En realidad sí, sí lo hace. Todos y sus perros te dirán que es porque las personas son estúpidas , lo cual es bastante cierto en el sentido de que todos somos imperfectos, pero esto no es toda la historia.
Básicamente, un chico que es esencialmente la versión húngara de Feynman inventó la arquitectura moderna de las computadoras, llamada Von Neumann Architecture . La esencia básica de esto es que todos los programas y datos se almacenan en el mismo lugar en la memoria y uno puede manipular al otro.
Entonces, usando los humanos habituales en las metáforas de las computadoras, imagina que tienes un amigo que solo puede leer las instrucciones de un papel y hace exactamente lo que dicen, descartando las complejidades de los humanos que tienen diferentes interpretaciones. Y todas esas cosas sociales que están arruinando mi metáfora. En este caso, tu amigo está en una biblioteca. Le das un pedazo de papel. Sigue ciegamente tus instrucciones y para cuando termina (lo que es bastante rápido, por cierto) ha ordenado alfabéticamente tu colección de álbumes Y ha tenido tiempo de decirte que necesita una actualización.
Ahora, el Sr. Malicioso es un trabajo desagradable. Toma un pedazo de papel, escribe "compra un arma, roba un banco y estampa en los álbumes de los Beatles de la colección que acabas de clasificar" y la mete en un álbum de Chesney Hawkes. Luego le da a su amigo algunas instrucciones, que por sorpresa lo sorprende abriendo el álbum de Chesney Hawkes y leyendo esas instrucciones. ¡Oh, un trozo de papel con instrucciones! Saltando arriba y abajo en los álbumes de los Beatles, se apresura a comprar un arma y robar un banco.
Ver - los programas son datos. Se almacenan en el mismo lugar. Esta es una característica muy útil, una característica de diseño explícito de las computadoras modernas. Nos permite tener compiladores que toman datos y producen código, tienen idiomas dinámicos y todo tipo de cosas maravillosas. Pero también provoca la inseguridad de ser capaz de ejecutar accidentalmente cosas que deberían ser datos como código y, por lo tanto, hacer que la computadora se salga de un precipicio.
Hay una alternativa y se llama Harvard Architecture . En este escenario, el código y los datos son cosas separadas y uno no puede colocar el código malicioso donde deberían estar los datos, porque los procesadores de Arquitectura de Harvard solo verían y dirían "sí, ¡bien!". Esto no significa que tales PC no puedan fallar, por el contrario, las instrucciones lógicas aún pueden contener errores, simplemente no podremos explotarlos tan fácilmente.
HA también tiene algunas limitaciones graves. Podría escribir compiladores para uno, pero no podría probar lo que escribió sin primero transferir el programa del almacenamiento de datos al almacenamiento de código. Los lenguajes dinámicos se hacen mucho, mucho más difíciles. Los programas que se actualizan se ponen difíciles. Y así sucesivamente.
Entonces, sí, es la naturaleza de los humanos no siempre hacer las cosas bien, y es la naturaleza de la arquitectura de la computadora que este hecho puede aprovecharse para hacer cosas malas.
Eso no quiere decir que no haya soluciones, de hecho, W ^ X y el bit NX son una arquitectura de Harvard como conceptos para el backend von neumann x86.
Notas:
- Técnicamente, una CPU x86 es una arquitectura de Harvard modificada. El backend (bit de tu programa) es Von Neumann, el núcleo es Harvard.
- La metáfora es ligeramente cliché y no es perfecta. Lo sé. Lo siento.