En primer lugar, como señala @WhiteWinterWolf, este es un esquema de firma digital. La firma digital tiene el propósito específico de asegurarse de que el mensaje sea de usted, no de otra persona, y no se haya modificado desde que se firmó. Sin entrar en las matemáticas, así es como funciona:
You have a message that you want the world to know came from you
You have a public/private key pair that supports signing (RSA, DSA, etc.)
You take a cryptographic hash (usually something like SHA-256) of the message
- Like asymmetric encryption, signing schemes work best on small bits of data
You create a digital signature of the hash digest (the output of the hash function)
- This requires your private key
You distribute the message, the signature, and the algorithms (hash and signing) used
Alice has your public key, and wants to confirm that the message is authentic
Alice re-hashes the message, with the same scheme
Alice then uses your public key to turn the signature back into the hash digest
Alice checks if the digest of the message and the digest from the signature match
- This is called verifying a signature
Las firmas criptográficas se utilizan en todas partes. Se usan en los certificados X.509 (como los usos de SSL / TLS) para verificar que el certificado fue emitido por una autoridad de confianza y no ha sido manipulado. Se utilizan en el correo electrónico seguro, para asegurarse de que el destinatario sepa que el remitente del correo no fue falsificado. Se utilizan con archivos firmados, generalmente binarios ejecutables, de modo que el autor del archivo es conocido. Estos son solo algunos de los usos comunes.
Ahora, dicho esto, seamos claros sobre algo:
El cifrado, en general, NO proporciona autenticación (prueba de la identidad de la fuente del mensaje) o integridad (confirmación de que el mensaje no ha sido manipulado); solo confidencialidad (también llamada privacidad o secreto). Si cifra un mensaje, pero no lo firma (o proporciona alguna otra forma de verificación), un atacante puede tomar el mensaje cifrado y manipularlo, cambiando el significado aunque el atacante no sepa cuál era el texto original. El destinatario del mensaje puede descifrarlo y no tener idea de que fue manipulado.
Para algunas cosas, esto no es muy significativo; un atacante que modifique un texto en inglés del que no conoce el contenido producirá un alboroto sin sentido. Para otras cosas, sin embargo, puede ser muy importante. ¡No confíe en el cifrado para verificar de dónde proviene un mensaje! (Advertencia: si utiliza un esquema de "cifrado autenticado", eso incluye comprobaciones de integridad y, si nadie más tiene la clave, también proporciona autenticación. No debe asumir que el cifrado proporciona estas cosas; la mayoría de las veces no lo hace.)