RC4: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Riga 19: Riga 19:
L'RC4 fu sviluppato da [[Ron Rivest]] della [[RSA Security]] nel [[1987]]: come in altri suoi algoritmi (vedi [[RC2]], [[RC5]] ed [[RC6]]) la sigla RC sta per '''Rivest Cipher''' o, alternativamente, '''Ron's Code''' <ref>{{en}} [http://people.csail.mit.edu/rivest/faq.html#Ron FAQ su Ron Rivest]</ref>. Per la sua semplicità, grazie alla quale è facilmente implementabile sia a livello software che hardware, e velocità il suo uso si diffuse speditamente e l'RC4 divenne ben presto l'algoritmo base di importanti protocolli quali il [[Wired Equivalent Privacy|WEP]] ed il [[Wi-Fi Protected Access|WPA]] per la cifratura delle comunicazioni nelle schede [[wireless]], e l'[[Secure Sockets Layer|SSL]] ed il [[Transport Layer Security|TLS]] per la protezione dei dati delle connessioni [[internet]] e delle [[Rete di calcolatori|reti]] [[TCP/IP]] in genere.
L'RC4 fu sviluppato da [[Ron Rivest]] della [[RSA Security]] nel [[1987]]: come in altri suoi algoritmi (vedi [[RC2]], [[RC5]] ed [[RC6]]) la sigla RC sta per '''Rivest Cipher''' o, alternativamente, '''Ron's Code''' <ref>{{en}} [http://people.csail.mit.edu/rivest/faq.html#Ron FAQ su Ron Rivest]</ref>. Per la sua semplicità, grazie alla quale è facilmente implementabile sia a livello software che hardware, e velocità il suo uso si diffuse speditamente e l'RC4 divenne ben presto l'algoritmo base di importanti protocolli quali il [[Wired Equivalent Privacy|WEP]] ed il [[Wi-Fi Protected Access|WPA]] per la cifratura delle comunicazioni nelle schede [[wireless]], e l'[[Secure Sockets Layer|SSL]] ed il [[Transport Layer Security|TLS]] per la protezione dei dati delle connessioni [[internet]] e delle [[Rete di calcolatori|reti]] [[TCP/IP]] in genere.


L'algoritmo restò inizialmente segreto ma, alla fine del [[1994]], comparve, in forma anonima, prima sulla mailing-list ''CypherPunks'' e poi sul newsgroup internazionale ''sci.crypt'' il codice di un algoritmo crittografico i cui risultati erano identici a quelli generati dai programmi che implementavano l'RC4 ufficiale.
L'algoritmo restò inizialmente segreto ma, nel settembre del [[1994]], comparve, in forma anonima, prima sulla mailing-list ''CypherPunks'' e poi sul newsgroup internazionale ''sci.crypt'' il codice di un algoritmo crittografico i cui risultati erano identici a quelli generati dai programmi che implementavano l'RC4 ufficiale.
RSA, nonostante la repentina diffusione di quel codice, non ha mai ammesso che quell'algoritmo fosse l'RC4. Questo ha generato a livello di [[diritto d'autore]] una situazione ambigua in cui, nonostante l'algoritmo non sia più segreto, il suo nome è tutt'ora coperto da [[brevetti software|brevetto]]. Per evitare quindi possibili ripercussioni legali, generalmente ci si riferisce all'algoritmo chiamandolo '''ARCFOUR''' o '''ARC4''', abbreviativo di ''Alleged RC4'' (Alleged in inglese significa ''presunto'').
RSA, nonostante la repentina diffusione di quel codice, non ha mai ammesso che quell'algoritmo fosse l'RC4. Questo ha generato a livello di [[diritto d'autore]] una situazione ambigua in cui, nonostante l'algoritmo non sia più segreto, il suo nome è tutt'ora coperto da [[brevetti software|brevetto]]. Per evitare quindi possibili ripercussioni legali, generalmente ci si riferisce all'algoritmo chiamandolo '''ARCFOUR''' o '''ARC4''', abbreviativo di ''Alleged RC4'' (Alleged in inglese significa ''presunto'').



Versione delle 17:24, 2 nov 2009

Template:Infobox Stream Ciphers

L' RC4 è uno tra i più famosi e diffusi algoritmi di cifratura a flusso a chiave simmetrica, utilizzato ampiamente in protocolli quali l'SSL ed il WEP. Nonostante la sua diffusione, è un algoritmo facilmente violabile ed il suo uso è caldamente sconsigliato se il livello di sicurezza ricercato deve essere elevato.

Storia

L'RC4 fu sviluppato da Ron Rivest della RSA Security nel 1987: come in altri suoi algoritmi (vedi RC2, RC5 ed RC6) la sigla RC sta per Rivest Cipher o, alternativamente, Ron's Code [1]. Per la sua semplicità, grazie alla quale è facilmente implementabile sia a livello software che hardware, e velocità il suo uso si diffuse speditamente e l'RC4 divenne ben presto l'algoritmo base di importanti protocolli quali il WEP ed il WPA per la cifratura delle comunicazioni nelle schede wireless, e l'SSL ed il TLS per la protezione dei dati delle connessioni internet e delle reti TCP/IP in genere.

L'algoritmo restò inizialmente segreto ma, nel settembre del 1994, comparve, in forma anonima, prima sulla mailing-list CypherPunks e poi sul newsgroup internazionale sci.crypt il codice di un algoritmo crittografico i cui risultati erano identici a quelli generati dai programmi che implementavano l'RC4 ufficiale. RSA, nonostante la repentina diffusione di quel codice, non ha mai ammesso che quell'algoritmo fosse l'RC4. Questo ha generato a livello di diritto d'autore una situazione ambigua in cui, nonostante l'algoritmo non sia più segreto, il suo nome è tutt'ora coperto da brevetto. Per evitare quindi possibili ripercussioni legali, generalmente ci si riferisce all'algoritmo chiamandolo ARCFOUR o ARC4, abbreviativo di Alleged RC4 (Alleged in inglese significa presunto).

Descrizione

L'RC4 genera un flusso di bit pseudo casuali (keystream): tale flusso è combinato mediante un'operazione di XOR con il testo in chiaro per ottenere il testo cifrato. L'operazione di decifratura avviene nella stessa maniera, passando in input il testo cifrato ed ottenendo in output il testo in chiaro (questo perché lo XOR è un'operazione simmetrica).

Per generare il keystream, l'algoritmo utilizza una S-box di 256 byte e 2 indici da 8 bit, generalmente identificati con le lettere "i" e "j". La chiave di cifratura fornita dall'utente è generalmente lunga da 40 a 256 bit (da 5 a 32 caratteri) ed è utilizzata per inizializzare l'S-box mediante la funzione KSA, acronimo di Key-Scheduling Algorithm (algoritmo di gestione della chiave). Ecco la rappresentazione in pseudo-codice (key è la chiave dell'utente, keylength è la lunghezza della chiave, S è la matrice che rappresenta l'S-box):

for i = 0 to 255
  S[i] = i
next
j = 0
for i = 0 to 255
  j = (j + S[i] + key[i mod keylength]) mod 256
  swap (S[i], S[j])
next

Una volta che questo passaggio è completato, il flusso di bit generato utilizzando la funzione di generatore di numeri pseudo-casuali dell'algoritmo (PRGA, Pseudo-Random Generation Algorithm) è combinato con il testo in chiaro mediante XOR. Ecco in pseudo-codice il cuore dell'algoritmo RC4 (input contiene il testo in chiaro, output il testo cifrato):

i = 0
j = 0
for l = 0 to len(input)
    i = (i + 1) mod 256
    j = (j + S[i]) mod 256
    swap (S[i], S[j])
    output[l] = S[(S[i] + S[j]) mod 256] XOR input[l]
next

Sicurezza

L'RC4 paga la sua semplicità in termini di sicurezza: questa è molto debole e l'algoritmo è violabile con relativa facilità e velocità tanto che il suo uso non è più consigliabile. L'RC4 mostra infatti un comportamento non da vero PRNG: l'analisi del flusso di dati casuali denota una certa periodicità nei primi 256 byte. Ecco perché molte implementazioni dell'algoritmo scartano questi byte facendo eseguire un ciclo di 256 iterazioni a vuoto prima di iniziare ad utilizzare il keystream. Un'altra debolezza è relativa alla forte correlazione che c'è fra la chiave ed il keystream tanto che nel 2005 è stato trovato un modo per violare una connessione wireless protetta con WEP in meno di un minuto[2].

Voci correlate

Note

Collegamenti esterni

Attacchi all'RC4