Crittografia bidirezionale che può essere annidata?

1

Nella costruzione di un sistema di sicurezza, sto cercando di prevenire attacchi "man-in-the-middle" in un sistema di crittografia a due vie, usando la seguente configurazione:

A invia a B un messaggio, crittografato con il codice 1

B lo rimanda, essendo stato crittografato con 1 e 2

A inverte 1 e lo invia a B, in base al quale B decodifica il codice 2 e riceve il messaggio.

In nessun punto un uomo nel mezzo può accedere a questi dati. Eppure questo dipende da due funzioni di questo tipo, che possono essere annidate e decodificate senza ordine. Ci sono tali funzioni? O ci sono modi migliori per prevenire gli attacchi?

    
posta Data Storage 17.02.2015 - 07:51
fonte

2 risposte

1

Non dovresti usarlo in nessun sistema di produzione, periodo. Stai cercando di progettare primitive crittografiche, il che è estremamente facile da ottenere in modo orribilmente sbagliato. Se non sei te stesso un crittografo, non provare a progettare algoritmi crittografici - esistono già quelli perfettamente validi. (In generale, dovresti usare sistemi ben collaudati ovunque tu sia nella sicurezza - non rotolare mai la tua primitiva, evitare di far ruotare il tuo protocollo ovunque tu possa, evitando di far girare la tua implementazione quando pratico).

In realtà, questo schema è altamente vulnerabile agli attacchi MitM. Un MitM non è qualcuno che ascolta nel traffico; sono attaccanti attivi e possono modificare qualsiasi comunicazione tra le due parti. In questo caso, il MitM intercetta il primo messaggio di Alice e lo crittografa con la loro chiave; quando Alice rimuove la sua crittografia, ora l'hacker la ha crittografata con la propria chiave e nient'altro. Devi in qualche modo verificare che sia la chiave Bob che è stata aggiunta nel passaggio 2, non quella di un utente malintenzionato; il tuo schema non tenta nemmeno di risolverlo.

Un modo decisamente migliore per farlo è la crittografia a chiave pubblica. Alice e Bob si scambiano le loro chiavi pubbliche attraverso una comunicazione fuori banda, oppure una terza parte fidata verifica le proprie chiavi pubbliche. Alice crittografa il suo messaggio con la chiave pubblica di Bob, quindi Bob la decifra. Devi condividere le chiavi pubbliche, ma questo è un più : nel tuo schema (dove non conosci la chiave che Bob dovrebbe usare, né se il messaggio è stato in effetti re-crittografato con esso), tu estremamente vulnerabile a un attacco MitM.

Quindi usate la corretta crittografia a chiave pubblica in un protocollo adeguatamente testato, se possibile in un codice libreria correttamente testato (nota "testato" significa "testato per sicurezza , che solo gli esperti formati possono davvero fare).

    
risposta data 17.02.2015 - 08:46
fonte
0

Il tuo schema sarebbe totalmente insicuro, anche se la crittografia sottostante è sicura.

Un one time pad è perfettamente sicuro, purché la gestione delle chiavi sia eseguita correttamente. Il tuo schema sembra avere il vantaggio, che le chiavi non devono mai essere distribuite, che risolvono l'inconveniente principale di un time pad.

Quindi se A e B generano ciascuno un time pad potrebbero usare il tuo schema?

La risposta è, sì, potrebbero farlo. Una volta sola soddisfa tutti i requisiti elencati. È provabilmente sicuro, e se un messaggio viene criptato due volte usando chiavi diverse, il messaggio originale può essere ottenuto decifrando con le due chiavi in entrambi gli ordini.

Ciò che verrebbe inviato nei tre messaggi usando il tuo schema sarebbe m⊕K₁, m⊕K₁⊕K₂ e m⊕K₂. Tuttavia, un attaccante passivo di snooping potrebbe semplicemente calcolare l'xor di tutti e tre i messaggi per recuperare il messaggio originale.

Quindi, anche se il destinatario poteva decifrare il messaggio, così potrebbe esserci qualsiasi uomo-in-the-middle.

Raccomando che invece di venire con il tuo schema, usi qualcosa di più standardizzato come ad esempio lo scambio di chiavi Diffie-Hellman.

    
risposta data 17.02.2015 - 09:50
fonte

Leggi altre domande sui tag