RC6: Symmetrisk blokchiffer - AES-finalist og nøgleegenskaber
RC6: Læs om det symmetriske blokchiffer, AES-finalistens design, nøgleegenskaber, valgbare blokstørrelser, runder og sikkerheds- og ydelsesfordele vs. RC5.
RC6 er et symmetrisk nøgleblokchiffer, der er afledt af RC5. Det blev designet som en parameteriseret algoritme med variabel blokstørrelse, variabel nøglestørrelse og et variabelt antal runder. Forkortelsen RC betyder "Rivest Cipher" (eller uformelt "Rons kode").
Historisk kontekst og AES-konkurrencen
I 1997 udskrev NIST en konkurrence for at vælge en efterfølger til Data Encryption Standard (DES) — det, der blev kaldt Advanced Encryption Standard (AES). RC6 blev udviklet som en videreudvikling af RC5 for at opfylde konkurrencens krav og blev udvalgt som en af de fem finalister i AES-konkurrencen. Den endelige vinder blev dog Rijndael (senere standardiseret som AES), og RC6 blev ikke valgt som standard.
Parameterisering og almindelige valg
RC6 kan konfigureres til forskellige sikkerheds- og ydeevneniveauer. Mulige blokstørrelser er 32, 64 eller 128 bit; antallet af runder kan være fra 0 til 255; og nøglestørrelserne kan variere fra 0 bit op til meget store værdier (i praksis op til flere hundrede bits). Den version, der blev indsendt til AES‑konkurrencen, er ofte angivet som RC6-32/20/16 (hvor 32 er ordstørrelsen w i bits, 20 er antal runder r, og 16 er nøglelængden b i bytes = 128 bit). Denne notation svarer til det typiske AES-udvalgsskema.
Algoritmens struktur og operationer
RC6 ligner RC5 i sin grundlæggende opbygning — den bruger addition modulo 2^w, bitwise XOR, og dataafhængige rotationer — men adskiller sig ved at bruge:
- fire arbejdsregistre (A, B, C, D) af w bit hver (så en 128-bit blok behandles som fire 32-bit ord),
- en ekstra multiplikationsoperation (B*(2B+1) og D*(2D+1)), som indgår i rotationsmængderne,
- et S-array (udvidet nøgletabel) for rundetilføjelser, analogt med RC5's nøgleplan.
Hensigten med multiplikationen er at øge udbredelsen (diffusion) pr. runde, så man kan opnå høj sikkerhed med færre runder og dermed bedre krypteringshastighed på visse platforme.
Nøgleplan (key schedule) og krypteringsflow (kort)
Ved initialisering udvides den hemmelige nøgle til et S-array (længde 2r + 4 ord) ved hjælp af faste konstanter (som i RC5) og en blandingsprocedure, hvor nøglematerialet og S-arrayet "køres sammen" i flere omgange. Under krypteringen opdeles klartekstblokken i fire ord A, B, C og D; rundetrin involverer beregning af to rotationsværdier via multiplikation og efterfølgende dataafhængige rotationer, XOR og addition af S-array-elementer. Efter afsluttende additioner samles ordene til cyphertext.
Designvalg og optimering
RC6 bruger fire arbejdsregistre især for at optimere på 32-bit CPU'er: hvor RC5 med standardblokstørrelser krævede 64- eller 128-bit operationer, er RC6 designet til at bygge en 128-bit blokarkitektur ved hjælp af 32-bit basoperationer. Multiplikationsleddet forbedrer diffusionen pr. runde, hvilket gør det muligt at bruge et moderat antal runder (fx 20) for høj sikkerhed.
Sikkerhed og kryptanalyse
Der er blevet publiceret en række analytiske resultater mod RC6, primært rettet mod reducerede runder. For fuldt konfigurerede varianter (fx RC6-32/20/16) findes der ingen kendte praktiske brud (ingen publiseret effektiv metode til at genskabe nøglen hurtigere end brute force under normale forudsætninger). Dog har forskere fundet:
- differential- og linearanalyseangreb samt distinguisher-teknikker, der rammer stærkt reducerede rundeantal,
- teoretiske svagheder i særlige parameterkombinationer eller i varianter med få runder,
- praktiske bekymringer om sidekanaler: da RC6 bruger dataafhængige rotationer, kan implementeringer være sårbare over for timing‑ og cachebaserede angreb, hvis ikke de er lavet konstant‑time.
Konklusion på sikkerhed: RC6 anses generelt for sikkert for velvalgte parametre og korrekt implementering, men ligesom alle cipher-design kræver den omhyggelig implementering for at modstå sidekanaler.
Ydeevne
RC6 er designet til effektivitet på 32-bit hardware; multiplikationen giver høj diffusion og kan reducere det nødvendige antal runder. På moderne hardware er sammenligningen med AES dog afhængig af platform: på CPU'er med AES‑accelerationsinstruktioner (f.eks. AES‑NI) vil AES ofte være væsentligt hurtigere. På platforme uden AES‑acceleration kan RC6 være konkurrencedygtig, især i softwareoptimerede implementeringer.
Patenter, licens og juridisk status
RC6 blev oprindeligt publiceret af Ron Rivest, Matt Robshaw, Ray Sidney og Yiqun Lisa Yin og var dækket af patenter (fx de nævnte US-patenter). Det betød, at kommerciel brug historisk kunne kræve licens eller royaltybetalinger til indehaveren af patentet. For kommercielle projekter skal man derfor kontrollere aktuel patenstatus og licensforhold, da patenter kan være udløbet eller have andre begrænsninger over tid.
Sammenligning med AES og udbredelse
Selvom RC6 var en stærk kandidat i AES-konkurrencen, blev den ikke valgt. Grunden var en kombination af faktorer: Rijndael blev vurderet som både sikker og enkel at implementere på mange platforme, og senere hardwareunderstøttelse (AES‑NI) har yderligere styrket AES' position. Derudover påvirkede bekymringer om patenter/licenser og kompleksiteten ved dataafhængige rotationer adoptionen. Samlet førte det til, at RC6 aldrig opnåede samme brede udbredelse som AES.
Anvendelser og status i dag
RC6 anvendes i dag kun i begrænset omfang. Den blev indsendt til andre evalueringsprojekter som NESSIE og CRYPTREC, men på trods af gode sikkerhedsegenskaber er dens praktiske adoption begrænset sammenlignet med AES. For nye systemer vil man ofte vælge AES på grund af standardisering, bred hardware-acceleration og udbredt støtte i biblioteker og protokoller.
Opsummering: RC6 er et velgennemtænkt, parameteriseret blokchiffer med designtræk fra RC5 plus multiplikation til forbedret diffusion. Det var en central AES‑finalist, men på grund af konkurrenceudfaldet, implementeringshensyn og patenthistorik har det ikke fået samme gennemslagskraft som AES. Ved brug af RC6 bør man sikre sig en up‑to‑date vurdering af patenter og følge best practices for modstand imod sidekanaler.
For teknisk implementering og reference kan man se de offentliggjorte specifikationer og papers fra forfatterne, som beskriver S‑array‑udvidelsen, rundefunktionen og anbefalede parameterkombinationer (fx RC6-32/20/16).
Spørgsmål og svar
Spørgsmål: Hvad er RC6?
Svar: RC6 er en symmetrisk nøgleblokchiffer, der er afledt af RC5. Det er en parameteriseret algoritme med en variabel blokstørrelse, nøglestørrelse og antal runder.
Sp: Hvem har designet RC6?
Svar: RC6 blev udviklet af Ron Rivest, Matt Robshaw, Ray Sidney og Yiqun Lisa Yin.
Spørgsmål: Hvad er standardblokstørrelserne for RC5 og AES?
Svar: Standardblokstørrelsen for RC5 er 64 bit, mens standardblokstørrelsen for AES er 128 bit.
Spørgsmål: Hvordan er RC6's struktur sammenlignet med RC5's?
Svar: RC6's struktur ligner i høj grad RC5's struktur, men der anvendes en ekstra multiplikationsoperation, som ikke findes i RC5, samt fire b/4-bit arbejdsregistre i stedet for to b/2-bit registre.
Spørgsmål: Hvorfor anvendes fire arbejdsregistre i stedet for to for at opbygge AES-arkitekturen ved hjælp af kun 32-bit operationer?
Svar: Heltalsmultiplikation bruges til at øge den udbredelse, der opnås pr. runde, så der er behov for færre runder, og hastigheden kan øges. Der er behov for fire arbejdsregistre, fordi der anvendes 32-bit operationer, når der er tale om 64-bit blokke, og 64-bit operationer, når der er tale om 128-bit blokke.
Spørgsmål: Er der krav om licens- eller royaltybetaling for produkter, der anvender algoritmen?
A: Ja, da det er en proprietær og patenteret algoritme (af RSA Security U.S. Patent 5,724,428 og U.S. Patent 5,835,600 ), kan der være behov for licens- og royaltybetalinger for alle produkter, der anvender algoritmen.
Søge