Quando si firma l'e-mail con GPG, come funziona la verifica da parte del ricevitore?

6

Uso GPG per firmare le mie e-mail in uscita.

Capisco come funziona quando crittografo la posta per inviarla a qualcun altro. Poi ho bisogno della sua chiave pubblica, la crittografia e solo lui può decodificarlo usando la sua chiave privata.

Quello che capisco dalla firma della mia posta in uscita, uso la mia chiave privata per farlo. Il ricevitore non ha bisogno di usare GPG (per leggere la posta), e non ho bisogno della loro chiave pubblica. Suppongo che la mia chiave pubblica sia utilizzata dal ricevitore per verificare se la firma è legittima, ma forse mi fraintendono.

Come possono usare la mia chiave pubblica per verificare che la mia firma sia valida?

    
posta SPRBRN 25.02.2015 - 12:24
fonte

2 risposte

10

Esiste un'associazione univoca tra la chiave pubblica e privata. Ovvero, se il mittente utilizza una determinata chiave privata per firmare un messaggio e tu verifichi la firma utilizzando il pubblico corrispondente, la verifica della firma avrà esito positivo solo se il messaggio non è stato alterato

La procedura di verifica e la natura dell'associazione tra pubblico e privato varia con il crittosistema che stai considerando (RSA, DSA, ecc.), ma la dichiarazione di cui sopra vale per qualsiasi schema asimmetrico.

Ciò che conta davvero è che il mittente è l'unico che può produrre una firma valida perché è l'unico che conosce il privato, ma chiunque conosce il pubblico, quindi chiunque può verificare la firma .

Al momento della firma, GPG aggiunge un token al messaggio di testo che può essere utilizzato per verificare che il messaggio non sia stato alterato durante il transito: questa è la firma. Non hai bisogno che GPG legga il messaggio perché il testo stesso non è crittografato , c'è solo un token extra, che potrebbe essere o un blob codificato con radix64 alla fine del messaggio o un testo allegato con una struttura simile.

GPG non firma direttamente il messaggio², firma un hash crittografico (SHA-1 o SHA-2 in genere). Quello che succede dopo la verifica è che la firma viene verificata usando la chiave pubblica del mittente per assicurarsi che l'hash ricevuto sia stato effettivamente creato dal mittente. Se l'hash calcolato dal mittente è considerato autentico, viene confrontato con l'hash calcolato dal destinatario. Se entrambe le fasi hanno esito positivo, il messaggio viene firmato correttamente.

[¹] in realtà, esiste una possibilità teorica di violare questa regola generando una cosiddetta collisione di hash . Vale a dire, un messaggio diverso con lo stesso hash (vedi l'ultimo paragrafo). Le collisioni sono state generate per MD5, mentre la ricerca per SHA-3, SHA-2 e SHA-1 è considerata non fattibile, anche se il margine di sicurezza nel corso dell'ultimo sta diventando così sottile che è consigliabile smettere di usarlo ora.

[²] per alcuni cryptosystems, come DSA, firmare un hash è l'unica possibilità.

    
risposta data 25.02.2015 - 13:27
fonte
1

Firmare i dati è dimostrare a qualcun altro che ha avuto origine da te. Firmando con la tua chiave privata (che solo tu hai) assicurati che chiunque abbia la tua chiave pubblica possa verificare il messaggio. Non usi la loro chiave pubblica, ma loro hanno la tua.

La firma stessa è un hash crittografico dell'intero messaggio firmato con la chiave privata. Qualsiasi modifica al messaggio genererebbe un hash errato. Poiché il mittente dovrebbe essere l'unico con la chiave privata, nessuno nel mezzo della comunicazione non dovrebbe essere in grado di riprodurre quella firma. Il ricevitore usa calcola il proprio hash, quindi lo confronta con quello che è stato firmato.

Questo è sicuro perché se il messaggio è stato alterato e firmato con una chiave privata diversa, il ricevitore sta ancora tentando di utilizzare la chiave pubblica del mittente originale per decrittografarlo. Ciò genererebbe un valore errato e il messaggio non verrebbe verificato.

    
risposta data 25.02.2015 - 13:27
fonte

Leggi altre domande sui tag