Hay muchas posibilidades.
Algunos formatos de archivo, como el PDF descrito por Keith, y Authenticode para los ejecutables de Microsoft Windows, colocan la firma en el archivo pero hacen que no se cubra a sí mismo, y tal vez no también otros datos no críticos.
Algunos formatos de archivo o mensaje, como XMLdsig y opcionalmente S / MIME CMS / PKCS7 y PGP, colocan los datos y la firma en una estructura de archivos más grande para que puedan separarse fácilmente, la firma verificada y los datos ( sin la firma) utilizada. El código de Java utiliza el formato JAR de Java, que es un archivo ZIP ligeramente modificado: cada clase (u otro recurso) es una entrada en el archivo JAR, los resúmenes de todas las clases se enumeran en el manifiesto, que también es una entrada en el archivo JAR. y la firma del manifiesto más los certificados relacionados se almacenan en dos entradas adicionales en el archivo JAR.
Algunas veces las personas simplemente colocan la firma en un archivo separado que está vinculado al archivo de datos; S / MIME CMS / PKCS7 y las firmas 'separadas' de PGP hacen esto. Por ejemplo, un sitio de descarga de software puede tener un archivo llamado superwondergizmo-1.2.3.tar
y su firma en un archivo llamado superwondergizmo-1.2.3.tar.sig
(o, a veces, ...asc
para "blindado", también conocido como ASCII PGP). En Windows moderno con NTFS, podría tener sentido utilizar un flujo complementario para almacenar la firma, pero nunca he visto a nadie hacerlo; de manera similar para MacOS con la bifurcación de recursos; pero esos no suelen funcionar para transfer , lo que a menudo es importante en la actualidad.