Lohikäärme (salakirjoitus)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 1. tammikuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Dragon  on virtasalaus , joka esiteltiin ensimmäisen kerran [1] vuotuisessa kansainvälisessä ICISC-konferenssissa vuonna 2003. Huhtikuussa 2005 se lähetettiin eSTREAM- kilpailuun , jonka tavoitteena oli tunnistaa stream-salaukset, jotka soveltuvat yleiseen käyttöön sovelluksissa, joissa on korkeat suorituskykyvaatimukset.

Dragonin ovat kehittäneet Ed Dawson, Kevin Chen, Matt Henricksen, William Millan, Leonie Simpson, HoonJae Lee ja SangJae Moon.

Johdanto

Virtasalausten suunnittelu on perinteisesti perustunut lineaaristen takaisinkytkentäsiirtorekisterien toimintaan , koska jälkimmäiset ovat hyvin ymmärrettyjä ja täyttävät yleisesti hyväksytyt tilastolliset kriteerit. Salauksen gamman epälineaarisuus voidaan esittää joko epälineaarisen suodattimen toiminnalla tai epäsäännöllisellä piirikellolla tai molemmilla. Kun bittivirtasalaukset toteutetaan laitteistossa, niiden suorituskyky on korkea, mutta ne ovat melko hitaita, kun ne toteutetaan ohjelmistossa . Lineaarisiin palautesiirtorekistereihin perustuvat ja pientä määrää palautetta käyttävät salaukset voivat olla alttiina hyökkäyksille, mutta viimeksi mainittujen lukumäärän kasvu voi vaikuttaa haitallisesti salauksen tehokkuuteen. Lisäksi lineaarisella tilanmuutosfunktiolla varustettujen salausten luotettavuus kyseenalaistetaan algebrallisia hyökkäyksiä käytettäessä. [2]

Sanapohjaiset salaukset voivat ylittää bittipohjaiset salaukset sekä laitteisto- että ohjelmistototeutuksissa. Ne salaavat useita kertoja enemmän dataa iteraatiota kohden kuin salaukset käyttämällä yksibittisiä lineaarisia takaisinkytkentäsiirtorekistereitä. Ohjelmistona toteutettuina ne voivat ylittää jopa nopeat lohkosalaukset , kuten AES, lähes suuruusluokkaa [3] . Vaikka sanapohjaisten salausten suorituskykyä on helppo mitata, niiden vahvuutta on vaikea arvioida tarkasti.

Dragon on suunniteltu sekä suorituskykyä että turvallisuutta ajatellen. Se käyttää epälineaarista palautesiirtorekisteriä sekä epälineaarista suodatinta luodakseen salausgamman 64-bittisten sanojen muodossa. Dragonin suorituskyky on useita gigabittejä sekunnissa ja vaatii noin 4 kilotavua muistia.

Tekniset tiedot

Dragonia voidaan käyttää 128-bittisen avaimen ja alustusvektorin kanssa tai 256-bittisen avaimen ja alustusvektorin kanssa. Näitä versioita kutsutaan vastaavasti Dragon-128:ksi ja Dragon-256:ksi. Ne toimivat lähes identtisesti avaimen alustusprosessia lukuun ottamatta.

Molemmat Dragon-salauksen versiot on rakennettu käyttämällä yhtä 1024-bittistä epälineaarista palautesiirtorekisteriä ja 64-bittistä muistia M. Alkutila luodaan avaimella ja alustusvektorilla, jota tukee tilanmuutosfunktio F. Muutos toimintoa käytetään myös avainvirran luomisessa.

F-funktio

Dragon-128 ja Dragon-256 käyttävät samaa F-funktiota. F on käännettävä 192-bittistä 192-bittiä: se ottaa 6 x 32 bittiä tulona (merkitty a, b, c, d, e, f) ja tulostaa 6 x 32 bittiä (merkitty a', b', c', d', e', f'). Verkko koostuu kolmesta kerroksesta: alkusekoituskerroksesta, S-box-kerroksesta ja lopullisesta sekoituskerroksesta. Sekoituskerrokset käyttävät modulo 2 additiota 32 ja modulo 2 additiota (⊕). S-box-kerros koostuu G- ja H-funktioista, jotka puolestaan ​​sisältävät 8 × 32 S-laatikkoa.

G- ja H-funktiot

