Come potrei fornire una chiave di crittografia a una sola persona?

3

Diciamo che ho un messaggio crittografato. Voglio farlo in modo che qualcuno sia in grado di decodificarlo. L'unico modo per darlo a loro è online. Ai fini di questa domanda, non posso chiamare, spedire o incontrarli di persona.

Voglio assicurarmi che solo loro siano in grado di decodificarlo. So che il metodo di comunicazione (qualunque cosa tu voglia che sia) non è monitorato ancora , ma il messaggio potrebbe essere letto in qualsiasi momento. Come lo farei?

    
posta Jon 23.12.2013 - 08:57
fonte

7 risposte

9

La risposta alla tua situazione, presentata così com'è, è che è impossibile a meno che tu non faccia alcuni presupposti.

Hai due problemi da risolvere perché funzioni. Per questo esempio, userò Alice e Bob come esempi.

  1. È necessario che Alice e Bob si scambino le chiavi in modo sicuro. Questo è il problema facile . Qualsiasi metodo di scambio di chiavi come Diffie-Hellman o RSA farà.

  2. Alice ha bisogno di per sapere che sta eseguendo lo scambio di chiavi con Bob. Questo è il problema difficile che è impossibile da raggiungere nel tuo scenario senza fare alcune ipotesi. Esaminiamo alcune delle opzioni che abbiamo.

    • Bob pubblica una chiave pubblica che Alice utilizzerà per crittografare la chiave di crittografia con. Tuttavia, come avrebbe fatto Alice a sapere che questa chiave pubblica appartiene a Bob? Storicamente, ci sono due modi per farlo.

      1. X.509 certificati. Lo standard X.590 è un modello di fiducia centralizzato in cui è necessario affidarsi a un'autorità di certificazione per verificare l'identità di Bob. Alice deve fidarsi dell'autorità di certificazione che questa particolare chiave pubblica appartiene a Bob e non un malintenzionato. Questo è il modello utilizzato in TLS / SSL .

      2. PGP / GnuPU . PGP utilizza un modello di fiducia decentralizzato comunemente indicato come Web of Trust. Funziona facendo in modo che molti utenti diversi firmino la chiave pubblica di Bob, essenzialmente approvando che la particolare chiave pubblica appartiene a Bob. In questo modello, Alice deve confidare che solo il reale Bob è in grado di raccogliere abbastanza testimonianze dagli utenti.

    • So che la tua domanda presuppone che non ci sia un mezzo fuori banda per Alice per verificare l'identità di Bob. Nella speranza di rendere questa risposta più completa, parlerò un po 'anche di questa situazione. Se Alice può incontrare Bob anche solo una volta, la situazione diventa molto più facile. Alice e Bob possono semplicemente scambiare le chiavi pubbliche tramite un mezzo come unità USB e utilizzare le chiavi pubbliche per crittografare ulteriori comunicazioni.

In sostanza, ciò che stai chiedendo è un Infrastruttura a chiave pubblica . Come al solito, non reinventare la ruota al di fuori degli scopi accademici. Utilizzare in pratica TLS / SSL o PGP / GnuPG.

    
risposta data 23.12.2013 - 11:52
fonte
2

È possibile utilizzare qualsiasi protocollo di scambio di chiavi. Molto probabilmente lo scambio di chiavi Diffie-Hellman key viene utilizzato per lo scambio di chiavi su Internet.

    
risposta data 23.12.2013 - 09:24
fonte
2

Per sapere che stai dando la chiave di crittografia alla persona giusta, dovrai elaborare una qualche forma di autenticazione che ti dica che il destinatario è chi pensi che sia.

Questo può spesso essere fatto con PKI - il ricevente può registrarsi con un fornitore di certificati, verificare le sue credenziali, ottenere un certificato firmato e inviarti il suo certificato. Il certificato includerà una chiave pubblica, che (se configurata correttamente) può essere utilizzata come chiave di crittografia asimmetrica. Criptare la chiave di crittografia simmetrica con la chiave pubblica del destinatario e inviarla a lui. Può quindi usare la sua chiave privata per decodificarlo. Come unica persona che detiene questa chiave privata, è l'unica persona che può ottenere la chiave di crittografia per il tuo messaggio.

La limitazione qui è che il tuo punto di fiducia (il fornitore di certificati PKI) è valido solo quanto il meccanismo di autenticazione. Se il tuo collega vive in un igloo al Polo Nord e non può avere alcun contatto con gli umani, i suoi mezzi di autenticazione saranno limitati alle cose che ha con sé nell'igloo - presumibilmente la sua connessione Internet e il suo portafoglio. Potrebbe essere in grado di inviare una scansione della patente di guida o del passaporto o una copia fisica della sua firma. Potrebbe conoscere alcune informazioni su se stesso che solo lui poteva sapere. Questo lo qualificherebbe per una specie di PKI di fascia bassa (credo, ad esempio, si possa ottenere un certificato da GoDaddy in queste condizioni). Altre forme di provisioning dei certificati possono richiedere la visualizzazione di persona a un agente qualificato che verificherà che assomigli al passaporto e che siano approvati altri mezzi di verifica. Questo funziona bene per una situazione normale in cui tu e il tuo collega potreste non essere in grado di parlare fuori banda, ma il vostro collega non è necessariamente in un igloo.

