RC6

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. toukokuuta 2018 tarkistetusta versiosta . tarkastukset vaativat 5 muokkausta .
RC6

RC6-algoritmin Feistel-verkko
Luoja Ronald Rivest, M. Robshaw, R. Sidney (RSA Laboratories)
Luotu 1998_ _
julkaistu 1998_ _
Avaimen koko 128, 192 tai 256 bittiä (0 - 2040 bittiä)
Lohkon koko 128-bittinen (32-bittisille alustoille)
Kierrosten lukumäärä 20 (oletus)
Tyyppi Feistelin verkko

RC6  on symmetrinen lohkosalausalgoritmi , joka on johdettu RC5 - algoritmista . Sen loivat Ron Rivest, Matt Robshaw ja Ray Sidney täyttääkseen Advanced Encryption Standard (AES) -kilpailun vaatimukset. Algoritmi oli yksi kilpailun viidestä finalistista, ja sen toimittivat myös NESSIE ja CRYPTREC . Se on patentoitu (omistus)algoritmi, ja sen on patentoinut RSA Security.

RC6:n AES-muunnos tukee 128-bittisiä lohkoja ja 128-, 192- ja 256-bittisiä avaimia, mutta itse salaus, kuten RC5, voidaan konfiguroida tukemaan laajempaa sekä lohko- että avaimenpituuksia (0 - 2040 bittiä). ) [1] . RC6 on rakenteeltaan hyvin samanlainen kuin RC5, ja se on myös melko helppo toteuttaa.

Se on AES-finalisti, mutta yksi primitiivisistä operaatioista on kertolasku, joka on hidas joillakin laitteistoilla ja vaikeuttaa salauksen toteuttamista useilla laitteistoalustoilla ja joka osoittautui yllätykseksi tekijöille. , on myös toteutettu melko huonosti järjestelmissä, joissa on Intel IA-64 -arkkitehtuuri. Tässä tapauksessa algoritmi menettää yhden tärkeimmistä eduistaan ​​- korkean suoritusnopeuden, josta on tullut kritiikin syy ja yksi esteistä uudeksi standardiksi valinnalle. Kuitenkin Pentium II- , Pentium Pro- , Pentium III- , PowerPC- ja ARM -suoritinjärjestelmissä RC6-algoritmi on voittaja Rijndaelin edellä [2] .

RC6:n tiedot

Aivan kuten RC5 , RC6 on täysin parametrisoitu salausalgoritmien perhe. Algoritmin määrittämiseksi tietyillä parametreilla käytetään nimitystä RC6-w/r/b , jossa

Ollakseen AES - yhteensopiva lohkosalauksen on käsiteltävä 128-bittisiä lohkoja. Koska RC5  on poikkeuksellisen nopea lohkosalaus , sen laajentaminen toimimaan 128-bittisten lohkojen kanssa johtaisi kahden 64-bittisen työrekisterin käyttöön. Mutta arkkitehtuuri ja ohjelmointikielet eivät vielä tue 64-bittistä toimintaa, joten projekti jouduttiin muuttamaan käyttämään neljää 32-bittistä rekisteriä kahden 64-bittisen sijaan.

Avaimen laajennus

Jatkuva sukupolvi:

Aivan kuten RC5 :ssä, RC6:ssa generoidaan kaksi näennäissatunnaista muuttujaa käyttämällä kahta matemaattista vakiota: eksponentti (e) ja kultainen suhde (f).

,

missä  on pyöristys lähimpään parittomaan kokonaislukuun. Kun w = 32 bittiä (heksadesimaali):

Desimaalimuodossa:

Avaimen laajennusmenettely RC6-w/r/b:lle:

RC6 - salauksen avaintaulukko on myös identtinen RC5 - salaustaulukon kanssa . Erona on, että useampia sanoja taulukosta L johdetaan käyttäjän toimittamasta avaimesta, jota käytetään salauksen ja salauksen purkamisen aikana.

Sisäänkäynti:

Poistu:

>>>, <<< - sykliset siirtymät oikealle ja vasemmalle, vastaavasti.

