Esiste un modo per negoziare un segreto tra 2 parti senza conoscenza preliminare?

8

C'è un modo per 2 parti di negoziare un segreto condiviso (ad esempio una chiave di sessione) senza avere una conoscenza precondivisa?

SSL lo fa utilizzando la crittografia asimmetrica. C'è un altro modo per ottenere questo risultato senza l'uso di PKI?

    
posta paan 30.04.2011 - 08:47
fonte

2 risposte

8

C'è Diffie-Hellman (che può anche usare SSL), ma questo è sicuro solo se un utente malintenzionato non può eseguire attacchi attivi, o le parti possono essere autenticate reciprocamente.

    
risposta data 30.04.2011 - 08:53
fonte
6

Esistono numerosi protocolli di accordi chiave utilizzati per stabilire un segreto condiviso, ad es. Diffie-Hellman. Il vero problema è: un segreto condiviso, sì, ma con chi?

Nel mondo dei computer, l'identità è conoscenza. Vuoi condividere un segreto con Bob ma non con nessuno che si atteggia a Bob: quindi, Bob deve essere in grado di "fare qualcosa" che Charlie non può; altrimenti, non li distinguerai in modo affidabile. Tutti hanno gli stessi computer, quindi "essere in grado di fare qualcosa" equivale a "conoscere alcune informazioni riservate".

Con SSL, vengono utilizzati i certificati, il che significa che esiste una crittografia asimmetrica. Bob è distinto da Charlie (dal tuo punto di vista) perché Bob conosce la chiave privata corrispondente alla chiave pubblica che è nel certificato (e Charlie non conosce quella chiave segreta).

Per riassumere: se tu e Bob conoscete un segreto condiviso, potete usarlo per autenticarsi l'uno con l'altro. Altrimenti, se Bob conosce un segreto non condiviso, questo segreto è una chiave privata in una coppia di chiavi pubblica / privata; quindi il problema diventa: come fai a sapere che la chiave pubblica che stai per usare è davvero quella di Bob? PKI è un modo per farlo, con l'aiuto di una "autorità" che esegue il collegamento tra l'identità di Bob (che non fa parte del mondo dei computer) e la chiave pubblica di Bob (che è nel mondo dei computer).

"PKI" è un termine ampio e copre una situazione degenerata, in cui tu sei la tua PKI. Cioè, conosci Bob una volta, e ti dà la sua chiave pubblica (o un suo hash); in seguito, usi questa conoscenza per assicurarti di utilizzare la chiave "giusta" di Bob. Ecco come funziona SSH .

    
risposta data 30.04.2011 - 20:02
fonte