Stabilire un canale sicuro con autenticazione reciproca in base a chiavi pubbliche pre-condivise

2

Supponiamo di avere un sistema in cui le parti sono identificate dalla loro chiave pubblica (con un algoritmo di chiave asimmetrico preselezionato). Supponiamo che io abbia un PUB1 partito che vuole stabilire un canale sicuro con un PUB2 partito. Ciò significa necessariamente che PUB1 di partito ha già la chiave pubblica di PUB2.

Dato un mezzo non affidabile con possibilità di MITM, come possono le parti stabilire un canale sicuro (niente intercettazioni, nessun MITM) mentre si autenticano reciprocamente come la parte che possiede i segreti PRIV1 / PRIV2 che corrispondono all'identità PUB1 / PUB2?

Comprendo che Diffie-Hellman con le chiavi pubbliche può fare esattamente questo - è corretto? Esistono implementazioni standard per .NET che hanno il supporto integrato per questa modalità operativa?

    
posta RomanSt 03.07.2012 - 10:46
fonte

3 risposte

2

Sì, Diffie-Hellman con chiavi pubbliche precondivise fornisce un canale con autenticazione reciproca. Tuttavia, se lo si utilizza, si sarà colpevoli di utilizzare la propria implementazione crittografica e in parte il proprio protocollo crittografico, che non è un peccato quasi quanto l'utilizzo del proprio algoritmo crittografico, ma ancora meglio evitato. A meno che tu non abbia una buona ragione per non farlo, usa SSL (con certificati autofirmati pre-condivisi o per una maggiore flessibilità con i certificati firmati da una CA interna).

    
risposta data 03.07.2012 - 14:28
fonte
1

Per autenticare il messaggio, è sufficiente che PUB1 crittografi il messaggio inviato con la sua chiave privata e lo aggiunga alla fine del messaggio in testo semplice. PUB2 utilizzerà la chiave pubblica di PUB1 per decrittografare il ciphertext aggiunto per confermare l'identità di PUB1.

Se si desidera stabilire un canale sicuro per il trasferimento dei dati, è possibile utilizzare un algoritmo chiave asimmetrico per stabilire una chiave da utilizzare in un algoritmo a chiave simmetrica. - aka Hybrid Cryptosystems .

Non ho esperienza personale con l'implementazione .NET, quindi non posso commentare su questo.

    
risposta data 03.07.2012 - 12:12
fonte
1

Sì e no, lo scambio di chiavi Diffie-Hellman non fornisce alcuna autenticazione.

Tuttavia, solo la chiave corrispondente crittografa / decrittografa i dati, la sezione chiave pubblica su Wikipedia sta dicendo come aggiungere tali abilità. In pratica manda un messaggio casuale crittografato con una chiave pubblica all'altra parte che lo decifra (dimostrando che ha la chiave privata) e lo ricodifica con la chiave pubblica dei mittenti originali e lo rimanda, suggerisco di ripeterlo al contrario, quindi fai Diffie-Hellman come normale per ottenere le chiavi di sessione simmetriche.

    
risposta data 03.07.2012 - 13:30
fonte

Leggi altre domande sui tag