G- ja H-funktiot ovat epälineaarisia virtuaalisia 32 x 32 S-laatikoita, jotka on rakennettu kahdesta 8 x 32-bittisesta S-laatikosta. 32 tulobittiä on jaettu neljään tavuun, x = x 0 ‖ x 1 ‖ x 2 ‖ x 3 , missä a ‖ b tarkoittaa a:n ja b:n ketjutusta.

Alustus

Avaimen alustamiseksi epälineaarinen palautesiirtorekisteri jaetaan kahdeksaan 128-bittiseen sanaan, joita merkitään W 0 ... W 7 . Alustus tapahtuu kahdessa vaiheessa.

Vaihe 1: Salauksen tilan "eteneminen" : Ensimmäisen vaiheen aikana 1024-bittisen epälineaarisen palautesiirtorekisterin ja 64-bittisen muistin M alkutila "edetään" käyttämällä avainta (K) ja alustusvektoria ( IV).

Dragon-128 ottaa 128-bittisen avaimen ja 128-bittisen IV:n ja "kertoo" epälineaarisen takaisinkytkentäsiirtorekisterin tilan siten, että (W 0 ‖ … ‖ W 7 ) = (K ‖ K ' ⊕ IV ' ‖ IV ‖ K ⊕ IV ' ‖ K ' ‖ K ⊕ IV ‖ IV ' ‖ K ' ⊕ IV), jossa alkuluku osoittaa, että korkea ja matala 64-bittinen puolisko on vaihdettu.

Dragon-256 ottaa 256-bittisen avaimen ja 128-bittisen IV:n ja "kertoo" epälineaarisen takaisinkytkentäsiirtorekisterin tilan siten, että (W 0 ‖ … ‖ W 7 ) = (K ‖ K ⊕ IV ‖ ~( K ⊕ IV) ‖ IV).

Molemmissa tapauksissa 64-bittinen muisti M on esitäytetty vakioarvolla 0x0000447261676F6E, joka on sanan "Dragon" ASCII-esitys.

Vaihe 2: Sekoita salauksen tila : Toisessa vaiheessa tilanmuutosfunktiota käytetään 16 kertaa epälineaarisen palautesiirtorekisterin ja 64-bittisen muistin M sisällön sekoittamiseksi. 128-bittisen funktion argumentti F on muodostuu kolmen siirtorekisterin sanan lineaarisena yhdistelmänä epälineaarisella takaisinkytkellä, täsmälleen a ‖ b ‖ c ‖ d = (W 0 ⊕ W 6 ⊕ W 7 ). Lisäksi e ‖ f = M.

Piiri kellotetaan siten, että W 7 ohitetaan hetkellä t, joten W i t+1 = W t i-1 , 0 ≤ i ≤ 7. W 0 t+1 :n sisällön muodostava 128-bittinen palautesana on saatu lisäämällä modulo 2 W 0 t 0 c (a ' ‖ b ' ‖ c ' ‖ d ' ). Loput kaksi 32-bittistä sanaa ketjutetaan ja niitä käytetään muistin päivittämiseen: e ' ‖ f ' = M.

Suojatakseen hyökkäyksiltä, ​​jotka edellyttävät tietoa suuresta määrästä avainvirran elementtejä, ja tuntemattomilta tulevilta hyökkäyksiltä kullekin K- ja IV-parille voidaan luoda enintään 2 64 bittiä avainvirtaa.

Avainvirran luominen

Avainvirran generoinnin aikana 1024-bittinen epälineaarinen takaisinkytkentäsiirtorekisteri jaetaan 32:ksi 32-bittiseksi sanaksi Bi , 0 ≤ i ≤ 31. Prosessissa käytetään myös F-funktiota.

Jokaisessa iteraatiossa valitaan neljä 32 - bittistä tuloargumenttia F sanojen Bo, B9, B16 ja B19 epälineaarisesta takaisinkytkentäsiirtorekisteristä . Loput kaksi argumenttia ovat seurausta sanojen B 30 ja B 31 modulo 2 -lisäyksestä vastaavasti M L: n ja MR:n kanssa, missä M L ja MR ovat vastaavasti muistin M matalat ja korkeat sanat.

