RC5: il cifrario a blocchi parametrizzato di Rivest (1994)

RC5: guida sintetica al cifrario parametrizzato di Rivest (1994). Spiegazioni su blocchi, chiavi, giri e rotazioni dipendenti dai dati per sicurezza ed efficienza.

Autore: Leandro Alegsa

In crittografia, RC5 è un semplice cifrario a blocchi a chiave simmetrica. Progettato da Ronald Rivest nel 1994, RC5 è un algoritmo parametrizzato con una dimensione variabile del blocco, una dimensione variabile della chiave e un numero variabile di giri. "RC" sta per "Rivest Cipher", o in alternativa, "Ron's Code".

Al fine di fornire varietà di livelli di sicurezza ed efficienza, l'RC5 ha una dimensione variabile del blocco (32, 64 o 128 bit), una dimensione variabile della chiave (da 0 a 2040 bit) e un numero variabile di giri (da 0 a 255). La scelta originale suggerita dei parametri era una dimensione del blocco di 64 bit, una chiave a 128 bit e 12 giri.

Una caratteristica chiave dell'RC5 è l'uso di rotazioni dipendenti dai dati; uno degli obiettivi dell'RC5 era quello di studiare e valutare le operazioni dei cifrari a blocchi come primitivo crittografico. RC5 consiste anche di una serie di operazioni di somma modulare, XOR (operazione esclusiva OR) e rotazioni variabili. La struttura generale dell'algoritmo è una rete simile a Feistel. Le routine di cifratura e decifratura possono essere specificate in poche righe di codice; il programma della chiave, tuttavia, è più complesso e espande la chiave usando una funzione di mescolamento che impiega costanti derivate dai numeri irrazionali (la frazione di e e del rapporto aureo) per inizializzare i valori.

Parametri e notazione

RC5 viene generalmente indicato con la notazione RC5-w/r/b dove:

  • w = dimensione della parola (in bit). Il blocco è di lunghezza 2w bit;
  • r = numero di giri (rounds);
  • b = lunghezza della chiave in byte.

Esempio pratico: RC5-32/12/16 indica w = 32 (blocco di 64 bit), r = 12 giri e b = 16 byte (chiave da 128 bit). Questi parametri (32/12/16) furono proposti come scelta bilanciata tra sicurezza e velocità.

Schema dell'algoritmo

I componenti principali sono:

  • una routine di espansione della chiave che trasforma la chiave segreta variabile in un array di parole S di lunghezza t = 2r + 2;
  • una procedura di cifratura che opera su due registri A e B di lunghezza w bit, usando ripetute combinazioni di addizioni modulo 2^w, XOR e rotazioni il cui ammontare dipende dai dati stessi;
  • una procedura di decifratura che inverte le operazioni nell'ordine opposto.

In termini semplici, la cifratura in ogni giro applica trasformazioni del tipo:

  • A = (A XOR B) <<< (B) ; A = (A + S[2*i]) modulo 2^w
  • B = (B XOR A) <<< (A) ; B = (B + S[2*i+1]) modulo 2^w

dove "<<<" denota la rotazione a sinistra di w bit per un numero di posizioni pari al valore dei bit meno significativi del registro indicato. La decifratura esegue gli inverse: sottrazioni modulo, rotazioni a destra e XOR opportuni, usando gli stessi elementi dell'array S in ordine inverso.

Espansione della chiave (key schedule)

La routine di espansione prende la chiave in byte, la dispone in un array di parole L, inizializza l'array S con costanti derivate da e e dal rapporto aureo (convertite in numeri dispari a seconda della dimensione della parola w) e poi mescola S e L attraverso molteplici rotazioni e somme. L'obiettivo è diffondere l'informazione della chiave su tutte le parole di S in modo che ogni bit della chiave influenzi l'intero set di subchiavi.

Sicurezza e crittanalisi

