No hay forma de que ninguna herramienta criptográfica de ningún tipo proteja un archivo contra alteraciones. En el mejor de los casos, estas herramientas harán que la alteración detectable sea de una manera que una entidad hostil no podrá ocultarse.
"Detectable" significa que será detectado por alguien. Dependiendo de quién quieras que sea alguien, se deben aplicar varias herramientas. Una MAC se calcula con una clave secreta, y la clave same se usa para verificarla; por lo tanto, si usa un MAC, entonces quienquiera que pueda verificar que el archivo no se haya modificado también tiene toda la potencia técnica necesaria para alterar el archivo y evitar la detección. Si desea que los verificadores sean distintos de los probadores (el "prover" es el que dice " este es el archivo correcto" en primer lugar), entonces necesitará firmas digitales .
Nada de esto evitará que un pirata informático que haya tomado el control de su servidor modifique el archivo en el servidor. En el mejor de los casos, los usuarios que descargan el archivo y verifican que la firma puede notar que algo anda mal. Además, las firmas en archivos requieren algunas herramientas para verificarlos. Esto se puede hacer de manera relativamente fácil en archivos PDF porque el formato PDF incluye disposiciones para las firmas y el lector de PDF habitual, a saber, Acrobat Reader de Adobe, incluye el código necesario. Todavía requiere cierta educación del usuario, de modo que los usuarios se alarmen si el PDF que descargan no está firmado.
Para evitar que un pirata informático modifique el archivo en el servidor, olvide toda esta charla sobre firmas, MAC y whatsnot; solo asegúrate de que tu servidor no pueda ser secuestrado por un forastero. Este es el ámbito de la administración del sistema, las vulnerabilidades y los parches, y los cortafuegos. Para evitar alteraciones en tránsito , simplemente haga que su servidor use SSL (es decir, "HTTPS").