Epälineaarista takaisinkytkennän siirtorekisteriä siirretään kaksi bittiä, ja Bo ja B1 täytetään F-funktion lähdöistä b ' ja c ' vastaavasti palautetoiminnolla. 64-bittinen avainvirtasana z muodostuu ': n ja e ' :n ketjuttamisesta . 64-bittinen muisti M toimii laskurina avainvirran generoinnin aikana ja sitä kasvatetaan joka sykli.

Toteutus ja suorituskyky

Dragon-salaus on suunniteltu sekä laitteistoa että ohjelmistoa ajatellen.

Ohjelmiston toteutus

Suorituskykyarvioita on tehty [4] , jotka osoittavat, että Dragon on varsin tehokas sekä suorituskyvyn että muistikustannusten suhteen.

Laitteiston toteutus

Dragonin toteutus laitteistotasolla mahdollistaa korkean samansuuntaisuuden saavuttamisen. Toiminnot F-funktion kuudella syöttöargumentilla voidaan jakaa kolmeen ryhmään, joista jokaisessa käytetään kahta argumenttia. Esisekoitus ja jälkisekoitus toteutetaan 32-bittisten modulo-lisäinten avulla. G- ja H-funktiot toteutettiin käyttämällä LUT-taulukoita ja XOR-operaattoreita. Samsungin 0,13um ASIC -tekniikalla valmistettaessa 2,6 GHz:n kellotaajuudella pienin latenssi on 2,774 ns 23 Gbps:n suorituskyvyllä.

Laitteiston toteutuksen nopeuden parantamiseksi ehdotettiin erityistä laskentarakennetta [5] . Altera FPGA -laitteessa Dragonin tehokas toteutus saavuttaa 1,06 Gbps:n suorituskyvyn.

Cryptanalysis

Vuonna 2005 Hakan Englund ja Alexander Maximov suorittivat Dragonin luotettavuustutkimuksia [6] , paljastaen sen haavoittuvuuden. Samana vuonna salauksen kirjoittajat julkaisivat artikkelin [7] , jossa kiellettiin mahdollisuus hyödyntää tätä haavoittuvuutta tehokkaasti. Kuitenkin vuonna 2007 Joo Yeon Cho ja Josef Pieprzyk paransivat aiemmin ehdotettua hyökkäystekniikkaa [8] . Ja vaikka tällainen hyökkäys ei käytännössä ole käytännössä mahdollista, tämä ei lisännyt salauksen mainetta.

Johtopäätös

Kävittyään läpi kaksi eSTREAM- kilpailun vaihetta , Dragon-salaus ei päässyt finaaliin ja hävisi vahvemmille kilpailijoille.

Katso myös

Muistiinpanot

  1. Chen, K., Millan, W., Fuller, J., Simpson, L., Dawson, E., Lee, H., Moon, S.: Dragon: A Fast Word Based Stream Cipher. Teoksessa: Park, C.-s., Chee, S. (toim.) ICISC 2004. LNCS, voi. 3506, s. 33-50. Springer, Heidelberg (2005) ( [1] Arkistoitu 1. heinäkuuta 2012 Wayback Machinessa )
  2. Courtois, N.: Higher Order Correlation Attacks, XL-algoritmi ja Toyocryptin kryptaanalyysi. Julkaisussa: Lee, P., Lim, C. (toim.) ICISC 2002. LNCS, voi. 2587, s. 182-199. Springer, Heidelberg (2003)
  3. National Institute of Standards and Technology. Liittovaltion tietojenkäsittelystandardien julkaisu 197 (2001)
  4. eSTREAM-projekti – eSTREAM-vaihe 3 . Haettu 28. lokakuuta 2011. Arkistoitu alkuperäisestä 31. lokakuuta 2011.
  5. Lee, H., Moon, S.: Parallel Stream Cipher turvalliseen nopeaan tietoliikenteeseen. Signal Processing 82(2), 137-143 (2002)
  6. Hakan Englund ja Alexander "Attack the Dragon" . Käyttöpäivä: 28. lokakuuta 2011. Arkistoitu alkuperäisestä 27. toukokuuta 2011.
  7. Ed Dawson, Matt Henricksen, Willam Millan ja Leonie Simpson, "The Dragon Is Alive and Well" [2] Arkistoitu 27. toukokuuta 2011 Wayback Machinessa
  8. Joo Yeon Cho ja Josef Pieprzyk, "An Improved Distinguisher for Dragon" [3] Arkistoitu 27. syyskuuta 2011 Wayback Machinessa

Kirjallisuus

Linkit