UMAC ( englanninkielinen viestien todennuskoodi perustuu yleiseen hajautuskoodiin, yleinen MAC , yleiseen hajautuskoodiin perustuva viestin todennuskoodi) on yksi viestin todennuskoodin tyypeistä ( MAC ).
Tämän algoritmin valitsi NESSIE vuonna 2003, ja seuraavat ihmiset osallistuivat sen kehittämiseen: Intel Corp. (USA), University of Nevada (USA), IBM Research Laboratory (USA), Technion ( Israel ) ja University of California Davis (USA). Sen kirjoittajat olivat John Black, Shai Halevi ja Hugo Krawczyk, Ted Krovetz ja Phillip Rogaway .
Nopeaa "universaali"-toimintoa käytetään tiivistämään saapuva viesti M lyhyeksi merkkijonoksi. Tämä merkkijono XOR-kirjoitetaan sitten näennäissatunnaisella arvolla, mikä johtaa UMAC-tunnisteeseen:
jossa K1 ja K2 ovat salaisia satunnaisia avaimia, jotka vastaanottajalla ja lähettäjällä on.
Tämä osoittaa, että UMAC:n turvallisuus riippuu siitä, kuinka lähettäjä ja vastaanottaja valitsevat satunnaisesti salaisen hash-funktion ja näennäissatunnaisen sekvenssin . Tässä tapauksessa Noncen arvo muuttaa jokaista mittaa. Noncen käytöstä johtuen vastaanottajan ja lähettimen on tiedettävä, milloin viesti on lähetetty ja miten Nonce-arvo luotiin. Sen sijaan voit käyttää mitä tahansa muuta ei-toistuvaa arvoa Nonce-arvona, kuten viestin järjestysnumeroa. Samaan aikaan tämän numeron ei tarvitse olla salainen, tärkeintä on, että sitä ei tule toistaa.
UMAC on suunniteltu käyttämään 32-bittisiä, 64-bittisiä, 92-bittisiä ja 128-bittisiä tunnisteita vaaditusta suojaustasosta riippuen. UMAC:ia käytetään yleensä yhdessä AES -salausalgoritmin kanssa .
Näennäissatunnaisten tavujen luominen on välttämätöntä, jotta UHASH toimii ja tunnisteita luodaan
UMAC käyttää työhönsä lohkosalausta , jonka valinnan määräävät seuraavat vakiot:
Tämä käyttää toimintoa
Esimerkki: jos AES:ää käytetään 16-tavuisen avaimen kanssa, BLOCLEN on 16 (koska AES toimii 16-tavuisten lohkojen kanssa).
Tämä funktio luo pseudosatunnaisten tavujen sekvenssin, jota käytetään avainhajautustoimintoihin.
Sisäänkäynti:
Poistu:
Tämä funktio ottaa avaimen ja tietyn ajan ja palauttaa näennäissatunnaisen luvun käytettäväksi sukupolvitunnisteessa. Tällä toiminnolla voidaan saada numeroita, joiden pituus on 4, 8, 12 tai 16 tavua.
Sisäänkäynti:
Poistu:
UMAC-tunnisteet luodaan UHASH-funktiolla käyttämällä Nonce-arvoa ja aiemmin saatua merkkijonoa (katso kuvaus). Niiden pituus voi olla 4, 8, 12 tai 16 tavua.
Sisäänkäynti:
Poistu:
Tunnisteen laskentaalgoritmi:
HashedMassage = UHASH(K, M, TagLen) Pad = PDF(K, nonce, TagLen) Tag = Pad xor Hashed MassageNämä nimitykset sisältävät nimessään tietyn arvon tagin pituudelle:
UHASH ( englanniksi Universal hashing ) on yleinen hajautusfunktio, UMAC-algoritmin ydin. UHASH - toiminto toimii kolmessa vaiheessa. Ensin L1-HASH käytetään syöttöviestiin, sitten L2-HASH käytetään tähän tulokseen ja lopuksi L3-HASH sovelletaan tulokseen. Jos syöttöviestin pituus on enintään 1024 bittiä, L2-HASH:ia ei käytetä. Koska L3-Hash-funktio palauttaa vain 4 tavun pituisen sanan, jos sitä vaaditaan yli 4 tavun pituisen hajautusarvon saamiseksi, tämän kolmitasoisen järjestelmän useita iteraatioita suoritetaan.
Valitaan hajautusfunktio tiivistefunktioiden luokasta H, joka yhdistää viestit D:hen, mahdollisten viestimallien joukkoon. Tätä luokkaa kutsutaan universaaliksi, jos jollekin erilliselle viestiparille on olemassa H / D-funktioiden joukko, funktio, joka yhdistää ne elementtiin D. Tämän funktion tarkoitus on, että jos kolmas osapuoli haluaa korvata yhden viestin toisen, mutta samalla katsoo, että hash-funktio valittiin ehdottoman satunnaisesti, niin todennäköisyys sille, että vastaanottava osapuoli ei havaitse korvausta, on yleensä 1/D.
L1-Hash jakaa viestit 1024 tavun paloiksi ja soveltaa jokaiseen lohkoon hajautusalgoritmia nimeltä NH. NH-algoritmin tulos on 128 kertaa pienempi kuin tulo.
L2-Hash toimii L1-Hash-ulostulon kanssa, käyttää POLY-polynomialgoritmia. Toista hajautusvaihetta käytetään vain, jos syöttöviestin pituus on yli 16 megatavua. POLY-algoritmin käyttö on välttämätöntä ajoitushyökkäysten välttämiseksi. POLY-algoritmin tulos on 16-tavuinen luku.
Tämä vaihe tarvitaan, jotta L2-Hash-algoritmin ulostulosta 16 tavua saadaan 4-tavuinen arvo.
UMAC:n vahvuus riippuu sen päätoiminnoista: avaimen johtamisfunktiosta (KDF) ja näennäissatunnaissekvenssin generointifunktiosta (PDF). Siksi molemmat toiminnot toteutetaan käyttämällä lohkosalausta, yleensä Advanced Encryption Standard (AES) -standardia. UMAC sallii kuitenkin muiden lohkosalausten käytön. UMAC-algoritmin ja UHASH-funktion tärkein etu on, että niiden vahvuus riippuu vain tietyn algoritmin ja funktion matemaattisista ominaisuuksista. Siksi kryptausanalyysi ei vaikuta UHASH-toiminnon turvallisuuteen .
MAC-algoritmia käytetään kahden jaetun salaisen avaimen K tuntevan osapuolen välisten viestien todentamiseen. Todennustunnisteet lasketaan viestille avaimella K, ja UMAC:n tapauksessa avain on aika. MAC-algoritmin hakkerointi tarkoittaa, että hyökkääjä pystyy luomaan viestejä itse ilman avainta. Wegman-Carterin teoria ja UMAC-analyysi osoittavat, että jos käytetään UMAC-algoritmia, jossa on satunnaiset avaimet ja alkuarvo Nonce, todennäköisyys, että hyökkääjä murtaa viestin, on: , , , , jos lähtötunnisteet ovat pituudeltaan 32, 64, 96. , 128 käytetään vastaavasti. Jos hyökkääjä tekee N yritystä, hakkeroinnin todennäköisyys kasvaa suhteessa yritysten määrään, eli N kertaa. AES-algoritmin lisäkäytöllä hakkeroinnin todennäköisyys pienenee merkittävästi.
UMAC käyttää nykyistä aikaa alueella 1 - BLOCKLEN tavua. Tässä tapauksessa kaikkien istunnon aikana olevien Nonce-arvojen on oltava yhtä pitkiä. Parhaan turvallisuuden takaamiseksi mitään Nonce-arvoa ei tule toistaa, kun käytetään samaa istuntoavainta.
Jos käytetään kaksisuuntaista lähetyskanavaa, niin kullekin suunnalle voidaan käyttää eri näppäimiä. Käytettäessä näppäintä molempiin suuntiin on erittäin tärkeää, että Nonce-arvo ei toistu, tämä voidaan tehdä käyttämällä parillisia näppäimiä yhteen suuntaan ja parittomat näppäimet toiseen suuntaan. Tässä tapauksessa Noncen nykyistä arvoa ei tarvitse pitää salassa.
Nonce-arvo voidaan luoda ja välittää seuraavilla tavoilla:
Toistohyökkäykset ovat hyökkääjän toimia, joiden tarkoituksena on toistaa viesti, satunnainen numero ja todentaa tunniste. UMACissa tämä hyökkäys epäonnistuu, koska kutakin Nonce-arvoa käytetään täsmälleen kerran.
UMAC:n luonne mahdollistaa tag-etuliitetarkistuksen toteuttamisen, esimerkiksi vastaanotin voi tarkistaa vain 32-bittisen etuliitteen 64-bittisestä tagista. Tätä käytetään optimointiin, jos sekin laskentakuorma on suuri. Tässä tapauksessa vastaanottimella on mahdollisuus hylätä koko tunniste, jos 32-bittinen etuliite on virheellinen. Tämä algoritmi vähentää istunnon turvallisuutta.