Protocollo di crittografia adatto per comunicazioni radio bidirezionali

0

Specificamente parlando di reti radio walkie talkie. Supponiamo che ci sia un gruppo di un massimo di 16 persone, ciascuna dotata di tale unità. In genere, una persona parlerà l'una con l'altra (uno a uno) o una persona trasmetterà a tutti gli altri membri (uno a tutti). L'obiettivo è proteggere e autenticare tutte le comunicazioni tra di loro.

Ho pensato a quanto segue:

1) Ogni utente avrà una chiave pubblica / privata predefinita (ad esempio RSA). 2) Ci sarà una chiave simmetrica predefinita (ad es. AES-128 bit).

I flussi vocali saranno suddivisi in segmenti da 128 bit. Ogni segmento verrà prima crittografato utilizzando AES 128, quindi sottoposto a hashing con SHA-256 e l'hash verrà crittografato utilizzando la chiave privata dell'utente e questa firma verrà inviata insieme al messaggio crittografato. Il ricevitore prima cancellerà il messaggio, quindi decrittà la firma usando una delle chiavi pubbliche 16-1 che ha. Idealmente, uno di loro "lavorerà", autentificando il messaggio. Quindi procede alla decrittografia del messaggio.

Esiste una vulnerabilità "chiara" in questo protocollo?

P.S. Sono a conoscenza di altri protocolli utilizzati, ad es. P25, ma preferirò implementare il mio.

    
posta student1 19.07.2014 - 17:19
fonte

2 risposte

3

La prima cosa da fare è definire cosa intendi con "sicuro e autenticato". Devi mettere in parole chi sono gli aggressori, cosa possono fare e cosa impedire loro di fare.

Su esempio di un modello di attacco di questo tipo è il seguente:

  • Gli attaccanti sono estranei. Essi origliano sul canale comune (le onde radio). Vogliono ottenere i dati confidenziali che i membri del gruppo si scambiano l'uno con l'altro. I membri del gruppo si fidano l'un l'altro.

Se questo è il modello di attacco, allora è sufficiente creare un K segreto condiviso, che tutti i membri del gruppo ma nessun hacker conoscono e quindi crittografare i pacchetti con un algoritmo di crittografia simmetrica (per esempio, AES in una modalità adatta) usando K come chiave. La distribuzione iniziale di K può essere eseguita avendo ciascun membro del gruppo proprietario di una coppia di chiavi RSA; un membro del gruppo genera K in modo casuale, lo crittografa con la chiave pubblica di ciascun membro del gruppo e trasmette quello.

Ora estendiamo il modello di attacco in un altro :

  • Gli attaccanti sono estranei. Essi origliano sul canale comune, ma tentano anche di inviare messaggi falsi, a volte riproducendo messaggi precedenti, con o senza alterazioni. Tali istanze di messaggi falsi / ripetuti devono essere rilevate e rilasciate in modo affidabile dai membri del gruppo.

Ora hai bisogno anche di un MAC per ogni pacchetto (in modo che gli aggressori possano solo riprodurre i pacchetti precedenti, non creare nuovi quelli o alterare i pacchetti esistenti), e una sorta di contesto di connessione in modo che vengano rilevati attacchi di riproduzione . Questo può essere fatto incorporando una sorta di data / ora o contatore in ogni pacchetto: ciascun partecipante ricorda i valori del contatore per gli ultimi pacchetti ricevuti, rifiutando pacchetti che sono già stati visti o che hanno un valore contatore "troppo vecchio". Tali meccanismi sono spesso definiti basati sulla finestra e c'è un certo equilibrio tra la prevenzione degli attacchi di replay, i requisiti di memoria (per ricordare i pacchetti precedenti) e la tolleranza alla perdita di pacchetti dovuta alla natura inaffidabile del mezzo di trasporto . Leggi DTLS come esempio di come il protocollo SSL / TLS può essere adattato a supporti inaffidabili basati su pacchetti.

Se l'autore dell'attacco può provare a inviare messaggi falsi, potrebbe anche essere in grado di pubblicizzare una chiave pubblica RSA falsa. La distribuzione di chiavi pubbliche è una questione di Public Key Infrastructure , con certificati essere la solita soluzione.

Forse vogliamo di più ? Ad esempio, che dire di quanto segue:

  • I membri del gruppo sono anche attaccanti. Ogni membro del gruppo proverà a intercettare e / o interferire con le comunicazioni one-to-one tra gli altri membri del gruppo.

In tal caso, avrai bisogno di scambi di chiavi a coppie. Per ogni coppia di membri del gruppo A e B , ci deve essere un segreto condiviso K A, B che altro i membri del gruppo e gli estranei non lo sanno. Questo può ancora essere sfruttato da coppie di chiavi RSA pre-distribuite: quando A vuole parlare con B e non hanno già un segreto condiviso (o hanno dimenticato un precedente segreto condiviso, ad esempio B ha riavviato il suo computer e quel segreto condiviso era solo nella RAM), quindi A genera una nuova chiave casuale K A, B e lo crittografa con la chiave pubblica di B .

Di nuovo, leggi l'intero TLS e DTLS standard: sono abbastanza leggibili e questo ti mostrerà a cosa devi pensare.

    
risposta data 21.07.2014 - 15:11
fonte
0
  1. La firma di ogni blocco di testo cifrato creerà un sovraccarico enorme e, in definitiva, produrrà una trasmissione lenta della voce registrata.

  2. Il tuo protocollo non prevede l'autenticazione corretta. L'uso di una chiave AES fissa e nessuna IV (in modo apparente) lascia molto spazio a un utente malintenzionato per falsificare messaggi o per eludere il testo in chiaro. Assicurati di autenticare l'invio prima (e verificare la firma di un intero messaggio, ad es. 1/2 secondo di audio), utilizzare un protocollo come Diffie-Hellman per concordare una chiave condivisa e utilizzare un numero sufficiente Block-Chaining e IV.

Se prevedi di utilizzare questo protocollo con walkie talkie acutali devi considerare che le chiavi private / pubbliche fisse possono essere utilizzate solo per un set di unità e che questo insieme di unità non è espandibile (dal momento che i walkie talkie crittografici che richiedono il il cliente che legge / scrive le chiavi non verrebbe usato altrove che nell'esercito).

    
risposta data 19.07.2014 - 18:16
fonte

Leggi altre domande sui tag