Come far rispettare la riservatezza mantenendo l'autenticità?

1

Di seguito è riportata un'illustrazione del processo di firma digitale.

Secondo Wikipedia :

A digital signature is an authentication mechanism that enables the creator of the message to attach a code that acts as a signature.

Supponiamo che il mittente generi private key 1 e public key 1 per generare la firma.

Penso che il mittente invia sostanzialmente il original Data + Certificate (which contains public key 1) + signature al destinatario.

Quindi il ricevitore può:

  1. estrai public key 1 dal certificato
  2. utilizza la chiave pubblica 1 per decrittografare l'hash del messaggio da signature
  3. Utilizza l'hash per verificare original Data .

Ma cosa succede se qualcuno nel mezzo intercetta il messaggio? Può fare tutti uguali come ricevitore. In questo modo verrà visualizzato original Data . Come viene impedito? È impedito dall'utilizzo di un altro paio di chiavi per crittografare original Data ? In tal caso, come viene data la chiave pubblica al destinatario senza essere intercettata?

Penso che sia pericoloso inviare la chiave pubblica insieme al messaggio . Ma anche se non si invia la chiave pubblica insieme al messaggio, l'uomo nel mezzo può ancora intercettare la chiave pubblica e conservarla per un uso futuro.

Quindi, come mantenere entrambi l'autenticità della riservatezza e in un canale pubblico e con tutte le comunicazioni che si verificano solo su quel canale?

    
posta smwikipedia 05.09.2018 - 04:33
fonte

3 risposte

2

Questo è un cattivo diagramma. L'operazione di base non è intrinsecamente sbagliata, almeno per RSA, ma pensare di firmare come "crittografare" e verificare come "decifrare" porterà esattamente al tipo di confusione che si sta esprimendo qui. È molto meglio pensarlo in questo modo:

  • Una chiave pubblica può essere utilizzata per due cose: crittografia e verifica .
  • Una chiave privata può essere utilizzata per due cose: decrittografia e firma .

Oppure, in modo equivalente, puoi dire quanto segue:

  • Puoi utilizzare la tua chiave privata per decodificare un messaggio crittografato da qualcuno con la tua chiave pubblica.
  • Puoi utilizzare la tua chiave privata per firmare un messaggio in modo che chiunque abbia la tua chiave pubblica possa verificare che il messaggio provenga da te.
  • Puoi inviare la tua chiave pubblica a tutti, in modo che possano inviarti messaggi crittografati e verificare i tuoi messaggi.
  • A meno che tu non stia inviando un messaggio segreto a te stesso, o verificando che in realtà sei tu a scrivere un messaggio, non usi mai la tua chiave pubblica da solo.

Nella domanda che hai posto, il MitM non ha bisogno di decodificare nulla, perché il messaggio non è mai stato criptato affatto! Il messaggio (o meglio, un hash di esso) è stato firmato, quindi il MitM non può modificare il messaggio senza rompere la firma, ma il messaggio stesso è in testo semplice.

Se vuoi crittografare (fornire riservatezza) e firmare (fornire autenticità), hai bisogno della tua chiave privata (per la firma) e del destinatario chiave pubblica (per la crittografia). Cioè, prima che Alice possa inviare un messaggio sicuro a Bob, non solo ha bisogno di generare la sua propria coppia di chiavi (per la firma), ha bisogno che Bob abbia entrambi generato la sua propria coppia di chiavi e (verificabile) abbia inviato la sua chiave pubblica a lei (Alice) . Questo è lo schema utilizzato da numerosi schemi di messaggistica sicura, come OpenPGP (incluso GPG) e S / MIME (entrambi focalizzati principalmente sulla sicurezza dell'email end-to-end).

Un'altra opzione è ovviamente quella di criptare usando una chiave simmetrica che hai precedentemente scambiato con il destinatario (una "chiave pre-condivisa") e poi anche generare un codice di autenticazione dei messaggi (MAC) usando quella chiave o un'altra che hai anche scambiato. Questo MAC potrebbe essere basato su hash (un HMAC, che combina una chiave segreta condivisa con un algoritmo di hash sicuro come un membro delle famiglie SHA2 o SHA3), o potrebbe essere derivato dal codice simmetrico stesso, come un tag di autenticazione di un codice a blocchi in Galois / Counter Mode (GCM). Tuttavia, le chiavi simmetriche non hanno componenti pubbliche - non è mai sicuro fare cose come metterle in un certificato pubblico - quindi lo scambio di chiavi è un po 'più semplice (anche se ancora carico!) Quando si usano invece le chiavi pubbliche / private (asimmetriche).

    
risposta data 05.09.2018 - 09:40
fonte
2

Is it prevented by using another pair of keys to encrypt the original Data?

Sì, puoi utilizzare un set di chiavi per la firma e un set di chiavi per la crittografia.

How is this prevented? Is it prevented by using another pair of keys to encrypt the original Data? If so, how is the public key given to the receiver without being intercepted?

Il problema della distribuzione delle chiavi è fondamentale. In pratica, questo problema viene risolto utilizzando una terza parte attendibile denominata autorità di certificazione (CA).

La CA è implicitamente attendibile (perché il produttore ha installato il suo certificato di origine nel computer) e la CA può firmare un certificato di un server Web (ad esempio, google.com) per dimostrare che il certificato appartiene al server Web.

È quindi possibile verificare la firma della CA sul certificato. Questo elimina l'attacco MITM perché il MITM non può ottenere un certificato firmato dalla CA, dicendo che il MITM è, per esempio, google.com.

    
risposta data 05.09.2018 - 05:11
fonte
1

L'autenticazione è solo una parte di ciò che desideri ottenere. Per crittografare un messaggio (e quindi mantenere la riservatezza) su un canale pubblico potresti usare qualcosa come una chiave Diffie-Hellmann scambio . Tieni presente che questo scambio non ha autenticazione di tipo eredit ma puoi ottenerlo "firmando" i messaggi utilizzati nel modo in cui hai citato.

    
risposta data 05.09.2018 - 08:31
fonte

Leggi altre domande sui tag