Cod de autentificare mesaj
Să considerăm integritatea mesajelor folosind un secret comun. Rețineți că asigurarea integrității mesajului este imposibilitatea modificării mesajului, astfel încât destinatarul să nu îl găsească. Autentificarea înseamnă că informațiile sunt primite de la o sursă legitimă, iar destinatarul este cel care are nevoie de ele. O modalitate de a asigura integritatea este calculul Codului de autentificare a mesajelor (MAC). În acest caz, în conformitate cu anumite Authenticator MAC se înțelege, în ce fel anumite bloc de date calcule-lennym, prin care să verifice integritatea mesajelor. În unele cazuri, criptarea simetrică a întregului mesaj poate efectua funcția de autentificare a acestui mesaj. Dar în acest caz mesajul ar trebui să conțină o redundanță suficientă, ceea ce ar permite verificarea faptului că mesajul nu a fost modificat. Redundanța poate fi sub forma unui mesaj special formatat, text într-o anumită limbă și așa mai departe. Dacă mesajul admite secvența de biți pocăiește-aleatoare (de exemplu, cheia de sesiune criptată), criptarea simetrică a întregului mesaj nu poate asigura integritatea acestuia, deoarece decriptarea, în orice caz, vom obține o secvență de biți, care nu poate fi verificată în mod corect. Prin urmare, kritograficheski mai des folosit a creat un mic bloc de date de dimensiuni fixe, așa-numitul authenticator sau autentificarea cu codul care verifică mesajele de integritate-Ness. Acest bloc de date poate fi creat folosind o cheie secretă care este partajată de către expeditor și receptor. MAC-ul se calculează în momentul în care se știe că mesajul este corect. După aceasta, MAS se alătură mesajului și este trimis împreună cu destinatarul. Receptorul calculează MSS utilizând aceeași cheie secretă și compară valoarea calculată cu valoarea primită. Dacă aceste valori sunt identice, atunci cu un grad ridicat de probabilitate, putem presupune că mesajul nu sa schimbat în timpul transferului.
Luați în considerare proprietățile pe care trebuie să le aibă funcția MAC. Dacă lungimea cheii utilizată în calculul MAC. este egal cu k. atunci sub condiția unei puternice funcții MAC, adversarul va trebui să execute 2 k încercări de căutare prin toate cheile. Dacă lungimea valorii create de MAC. este egal cu n. atunci există 2 n valori diferite ale MAC.
Să presupunem că nu există nici o confidențialitate a mesajului, adică adversarul are acces la mesajul deschis și la valoarea MAC corespunzătoare. Definiți eforturile necesare pentru ca adversarul să găsească cheia MAC.
Să presupunem că k> n. și anume lungimea cheii este mai lungă decât lungimea MAC. Apoi, cunoscând M1 și MAP1 = CK (M1). adversarul poate calcula MAC1 = CKi (M1) pentru toate tastele posibile Ki. În același timp, cel puțin una dintre chei va fi potrivită cu MACi = MAC1. Adversarul va calcula 2 k MAC valori. în timp ce pentru o lungime MAC de n biți, există doar 2 n MAC valori. Am presupus că k> n. și anume 2 k> 2 n. Astfel, valoarea MAC corectă va fi obținută pentru mai multe valori cheie. În medie, se va întâmpla o potrivire pentru tastele 2 k / 2 n = 2 (k-n). Prin urmare, pentru a calcula o singură cheie, adversarul trebuie să cunoască mai multe perechi ale mesajului și MAS corespunzătoare.
Astfel, o căutare simplă a tuturor cheilor necesită nu mai puțin, dar mai mult efort decât căutarea unei chei simetrice de criptare cu aceeași lungime.
Funcția de calcul al MAS trebuie să aibă următoarele proprietăți:
- Trebuie să fie dificil de calcul, știind M și CK (M). găsiți mesajul M '. astfel încât CK (M) = CK (M ').
- Valorile lui CK (M) trebuie distribuite uniform în sensul că pentru orice mesaj M și M 'probabilitatea ca CK (M) = CK (M'). trebuie să fie egală cu 2-n. unde n este lungimea valorii MAC.
Standardul NMAC
Folosirea unei funcții hash pentru a obține MAS este de a adăuga o valoare secretă mesajului care este alimentat într-un anumit mod de intrarea funcției hash. Un astfel de algoritm se numește NMAS. și este descris în RFC 2104.
Au fost urmărite următoarele obiective în dezvoltarea algoritmului NMAS:
1. Abilitatea de a utiliza funcțiile hash existente fără modificări;
2. Abilitatea de a înlocui cu ușurință funcțiile de tip hash încorporate pentru o viteză mai mare sau mai stabilă.
3. Salvarea vitezei algoritmului, apropiată de viteza funcției hash corespunzătoare.
4. Abilitatea de a utiliza chei și de a lucra cu ei ușor.
În algoritmul HMAC, funcția hash este o "cutie neagră". Aceasta permite, mai întâi, utilizarea implementărilor funcției hash existente și, în al doilea rând, oferă o înlocuire ușoară a funcției hash existente cu una nouă.
Introducem următoarea notație:
H este funcția hash încorporată.