È un modo sicuro per verificare le chiavi pubbliche?

6

Voglio verificare una chiave pubblica come questa:

  1. Alice genera una coppia di chiavi pubblica / privata per la crittografia
  2. Alice genera una coppia di chiavi pubblica / privata per la firma
  3. Alice firma una parola casuale di 4 lettere + la chiave di crittografia pubblica utilizzando la sua chiave privata di firma
  4. Alice invia le sue chiavi pubbliche (entrambe) e la firma a Mario
  5. Alice invia la parola di 4 lettere a Bob utilizzando un metodo sicuro e affidabile
  6. Bob verifica la chiave di crittografia pubblica di Alice verificando che la firma venga creata con la parola di 4 lettere come descritto sopra.

Questo è quello di cui non sono sicuro:

  1. È sufficiente una parola di 4 lettere?
  2. La verifica della firma verifica che la chiave pubblica sia la chiave originale e non sia stata alterata da un "uomo nel mezzo", quando il messaggio originale è il segreto?

Sfondo: voglio archiviare lo scambio di risparmi di chiavi pubbliche tra le parti. Ma non ci sono autorità fidate di terze parti su cui fare affidamento.

Ma invece le due parti si incontreranno di persona all'inizio. In quel momento si fidano l'un l'altro completamente. Una parte può dare all'altra un segreto (ad esempio su un foglio di carta).

Naturalmente in teoria l'altra parte potrebbe restituire qualcosa. Ma per ragioni di facilità d'uso, voglio evitare questo.

Ovviamente l'impronta digitale della chiave pubblica potrebbe essere il segreto. Ma ancora, per renderlo user friendly, voglio rendere il segreto il più breve possibile.

    
posta Nathan 18.12.2015 - 16:47
fonte

1 risposta

4

1. Una parola di 4 lettere è sufficiente?

Non importa per quanto tempo la parola è finchè può essere considerata unica e viene tenuta segreta. Un attaccante che firma la sua chiave pubblica con un sacco di sequenze casuali di 4 lettere in cui una di esse contiene la sequenza corretta è improbabile che riesca a superare la quantità di combinazioni casuali che rendono l'attacco piuttosto ovvio.

2. Verifica la firma verifica che la chiave pubblica sia la chiave originale e non sia stata alterata da un "uomo nel mezzo", quando il messaggio originale è il segreto?

Se la firma è valida, sicuramente sai che il proprietario della chiave privata (coppie di firme) che conosce anche la sequenza segreta di 4 lettere ti dà una chiave pubblica, nient'altro. Non controlla se la chiave all'interno è un certificato valido, se la sequenza di 4 lettere è corretta o che questa è la chiave pubblica corretta (il proprietario della coppia di chiavi di firma può firmare ciò che vuole).

Ora immaginiamo di avere un Man-in-the-Middle (MITM) al punto 4, quando Alice trasferisce le chiavi pubbliche e la lettera a 4 lettere firmata a Bob. Non essendoci CA e supponiamo che Bob non possa distinguere il certificato di Alice dal certificato del MITM, il MITM potrebbe semplicemente sostituire le chiavi pubbliche con le proprie, leggere la parola di 4 lettere e firmare la stessa parola con la propria chiave pure. Una parola firmata è facilmente accessibile, quindi al momento della sua spedizione il MITM può semplicemente leggerlo e usarlo per sostituire tutti i dati futuri ed essere autenticato da Bob. Pertanto, questo non è un modo sicuro per verificare le chiavi pubbliche.

Soluzioni possibili

  • Scambiare un hash (sha1 fe) dell'impronta digitale al punto 5. Può ancora essere considerato abbastanza sicuro se Bob memorizza solo le lettere iniziali e finali dell'hash come sarebbe impossibile per un MITM creare un certificato di cui l'hash delle impronte digitali inizia e termina esattamente con le stesse coppie di lettere.
  • Utilizza la crittografia simmetrica. Metti il tuo certificato pubblico in un archivio protetto da password (zip f.e.) e cambiala.

A proposito, non hai bisogno di due coppie di chiavi, puoi firmare & criptare con le stesse chiavi.

    
risposta data 18.12.2015 - 17:18
fonte

Leggi altre domande sui tag