Creo que lo que te falta en el razonamiento es la importancia de la redundancia. Usted dice que si necesita confiar en un sistema externo o en un medio externo en el que confía para almacenar las sumas de comprobación, ¿por qué no almacenar los archivos allí y olvidarse de la integridad, ya que ese sistema o medio será de confianza de todos modos? La cuestión es que no tiene que confiar en un sistema o en un medio, sino que debe confiar en la "redundancia", es decir, el hecho de que es menos probable que los datos se comprometan al mismo tiempo en varios sistemas diferentes o medios de comunicación.
Entonces, lo que tienes que hacer es esto:
- Tenga sus archivos y sus sumas de comprobación en el sistema o medio A.
- Tenga sus archivos y sus sumas de comprobación en otros sistemas o medios, B, C, D, etc. como copias de seguridad, tantas como desee. Cuantas más copias de seguridad tenga, más redundancia y mayor será la probabilidad de detectar alteraciones. Tenga en cuenta que necesita reducir la probabilidad de que todos los datos se vean comprometidos al mismo tiempo, por ejemplo, podría mantener A y B en diferentes lugares, etc.
- Para verificar la integridad en A, calcule las sumas de comprobación de todos los archivos y luego haga un
diff computed_checksums.txt stored_checksums.txt
. Si la integridad está bien, diff no debe reportar diferencias. Haga lo mismo con los otros sistemas o medios, B, C, etc.
- Ahora acaba de verificar la integridad simplemente confiando en las sumas de comprobación almacenadas en el mismo sistema o medio. Pero, ¿cómo puede asegurarse de que las sumas de comprobación sean confiables? Fácil: solo calcule la suma de comprobación de las sumas de comprobación almacenadas en A (como
sha256sum checksums_stored_on_A.txt
), luego haga lo mismo en B, C, etc. Si la suma de comprobación resultante es la misma, significa que todos los archivos de la suma de comprobación son iguales. Se puede confiar en ellos porque confía en el hecho de que es poco probable que todos se hayan comprometido de la misma manera en diferentes sistemas o en diferentes medios. Si una o más de las sumas de comprobación resultantes son diferentes de las demás, entonces, por supuesto, debe averiguar qué copias de seguridad son realmente seguras y cuáles han sido comprometidas.
Un par de notas:
Sistemas infectados. No se garantiza que este método funcione en teoría si está utilizando un sistema infectado para administrar sus archivos, conectar medios externos, calcular sumas de comprobación, etc. La razón es que en teoría no se puede confiar en el sistema infectado, por lo que incluso el comando sha256sum
podría verse comprometido, o cp
, o bash en general, etc. Para reducir la probabilidad de problemas relacionados con un sistema infectado, puede verificar la integridad en diferentes sistemas, tal vez incluso ejecutando diferentes sistemas operativos, etc.
Verificación de sumas de comprobación. ¿Por qué verifico las sumas de comprobación utilizando diff computed_checksums.txt stored_checksums.txt
, en lugar de sha256sum -c stored_checksums.txt
? Esto se debe a que sha256sum -c stored_checksums.txt
solo verificará los archivos enumerados en stored_checksums.txt
y no se asegurará de que cada archivo en su copia de seguridad tenga una suma de comprobación correspondiente para verificar. En otras palabras, si un archivo malicioso se agrega a su copia de seguridad, con sha256sum -c stored_checksums.txt
nunca lo sabrá. Por otro lado, si utiliza mi método con diff
, el archivo agregado se mostrará: estará en las sumas de control calculadas, pero no en las sumas de comprobación almacenadas.