Perché non utilizzare la crittografia simmetrica?

5

Qualcosa di molto semplice: la maggior parte di noi comunica la maggior parte del tempo con persone che già conosciamo. Anche Alice e Bob hanno un contatto fisico. Sì, ci sono casi in cui gli informatori vogliono contattare i giornalisti per la prima volta, ma questa non è la situazione problematica per la maggior parte di noi.

La crittografia simmetrica è quindi appropriata e più semplice di quella asimmetrica: una chiave invece di quattro per Alice e Bob. Ma come condividi la chiave segreta? Diglielo di persona, leggerlo per telefono, usa un One Time Secret o Diffie-Hellman.

Ho perso qualcosa? Oppure la crittografia (per proteggere le cose in transito) è davvero facile?

    
posta Peter 17.12.2014 - 12:33
fonte

10 risposte

32

Se parli con 1000 persone e usi le chiavi simmetriche pre-condivise, devi ricordare 1000 chiavi segrete. L'archiviazione delle chiavi segrete può essere difficile. Con la crittografia asimmetrica devi solo ricordare solo le chiavi pubbliche, e questo è facile perché le chiavi pubbliche sono pubbliche, quindi possono essere "ricordate" essendo pubblicate da qualche parte, dove tutti possono vederle.

Inoltre, parli con le macchine più spesso di quanto tu parli alle persone. In particolare ogni volta che visiti un sito Web "https: //". Come leggeresti precisamente una chiave al telefono con un server ? È una macchina, non ha una voce che riconosceresti.

    
risposta data 17.12.2014 - 12:51
fonte
25

Penso che stai sottovalutando il valore di contattare qualcuno con cui non hai mai parlato prima e stai sopravvalutando la complessità di un sistema a chiave pubblica.

Ogni volta che vuoi contattare qualcuno di nuovo utilizzando la crittografia simmetrica, devi " dirgli [la chiave condivisa] di persona, leggerlo per telefono, utilizzare One Time Secret ," ecc. Devi contattare la persona al telefono o di persona prima di poterli contattare online, il che sembra mettere seriamente in dubbio l'utilità della comunicazione crittografata. Per la crittografia a chiave pubblica, le chiavi possono essere pubblicate online in un repository pubblico (o, meglio ancora, molti repository online), eliminando questo svantaggio. (Analogamente, considera un mondo in cui è impossibile costruire un elenco telefonico pubblico o passare un numero di telefono ad un amico: per chiamare qualcuno, devi prima incontrarli di persona per aggiungerli alla tua rubrica privata.)

Si noti che, quando si utilizza la chiave crittografica a chiave pubblica, per collegare una chiave a un'identità personale, è ancora necessaria la comunicazione fuori banda (ad esempio, le parti che firmano le chiavi), ma il vantaggio principale è che è possibile creare un rete pubblica di fiducia. Se Alice vuole inviare un messaggio a Bob, può ispezionare il lavoro per dozzine di altri che hanno già incontrato Bob di persona. Non è necessario che lei chiami Bob al telefono prima di inviare le e-mail, perché ha accesso alla sua chiave pubblica e ha accesso a molti attestati crittografici pubblici sulla validità dell'abbinamento { key, identity } trovato per Bob. (Si spera che alcune di queste attestazioni provengano da qualcuno di cui si fida, o qualcuno di cui si fida di qualcuno di cui si fida.)

Dici questo:

Symmetric encryption therefore is... simpler than asymmetric – one key instead of four for Alice and Bob.

Ma il numero di chiavi effettive non è strettamente pertinente: dovremmo invece considerare il numero di chiavi necessarie per ciascuna parte.

Ogni parte nella crittografia a chiave pubblica deve gestire

  1. la propria chiave privata,
  2. la propria chiave pubblica e
  3. una chiave pubblica per ogni persona che desidera contattare.

Supponiamo che ci siano n di persone che comunicano tra loro. Nel tuo immaginario sistema simmetrico, il numero di chiavi detenute da ciascuna parte è n-1 (una chiave per ogni altra persona). In un sistema asimmetrico, il numero di chiavi detenute da ciascuna parte è (n-1)+2 => n+1 (una chiave per ogni altra persona, più la propria coppia di chiavi). Supponendo un numero elevato di partecipanti n , questa non è una differenza significativa. (In termini ammortizzati, sono entrambi O(n) .)

    
risposta data 17.12.2014 - 15:16
fonte
12

Il problema risolto dalla crittografia asimmetrica è che mantiene il controllo su chi può e non può firmare / crittografare i messaggi.

Supponi di avere una chiave simmetrica K . Alice, Bob ed Eve condividono questa chiave K in modo che possano scambiare tutti i messaggi crittografati. Tuttavia, Eve dà una copia di K a Mallory (che ha intenzioni malevole) senza dirlo a nessuno. Ora l'intera rete è stata compromessa e Mallory può inviare e leggere messaggi come qualsiasi altro membro.

