CBC-MAC

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

CBC MAC  - in - kryptografia on tekniikka viestin todennuskoodin muodostamiseksi lohkosalauksesta . Viesti salataan jollakin lohkosalausalgoritmilla CBC-tilassa lohkoketjun luomiseksi sillä säännöllä, että jokainen lohko riippuu edellisen oikeasta (oikeasta) salauksesta. Tämä keskinäinen riippuvuus varmistaa, että muutos missä tahansa selkeän tekstin bitissä johtaa muutokseen lopullisessa salatussa lohkossa tavalla, jota ei voida ennustaa tai laskea, jos lohkon salausavainta ei tunneta.

Sitä käytettiin (korvaamalla DES-algoritmin E:nä) Yhdysvaltain hallituksen standardina  - DAA .

Viitetiedot

CBC MAC -algoritmi on hyvin tunnettu menetelmä viestin todennuskoodin luomiseksi lohkosalauksen  perusteella . 

Bellare, Kilian ja Rogaway osoittivat algoritmin turvallisuuden ( security ) kiinteälle sanoman pituudelle m * n bittiä, missä n on peruslohkosalauksen E pituus.

On kuitenkin hyvin tunnettua, että MAC CBC ei ole turvallinen, ellei viestin pituutta ole kiinteä. Näin ollen on ehdotettu useita muunnelmia muuttuvan sanoman pituuden algoritmista. Ensin ehdotettiin salattua jäljitelmälisäystä (EMAC) , se saadaan salaamalla CBC MAC -arvo E:llä ja uudella avaimella . Tuo on

,

missä M on viesti,  on CBC MAC -avain ja  on viestin CBC MAC-arvo. M. Petrank ja Rackoff osoittivat myöhemmin, että EMAC on turvallinen, jos viestin pituus on n:n kerrannainen (Vaudenay, käyttäen dekorrelaatioteoriaa , julkaistu toinen todiste). EMAC vaatii kuitenkin kaksi avainaikataulua peruslohkosalaukselle E.

Lisäksi Black ja Rogaway ehdottivat XCBC:tä, joka vaatii vain yhden peruslohkosalauksen E avainaikataulun. XCBC antaa kolme avainta: yhden lohkosalauksen K1 avaimen ja kaksi n-bitin avainta. XCBC on kuvattu seuraavassa kaaviossa

Taulukko näyttää avainten pituuksien vertailun.

XCBC TMAC OMAC
Avaimen pituus (k + 2n) bittiä (k + n) bittiä k bittiä

Jos joillekin m > 0, niin XCBC lasketaan täsmälleen kuten CBC MAC, paitsi avaimen (n bittiä) XOR-operaatio ("exclusive or"), kunnes viimeinen lohko on salattu.

Muussa tapauksessa (jossa ) lisätään M:ään ja XCBC lasketaan täsmälleen kuten vastaanotetun viestin MAC CBC. Lukuun ottamatta toisen avaimen (n bittiä) XOR-soittoa, kunnes viimeinen lohko on salattu. XCBC:n haittana on kuitenkin se, että se vaatii kolme avainta, eli yhteensä (k + 2n) bittiä. Tämän seurauksena Kurosawa ja Iwata ehdottivat kahden avaimen CBC MAC:ta (TMAC). TMAC hyväksyy kaksi avainta, yhteensä (k + n) bittiä: lohkosalauksen avaimen ja avaimen (n bittiä). TMAC saadaan XCBC:stä siirtämällä (tai korvaamalla) arvolla , jossa u on jokin nollasta poikkeava vakio ja "•" tarkoittaa kertolaskua . Kuten jo mainittiin, OMAC ( one-key CBC MAC ) hyväksyy vain yhden avaimen K lohkosalauksesta E. Avaimen pituus, k bittiä, on minimaalinen, koska perussalauksen tulee sisältää joka tapauksessa k bitistä koostuva avain K. .

OMAC

OMAC on OMAC1:n ja OMAC2:n päänimi. OMAC1 saadaan XCBC:stä korvaamalla jollakin nollasta poikkeavalla vakiolla u :ssa , jossa L saadaan seuraavalla lausekkeella: . OMAC2 saadaan samalla tavalla käyttämällä . Voimme laskea , ja tehokkaasti yhdellä siirrolla ja XOR on ja vastaavasti. OMAC1 (vastaa OMAC2) on kuvattu seuraavalla kaaviolla:


