RC2 i kryptografi: blockchiffer, design, nyckelutvidgning och sårbarheter
RC2 i kryptografi: djupgående guide till blockchiffer, design, nyckelutvidgning och kända sårbarheter — historia, attacker och praktiska konsekvenser.
Inom kryptografi är RC2 ett blockchiffer med symmetrisk nyckel. Det utformades av Ronald Rivest 1987. "RC" står för "Rivest Cipher" (ibland skämtsamt kallat "Rons kod"). RC2 var avsett som ett effektivt chiffer för mjukvara och anpassades för exportregler vid den tiden.
Design och grundegenskaper
RC2 är ett 64-bitars blockchiffer som arbetar på 64-bitars block uppdelade i fyra 16-bitars ord. Chiffret använder en variabel nyckelstorlek (vanligtvis från några få byte upp till större nyckellängder; den exportbegränsade varianten använde ofta 40 bitar) och körs i totalt 18 rundor. Strukturen kan beskrivas som ett källtungt feistelnätverk, där rundorna delas upp i två typer:
- Mixing rounds – totalt 16 rundor organiserade i grupper som utför de huvudsakliga blandningsoperationerna på de fyra 16-bitarsorden i blocket.
- Mashing rounds – två korta rundor som införlivar delar av den utökade nyckeln i tillståndet för att ytterligare öka diffusions- och icke-linjäritetsegenskaper.
Ronderna följer den interleavade sekvens som ofta beskrivs i referensdokumentationen:
- Gör 5 omgångar med blandning.
- Gör en omgång av mosningen.
- Utför 6 omgångar.
- Gör en omgång av mosningen.
- Gör 5 omgångar med blandning.
Nyckelutvidgning
RC2 använder en särskild algoritm för nyckelutvidgning som tar en inmatad nyckel av variabel längd och producerar en utökad nyckel bestående av 64 16-bitarsord (totalt 1024 bitar i den utökade nyckelstrukturen). Denna utökade nyckel genereras genom en serie blandningar och permutationer som beror på varje bit i den ursprungliga nyckeln, vilket gör att även korta nycklar sprids över det interna nyckelmaterialet på ett komplext sätt.
I varje blandningsrunda appliceras flera "mix-up"-transformationer (fyra gånger per runda) som kombinerar additioner, bitvisa operationer och rotationer tillsammans med ord ur den utökade nyckeln. I mashing-rundorna läggs dessutom ord från den utökade nyckeln in i tillståndet för att påverka de efterföljande blandningsstegen (se nyckeln med och RFC 2268 för detaljer).
Säkerhet och kända sårbarheter
RC2 designades i en era med andra mått på säkerhet än idag. Ett par viktiga punkter att känna till:
- En praktisk relaterad-nyckel-attack mot RC2 publicerades av Kelsey et al. 1997. Denna attack utnyttjar relationer mellan nycklar och kräver omkring 2^34 valda klartexter för att fungera i sin teoretiska form, vilket gör chiffret svagare än önskvärt mot vissa typer av attacker.
- På grund av historiska exportbegränsningar användes ofta 40-bitarsnycklar med RC2 (samma begränsning som för RC4). Dagens datorresurser gör 40-bitarsnycklar triviala att knäcka med brute force-attacker, så sådana korta nycklar är oacceptabla för modern säkerhet.
- Sammanfattningsvis betraktas RC2 i dag som föråldrat och olämpligt för ny användning, särskilt i nyckelstorlekar som var vanliga vid exporttiderna. Modern kryptografi rekommenderar i stället algoritmer som AES och konstruktioner med integritetskontroll (t.ex. AEAD).
Historik och standardisering
Utvecklingen av RC2 sponsrades av Lotus; målet var ett chiffer som kunde exporteras tillsammans med Lotus Notes. NSA granskade och föreslog vissa förändringar som Ronald Rivest implementerade innan chiffret godkändes för export 1989. I praktiken blev en 40-bitarsnyckelvariant vanlig under lång tid, på grund av dåvarande amerikanska exportregler.
Till en början hölls detaljerna i algoritmen hemliga – RSA Security ägde specifikationen. Den 29 januari 1996 lades källkoden till RC2 anonymt ut på Internet i Usenet-forumet sci.crypt. Det är oklart om postaren hade direkt tillgång till officiella specifikationer eller om chiffret hade bakåtkompilerats.
Användning, implementering och rekommendationer
Historiskt användes RC2 i vissa kommersiella produkter (t.ex. Lotus Notes) och i äldre protokoll- eller filformat där exporterbar kryptering var ett krav. Numera är den praktiska användningen mycket begränsad på grund av de kända säkerhetsproblemen och korta nycklar som tidigare var vanliga.
- Implementeringar finns i äldre bibliotek och ibland i historiska RFC:er (se RFC 2268 för en officiell beskrivning av RC2).
- För nyutveckling och säkra system rekommenderas istället moderna, välgranskade algoritmer såsom AES tillsammans med autentiseringsmekanismer (t.ex. AES-GCM eller ChaCha20-Poly1305).
- Om du stöter på RC2 i äldre data eller protokoll: överväg migrering eller nyckeluppgradering och var medveten om att återanvändning av gamla 40-bitarsnycklar innebär stor risk för kompromettering.
Sammanfattningsvis var RC2 ett viktigt steg i mjukvarubaserad chifferdesign under slutet av 1980-talet och början av 1990-talet, men på grund av framsteg inom kryptanalys och ökade beräkningsresurser är RC2 i praktiken föråldrat och bör inte användas i nya system.

Mix-up-transformationen i RC2; En mixing round består av att tillämpa "mix-up"-transformationen fyra gånger.
Frågor och svar
F: Vad är RC2?
S: RC2 är ett blockchiffer med symmetriska nycklar som utformades av Ronald Rivest 1987. Det använder en blockstorlek på 64 bitar och 18 krypteringsrundor.
F: Vad står "RC" för?
S: "RC" står för "Rivest Cipher", eller alternativt "Rons kod".
F: Hur många omgångar utförs när RC2 används?
S: Vid användning av RC2 utförs 18 rundor - 16 blandningsrundor som är interfolierade med två mashing-rundor.
F: Hur fungerar algoritmen för nyckelutvidgning?
S: Algoritmen för nyckelexpansion producerar en expanderad nyckel som består av 64 (16-bitars ord) beroende på varje bit i den inmatade inmatningsnyckeln med variabel längd.
F: Vilken typ av angrepp är RC2 känslig för?
S: RC2 är känslig för en attack med relaterade nycklar med hjälp av 234 attacker med utvald klartext.
Fråga: Vem sponsrade utvecklingen av RC2?
Svar: Utvecklingen av RC2 sponsrades av Lotus, som ville ha en anpassad chiffer som skulle exporteras som en del av deras programvara Lotus Notes.
Sök