In crittografia, RC2 è un cifrario a blocchi a chiave simmetrica. Progettato da Ronald Rivest nel 1987. "RC" sta per "Rivest Cipher", o in alternativa, "Ron's Code".

RC2 è un cifrario a blocco a 64 bit con una dimensione variabile della chiave e che utilizza 18 giri.

I turni sono disposti come una rete difeistel di origine pesante, con 16 turni di un tipo chiamato "turni di miscelazione" inframmezzati da due turni di un altro tipo chiamato "turni di schiacciamento".

I 18 giri vengono eseguiti utilizzando la seguente sequenza interlacciata:

  1. eseguire 5 giri di miscelazione.
  2. eseguire 1 schiacciamento.
  3. eseguire 6 turni di miscelazione.
  4. eseguire 1 schiacciamento.
  5. eseguire 5 giri di miscelazione.

L'RC2 utilizza l'algoritmo di espansione della chiave, mediante il quale viene prodotta una chiave espansa composta da 64 (parole a 16 bit) a seconda di ogni bit della chiave di ingresso "a lunghezza variabile" fornita. Un ciclo di miscelazione consiste in quattro applicazioni della trasformazione "mix-up", come mostrato nel diagramma. Un round viene "mashed" aggiungendovi una delle parole a 16 bit della chiave espansa (RFC 2268).

L'RC2 è suscettibile di un attacco a chiave correlata utilizzando 234 attacchi a scelta (Kelsey et al. , 1997).

Lo sviluppo di RC2 è stato sponsorizzato da Lotus, che cercavano un cifrario personalizzato da esportare come parte del loro software Lotus Notes, dopo la valutazione della NSA. L'NSA ha suggerito un paio di modifiche, che Ronald Rivest ha incorporato. Dopo ulteriori trattative, il cifrario fu approvato per l'esportazione nel 1989.

Insieme all'RC4, l'RC2 con una chiave a 40 bit è stata trattata secondo le normative statunitensi sull'esportazione per la crittografia. Ora tutti gli algoritmi di crittografia a 40 bit sono obsoleti perché sono pericolosamente suscettibili ad attacchi di forza bruta.

Inizialmente i dettagli dell'algoritmo sono stati tenuti segreti - proprietario di RSA Security - ma il 29 gennaio 1996 il codice sorgente di RC2 è stato pubblicato in forma anonima su Internet sul forum Usenet, sci.crypt. Un post simile era già stato pubblicato in precedenza con RC4. Non è chiaro se il poster avesse accesso alle specifiche o se fosse stato invertito.