1. Jos jollekin m > 0, niin OMAC lasketaan täsmälleen kuten CBC MAC, paitsi XOR-operaatiolle ennen viimeisen lohkon salausta. 2. Muussa tapauksessa (jossa ) lisätään M:ään ja OMAC Lasketaan täsmälleen CBC MAC:na vastaanotetulle viestille M, paitsi XOR-operaatiolle (vastaavasti ennen viimeisen lohkon salausta.

Lisäksi TMAC:ssa avain on osa avainta, kun taas OMACissa L ei ole osa avainta ja se generoidaan K:stä. Tämä avaimen pituuden säilyttäminen tekee OMAC-suojauksen todistamisesta paljon vaikeampaa kuin TMAC:n, kuten alla näkyy. . Olkoon kuviossa 2 M[1] = . Sitten L on ensimmäisen tulos . L näkyy aina uudelleen viimeisessä lauseessa. Periaatteessa tällainen L:n uudelleenkäyttö johtaisi turvatodistuksen umpikujaan. (OCB-tilassa ja PMAC: ssa sitä käytetään myös yleisenä hash-avaimena. L kuitenkin esiintyy jonkin sisäisen lohkon ulostulona vähäisellä todennäköisyydellä.) Olemme kuitenkin osoittaneet, että OMAC on yhtä turvallinen kuin XCBC, jossa tietoturva-analyysi on esimerkki ehdottomasta turvallisuudesta [1]. Lisäksi OMAC sai kaikki muut positiiviset ominaisuudet, jotka XCBC:llä (ja TMAC:lla) oli. Siten OMAC-alue on {0,1}, tarvitaan peruslohkosalauksen E yhden avaimen aikataulu ja lohkosalauksen kutsut (viitteet).

Merkintä

Joukossa A x←A tarkoittaa, että x valitaan satunnaisesti joukosta A, ja minkä tahansa arvon valinta joukosta A on yhtä todennäköistä. Jos a, b (∈ {0, 1}*) ovat samankokoisia merkkijonoja, niin a ⊕ b on niiden bittikohtainen XOR-operaatio. Jos a, b (∈ {0, 1}*) eivät ole yhtä suuria merkkijonoja, niin a ◦ b tarkoittaa niiden ketjutusta . (Yksinkertaisuuden vuoksi otetaan käyttöön seuraava merkintä: ab:= a ◦ b). Merkitse n-bittiselle merkkijonolle ∈ {0, 1}* << 1 = n-bittinen merkkijono, jota on siirretty vasemmalle 1 bitin verran, ja merkitse sillä välin >> 1 = n-bittinen merkkijono, jota on siirretty bitin verran oikealle. Jos ∈ {0, 1}* on merkkijono, niin |a| ilmaisee sen bitin pituuden. Minkä tahansa bitin merkkijono a ∈ {0, 1}* on sellainen, että |a| ≤ n, määritellään , jossa tyhjä merkkijono lasketaan yhdeksi lohkoksi.

CBC MAC

Lohkosalaus E on funktio E :  ×  → , jossa jokainen E(K, •) = EK(•) on permutaatio , vuorostaan ​​on joukko mahdollisia avaimia ja n on lohkon pituus. CBC MAC [6, 7] on yksinkertaisin ja tunnetuin algoritmi MAC:n tekemiseen lohkosalauksesta E. Olkoon viesti M = M[1] ◦M[2] ◦ … ◦M[m], missä | M [1]| = |M[2]| = … = |M[m]| = n. Sitten sanoman M CBCK(M), CBC MAC, jolla on avain K, määritellään muodossa Y [m], missä Y [i] = EK(M[i] ⊕ Y [i − 1]), kun i = 1, … ,m ja Y[0] = . Bellare, Kilian ja Rogaway ovat todistaneet CBC MAC:n turvallisuuden kiinteällä viestin pituudella, joka on mn bittiä.

Pisteellinen kenttä

Voimme pitää pistettä a jollakin seuraavista tavoista: (1) abstraktina pisteenä kentässä a ; (2) n-bittisenä merkkijonona ∈ ; (3) formaalipolynomina binäärikertoimilla. Jos haluat lisätä 2 pistettä kohtaan , harkitse niiden bittikohtaista XOR-toimintoa. Merkitse tämä operaatio a ⊕ b. Kahden pisteen kertomiseksi kiinnitämme jonkin polynomin f(u) binäärikertoimilla ja asteella n. Suuremman tarkkuuden vuoksi valitsemme leksikografisesti ensimmäisen polynomin samoista n-asteista polynomeista, joilla on vähimmäismäärä kertoimia. Listaamme joitain näistä polynomeista , kun n = 64, n = 128 ja n = 256. Jos haluat kertoa kaksi pistettä a ∈ ja b ∈ , katso a ja b polynomeina ja , operaation c(u) tulos, jossa GF(2):n kertoimet lasketaan yhteen ja kerrotaan ja otetaan loput c(u):n erotuksesta f(u):lla. Lisäksi on erityisen helppoa kertoa piste a ∈ u:lla. Esimerkiksi, jos n = 128, jaa myös piste a ∈ luvulla u, pitäen mielessä, että a kerrotaan kentän u:n käänteisluvulla: . Esimerkiksi,






OMAS-perheen perussuunnittelu

OMAC - perhe määritellään lohkosalauksella E : KE ×  → , n-bittisellä vakiolla Cst, yleisellä hash-funktiolla H :  × X → ja kahdella yksilöllisellä vakiolla ∈ X , jossa X on funktion H äärellinen alue. . H, ja sen on täytettävä seuraava ehto: (vakiot ovat satunnaisia. Kirjoitetaan HL(•) arvolle H(L, •).


1. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) = y korkeintaan joillekin riittävän pienille . 2. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) = y korkeintaan joillekin riittävän pienille . 3. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) ⊕ HL( ) = y korkeintaan joillekin riittävän pienille . 4. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) ⊕L = y korkeintaan joillekin riittävän pienille . 5. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) ⊕L = y korkeintaan joillekin riittävän pienille . 6. Jokaiselle y ∈ luku L ∈ on sellainen, että HL( ) ⊕ HL(Cst2) ⊕ L = y korkeintaan joillekin riittävän pienille .