S [ 0 ] = Pw i = 1 - 2 r + 3 do _ S [ i ] = S [ i - 1 ] + Qw A = B = i = j = 0 v = 3 * max { c , 2 r + 4 } kun s = 1 - v do { A = S [ i ] = ( S [ i ] + A + B ) <<< 3 B = L [ j ] = ( L [ j ] + A + B ) <<< ( A + B ) i = ( i + 1 ) mod ( 2 r + 4 ) j = ( j + 1 ) mod c }

Salaus ja salauksen purku

RC6 toimii neljällä w-bittisellä rekisterillä A, B, C ja D, jotka sisältävät syötetyn selkeän tekstin ja ulostulon salatekstin salauksen lopussa.

Salaus/salauksen purku RC6-w/r/b:llä

Salausmenettely:

Sisäänkäynti:

  • r kierrosten lukumäärä
  • w-bittiset avaimet jokaiselle kierrokselle S[0, … , 2r + 3]

Poistu:

  • salateksti on tallennettu A-, B-, C- ja D-kirjaimeen


B = B + S [ 0 ] D = D + S [ 1 ] i = 1 : stä r do { t = ( B ( 2 B + 1 )) <<< lg w u = ( D ( 2 D + 1 )) <<< lg w A = (( A t ) <<< u ) + S [ 2 i ] C = (( C u ) <<< t ) + S [ 2 i + 1 ] ( A , B , C , D ) = ( B , C , D , A ) } A = A + S [ 2 r + 2 ] C = C + S [ 2 r + 3 ]

Salauksen purkumenettely:

Sisäänkäynti:

  • A, B, C ja D tallennettu salateksti
  • r kierrosten lukumäärä
  • w-bittiset avaimet jokaiselle kierrokselle S[0, … , 2r + 3]

Poistu:

  • alkuperäinen teksti on tallennettu A-, B-, C- ja D-kentille


C = C - S [ 2 r + 3 ] A = A - S [ 2 r + 2 ] i = r alas 1 do _ { ( A , B , C , D ) = ( D , A , B , C ) u = ( D ( 2 D + 1 )) <<< lg w t = ( B ( 2 B + 1 )) <<< lg w C = (( C - S [ 2 i + 1 ]) >>> t ) u A = (( A - S [ 2 i ]) >>> u ) t } D = D - S [ 1 ] B = B - S [ 0 ]

Turvallisuus

RC6-algoritmin muunnelma, joka julkistettiin AES :ssä , kuten jo mainittiin, tukee 128-bittisiä lohkoja ja 128-, 192- ja 256-bittisiä avaimia, ja sisältää myös 20 kierrosta. Tämä on RC6-128/20/b, jossa b = 128 192 tai 256 bittiä. Tätä algoritmia vastaan ​​ei ole löydetty hyökkäyksiä. Hyökkäyksiä on löydetty vain algoritmin yksinkertaistettuja versioita vastaan, eli algoritmia, jossa on pienempi määrä kierroksia.

