Questo protocollo è vulnerabile, ma perché?

1

So che il seguente protocollo di autenticazione è vulnerabile, ma non riesco a capire perché.

A and B share a secret key K (64 bits) 
R1 and R2 are two 64 bit numbers 

A-->B: I am A 
B-->A: R1 
A-->B: Hash((K+R1) mod 2^64), R2 
B-->A: Hash((K+R2) mod 2^63) 

Il mio pensiero è che i due hash non si allineano, ma non so che questo renderebbe questo protocollo una vulnerabilità principale.

    
posta user3830272 14.07.2014 - 22:41
fonte

2 risposte

1

Molto ovviamente, è soggetto a replay.

Mallory può sedersi sulla linea e continuare a guardare le autenticazioni R1 e la registrazione di Hash ((K + R1) mod 2 ^ 64). Ogni volta che appare una vecchia R1, può riutilizzare l'hash che ha visto prima.

Allo stesso modo, se appare R2 che è stato visto prima come un R1, ha il 50% di probabilità che Hash ((K + R2) mod 2 ^ 63) sia lo stesso (cioè se (K + R2) mod 2 ^ 64 ha un bit più significativo di 0).

    
risposta data 15.07.2014 - 01:55
fonte
1

Gli hash a chiave hanno attacchi noti, per esempio H (m | K), H (K | m), H (K | m | K) hanno tutti degli attacchi che almeno li indeboliscono. HMAC è un metodo standard per risolvere molti attacchi che hanno la forma semplificata di H (K | H (K | m)), il doppio hashing è la chiave.

Puoi cercare ulteriori informazioni su HMAC e l'autenticazione dei messaggi basata su hash, ma il punto è che non è così semplice trovare il tuo algoritmo di autenticazione a meno che non sei un crittografo che sa cosa stanno facendo.

Anche i tasti a 64 bit sono piccoli, si consiglia di utilizzare chiavi più grandi. Inoltre non è chiaro quale sia l'algoritmo di hash utilizzato, non tutti sono uguali. I R1, R2 presumo sono casuali.

A parte questo, questa è una tecnica di autenticazione di base, quindi se dovessi usare HMAC e chiavi più grandi non vedrei alcun problema. Inoltre, non sono tanto un esperto per dire quanto sia vulnerabile, sarebbe interessante condividere perché pensi che sia vulnerabile in primo luogo.

L'attacco di replay menzionato è valido, anche se dipende dalla probabilità di ottenere lo stesso casuale, non dovrebbe essere probabile se usi un buon generatore casuale.

    
risposta data 15.07.2014 - 03:42
fonte

Leggi altre domande sui tag