Quale sarebbe l'equivalente a livello di applicazione dei segreti di comunicazione dinamici?

7

Probabilmente sono solo spessa e sufficientemente nuova per problemi legati alla sicurezza nello sviluppo del software, ma poiché non riesco a trovare informazioni e sono rimasto bloccato su Google per un po 'di tempo.

Recentemente mi sono imbattuto in un libro Dynamic Secrets in Communication Security (disponibile anche in Amazon) e ora mi chiedo, se questa tecnica ha un equivalente nella programmazione dei socket? C'è anche il documento Creazione di segreti condivisi da Thin Air che ha una buona descrizione sul idea.

In breve, a quanto ho capito, l'idea è di generare dinamicamente segreti di comunicazione basati sulle proprietà di trasmissione nei canali wireless (ad es. guasti) che sono difficili da indovinare da parte di un avversario, se non è presente in molte parti del mezzo di trasmissione wireless . Quindi il canale di comunicazione sarebbe sicuro, anche se l'avversario avesse a disposizione una grande quantità di potere di calcolo. Ciò consentirebbe anche alle parti partecipanti di rilevare se il traffico è stato dirottato.

Esiste un metodo noto per generare segreti dinamici basato su ad es. ogni messaggio scambiato e ottenere una tale sicurezza da rilevare il dirottamento del traffico e rendere le comunicazioni resistenti anche a un avversario con un sacco di potenza computazionale? Non sto cercando Diffie-Hellman , poiché è applicato solo all'iniziazione, ma forse qualcosa come IPSec Encapsulating Security Payload ?

    
posta Veksi 12.06.2013 - 22:15
fonte

3 risposte

8

Il secondo articolo (Safaka et al ) descrive un protocollo che si basa su un protocollo approssimativamente simile al protocollo Cachin-Maurer che descrivo alla fine di questa risposta . La premessa è che esiste un canale di comunicazione inaffidabile che trasmette tra le parti coinvolte, in modo che quando una delle parti emette un elenco di "pacchetti", tutti gli altri vedono solo alcuni del pacchetti, e non tutti vedono gli stessi pacchetti. Quindi Alice e Bob, desiderando stabilire un segreto condiviso, devono solo emettere un sacco di pacchetti, registrare ciò che ricevono e quindi dirsi a vicenda quale pacchetto hanno ricevuto (i pacchetti vengono referenziati da un ID convenzionale ). Con alta probabilità, l'utente malintenzionato non può vedere tutti i pacchetti registrati da Alice e Bob, quindi la concatenazione di tutti i pacchetti, opportunamente con hash, è una buona chiave condivisa.

Nel protocollo Cachin-Maurer, la trasmissione proviene da una sorgente casuale a larghezza di banda elevata e l'inaffidabilità della ricezione è dovuta all'impossibilità di registrare tutti i dati, a causa della sua dimensione. Nel protocollo Safaka, si presume che il mezzo di trasporto sia inaffidabile, il che è un po 'ottimistico perché l'hacker può investire in un'antenna buona , qualcosa di molto meglio nel raccogliere le onde radio rispetto agli adattatori WiFi di base di persone oneste.