Uskotaan, että paras vaihtoehto RC6:een kohdistuvasta hyökkäyksestä kryptaanalyytikon käytettävissä on b-tavuisen salausavaimen (tai laajennetun avaintaulukon S[0,…,43] raa'an voiman haku, kun käyttäjän toimittama salausavain on erityisen pitkä). Täydellinen luettelointi vaatii operaatioita. Don Coppersmith huomasi, että merkittävän muistin ja esilaskennan vuoksi on mahdollista järjestää kokous keskihyökkäyksissä laajennetun avainryhmän S [0,…,43] palauttamiseksi. Tämä vaatisi laskelmia ja näin ollen tarvittava määrä operaatioita oli .

Edistyneempiin hyökkäyksiin, kuten differentiaaliseen ja lineaariseen kryptausanalyysiin, jotka ovat mahdollisia salauksen matalakierroksisissa versioissa, on vaikea hyökätä koko RC6-salaukseen 20 kierroksella. Vaikeutena on, että on vaikea löytää hyviä toistuvia piirteitä tai lineaarisia approksimaatioita, joilla hyökkäys voitaisiin suorittaa.

Mielenkiintoinen ongelma on asettaa asianmukaiset suojauskohteet näitä kehittyneempiä hyökkäyksiä vastaan. Onnistuakseen nämä hyökkäykset vaativat yleensä suuren määrän tietoa, ja tunnettujen tai valittujen salateksti/selkäteksti-parien lohkojen hankkiminen on eri tehtävä kuin yhden mahdollisen avaimen palauttaminen. On syytä huomata, että kun salaus toimii yhdellä terabitilla sekunnissa (eli salaa dataa bitteillä sekunnissa), 50 rinnakkain työskentelevän tietokoneen tietolohkojen salaamiseen tarvittava aika on yli vuosi; salaa tietolohkot - yli 98 000 vuotta vanhoja; ja salata tietolohkoja on yli vuosia.

Vaikka onnistuneen hyökkäyksen lohkojen tietovaatimuksia voidaan pitää käytännössä riittävinä, kehittäjät pyrkivät tarjoamaan paljon korkeamman suojan.

RC5 - tutkimus ei ole osoittanut heikkouksia avaimen asetuksissa. Tämä johti siihen, että RC6:ssa käytettiin samaa avaimen asennusprosessia. Prosessi käyttäjän toimittaman avaimen muuntamiseksi näppäinkartaksi näyttää olevan hyvin mallinnettu näennäissatunnaisella prosessilla. Joten vaikka ei ole todisteita siitä, että kaksi avainta ei johda samaan avaintaulukkoon, tämä näyttää erittäin epätodennäköiseltä. Tämä voidaan arvioida sillä todennäköisyydellä, että on olemassa kaksi 256-bittistä avainta, jotka johtavat samaan 44, 32-bittisten avainten taulukkoon, on noin .

Voimme tiivistää RC6-suojausta koskevat vaatimuksemme seuraavasti:

- Paras hyökkäys RC6:ta vastaan ​​on raa'a voima käyttäjän toimittamaa salausavainta vastaan.

- Tietovaatimukset monimutkaisempien RC6-hyökkäysten, kuten differentiaalisen ja lineaarisen salausanalyysin, järjestämiseksi ylittävät käytettävissä olevat tiedot.

Tärkeä turvallisuusmarginaalikriteeri on hyökkäysten mahdollinen enimmäismäärä. Tämä on mahdollista RC6:n 12-, 14- ja 15-kierroksen versioille.

Salaus Kierrosten lukumäärä (b) Hyökkäystyyppi Teksti Tavua muistia Toiminnot
RC6-128/20/b 12 Tilastolliset erot
neljätoista Tilastolliset erot
15 (256) Tilastolliset erot

Neljäs sarake "Teksti" sisältää tiedot salaamattomien lohkojen lukumäärästä ja vastaavista salatekstilohkoista annetulla avaimella. Viides sarake "Memory bytes" sisältää enimmäismäärän muistitavuja, jotka tarvitaan mielivaltaisessa hyökkäyksen kohdassa. Kuudes sarake "Toiminnot" osoittaa hyökkäyksen suorittamiseen tarvittavien toimien odotetun määrän.

Laitteiston arviointi

Useimmille sovelluksille RC6:n upottaminen ohjelmistoon on luultavasti paras valinta. Primitiiviset RC6-operaatiot (lisäys, vähennyslasku, kertolasku, XOR, offset) tukevat erittäin hyvin nykyaikaiset mikroprosessorit ja siksi tämä on hyödyllistä ottaa huomioon näitä prosessoreita kehitettäessä.

Joissakin tapauksissa on kuitenkin hyödyllistä käyttää RC6:ta sulautetuksi piiriksi. Silloin olisi mahdollista saavuttaa maksiminopeus tai yhdistää muita ominaisuuksia RC6:n ympärille. Koska RC6 käyttää yllä kuvattuja primitiivisiä operaatioita, on mahdollista hyödyntää olemassa olevaa validointia suunniteltaessa piirimoduuleja näiden primitiivisten toimintojen toteuttamiseksi. Esimerkiksi, jos RC6 toteutetaan käyttämällä gate array -pohjaisia ​​teknologioita, se ei tuota toivottuja etuja, koska kertojapiirin suunnitteluun tarvittaisiin valtavasti vaivaa. Tähän tekniikkaan perustuva toteutus on huomattavasti huonompi kuin prosessoriin perustuva toteutus. Mutta tämä ei ole tyypillinen tilanne ja voit helposti suunnitella kertopiirin käytettäväksi alimoduulina.

20 kierrosta lohkoa kohden salausaika on noin 100 nanosekuntia lohkoa kohden, mikä tarjoaa arvioidun datanopeuden noin 1,3 Gbps.

Toteutus

Kuten algoritmin kuvauksesta seuraa, RC6 on erittäin kompakti. Itse asiassa RC6-algoritmin toteuttaminen Assemblerissa Intel Pentium Pro -mikroprosessorille voidaan tehdä alle 256 tavulla koodia jokaiselle tehtävälle:

  1. avaimen asennus,
  2. salauslohko,
  3. salauksen purku lohko.

Toisin kuin monet muut salausalgoritmit, RC6 ei käytä hakutaulukoita salauksen aikana. Tämä tarkoittaa, että RC6-koodi ja tiedot mahtuvat nykyaikaiseen välimuistiin ja säästävät siten muistitilaa.

Koska RC6 on täysin parametroitavissa ja että se voidaan toteuttaa tehokkaasti ja kompaktisti, salaus vaikuttaa erityisen monipuoliselta.

Joustavuus ja kehityssuunnat

Kuten olemme jo todenneet, RC6 tarjoaa käyttäjälle suuren joustavuuden salausavaimen koon, kierrosten lukumäärän ja päälaskentamoduulin sanakoon suhteen.

Vaikka AES:ssä harkittavaksi jätetty RC6 perustuu 32-bittisten sanojen käyttöön (lohkokoko 128 bittiä), tulevan markkinoiden kysynnän on laajennettava RC6:ta muihin lohkokokoihin. Tärkeimmät ovat 256-bittiset lohkokoot, jotka hyödyntäisivät seuraavan sukupolven järjestelmäarkkitehtuurin tarjoamaa 64-bittistä sanakokoa ja suorituskykyä. Huomaa myös, että RC6-rakenne sallii tietyn asteen rinnakkaisuuden hyödyntämisen salauksenpurku- ja salausrutiineissa. Esimerkiksi t:n ja u:n laskenta kullakin kierroksella voidaan laskea rinnakkain, samoin kuin A:n ja C:n päivitykset. Kun prosessorit kehittyvät kohti enemmän sisäistä rinnakkaisuutta (esimerkiksi siirtymässä kohti superskalaariarkkitehtuuria), RC6-toteutusten pitäisi näkyä paremmin esitys.

Lisenssi

Koska RC6:ta ei valittu AES :ksi , ei ole takeita siitä, että sen käyttö on ilmaista. Tammikuussa 2007 RC6:n kehittäjän RSA Laboratoriesin virallisen verkkosivuston verkkosivu sisältää seuraavat tiedot:

"Korostamme, että jos RC6 valitaan AES:lle, RSA Security ei vaadi lisenssi- tai rojaltimaksuja algoritmia käyttävistä tuotteista." rojalteja tai rojalteja tuotteista, jotka käyttävät algoritmia").

Korostettu sana "jos" tarkoittaa, että RSA Security Inc. voi nyt vaatia lisenssi- ja tekijänoikeusmaksuja mistä tahansa tuotteesta, joka käyttää RC6-algoritmia. RC6 on patentoitu salausalgoritmi ( US-patentti 5 724 428 ja US-patentti 5 835 600 ).

Lähteet

Muistiinpanot

  1. RC6-32/20/64 lähdetekstit 512-bittisellä avaimella C-kielellä  (linkki ei ole käytettävissä)
  2. RC6- ja AES-algoritmien vertailu  (pääsemätön linkki)

Ulkoiset linkit