Se invece, Alice, Bob ed Eva avevano ciascuno le proprie chiavi private A , B e E rispettivamente (con le chiavi pubbliche A + , B + e E + ), quindi quando Mallory ottiene E , tutto ciò che può fare è leggere i messaggi destinati a Eve, e invia messaggi che sembra criptato da Eve. Andiamo da una situazione in cui Eve ha compromesso l'intera rete, in una situazione in cui la scarsa scelta di Eve riguarda solo i messaggi da / per lei.

Se potessi fidarti completamente di tutte le persone, allora la crittografia simmetrica sarebbe sufficiente. Tuttavia, se potessi fidarti completamente di tutte le persone , allora potresti inviare testo in chiaro. ;)

    
risposta data 17.12.2014 - 20:37
fonte
4

Prima di tutto, la crittografia è fatta in modo che tutti possano usarla e solo perché non hai bisogno dei vantaggi dei metodi con chiave privata / pubblica non significa che sia così per chiunque altro. Immagina una persona in un paese con una strong sorveglianza - non sarà in grado di ottenere una chiave simmetrica in modo sicuro, ma ottenere una chiave pubblica non è un problema perché a tutti è permesso di vederlo.

Un altro grande vantaggio della registrazione asimmetrica è che (nella maggior parte dei casi) puoi anche firmare i tuoi testi, in modo da poter dimostrare che il messaggio proviene davvero da te e non è stato alterato nel suo modo attraverso Internet.

Informazioni aggiuntive

Un webservice (onetimesecret per esempio) non è mai una buona idea da usare. Non sai davvero cosa stia succedendo con i tuoi dati, non sai se è davvero sicuro e immagino che se un'agenzia volesse guardare il tuo 'segreto' non avrebbero troppi problemi a farlo. / p>     

risposta data 17.12.2014 - 13:38
fonte
2

Un paio di cose rendono evidente che non capisci profondamente il soggetto. Prima di tutto, la libreria javascript che si menziona implementa RSA, che è la crittografia asimmetrica. Diffie-Hellman è uno schema di condivisione delle chiavi che utilizza la crittografia asimmetrica per condividere una chiave segreta che viene quindi utilizzata per la crittografia simmetrica. Non stai evitando la crittografia asimmetrica con uno di questi suggerimenti.

In generale, la crittografia asimmetrica non è adatta ai "messaggi" nel modo in cui noi, come utenti, pensiamo ai messaggi. Prima di tutto, è strettamente limitato alle dimensioni. Non è mai possibile trasmettere in modo sicuro un messaggio oltre la dimensione consentita dallo schema di crittografia, in cui un codice simmetrico consente messaggi di lunghezza arbitraria. In genere, utilizzerai la crittografia asimmetrica come metodo per verificare l'identità e come mezzo di scambio di chiavi con un nuovo contatto, ed è molto più adatto a questi ruoli rispetto alla crittografia simmetrica.

In definitiva, un sistema di comunicazione sicuro completamente funzionale utilizzerà la crittografia asimmetrica insieme alla crittografia simmetrica, ciascuno per la sua forza. Si presume che il tuo problema qui sia sollevato da una comprensione minima di un sistema come PGP e il fatto che incorpori asimmetrico crittografia per proteggere le comunicazioni e-mail. Ma, se si guarda da vicino il diagramma sulla pagina di Wikipedia, si può vedere che è solo utilizzando la chiave pubblica crypto per crittografare una chiave privata che viene utilizzata per crittografare / decodificare simmetricamente il messaggio di posta elettronica.

    
risposta data 17.12.2014 - 20:38
fonte
2

Un fatto molto divertente è: Quando utilizzi il sistema di crittografia Asimmetrico , sei principalmente utilizzando la crittografia Simmetrica ! (Naturalmente non è obbligatorio, ma sarebbe inutile senza la crittografia Symmetric perché lento e non sicuro (...)).

== > La parte asimmetrica è solo usata per scambiare la chiave simmetrica!

Quindi, se non hai problemi a scambiare la chiave:

  • Per persona / computer (e ti fidi che la persona è quella che sta fingendo di essere, e il modo in cui lo fai è sicuro, ... e altre cose già spiegate)
  • Pochi tasti casuali - > Eccessivamente importante (non oseresti usare una chiave facilmente utilizzabile per la forza bruta, non è vero?)
  • Chiave diversa ogni tempo - > Molto importante anche ... (non si sa mai;)

Quindi, se questi non sono un problema, allora certo, è esattamente lo stesso usare solo la crittografia simmetrica ... (e se è un problema allora avrai la tua risposta su " perché stiamo usando Asymetric? ";)

