RC2 — 64-bit blokchiffer: design, historie og sikkerhed
RC2 — dybdegående guide til 64-bit blokchiffer: design, nøgleudvidelse, historisk eksport, kendte angreb og sikkerhedsvurdering.
Inden for kryptografi er RC2 et symmetrisk nøgleblokchiffer, udviklet af Ronald Rivest i 1987. "RC" står for "Rivest Cipher" eller mere uformelt "Ron's code".
Design og parametre
RC2 opererer på en 64-bit blok og accepterer en variabel nøglestørrelse. Algoritmen består af 18 runder, organiseret som et kildetungt feistelnetværk. Den er designet til at være effektiv i software, også på ældre 16-bit-arkitektur.
De 18 runder er inddelt i to typer:
- Mixing rounds (blandrunder) – hvor dataord blandes ved hjælp af simple bit-operationer (addition modulo 216, XOR, AND og rotationer).
- Mashing rounds (mash-runder) – hvor ord fra den udvidede nøgle blandes ind i tilstanden.
Runderækkefølgen er som følger:
- Udfør 5 mixing rounds.
- Udfør 1 mashing round.
- Udfør 6 mixing rounds.
- Udfør 1 mashing round.
- Udfør 5 mixing rounds.
Nøgleudvidelse
RC2 anvender en nøgleudvidelsesalgoritme der omformaterer den leverede variable-længde inputnøgle til en større intern nøgle (ofte omtalt som den udvidede nøgle). Ifølge RFC 2268 produceres en udvidet nøgle bestående af 64 16-bit ord (dvs. 128 byte). Udvidelsen er ikke en simpel kopiering, men en sekvens af blandings- og reduktionsoperationer, som afhænger af hver bit i den oprindelige nøgle og en foruddefineret 256-byte tabel (ofte kaldet en "pi"-tabel) brugt til diffusion.
I hver mixing round anvendes fire gange en såkaldt "mix-up"-transformation på de fire 16-bit-ord, der udgør data-blokken. I en mashing round tilføjes værdier fra den udvidede nøgle til nogle af dataordene for at øge afhængigheden af nøglematerialet.
Historie
Udviklingen af RC2 blev sponsoreret af Lotus, som ønskede at kunne eksportere et ciffer til brug i deres Lotus Notes-software efter evaluering af NSA. NSA foreslog et par ændringer, som Ronald Rivest indarbejdede, og efter forhandlinger blev algoritmen godkendt til eksport i 1989.
I første omgang var detaljer om algoritmen fortrolige – RSA Security ejede rettighederne. Den 29. januar 1996 blev kildekoden til RC2 dog anonymt offentliggjort på internettet (Usenet-forummet sci.crypt). Det er uklar, om den person, der publicerede koden, havde direkte adgang til de oprindelige specifikationer, eller om koden var omvendt konstrueret fra implementeringer.
Sikkerhed og kryptanalyse
RC2 blev senere genstand for flere kryptanalytiske undersøgelser. Et af de mest bemærkelsesværdige fund er, at RC2 er sårbar over for relaterede-nøgle-angreb. Kelsey et al. (1997) demonstrerede et relateret-nøgle-angreb i modellen med valgt klartekst, som kræver omkring 2^34 valgte klartekster under bestemte relaterede-nøgle-forhold. Dette betyder, at RC2 ikke er robust i miljøer, hvor en angriber kan fremtvinge eller forudsige relationer mellem nøgler.
Derudover blev RC2 (ligesom RC4) i praksis ofte brugt i en 40-bit variant for at opfylde tidligere amerikanske eksportregler. 40-bit nøgler er i dag helt forældede og sårbare over for brute force-angreb med relativt små ressourcer, og derfor bør sådanne nøglelængder ikke længere anvendes.
Sammenfattende: selv om der ikke nødvendigvis findes et praktisk, fuldtudnyttet angreb i den sorte-boks, enkelt-nøgle-model for fuldt brede RC2 med lange nøgler, så gør relaterede-nøgle-sårbarheder, lækagen af specifikationen og den historiske brug af korte nøgler algoritmen uegnet til moderne sikkerhedsbehov.
Anvendelse og anbefalinger
RC2 blev i sin tid brugt i forskellige applikationer og protokoller, især hvor kompatibilitet med ældre systemer og 16-bit-arkitektur var vigtig. I dag anbefales det ikke at bruge RC2 i nye systemer. Moderne og velansete alternativer er bl.a. AES (for blokchiffre) og strømchiffre som ChaCha20, som tilbyder bedre sikkerhed, performance og bred standardstøtte.
Hvis du arbejder med legacy-software, der stadig bruger RC2, bør du planlægge en migration til en moderne algoritme og sikre, at nøglestyring opfylder nutidens krav (tilstrækkelige nøglelængder, ingen relaterede-nøgle-situationer, og brug af godkendte protokoller).
Yderligere læsning
Den officielle specificering og detaljer om nøgleudvidelsen findes i RFC 2268. For historiske og kryptanalytiske detaljer kan de originale papirer af Kelsey et al. og samtidige gennemgange af tidlige ciphers være nyttige.
Bemærk: Behold referencerne og linksene i denne tekst for at finde de oprindelige kilder og tekniske beskrivelser.


RC2's "mix-up"-transformation; En mix-runde består af fire gange "mix-up"-transformationen.
Spørgsmål og svar
Spørgsmål: Hvad er RC2?
Svar: RC2 er en blokchiffer med symmetrisk nøgle, der blev designet af Ronald Rivest i 1987. Den anvender en blokstørrelse på 64 bit og 18 krypteringsrunder.
Spørgsmål: Hvad står "RC" for?
A: "RC" står for "Rivest Cipher", eller alternativt "Rons kode".
Spørgsmål: Hvor mange runder udføres der ved brug af RC2?
Svar: Ved brug af RC2 udføres der 18 runder - 16 blandingsrunder, der er interleaved med to mashing-runder.
Spørgsmål: Hvordan fungerer nøgleudvidelsesalgoritmen?
A: Nøgleudvidelsesalgoritmen producerer en udvidet nøgle bestående af 64 (16-bit ord) afhængig af hver bit i den leverede inputnøgle af variabel længde.
Spørgsmål: Hvilken type angreb er RC2 modtagelig for?
Svar: RC2 er modtagelig over for et angreb på en relateret nøgle ved hjælp af 234 angreb med valgt klartekst.
Spørgsmål: Hvem sponsorerede udviklingen af RC2?
Svar: Udviklingen af RC2 blev sponsoreret af Lotus, som ønskede at få en specialfremstillet kryptering, der kunne eksporteres som en del af deres Lotus Notes-software.
Søge