Kryptografiassa RC2 on symmetrisen avaimen lohkosalaus, jonka Ronald Rivest suunnitteli vuonna 1987. "RC" tulee sanoista "Rivest Cipher" tai epävirallisesti "Ron's Code". RC2 suunniteltiin käytettäväksi 64-bittisten lohkojen salaamiseen ja se on ollut laajalti käytössä muun muassa Lotus Notes -ympäristössä.
Perusominaisuudet
RC2 on 64-bittinen lohkosalaus. Sen avainkoko on muuttuva: käytännössä avaimet voivat olla erilaisia pituuksia, ja vientirajoitusten vuoksi yleisesti käytetty avainpituus oli aikanaan 40 bittiä, mutta toteutuksissa on tuettu myös pidempiä avaimia (esimerkiksi 64 tai 128 bittiä).
Algoritsi suorittaa yhteensä 18 kierrosta; kierrokset on järjestetty lähdepainotteisena feistel-verkkona. 16 näistä kierroksista ovat niin kutsuttuja sekoituskierroksia (mix rounds), jotka on lomitettu kahdella toisen tyyppisellä kierroksella, joista käytetään termiä mashing-kierros (mäskäyskierros).
Rakenne ja avaimen laajentaminen
RC2 käyttää avaimen laajennusalgoritmia, jonka tuloksena muodostetaan laajennettu avain, joka koostuu 64 16-bittisestä sanasta. Tämä laajennettu avain riippuu monimutkaisella tavalla alkuperäisen, vaihtelevan pituisen syöttöavaimen biteistä. Laajennetun avaimen sanat käytetään sitten kunkin sekoituskierroksen lisäämiseen tilaan.
Sekoituskierros (mix) koostuu neljästä peräkkäisestä sekoitustransformaation sovelluksesta, jotka yhdistelevät 16-bittisiä sanoja käyttäen esimerkiksi yhteenlaskua modulo 2^16, bittitasoisia operaatiota (kuten XOR) ja rotaatioita/siirtoja. Mashing-kierroksissa osaan tilan sanoista lisätään suoraan arvoja laajennetusta avaimesta, mikä muuttaa seuraavien sekoituskierrosten vaikutusta.
Kierrosjärjestys
18 kierrosta suoritetaan seuraavalla lomitussekvenssillä:
- tee 5 sekoituskierrosta.
- tee 1 mäskäyskierros.
- tee 6 sekoituskierrosta.
- tee 1 mäskäyskierros.
- tee 5 sekoituskierrosta.
Turvallisuus ja analyysit
RC2 ei enää vastaa nykyaikaisia turvallisuusvaatimuksia. Algoritmi on altis useille kryptanalyysimenetelmille. Erityisesti Kelsey et al. (1997) esittivät sukulaisavainhyökkäyksen (related-key attack), joka vaatii noin 2^34 valittua valetekstiä ja muita ehtoja hyödyntääkseen avainriippuvuuksia. Tämän ja muiden tulosten vuoksi RC2:ta pidetään heikentyneenä verrattuna moderneihin lohkosalausalgoritmeihin kuten AES.
Lisäksi 40-bittinen avainasetus, jota käytettiin paljon vientirajoitusten vuoksi, on nykyisin aivan liian heikko ja altis brute force -hyökkäyksille.
Historia ja käyttöönotto
RC2:n kehittämistä sponsoroi Lotus, joka halusi mukautetun salausmenetelmän osaksi Lotus Notes -ohjelmistoa. Lotus pyysi algoritmin arvioitavaksi NSA:lle. NSA ehdotti muutoksia, jotka Ronald Rivest sitten sisällytti suunnitteluun; neuvotteluiden jälkeen algoritmi hyväksyttiin ohjelmiston mukana vietäväksi vuonna 1989.
Samalla kun RC4:n tapaan RC2:ta käsiteltiin Yhdysvaltojen vientisäännöksissä, erityisesti 40-bittiset versiot olivat säänneltyjä. Nykyään kaikki 40-bittiset salausalgoritmit ovat vanhentuneita käytännössä kaikissa turvallisuussovelluksissa.
Julki- ja lähdekooditapahtumat
Aluksi RC2:n tarkat yksityiskohdat pidettiin salaamina RSA Securityn omaisuutena. Kuitenkin 29. tammikuuta 1996 RC2:n lähdekoodi julkaistiin nimettömänä Internetissä Usenet-foorumilla sci.crypt. Vastaava tapaus oli aiemmin tapahtunut myös RC4:n kohdalla. On remain epäselvää, oliko julkaisijalla suora pääsy alkuperäisiin määrittelyihin vai oliko kyseessä käänteismuunneltu toteutus.
Käytännön suositus
Nykykäytännössä RC2:ta ei suositella käytettäväksi uudessa järjestelmässä. Sen tilalle suositellaan moderneja, julkisesti arvioituja ja standardoituja algoritmeja kuten AES, sekä protokollia ja avainhallintajärjestelmiä, jotka tukevat riittävän pitkiä avaimia ja vahvoja avainvaihtomenetelmiä.
Lisätietoja ja tarkemmat algoritmiesimerkit löytyy muun muassa RFC 2268 -määrittelystä ja julkisista kryptografian tutkimusartikkeleista.

