Este es un tipo de experimento mental relacionado con la seguridad. En una conversación (algo rara) que tuve recientemente, discutimos las formas en que un archivo podría mantenerse igual, incluso cuando los usuarios malintencionados intentan editarlo. Para el propósito de esta discusión, podemos suponer que el acceso del "atacante" al archivo no puede ser restringido, y el archivo no puede ser de solo lectura. Una idea que se sugirió fue tener un programa que sobrescribiera continuamente los valores. Esto planteó la pregunta de qué impide que el atacante altere esos programas, lo que llevó a una sugerencia que me gustaría analizar un poco.
La idea es tener algunas copias de un programa en ejecución. Cada programa contiene el archivo deseado en su código fuente, junto con una suma de comprobación de sí mismo (incluido el archivo) para que, en teoría, pueda detectar modificaciones en sí mismo o en otra copia de sí mismo. El programa existe en varias ubicaciones en el disco. El programa se compara con la suma de comprobación y finaliza si hay una falta de coincidencia. A continuación, busca una de las otras versiones, verifica sus valores y su suma de control, y si alguna de ellas está equivocada, finaliza ese programa y lo sobrescribe con una copia de sí mismo. A continuación, cuenta el número de instancias de programa que se ejecutan y, si es demasiado pequeño, escribe otra copia en el disco y lo ejecuta. Mientras tanto, otra instancia del programa está haciendo lo mismo con esta instancia, mientras que otra hace lo mismo con esa instancia, y así sucesivamente. La idea es que si el archivo es pequeño, el programa puede ser pequeño, y todo esto sucederá con relativa rapidez, por lo que la posibilidad de que un atacante pueda modificar con éxito todas las copias, en la memoria y en el disco, simultáneamente, antes de la malla. De los programas detecta y sobrescribe las ediciones, es muy pequeño. (A los fines de esta discusión, por varias razones, el atacante no puede terminar los programas).
¿Hay alguna forma de cambiar ese archivo si solo tiene acceso al disco? Digamos que es una unidad compartida, por lo que puede acceder a los archivos en el disco (incluido el archivo que estamos tratando de proteger y los binarios de los programas que protegen) pero no puede acceder a la memoria RAM de la máquina y no puede ejecutar o detenga los programas que se ejecutan en esa máquina (aunque puede ejecutar lo que quiera en su propia máquina). ¿Hay alguna forma de alterar ese archivo para que un programa que lo lea obtenga de manera confiable los valores que insertó y no los originales?