Seuraava on pseudokoodi, joka kuvaa OMAC-perhettä.

Algorithm
L ← ;
Y [0] ← ;
Partition M into M[1] ... M[m]
for i ← 1 to m − 1 do
X[i] ← M[i] ⊕ Y [i − 1];
Y [i] ← );
X[m] ← ) ⊕ Y [m − 1];
if |M[m]| = n then X[m] ← X[m] ⊕ ;
else X[m] ← X[m] ⊕ ;
T ← );
return T;

OMAC-perhealgoritmi on esitetty kuvassa 3, jossa (•) on määritelty kohdassa (1). OMAC-perheen avainavaruus K: . Se ottaa avainarvon K ∈ ja viestin M ∈ {0, 1}* ja palauttaa merkkijonon alueelta .

Ehdotettu spesifikaatio

OMAC1:ssä asetetaan Cst = , (x) = L•x, = u ja = , missä "•" tarkoittaa kertolaskua . , ja ovat vastaavia. OMAC2 on samanlainen kuin OMAC1 paitsi . , ja ovat vastaavia. Lisäksi , ja voidaan laskea tehokkaasti yhdellä siirrolla ja yhdellä XOR-operaatiolla välillä ja vastaavasti, kuten on esitetty kohdissa (2) ja (3). On helppo nähdä, että kohdassa Sec. 3 suoritetaan OMAC1:ssä ja OMAC2:ssa. OMAC1 ja OMAC2 on kuvattu kuvassa 2, ja ne kuvataan seuraavasti: 1. OMAC1:lle:


Algorithm
L ← ;
Y [0] ← ;
Partition M into M[1] ... M[m]
for i ← 1 to m − 1 do
X[i] ← M[i] ⊕ Y [i − 1];
if |M[m]| = n
then X[m] ← X[m] ⊕ ;
else Y[i] ← E_k(X[i]);
X[m] ← ) ⊕ Y [m − 1];
if |M[m]| = n then X[m] ← X[m] ⊕ ;
else X[m] ← X[m] ⊕ ;
T ← );
return T;


1. OMAC2:

Algorithm
L ← ;
Y [0] ← ;
Partition M into M[1] ... M[m]
for i ← 1 to m − 1 do
X[i] ← M[i] ⊕ Y [i − 1];
if |M[m]| = n
then X[m] ← X[m] ⊕ ;
else Y[i] ← E_k(X[i]);
X[m] ← ) ⊕ Y [m − 1];
if |M[m]| = n then X[m] ← X[m] ⊕ ;
else X[m] ← X[m] ⊕ ;
T ← );
return T;

OMAC-perheen turvallisuus

Turvallisuuden määritelmä

Olkoon Perm(n) kaikkien permutaatioiden joukko kohdasta , ja olkoon P satunnainen permutaatio , jos P on satunnaisnäyte kohdasta Perm(n). Lohkosalauksen E turvallisuus voidaan ilmaista siten , että suurin hyöty, jonka vastustaja A voi saada yrittäessään poimia (satunnaisesti valitulla avaimella K) satunnaisesta permutaatiosta P(•), kun lasketaan kyselyajat t ja q ovat sallittuja ( joka on joko ). Tämä etu määritellään seuraavasti. Oletetaan, että lohkosalaus E on turvallinen, jos se on olennaisesti pieni. Vastaavasti MAC-algoritmi on F :  ×  → , jossa  on joukko avaimia, jolloin kirjoitetaan F(K, •). Oletetaan, että vastustaja katkaisee, jos A palaa , missä A ei koskaan pyydä M: tä . Sitten määrittelemme edun