Protocolli come TLS possono funzionare anche - sta usando una stretta di mano con uno scambio di chiavi che consente la comunicazione sicura tra due punti - l'unica sfida è sapere per certo che hai fatto una connessione TLS al destinatario e non un uomo nel mezzo .

    
risposta data 23.12.2013 - 17:16
fonte
1

Sembra che tu possa utilizzare il protocollo Transport Layer Security (TLS) che è resistente a qualsiasi ascolto in ascolto del canale . Fai in modo che l'altra parte ti invii il suo certificato e lasci che TLS si occupi di tutto il resto.

L'utilizzo dell'autenticazione unilaterale con l'altra parte (diciamo Bob) che agisce come server dovrebbe essere sufficiente per il tuo scenario. Se l'altra parte non ha accesso alla chiave privata corrispondente del certificato, non sarà in grado di decodificare la chiave pre-master (inviata dall'utente, crittografata con la chiave pubblica del certificato) e l'handshake TLS avrà esito negativo. Se si sceglie di utilizzare Diffie-Hellman (DH) nell'handshake TLS, offre una perfetta segretezza in avanti - le comunicazioni passate sono ancora al sicuro anche se qualcuno in qualche modo ha scoperto la chiave privata di Bob.

Tuttavia, è ancora necessario un meccanismo di autenticazione per garantire che il certificato appartenga effettivamente a Bob e non a qualcun altro. Pertanto, Bob non può utilizzare un certificato autofirmato. Dovrà registrare il suo certificato con un'autorità di certificazione che idealmente verificherà la sua identità per te.

    
risposta data 23.12.2013 - 10:26
fonte
0

La capacità di fare ciò dipende dalla possibilità di verificare l'identità del soggetto attraverso le comunicazioni che fai. È possibile utilizzare un protocollo di scambio di chiavi per garantire che ogni punto finale di una comunicazione sia l'unico ad avere una chiave condivisa, tuttavia è necessario un modo per verificare che non ci sia un uomo nel mezzo con una connessione aperto sia ad Adam che a Bob.

In teoria, potresti combinare la risposta alla sfida con la chiave di sessione concordata tra le due parti e quella hash. Scambiando l'hash verificherei in teoria che la connessione sia corretta fintanto che lo scambio di chiavi deriva la chiave condivisa sulla base di informazioni determinate da entrambe le parti (cioè, l'attaccante non può forzare entrambe le sessioni A e Bs a usare la stessa chiave) e il l'hash non può essere facilmente invertito. L'utente malintenzionato non conoscerà mai la risposta effettiva per rispondere alla sfida, quindi non sarebbe in grado di creare l'hash per la seconda parte della comunicazione.

Si noti che ci possono essere altre debolezze crittografiche qui e ci sono molti potenziali problemi che potrebbero essere eseguiti, tuttavia questo è l'unico modo in cui posso pensare anche per risolvere il problema come affermato. Se non hai una risposta pre-condivisa che possa comunque autenticare l'identità della persona, allora sei sfortunato.

    
risposta data 23.12.2013 - 17:51
fonte
0

Vorrei utilizzare i certificati di posta elettronica gratuiti disponibili, ad esempio, comodo.com. Entrambe le parti devono ottenere e installare il certificato nel proprio client di posta elettronica. È quindi possibile crittografare l'e-mail al mittente specifico una volta che lui / lei ha inviato una e-mail con firma digitale. Questo si autentica all'indirizzo email. Se non ti puoi fidare dell'indirizzo email, allora hai alcuni dei problemi descritti nelle altre soluzioni e non posso aiutarti. Il messaggio crittografato potrebbe essere inviato come allegato o inserito altrove sul Web accessibile a entrambe le parti. Come descritto in altre soluzioni, utilizza PKI basato sull'autenticazione degli indirizzi e-mail. Ti stai fidando del client di posta elettronica e del generatore di certificati per autenticare l'altra parte per te perché autenticano l'indirizzo email inviando un'e-mail che richiede una risposta.

    
risposta data 23.12.2013 - 19:25
fonte
0

Dici di volere assicurarti che il tuo amico sia l'unico a ricevere la chiave, ma non hai fornito alcun modo per determinare chi è . Dici che non puoi chiamare o incontrarti di persona, ma la sua identità di persona è l'unico modo per conoscerlo. Vuoi comunicare con lui solo online, ma non sai chi è online.

Se disponi di una stretta di mano segreta condivisa prestabilita, di una bussata segreta, di una password segreta o di altre caratteristiche identificative, allora può essere sfruttato online per portare all'identificazione. Ma così com'è, il tuo amico si distingue da chiunque altro. In effetti, come potrebbe sapere che lo stai contattando se non puoi coordinarti con lui?

L'intero potenziale cliente non è un buon inizio.

    
risposta data 23.12.2013 - 19:33
fonte

Leggi altre domande sui tag