Home
Accesso / Registrazione
 di 

Routine di Encryption della codifica RollingCode

Routine Crittografia Rolling Code

Ora che siamo a conoscenza dei passaggi da eseguire per realizzare la crittografia (articolo "Algoritmo di crittografia RollingCode"), non ci rimane che approfondire il funzionamento della Encryption Routine che è il cuore di tutta la procedura di crittografia. Grazie a questa routine infatti vengono generati i codici che corrispondono alle informazioni crittografate.

Come per gli articoli precedenti, anche in questo caso la routine di crittografia può essere spiegata attraverso uno schema che racchiude e rappresenta gli step che l’algoritmo deve eseguire:

 

 

 

Prima di passare alla spiegazione nel dettaglio dell’algoritmo, vediamo quali sono gli “attori” che entrano in gioco: partendo dall’alto in basso delle figura incontriamo una word a 32 bit che corrisponde al valore che dovrà essere criptato; più in basso abbiamo la NLF, ossia la “Non Linear Function”, la quale esegue la crittografia vera e propria generando ad ogni ciclo un bit il cui valore dipende da cinque bit di ingresso opportunamente selezionati; sotto la NLF troviamo un’operazione di OR eseguita tra una serie di bit (tra cui anche quello generato dalla NLF) e ancora più sotto il registro a 64 bit che contiene la chiave per la crittografia, la quale è stata ricavata attraverso i passaggi visti e descritti nell’articolo “Algoritmo di crittografia RollingCode.

 

Ora che abbiamo chiaro quali sono i dati che sono necessari per eseguire la crittografia, possiamo procedere con la spiegazione per punti dell’algoritmo:

 

1. Come prima cosa devono essere prelevati i bit 2, 9, 20, 26 e 31 dal codice a 32 bit da criptare, per andare a costruire una word formata da 5 bit.

Considerando ad esempio “FDB97531” (è stata adottata la notazione esadecimale per comodità e visibilità nella stesura dell’articolo e considerata una rappresentazione dei bit di tipo big-endian) come word a 32 bit da dover criptare e prelevando i bit 2, 9, 20, 26 e 31, ottengo una la seguente word a 5 bit: “11100”.

2. La word a 5 bit precedentemente ricavata, deve essere sottoposta in ingresso alla NLF la quale fornirà in uscita un solo bit che sarà funzione dei valori dati in ingresso.

Per ottenere il bit di uscita dalla NLF non vengono richieste particolari operazioni in quanto, questa funzione può essere rappresentata attraverso una tabella mostrata nella figura seguente:

 

 

 

 

le colonne “I4”, “I3”, “I2”, “I1” e “I0” corrispondono rispettivamente ai bit 31, 26, 20, 9 e 2 del codice da criptare, mentre “NLF” rappresenta il bit di uscita della funzione.

Riprendendo l’esempio precedente avremo che dalla word “11100” a 5 bit otteniamo come risultato il bit “0”.

3. Ora che si ha a disposizione il bit dalla “NLF” occorre sottoporlo ad una operazione di OR con il bit 0 della parola da criptare e con il bit 0 della chiave di crittografia, in modo da ottenere un ulteriore bit risultato dell’operazione.

Supponiamo di avere come chiave “0011223344556677” (anche in questo caso è stata considerata una rappresentazione dei bit di tipo big-endian) e di considerare sempre come parola da criptare il valore “FDB97531”; a questo punto, facendo l’operazione di OR con i bit indicati precedentemente si ottiene: 0 OR 1 OR 1 = 1.

4. Dopo aver ricavato il bit di uscita dall’operazione di OR, deve essere eseguito uno shift di un bit verso destra (verso il bit meno significativo) della parola da criptare.

Considerando l’esempio precedente, la parola “FDB97531” diventerà “7EDCBA98”.

5. Una volta eseguito lo shift, deve essere eseguita un’operazione di sostituzione del bit 31 della parola appena shiftata, con il bit risultato dell’operazione di OR ricavato nel passo “4”.

Rifacendoci sempre all’esempio precedente la word a 32 bit, che dopo la rotazione aveva il valore “7EDCBA98”, ora assumerà il valore “FEDCBA98”.

6. Un’ultima operazione da eseguire è quella di eseguire una rotazione verso destra (verso il bit meno significativo) della chiave usata per la crittografia.

Il valore della chiave che prima era pari a “0011223344556677”, ora assume il valore “80089119A22AB33B”.

7. I punti dall’ “1” al “6” devono essere ripetuti per un numero di volte pari a 66.

 

Alla fine dei 66 cicli sulla parola a 32 bit che doveva essere criptata è presente il valore criptato e pronto ad essere utilizzato.

 

Lettura consigliata: Introduzione alla codifica RollingCode

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Papier

Numero Cicli

 

Ciao,

innanzi tutto vi faccio i complementi per il sito e per le informazioni contenute: sono veramente ottime.

In merito all'articolo, non mi è chiaro perchè sono necessari 66 cicli sulla parola a 32 bit che deve essere cripata: non ne bastano 32? C'è qualcosa che nono ho capito?

 

Grazie,

Pasquale Pierro

http://www.papierengineering.it

ritratto di lucagiuliodori

Ciao, innanzitutto scusa per

Ciao,

innanzitutto scusa per il ritardo nella risposta.

Effettivamente questo numero è un po' particolare e per capirlo occorre entrare un po' più a fondo nell'algoritmo.

Innanzitutto se consideriamo che questi 66 cicli vengono eseguiti ogni volta su un byte della key, abbiamo che il numero di operazioni totali saranno (immagina due "for" uno dentro un altro, in cui uno serve per processare i singoli bit e l'altro per eseguire i 66 cicli):

66*8=528 operazioni

Questo numero è una specifica del protocollo, ovviamente più il numero è grande e più la sicurezza del protocollo è garantita, a discapito però di un costo computazionale maggiore.
Importante è notare che questo numero non è divisibile per 64 (pari al numero di bit della key) ma deriva da 64*8+16 per limitare gli attacchi di tipo "slide" e quindi aumentare la sicurezza del protocollo.

ritratto di Papier

  Ciao, ecco perchè non

 

Ciao,

ecco perchè non capivo: io sui cicli ragionavo in termini di bit (528) mentre tu in termini di byte (66).

Tutto chiaro, grazie.

 

Pasquale Pierro

http://www.papierengineering.it

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti