Può essere rotto un codice XOR se il testo in chiaro è un numero incrementale?

2

Molte lune fa, stavo lavorando con un team che stava costruendo un sito web pubblico. Inizialmente, il sistema è stato creato utilizzando le chiavi primarie numeriche a incremento automatico come identificatore pubblico per ogni parte di contenuto che è stata raccolta. La parola è venuta dall'alto in basso che esporre questo numero era un rischio: rivelerebbe quanti oggetti il sistema possedeva e il delta tra qualsiasi ID di due oggetti e le loro date di post rivelerebbe un tasso di crescita / adozione.

Un collega anziano ha dichiarato che l'uso di una cifratura XOR risolverebbe questo problema. Prenderemmo gli ID oggetto come sempre e li abbiamo XOR con una chiave numerica strettamente sorvegliata per creare un identificatore pubblico. Invertire la procedura per ottenere il nostro numero originale.

Nel nostro caso, gli ID privati e la chiave erano entrambi interi a 32 bit senza segno. E, come ci si potrebbe aspettare, due elementi creati uno vicino all'altro hanno mostrato cambiamenti nei loro bit meno significativi, ma nessuna modifica nei bit più significativi. All'epoca pensavo che sarebbe stato banalmente facile per un avversario pubblicare alcuni oggetti in successione, notare che gli LSB cambiavano mentre gli MSB rimanevano statici e concludevamo che stavamo semplicemente facendo un numero intero incrementale. Ma mi sono sempre chiesto cosa ci sarebbe voluto per loro per ricavare la chiave e abbattere tutta la facciata.

È possibile, se un utente malintenzionato può ragionare che il testo in chiaro è un numero intero monotonicamente crescente, per derivare l'intera chiave?

    
posta smitelli 31.07.2015 - 16:44
fonte

2 risposte

1

Un abile aggressore può probabilmente trovare alcune informazioni sulla velocità con cui viene creato il nuovo contenuto.

Dato che stai sempre eseguendo XOR delle chiavi primarie con la stessa chiave segreta, vedrai sempre un po 'di capovolgimento nel testo cifrato nello stesso momento in cui capovolge il testo in chiaro. Ciò significa che puoi dire quando la chiave primaria passa a un numero maggiore, come ad esempio qui:

01111111 10000000

o, quando cifrato con 11100010 come chiave:

10011101 01100010

Questo fa trapelare alcune informazioni sul tasso di crescita, specialmente se l'autore dell'attacco è in grado di generare contenuti a volontà.

... ovviamente, se ogni ID corrisponde a un pezzo di contenuto, allora l'attaccante non può vedere quanti ce ne sono?

Per tornare alla tua domanda iniziale, però, non dovrebbe esserci un banale modo per trovare la chiave, se non perdi mai alcun valore di ID privato. Se un utente malintenzionato ottiene una porzione di testo in chiaro e il testo cifrato corrispondente, viene eseguito il hosed:

A XOR K XOR A = K

    
risposta data 31.07.2015 - 19:43
fonte
1

Come fai notare nella tua domanda, un attaccante astuto potrebbe rendersi conto che le tue chiavi primarie (cioè il testo in chiaro) stanno aumentando in sequenza valori numerici e che viene utilizzata la crittografia XOR, perché gli LSB del testo crittografato cambiano mentre il Gli MSB rimangono statici.

A quel punto, è game over. La crittografia XOR può essere risolta facilmente, come spiega Bruce Schneier in "Crittografia applicata". Vedi link per ulteriori informazioni.

    
risposta data 01.08.2015 - 02:45
fonte

Leggi altre domande sui tag