El código fuente es "más seguro" de las siguientes maneras:
- Plantar una puerta trasera discreta en el código fuente (a diferencia del código binario) es difícil, en proporción con la cantidad de personas que revisan el código fuente.
- Muy pocos virus infectarán automáticamente el código fuente.
La primera forma no es una garantía fuerte. En primer lugar, ya que está imaginando un autor hostil, entonces debe considerar las formas en que ese autor podría darle a usted un código fuente específico con una puerta trasera, distinta del código fuente visto por todos los demás. Por lo tanto, el conjunto de personas que están en posición de revisar la fuente que está a punto de compilar puede reducirse a una sola persona, es decir, usted. En ese caso, si usted , personalmente, no está dispuesto a realizar una revisión completa del código fuente, la compilación del código fuente no lo hará más seguro que usar un binario, al menos contra un autor hostil que Quiere plantar una puerta trasera.
En segundo lugar, las puertas traseras y otras vulnerabilidades son errores. Se ha demostrado ampliamente que ninguna revisión de código puede detectar todos los errores, incluso los muy graves, incluso para los errores que son errores honestos. Si no podemos descubrir de manera confiable los errores que son producto de la mera mala suerte y la falta de atención, ¿cómo podemos esperar reconocer los errores creados intencionalmente por un atacante supuestamente inteligente que intenta evitar la detección?
Una referencia clásica que debe leerse es Conferencia sobre el premio Turing de Ken Thompson . Para una historia más reciente, vea todo el drama sobre el supuesta puerta trasera en la implementación IPSec de OpenBSD , que resultó ser (oficialmente) un fracaso. Si bien en este último caso parece que no hubo una puerta trasera real (no me he comprobado), destaca el hecho de que plantar una puerta trasera en un PRNG sutilmente defectuoso parece altamente posible, incluso como código fuente que está a la vista de muchas personas.
Al final, es una cuestión de riesgo . Desde el punto de vista del atacante, poner la puerta trasera en el código fuente es arriesgado: si dicho código fuente está ampliamente disponible, entonces el riesgo de ser atrapado es mayor; mientras que una puerta trasera en código binario es mayormente segura, nuevamente, para el atacante. Confiar en que el código fuente sea más seguro para usted significa confiar en la racionalidad del atacante , es decir, usar el código fuente porque cree que el atacante no estaría lo suficientemente enojado como para correr el riesgo de poner La puerta trasera en el código fuente visible.
La protección contra virus probablemente tenga un valor práctico más alto, al menos en los binarios para Windows. Al utilizar el código fuente, es inmune a la mayoría de los virus que pueden ejecutarse en la máquina del autor del software (pero, por supuesto, no contra el virus en su propia máquina, pero estos ya están ahí).