RC6: Blockchiffer för symmetrisk kryptering och AES-finalist
Upptäck RC6: avancerat blockchiffer för symmetrisk kryptering, derivat av RC5 och AES-finalist — flexibel block- och nyckelstorlek, hög prestanda.
Inom kryptografi är RC6 ett blockchiffer med symmetriska nycklar som härrör från RC5. RC6 är en parametriserad algoritm med en variabel blockstorlek, en variabel nyckelstorlek och ett variabelt antal rundor. RC står för "Rivest Cipher", eller alternativt "Rons kod".
1997 utlyste NIST en tävling för att välja en efterföljare till Data Encryption Standard (DES) som skulle kallas Advanced Encryption Standard (AES). RC6 härleddes från RC5 för att uppfylla tävlingens krav och valdes ut som en av de fem finalisterna i tävlingen om Advanced Encryption Standard (AES), men valdes inte ut som standard.
För att kunna erbjuda olika säkerhets- och effektivitetsnivåer kan man med RC6 välja blockstorlek: 32 bitar (endast för experiment och utvärdering), 64 bitar (som ersättning för DES) och 128 bitar (avsedd för AES). Antalet rundor kan variera mellan 0 och 255, medan nyckelstorlekarna kan variera mellan 0 och 2040 bitar.
RC6 är mycket lik RC5:s struktur och kan ses som en sammanflätning av två parallella RC5-krypteringsprocesser. RC6 använder dock en extra multiplikationsoperation som inte finns i RC5 och använder fyra b/4-bitars arbetsregister (se uppdelning av klartextblock i Feistel cipher) i stället för två b/2-bitars register som i RC5 (b är blockstorleken). Heltalsmultiplikation används för att öka den spridning som uppnås per runda så att färre rundor behövs och chifferns hastighet kan ökas.
Anledningen till att man använder fyra arbetsregister i stället för två är främst för optimering på 32-bitars CPU:er. Standardblockstorleken för RC5 var 64 bitar, medan standardblockstorleken för AES är 128 bitar. RC5 har endast två arbetsregister. Den använder 32-bitars operationer när den hanterar 64-bitars block och 64-bitars operationer när den hanterar 128-bitars block, så fyra arbetsregister krävs för att bygga AES-arkitekturen med hjälp av endast 32-bitars operationer.
RC6 är en egenutvecklad och patenterad algoritm (av RSA Security U.S. Patent 5,724,428 och U.S. Patent 5,835,600 ) och kan kräva licens- och royaltybetalningar för produkter som använder algoritmen. Den utformades av Ron Rivest, Matt Robshaw, Ray Sidney och Yiqun Lisa Yin, och har också lämnats in till projekten NESSIE och CRYPTREC.
Design och parametrar
RC6 är konstruerat för att vara flexibelt: man väljer en ordstorlek w (vanligtvis 32 bitar för 128-bitars block), vilket ger ett block med 4w bitar. De vanligast diskuterade parametrarna i samband med AES-tävlingen var blockstorlek 128 bitar (w = 32), 20 rundor och nyckellängder på 128, 192 eller 256 bitar. Algoritmen tillåter dock blockstorlekar 32, 64 och 128 bitar, rundor 0–255 samt nycklar upp till 2040 bitar.
Operationerna i RC6 består huvudsakligen av 32- eller 64-bitars additions, XOR, databeroende rotationer och en multiplikation (ofta uttryckt som att man multiplicerar ett register med (2*register + 1)). Multiplikationen används för att skapa en rotation som beror på hela ordet (inte endast delar), vilket förbättrar spridningen (diffusion) och kan minska antalet nödvändiga rundor jämfört med enbart addition/XOR/rotation.
Algoritmens arbetsgång (översikt)
Vid kryptering delas ett block upp i fyra ord A, B, C och D. Varje runda utförs i flera steg där B och D uppdateras med databeroende rotationer som bestäms av multiplikationsuttryck, följt av additioner med subnycklar. Efter alla rundor görs en sista addition/translation med nyckeldata. Nyckelschemat (key schedule) expanderar den hemliga nyckeln till en array av subnycklar, på samma sätt som i RC5, med hjälp av fasta konstanter som härrör från irrationella tal (liknande Pw och Qw i RC5).
Strukturen kan beskrivas som en generaliserad Feistel-lik konstruktion med fyra arbetsregister och databeroende rotationer. Detta gör RC6 väl lämpad för implementationer på 32-bitars processorer eftersom man kan använda 32-bitars operationer för hela 128-bitarsblocket.
Säkerhet och kryptanalys
Under åren har forskare presenterat kryptanalys riktad mot reducerade varianter av RC6, samt analyser i olika modeller som exempelvis relaterade-nyckel-attacker. Dessa resultat visar hur många rundor som behövs för att motstå vissa typer av attacker, men det finns inga kända praktiska attacker mot fullt parametriserade RC6 när man använder de rekommenderade inställningarna (t.ex. 20 rundor och 128/192/256-bitars nycklar) från AES-tävlingen. Som alltid är det viktigt att skilja mellan teoretiska genombrott mot förenklade varianter och verkliga, praktiskt genomförbara attacker mot fulla implementationer.
Patent, licens och adoption
Eftersom RC6 var patenterat av RSA Security (U.S. Patent 5,724,428 och 5,835,600) krävdes licens och eventuella royaltybetalningar för kommersiellt bruk under patentperioden. Detta bidrog till att RC6 inte fick lika bred kommersiell adoption som vissa andra chiffer som var fria att använda. När Rijndael valdes som AES-standard ökade den fria tillgängligheten och därmed dess spridning i industrin.
Användning, prestanda och sammanfattning
RC6 är väl anpassat för mjukvaruimplementationer på 32-bitars plattformar och erbjuder god prestanda tack vare sin användning av multiplikation för att accelerera diffusionen. Trots detta blev RC6 inte standarden efter AES-tävlingen; Rijndael valdes till AES. RC6 förblir dock intressant ur forskningssynpunkt och som exempel på hur databeroende rotationer och multiplikation kan användas i blockchifferdesign.
Sammanfattning: RC6 är en flexibel och kraftfull utveckling av RC5, designad för att möta AES-tävlingens krav. Den har stark teoretisk grund och god prestanda på 32-bitars system, men på grund av patentfrågor och att Rijndael valdes som standard fick den begränsad praktisk spridning.
Frågor och svar
F: Vad är RC6?
S: RC6 är ett blockchiffer med symmetrisk nyckel som härrör från RC5. Det är en parametrerad algoritm med en variabel blockstorlek, nyckelstorlek och antal rundor.
F: Vem har konstruerat RC6?
S: RC6 utformades av Ron Rivest, Matt Robshaw, Ray Sidney och Yiqun Lisa Yin.
F: Vilka är standardblockstorlekarna för RC5 och AES?
S: Standardblockstorleken för RC5 är 64 bitar medan standardblockstorleken för AES är 128 bitar.
F: Hur är RC6:s struktur jämfört med RC5:s?
S: RC6:s struktur är mycket lik RC5:s, men den använder en extra multiplikationsoperation som inte finns i RC5 samt fyra b/4-bitars arbetsregister i stället för två b/2-bitars register.
F: Varför används fyra arbetsregister i stället för två för att bygga AES-arkitekturen med hjälp av endast 32-bitarsoperationer?
Svar: Heltalsmultiplikation används för att öka den spridning som uppnås per runda så att färre rundor behövs och hastigheten kan ökas. Fyra arbetsregister behövs eftersom 32-bitarsoperationer används när man hanterar 64-bitarsblock och 64-bitarsoperationer när man hanterar 128-bitarsblock.
F: Krävs det några licenser eller royaltybetalningar för produkter som använder algoritmen?
S: Ja, eftersom det är en egenutvecklad och patenterad algoritm (av RSA Security U.S. Patent 5,724,428 och U.S. Patent 5,835,600 ) kan det krävas licens- och royaltybetalningar för alla produkter som använder algoritmen.
Sök