Trasportare quel principio a livello di applicazione sembra difficile perché la caratteristica veramente fondamentale del "livello di applicazione", il motivo per cui la chiamiamo "applicazione", è la sua affidabilità . Ad esempio, i pacchetti IP non corretti sono inaffidabili: possono perdersi, duplicati, a volte alterati (l'ho visto: un router Cisco con RAM difettosa) e arrivano fuori servizio. Tuttavia, la prima cosa che le applicazioni fanno è applicare TCP , che porta affidabilità (attraverso riconoscimenti e ri-emissioni). Quando il trasporto è affidabile, è affidabile per tutti, incluso l'aggressore.

Questa è una tendenza generica: il tipo di protocollo di scambio chiave di cui stiamo parlando deve fare affidamento su un processo fisico che impone qualche imprevedibilità; nel protocollo Safaka, il processo fisico è il rumore radio che interrompe la ricezione di alcuni pacchetti. Il mondo dei computer, d'altra parte, è matematico piuttosto che fisico: vive e si sforza in un mondo astratto dove un po 'è un po' e non si capovolge a caso. Infatti, quando un bit RAM viene capovolto (si dice che si verifichi circa una volta ogni tre mesi in media per una data macchina, a causa di raggi cosmici ), la macchina potrebbe bloccarsi, a seconda di dove si trovava il bit indicato. L'intero principio di informatizzazione è di scappare dal mondo fisico e tenerlo il più lontano possibile. Questo impedisce intrinsecamente l'uso efficiente dei protocolli Safaka-like, e ancora di più quando andiamo più in alto nello stack dei livelli, cioè "a livello di applicazione", come lo metti.

Un secondo punto da sottolineare è che questi protocolli sono scambio di chiavi, non autenticazione . Possono fornire sicurezza solo contro gli attaccanti passivi, che osservano ma non interferiscono. Al giorno d'oggi non è un'ipotesi realistica. Molti attacchi alla rete comportano azioni positive da parte di aggressori; e alcuni attaccanti a bassa potenza possono essere descritti come "solo attivi": spesso è molto più facile inviare pacchetti falsi a un server piuttosto che intercettare i pacchetti tra un server e un client onesto.

Pertanto, è necessaria l'autenticazione: non si desidera scambiare una chiave in generale, ma una chiave con un client o un server specifico. Per fare ciò, è necessario un meccanismo di autenticazione che si verifichi sufficientemente all'inizio del processo, ad es. con le chiavi pubbliche o qualche PAKE , e si ritorna alla "normale crittografia", rendendo piuttosto i protocolli Safaka-like inutile.

    
risposta data 19.07.2013 - 19:14
fonte
3

Tom ha fatto dei buoni punti. Questo schema è per una rete smarrita. Il livello di applicazione può utilizzare qualcosa come UDP, una quantità ridicola di pacchetti e statistiche sui tempi inviati vs ricevuti vs tempi. Non è buono come il dominio previsto: reti lossy come wireless. Quindi, inizia a sembrare difficile da fare ed è quello che mi specializzo quindi perché non fare un tentativo comunque. ;)

(Nota importante: è meglio utilizzare le librerie e le tecniche crittografiche esistenti per lavori importanti. Molto più sicuro, più pratico, ecc. Questo è solo per scopi educativi e di intrattenimento.)

L'ipotesi principale è che abbiano una presenza limitata. Non sono ad ogni endpoint quindi mancano i pacchetti. Il punto chiave è che mancano i pacchetti. Possiamo farlo a livello di applicazione. Ecco alcune possibilità.

  1. Usa più canali di comunicazione contemporaneamente. Invia UDP, email, ping e forse pacchetti di amplificazione DNS tutti in una volta.

  2. Utilizza un relay di terze parti che consente connessioni SSL e non registra il traffico. Dividi la chiave tra diversi se non vuoi fidarti di uno solo. Ha praticamente lo stesso effetto di altri protocolli.

  3. Quando si utilizzano relè o pacchetti inaffidabili, inviarli in un percorso specifico che va in paesi con una sola fibra sottomarina maggiore che li collega. Inoltre, invia al momento del picco. L'imprevedibilità della congestione dovrebbe aiutare.

  4. Dividi pezzi tra UDP ed e-mail inviati tramite Mailinator.

Onestamente, gli schemi che si basano sull'offuscamento dello scambio, sia del protocollo che dei dati, sono migliori di uno che si basa sulla rumorosità del canale. Quella proprietà del canale non può essere invocata nella nostra Internet abbastanza ottimizzata. Come detto prima, però, questo è tutto solo per i calci.

    
risposta data 21.07.2013 - 04:07
fonte
0

I segreti dinamici, in generale, sono una modifica al modello tradizionale (a.k.a. Kerckhoffs) della progettazione di crittosistemi con chiave cifrata. Kerckhoff afferma che un cryptosystem dovrebbe assumere che tutto tranne la chiave sia noto all'avversario. Tale ipotesi è valida e vicina alla realtà in uno scenario di battaglia, dove i soldati portano macchine cifrate e mantengono codici segreti nel loro cervello (se possono ricordare così chiaramente ...)

Un tale modello non è al 100% pratico nel mondo di oggi, specialmente nelle comunicazioni sicure nel mondo civile. Da un lato, non è affidabile presumere che la chiave sia sempre un segreto. L'avversario ruba di volta in volta username-password e chiavi crittografiche, utilizzando ad esempio i programmi Trojan. Dall'altro lato, è una strong supposizione che l'avversario sappia tutto il resto. Ad esempio, è praticamente impossibile intercettare tutti i bit trasmessi nelle comunicazioni wireless. Questi pensieri motivano le persone UMASS (Xiao et al.) A generare l'idea di segreti dinamici e a redigere un documento di INFOCOM e il libro "i segreti dinamici nella sicurezza delle comunicazioni". Hanno presentato l'idea ai suoi colleghi europei e poi hanno seguito la ricerca e generato il nuovo documento INFOCOM.

    
risposta data 14.08.2013 - 03:22
fonte

Leggi altre domande sui tag