Innanzi tutto, come sottolinea @WhiteWinterWolf, questo è uno schema di firma digitale. La firma digitale ha lo scopo specifico di assicurarsi che il messaggio provenga da te, non da qualcun altro, e non sia stato modificato da quando è stato firmato. Senza andare in matematica, ecco come funziona:
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
Le firme crittografiche sono utilizzate dappertutto. Vengono utilizzati nei certificati X.509 (come quelli utilizzati da SSL / TLS) per verificare che il certificato sia stato emesso da un'autorità attendibile e non sia stato manomesso. Sono utilizzati in e-mail sicure, per assicurarsi che il destinatario sappia che il mittente della posta non è stato falsificato. Vengono utilizzati con file firmati, in genere binari eseguibili, in modo che l'autore del file sia noto. Sono solo alcuni degli usi comuni.
Ora, con quello detto, chiariamo qualcosa:
La crittografia, in generale, NON fornisce autenticazione (prova dell'identità della fonte del messaggio) o integrità (conferma che il messaggio non è stato manomesso); solo riservatezza (chiamato anche privacy o segretezza). Se si cripta un messaggio, ma non lo si firma (o si fornisce qualche altra forma di verifica), un utente malintenzionato può prendere il messaggio crittografato e manipolarlo, cambiando il significato anche se l'autore dell'attacco non sa quale sia il testo originale. Il destinatario del messaggio può quindi decifrare il messaggio e potrebbe non avere idea di essere stato manomesso.
Per alcune cose, questo non è molto significativo; un aggressore che ritrae il testo inglese che non conosce il contenuto di ciò produrrà parole senza senso. Per altre cose, però, può essere molto importante. Non fare affidamento sulla crittografia per verificare da dove proviene un messaggio! (Avvertenza: se si utilizza uno schema di "crittografia autenticata", che include i controlli di integrità e, se nessun altro ha la chiave, fornisce anche l'autenticazione. Non si dovrebbe assumere che la crittografia fornisca queste cose, tuttavia; del tempo no.)