jossa maksimi otetaan haltuun kaikista vastustajista, jotka "työskentelevät" enintään ajan t, tekevät enintään q pyyntöä ja jokainen pyyntö enintään μ bittiä. Sanomme, että MAC-algoritmi on suojattu (turvallinen), jos arvo on mitätön. Merkitse Rand(∗, n) kaikkien funktioiden joukko väliltä {0, 1}* - . Tämä joukko saadaan todennäköisyysmittauksella olettaen, että joukon Rand(∗, n) satunnaisalkio R on yhdistetty tai liitetty satunnaisrivin R(M)∈ jokaiseen riviin M ∈ {0, 1}* . Seuraavaksi määrittelemme edun siten , että maksimi otetaan yli kaikista vastustajista, jotka "työskentelevät" enintään t, tekevät enintään q pyyntöä ja kukin pyyntö enintään μ bittiä. Sitten voidaan sanoa, että MAC-algoritmi on näennäissatunnainen, jos arvo on mitätön (viprf on asetettu Variablelength Input PseudoRandom Function -funktiolle - syötetään vaihtuvan pituisia pseudosatunnaisfunktioita). Yleisyyttä menettämättä oletetaan, että vastustajat eivät koskaan tee pyyntöjä verkkotunnuksen ulkopuolella eivätkä myöskään koskaan toista pyyntöjä.

Seuraavaksi esitellään päälauseet (niiden formulaatiot ilman todisteita).

Lemma 5.1 (päälemma OMAC-perheelle). Oletetaan, että H, Cst1 ja Cst2 täyttävät Sec-ehdot. 3 joillekin merkityksettömän pienille , ja olkoon Cst myös mielivaltainen n-bittinen vakio. Oletetaan myös , että OMAC-perheessä (OMAC-perhe) käytetään peruslohkosalauksena satunnaista permutaatiota P ∈ Perm(n). Olkoon A vastustaja, joka tekee enintään q pyyntöä ja jokainen pyyntö enintään nm bittiä. (m on kunkin kyselyn lohkojen enimmäismäärä.) Olkoon m ≤ 2n/4. Siis missä . Seuraavat tulokset koskevat sekä OMAC1:tä että OMAC2:ta. Ensinnäkin olemme saaneet seuraavan lemman korvaamalla є = 2−n Lemassa 5.1.

Lemma 5.2 (päälemma OMAC-perheelle). Oletetaan, että OMAC:ssa käytetään satunnaista permutaatiota P ∈ Perm(n) peruslohkosalauksena. Olkoon A vastustaja, joka tekee enintään q pyyntöä, ja jokainen pyyntö on enintään nm bittiä. Olkoon m ≤ 2n/4. Sitten Seuraavaksi näytämme, että OMAC on näennäissatunnainen, jos taustalla oleva lohkosalaus E on turvallinen.

Huomautus 5.1. Olkoon E :  ×  → peruslohkosalaus, jota käytetään OMACissa. Sitten , jossa t' = t + O(mq) ja q' = mq + 1. Lopuksi osoitetaan, että OMAC on suojattu aMAC-algoritmina huomautuksesta 5.1 tavallisessa merkityksessä. Lause 5.1. Olkoon E : KE ×  → OMAC:ssa käytetty peruslohkosalaus. Sitten , jossa t' = t + O(mq) ja q' = mq + 1.


Analogit

Useimmat viestin todennuskoodin muodostamistekniikat esitetään lähetetyn viestin hash-funktiona ja erityisenä avaimena, jonka lähettäjä ja vastaanottaja tietävät. Näitä ovat: RIPE-MAC, IBC-MAC, UMAC, VMAC. Pohjimmiltaan CBC-MAC eroaa MAC:sta virtasalauksen avulla (pseudosatunnaislukugeneraattorilla tietovirta jaetaan kahteen virtaan, jotka lähetetään erikseen), mutta haittapuolena ovat heikot muutokset pienellä muutoksella viesti. Harkitse myös Poly1305-AES:ää, jossa avaimena käytetään 128-bittistä AES-avainta, 106-bittistä kahden komplementtikoodia ja myös 128-bittinen näennäissatunnainen sukupolvi luodaan. CBC-MAC:n haittana voidaan mainita heikompi tietoturva ja etuna - vähemmän vaativa laskentaresursseille.

Muistiinpanot

Kirjallisuus