RC6 määratlus – sümmeetriline plokkšiffer ja AESi finalist
Krüptograafias on RC6 sümmeetrilise võtmega plokkšiffer, mis on tuletatud RC5-st. RC6 on parameetriga algoritm: sellel on muudetav plokisuurus, muudetav võtmesuurus ja muudetav vooride (ringide) arv. Lühend RC tähistab tavaliselt "Rivest Cipher" (või mõnikord "Roni kood").
Taust ja AESi konkurss
1997. aastal kuulutas NIST välja konkursi DESi järeltulija valimiseks, mida hakati kutsuma täiustatud krüpteerimisstandardiks (AES). RC6 töötati välja sellel konkursil osalemiseks — see on RC5-st edasiarendatud variant, mis vastab NISTi nõuetele (eriti 128-bitiseks plokiks ja programmi käitumise nõuetekohaseks tööks 32-bitistel protsessoritel). RC6 valiti üheks viiest finalistist Advanced Encryption Standard (AES) konkursil, kuid lõplikuks standardiks osutus Rijndael (tänapäeval tuntud kui AES).
Peamised omadused ja parameetrid
- Muudetav plokisuurus: RC6 toetab plokkide suurusi 32, 64 ja 128 bitti; enimkasutatav konfiguratsioon AESi konkursil oli 128 bitti.
- Word-põhine arhitektuur: plokk jagatakse neljaks w-bitiseks registriks (A, B, C, D), kus w = ploki suurus / 4. Näiteks w = 32, kui plokk on 128 bitti.
- Muudetav vooride arv r (tavaliselt r = 20 konkreetseks turvatasemeks AESi konkursi tingimustes).
- Võtme pikkus on paindlik: võidualgoritm lubab võtmemõõtme baiti/bitte kuni väga suure ulatuseni; tavalised võtmevalikud on 128, 192 ja 256 bitti (vastavalt AES-i tavapärastele võtmetele).
- Tööoperatsioonid: RC6 kasutab lihtsaid ja kiireid aritmeetilisi operatsioone — liitmist, XOR-i, tsüklilisi pöördeid (rotations) ning täismultiplikatsiooni (word-multiplication) — mis teeb selle tarkvaras eriti efektiivseks 32-bitiste protsessorite peal.
Kuidas RC6 töötab (ülevaade)
RC6 krüpteerimine töötab nelja w-biti suuruse tööregistriga A, B, C ja D. Enne vooride alustamist lisatakse registritele kaks esimest võtme-laengut (S[0], S[1]). Iga voori sees arvutatakse andmekoos sõltuvad pöördemäärad, kasutades korrutust vormis x*(2x+1) — see väljund määrab, mitu bitti andmeregisterjärel pööratakse. Põhiloogika lühidalt:
- B ja D segatakse sissevooris võtmestruktuuriga.
- Igas vooris arvutatakse pöördemäärad andmetega sõltuvate multiplikatsioonide abil; seejärel tehakse XOR, tsükliline pööramine ja liitmine võtmesõnadega, mis tagab tugeva difusiooni ja segamise.
- Pärast viimast voori tehakse lõpu-võtmesegamine (final whitening), et saada krüpteeritud plokk.
RC6 kasutab andmest sõltuvaid pöördeid (data-dependent rotations), mis koos täismultiplikatsiooniga aitavad saavutada suurt difusiooni iga voori kohta — seetõttu vajab RC6 sama turvalisuse saavutamiseks vähem voorusid kui mõni teine sarnane skeem, samas kui operatsioonid jäävad lihtsateks ja kiireteks tarkvaras.
Võtmeplaan (key schedule)
RC6 võtmeplaan laiendab algset pärisvõtit massiivi S, mis sisaldab 2r + 4 w-bitisid sõnu (r = vooride arv). See massiiv segatakse algse võtme baitidega läbi lihtsa tsüklilise segamise protseduuri, mille tulemusena saadakse iga voori jaoks vajalikud võtmesõnad. Võtmeplaan on kavandatud nii, et see oleks lihtne ja kiire, ent samas ei avaldaks liigset struktureeritud mustrit, mis oleks krüptanalüütikule kasulik.
Tõhusus ja rakendused
- Tarkvara: RC6 on väga sobiv 32-bitiste protsessorite peal töötamiseks, kuna selle põhioperatsioonid (xori, liit, pöörded ja täismultiplikatsioonid) on sellistel arhitektuuridel kiirelt kättesaadavad.
- Hüvede-kaal: RC6 püüab leida tasakaalu kiire arvutustundlikkuse ja suure difusiooni vahel — täismultiplikatsioon annab rohkem segamist ühe vooriga, mis võib vähendada vajalike vooride arvu.
- Tõenäolev kasutus: kuigi RC6 ei saanud AES-iks, oli see atraktiivne alternatiiv ja saavutas tähelepanu krüptograafide seas; praktikas jäi laiemaks standardiks siiski AES (Rijndael).
Turvalisus ja krüptanalüüs
RC6 läbivaatamisel AESi konkursil ja hilisemas uurimuses on vaadeldud mitmesuguseid krüptanalüütilisi ristseid ning uuritud nii diferentsiaalseid kui ka lineaarseid lähenemisi. Mõned rünnakud on leidnud nõrkusi muudetud või vähendatud vooride arvuga variantidel ning on olemas ka seotud-võtme (related-key) tüüpi analüüse teatud piiratud juhtudel. Praeguse teadmise kohaselt ei ole publikustatud tõestatud praktikaga töötavat üldist murdu, mis lõhuks täisväärtusliku, vastavalt soovitatud parameetritega (nt r = 20, w = 32) RC6 krüptosüsteemi reaalses kasutuses.
Patentid ja litsentsid
Algoritm on alates arenduse ajast olnud kaitstud ja patenteeritud (nt RSA Security U. S. Patent 5,724,428 ja U. S. Patent 5,835,600), mis tähendas, et tootjad pidid võimalusel arvestama litsentsitasude ja kasutusõigustega. Kuna patentide kehtivusaeg on piiratud, võivad mõned neist õigustest olla aegunud — soovitatav on kontrollida kehtivaid õigusi ja litsentse enne RC6 ärilist või laialdast kasutamist.
Ajaloos ja standardisatsioon
RC6 töötasid välja Ron Rivest, Matt Robshaw, Ray Sidney ja Yiqun Lisa Yin ning esitati ka teistele hindamisprojektidele, nagu NESSIE ja CRYPTREC. Kuigi RC6 oli tugev kandidaat ja leidis laialdast tähelepanu, eelistati lõpuks AESi kontekstis Rijndaeli lahendust. RC6 on siiski huvipakkuv näide plokkšifrist, mis kombineerib lihtsaid operatsioone ja andmesõltuvaid pöördeid, ning pakub heaks uurimisaluseks krüptograafiliste konstruktsioonide ja optimeerimise jaoks.
Kokkuvõttes on RC6 paindlik ja mõistlikult kiire plokkšiffer, mis pakub huvitavaid omadusi (muudetavad parameetrid, andmesõltuvad pöörded, multiplikatsiooniga difusioon) ning mis mängis olulist rolli AES-i konkursi finalistina. Selle praktiline kasutus on jäänud piiratumaks, kuid RC6-st saadud teadmised on mõjutanud hilisemat krüptograafilist tööd ja uurimusi.
Küsimused ja vastused
K: Mis on RC6?
V: RC6 on RC5-st tuletatud sümmeetrilise võtmega plokkšiffer. See on parameetriseeritud algoritm, mille plokisuurus, võtme suurus ja voorude arv on muutuv.
K: Kes töötas välja RC6?
V: RC6 töötasid välja Ron Rivest, Matt Robshaw, Ray Sidney ja Yiqun Lisa Yin.
K: Millised on RC5 ja AESi vaikimisi plokisuurused?
V: RC5 vaikimisi plokisuurus on 64 bitti, AES-i vaikimisi plokisuurus on 128 bitti.
K: Kuidas on RC6 struktuur võrreldav RC5 omaga?
V: RC6 struktuur on väga sarnane RC5 omaga, kuid selles kasutatakse täiendavat korrutamisoperatsiooni, mida viimases ei ole, ning nelja b/4-bitist tööregistrit kahe b/2-bitise registri asemel.
K: Miks kasutatakse nelja tööregistrit kahe asemel, et luua AES-arhitektuur, mis kasutab ainult 32-bitiseid operatsioone?
V: täisarvude korrutamist kasutatakse selleks, et suurendada ühe vooru kohta saavutatud hajutamist, nii et on vaja vähem voorusid ja saab suurendada kiirust. Neli tööregistrit on vaja, sest 64-bitiste plokkide puhul kasutatakse 32-bitiseid operatsioone ja 128-bitiste plokkide puhul 64-bitiseid operatsioone.
K: Kas algoritmi kasutavate toodete puhul on vaja litsentse või litsentsitasusid?
V: Jah, kuna tegemist on patenteeritud ja patenteeritud algoritmiga (RSA Security U.S. Patent 5,724,428 ja U.S. Patent 5,835,600 ), võib nõuda litsentsimist ja litsentsitasu maksmist mis tahes toodete puhul, mis kasutavad seda algoritmi.