Modifica: In realtà non è esattamente uguale (come menzionato nei commenti). Ad esempio in una conversazione tra Alice e Bob, non avrai prove (in un'aula di tribunale) su chi scriva il messaggio (era Alice o Bob?).

    
risposta data 18.12.2014 - 12:32
fonte
1

I messaggi stessi sono protetti con la crittografia a chiave simmetrica, ma la chiave è condivisa utilizzando la crittografia asimmetrica. La libreria Javascript che hai citato implementa RSA. Come DH, è un algoritmo di crittografia a chiave asimmetrica che viene semplicemente utilizzato per stabilire una singola chiave condivisa per proteggere il messaggio o la sessione.

Ecco perché la crittografia a chiave asimmetrica è preziosa:

1: Non ho bisogno di parlare con te fuori banda prima di parlarti in modo sicuro
   1a: pensa alle centinaia o migliaia di domini web a cui accedi quotidianamente, e immagina se devi telefonare a ciascuna di esse (si applicano tariffe oltreoceano a lunga distanza) e leggere lunghe stringhe di numeri e lettere e spero che non ti dia fastidio la trascrizione
 2: Se una chiave è compromessa, devo chiamare la persona o le persone che hanno accesso ad essa e leggerle la nuova chiave
 3: chi mi garantisce? Come sai che sono legittimo? Con PKI, hai una gerarchia di fiducia. Qualcuno dice che io sono chi pretendo di essere e che non sono malizioso, e sta puntando la loro reputazione su di esso  4: Come posso provare che il messaggio non è stato modificato durante il transito? Non riesco a firmarlo in un modo che lo provi
 5: Se sono un sito Web con un milione di clienti, REALMENTE desidera memorizzare e tenere traccia di un milione di chiavi private? Cosa succede se l'interazione con me è anonima? Come posso determinare quale chiave privata usare?
 6: Dai, non assumere crypto è facile. RSA e DH e ECDH sono nati perché sono davvero difficili, e questi prendono dal succhiare all'essere gestibili.

E per la persona che sarà offesa dal mio tono, sono in congedo e non mi interessa

    
risposta data 17.12.2014 - 16:23
fonte
0

Altre risposte hanno già coperto le specifiche importanti del perché vari approcci di crittografia hanno valore, ma alla fine la risposta alla domanda è stata:

"Perché non utilizzare la crittografia simmetrica (per le e-mail con una parte conosciuta)?"

è che la misura unica non va bene per tutti. La scelta di metodi di cifratura, cifrari, algoritmi dipende tutto dal modello di minaccia che si desidera proteggere. La crittografia simmetrica è molto utile per quello che fa, ma utilizzarla male annullerà qualsiasi protezione che potrebbe offrire.

Perché Alice crittografa le informazioni su Bob? Chi non vuole leggerlo? (Riservatezza) Vuole dimostrare che è stata lei a inviarlo? (Autenticità) A lei importa se solo Bob riesce a leggerlo, oppure va bene se Bob dà la chiave a qualcun altro? Che ne dici dell'amministratore della macchina di Bob per l'archiviazione dei dati a riposo?

    
risposta data 18.12.2014 - 01:46
fonte
0

Ti manca la proprietà chiamata sicurezza inoltrata .

In un sistema privato, condivido una chiave con Alice. Supponiamo che Alice venga fatta irruzione dalla Stasi e sequestrino un computer che ha la chiave. Possono quindi usare quella chiave per decifrare tutti i messaggi che abbiamo scambiato!

In un sistema a chiave pubblica, posso dare una chiave ad Alice e questo le consente di creare messaggi crittografati che nessuno a parte me può leggere. Compreso Alice e chiunque catturi il computer di Alice. Di solito questo comporta una chiave simmetrica per sessione e si chiama "perfetto segreto in avanti".

    
risposta data 18.12.2014 - 10:32
fonte
0

Se Alice invia un messaggio simmetricamente crittografato a Bob e Bob perde la chiave, ora ogni messaggio che Bob invia ad Alice può essere intercettato da terze parti.

Se la chiave è asimmetrica, la tua unica speranza è ficcare il naso su Bob mentre sta ancora scrivendo la chiave di crittografia di Alice. Poteva, naturalmente, filtrare deliberatamente ogni testo in chiaro che invia - ma se non è malevolo e ha solo fatto trapelare la chiave di Alice accidentalmente (o forse è stato rubato e lui non lo sa), asimmetrico annulla il problema. La perdita della chiave privata è pessima. Perdendo la chiave pubblica - a chi importa?

Perché a nessuno importa che la tua chiave pubblica sia trapelata, potresti anche perdere te stesso. Se lo si perde abbastanza bene, trasmettendo in rete da server pubblici, si può anche presumere che tutti abbiano già la chiave (o che possano averla). Ora l'altro problema di Alice è risolto: come ottenere una chiave per Bob, in primo luogo.

    
risposta data 19.12.2014 - 00:16
fonte

Leggi altre domande sui tag