RC5 fu oggetto di intenso studio crittanalitico soprattutto perché introduceva le rotazioni dipendenti dai dati. Alcune osservazioni importanti:

  • esistono attacchi teorici ed effettivi contro versioni con numero di giri ridotto (ad esempio per r molto piccolo);
  • la ricerca ha progressivamente ridotto il margine di sicurezza per alcune varianti, ma per i parametri consigliati (ad es. 12 o più giri con w = 32 o 64) RC5 è rimasto generalmente considerato sicuro contro gli attacchi praticabili con risorse limitate;
  • come per molti cifrari, la scelta dei parametri deve basarsi sul bilancio tra prestazioni e requisiti di sicurezza: aumentare r e w aumenta la sicurezza ma anche il costo computazionale e lo spazio delle subchiavi.

È importante tenere presente che nel corso degli anni la comunità crittografica ha proposto miglioramenti e attacchi che hanno influenzato la percezione della robustezza di RC5; per nuove applicazioni è consigliabile valutare algoritmi più moderni e standardizzati se si richiede interoperabilità o certificazioni.

Implementazione e prestazioni

RC5 è semplice da implementare e molto veloce su architetture che supportano nativamente rotazioni variabili. Le operazioni principali (addizione modulare, XOR, rotazione) sono efficienti su CPU moderne. Tuttavia, su piattaforme che non hanno istruzioni di rotazione efficienti, le rotazioni dipendenti dai dati possono risultare più costose.

Derivazioni e contesto

Rivest successivamente sviluppò RC6, basato su concetti simili a RC5 e proposto come candidato allo standard AES. RC5, per la sua semplicità e per l'interesse accademico suscitato dalle rotazioni dipendenti dai dati, ha avuto un ruolo importante nello studio dei primitivi crittografici e nella valutazione delle loro proprietà.

Riferimenti rapidi: notazione RC5-w/r/b, operazioni principali: somma modulare, XOR, rotazione variabile; key schedule che espande la chiave in 2r+2 subchiavi; parametri consigliati storicamente: RC5-32/12/16.

Criptanalisi

Il 12-round RC5 (con blocchi a 64 bit) è suscettibile di un attacco differenziale utilizzando 244 plaintexts scelti. Si suggeriscono 18-20 colpi come protezione sufficiente.

RSA Security, che ha un brevetto sull'algoritmo, ha offerto una serie di premi di 10.000 dollari per la violazione di testi cifrati criptati con RC5, ma questi concorsi sono stati interrotti a partire dal maggio 2007. Alcuni di questi problemi sono stati affrontati utilizzando il calcolo distribuito, organizzato da Distributed.net. Distributed.net ha forzato brutamente i messaggi RC5 criptati con chiavi a 56 e 64 bit, e ora sta lavorando al cracking di una chiave a 72 bit. Al ritmo attuale (al 12 novembre 2008), ci vorranno circa 1.000 anni per testare ogni possibile chiave per completare il progetto.

Domande e risposte

D: Cos'è l'RC5?


R: L'RC5 è un semplice cifrario a blocchi a chiave simmetrica progettato da Ronald Rivest nel 1994.

D: Per cosa sta "RC"?


R: "RC" sta per "Cifrario Rivest" o, in alternativa, "Codice di Ron".

D: Quali sono i parametri di RC5?


R: I parametri dell'RC5 includono una dimensione variabile del blocco (32, 64 o 128 bit), una dimensione variabile della chiave (da 0 a 2040 bit) e un numero variabile di round (da 0 a 255). La scelta originale suggerita era una dimensione di blocco di 64 bit, una chiave di 128 bit e 12 round.

D: Qual è la struttura generale dell'algoritmo?


R: La struttura generale dell'algoritmo è una rete di tipo Feistel.

D: Quanto è complesso il programma delle chiavi?


R: Il programma della chiave è più complesso, in quanto espande la chiave utilizzando una funzione essenzialmente unidirezionale con espansioni binarie come fonti di numeri.

D: Perché l'RC5 è stato interessante per i crittoanalisti?


R: La semplicità dell'algoritmo, insieme alla novità delle rotazioni dipendenti dai dati, ha reso l'RC5 un soggetto interessante da studiare per i crittoanalisti.


Cerca nell'enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3