Federico Lelli / SchoolCrittografia

LABORATORIO · OSSERVA LE GARANZIE

La verifica diventa visibile

Non una simulazione del risultato: questi tre esperimenti usano le operazioni crittografiche offerte dal browser tramite Web Crypto. Non richiedono account e il codice del laboratorio non invia i dati in rete.

Prerequisiti: lezioni 06, 07 e 10. Usa messaggi di prova. Le chiavi restano nel contesto della pagina: ricaricarla o passare a un altro materiale le perde. Il laboratorio non è un formato per archiviare segreti reali.

Verifica della disponibilità delle API crittografiche…

1. Stessi byte, stessa impronta

Il testo viene convertito in byte UTF-8 e passato a SHA-256. L’uscita è mostrata in esadecimale, cioè con le cifre 0–9 e A–F: ogni coppia rappresenta un byte.

Per abc, senza a capo: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Prova: cambia solo a in A, poi torna ad abc. L’impronta cambia nel primo caso e torna identica nel secondo. Non è una firma: non è stata utilizzata alcuna chiave.

2. Cifrare e rilevare una modifica

Al primo uso si genera una chiave AES a 256 bit, non esportabile tramite le normali operazioni Web Crypto. Ogni cifratura usa un nuovo nonce casuale di 96 bit. GCM produce un tag di 128 bit, che il browser aggiunge alla fine del cifrato.

Cifra un messaggio per iniziare.
  1. Cifra e decifra senza cambiare niente: deve riapparire il messaggio originale.
  2. Premi «Altera un byte», poi verifica: l’autenticazione deve fallire.
  3. Cifra di nuovo, cambia solo i dati associati e verifica: anche questo deve fallire.
  4. Cifra due volte lo stesso testo: nonce e cifrati saranno normalmente diversi.
Perché il messaggio di errore non rivela la causa precisa?

Chiave sbagliata, nonce cambiato, tag alterato e dati associati diversi possono far fallire lo stesso controllo di autenticazione. Non si deve utilizzare un eventuale chiaro parziale. Il laboratorio mostra un esito comune per un fallimento del controllo.

3. Firmare non nasconde le parole

Si genera una coppia ECDSA P-256. La chiave privata firma; la pubblica verifica. La firma resta separata dal testo e non lo rende segreto. Questa prova non include certificato, identificazione del titolare o servizio qualificato.

Firma un messaggio per iniziare.

Prova: firma, verifica, modifica «001» in «002», verifica ancora. Poi ripristina il testo e prova un’altra chiave pubblica. Una verifica positiva riguarda sempre la combinazione di messaggio, firma e chiave.

Il confine di questo laboratorio

Le operazioni vengono eseguite nel browser, ma una pagina ostile potrebbe leggere gli input e usare le chiavi disponibili. «Non esportabile» limita l’esportazione tramite API, non rende sicuro un dispositivo compromesso. Nessuna chiave viene salvata dal codice in localStorage; gli eventuali progressi didattici sono gestiti dalla piattaforma School.

Riferimento dell’API: W3C Web Cryptography API. Per ragionare sugli esiti: esercizi con soluzioni.

Materiali didattici curati e rielaborati da Federico Lelli. Le fonti e i riferimenti specifici sono indicati nei materiali disponibili.