spune că securitatea HMAC-SHA1 nu depinde de rezistența la coliziuni? Spun în mod special cu privire la HOTP sau pentru HMAC-SHA1 pentru orice utilizare?
Dacă HMAC-SHA1 este utilizat pentru verificarea integrității unui document și puteți găsi o coliziune, puteți face modificări în document, nu?
http://tools.ietf.org/html/rfc2104#section-6
Chiar și RFC spune că rezistența la coliziuni este relevant
Securitatea mecanismului de autentificare a mesajelor prezentat aici depinde de proprietățile criptografice ale funcției hash H: rezistența la găsirea coliziunilor (limitat la cazul în care valoarea inițială este secretă și aleatorie și unde ieșirea funcției nu este disponibilă în mod explicit atacatorului) și proprietatea de autentificare a mesajului funcției de compresie a lui H când este aplicată blocurilor individuale
Ce îmi lipsește aici?
Comentarii
- Se pare că există o confuzie în întrebarea: HMAC-SHA1 nu este utilizat pentru semnarea unui document (cel puțin, nu de obicei; și presupunerea acestuia) a fost, presupunerea standard pentru HMAC că intrarea sa cheie este secretă nu poate ' să se țină de la Procedura de verificare a semnăturii este publică). Mi se pare acest răspuns destul de bine.
- @fgrieu – cred că am făcut o greșeală în terminologie – când am scris semnarea, ar trebui să am scris de fapt generând un mesaj de autentificare pentru a proteja integritatea. În cazul coliziunilor, puteți schimba mesajul și păstra același MAC, deci este o problemă, nu?
- Ar trebui să închidem acest lucru ca duplicat al HMAC-MD5 este considerat sigur pentru autentificarea datelor criptate? ? În timp ce această întrebare este despre SHA1, nu despre MD5, răspunsul este aproape același.
- Sunt ' destul de sigur dacă am un atac pre-imagine împotriva SHA -1 acest lucru explodează.
Răspuns
În prima secțiune a acestui răspuns voi presupune că printr-o mai bună îmbunătățiri hardware sau / și algoritmice, a devenit fezabil în mod obișnuit să se prezinte o coliziune pentru SHA-1 printr-o metodă similară cu cea a Xiaoyun Wang, Yiqun Lisa Yin și Hongbo Yu ” atac , sau atacul lui Marc Stevens . Acest lucru a fost realizat public la începutul anului 2017 și a fost clar fezabil (efortul reprezintă doar câteva ore din efortul de hashing cheltuit pentru mineritul bitcoin ; dar hardware-ul folosit pentru aceasta nu poate să fie reproiectat pentru atacul asupra SHA-1).
Contrar a ceea ce este considerat în întrebare, acest lucru nu ar nu permite unui atacator să nu domolească cheia HMAC-SHA-1 pentru a efectua o modificare nedetectată într-un document; că, inclusiv dacă atacatorul este capabil să pregătească documentul, este dispus să modifice ulterior.
O explicație este că atacurile de coliziune asupra SHA-1 pe care le considerăm necesită cunoașterea stării de variabila de înlănțuire SHA-1 și atacatorul HMAC care nu știe cheia este lipsit de acea cunoaștere prin introducerea cheii pe ambele extremități ale iterației rundelor în care mesajul se află în HMAC. O rupere mult mai profundă a funcției rotunde SHA-1 „ar fi necesară pentru a sparge HMAC. Nu întâmplător, M. Bellare” s Noi dovezi pentru NMAC și HMAC: Securitate fără rezistență la coliziune arată că securitatea HMAC este valabilă presupunând doar proprietăți mai slabe pe funcția sa rotundă decât este necesară pentru rezistența la coliziune a hashului corespunzător.
Ceea ce ar fi posibil este pentru un atacatorul știind cheia HMAC pentru a pregăti un document pe care dorește să îl modifice ulterior, care poate fi modificat fără a schimba MAC-ul. Dar, din moment ce atacatorul deține cheia HMAC, aceasta nu este considerată o pauză a HMAC.
Un comentariu întreabă când nu trebuie folosit SHA-1?
Este recomandabil să eliminați rapid SHA-1 în aplicațiile care necesită rezistență la coliziune (ca imagine: îndepărtați-vă rapid, când ieșiți o clădire care alarma de incendiu sună când nu există fum). Aceasta include hashing pentru verificarea integrității sau semnătura digitală a documentelor pregătite de alții chiar și parțial (adică majoritatea documentelor). Dacă continuarea utilizării SHA-1 are avantaje operaționale puternice, poate fi făcută în siguranță o excepție prin inserarea ceva imprevizibil de către adversari înainte de orice porțiune a mesajului pe care un adversar o poate influența.De exemplu, aplicând un număr de serie imprevizibil al certificatului la momentul solicitării unui certificat, o autoritate de certificare ar putea emite în siguranță certificate folosind SHA-1 pentru semnătura lor internă.
După cum sa explicat în prima secțiune a acestui răspuns, atâta timp cât cheia HMAC-SHA-1 este considerată secretă, nu există niciun indiciu că HMAC-SHA-1 este nesigur, deoarece folosește SHA-1. Dacă cheia este considerată publică sau scurgerea acesteia este considerată o posibilitate operațională în care se dorește încă rezistență la coliziune pentru HMAC, inclusiv pentru mesajul pregătit după divulgarea cheii, atunci se aplică precauțiile discutate în paragraful anterior.
Comentarii
- Deci, când SHA1 nu trebuie utilizat? De exemplu, descoperirea problemei în SHA1 o împiedică să fie folosită acolo unde?
- ' este, în general, recomandat să vă îndepărtați (" walk ", nu " run ") de la SHA-1. Acestea fiind spuse, constructul specific al HMAC-SHA1 este încă considerat sigur de utilizat (presupunând o cheie secretă) datorită dovezii de securitate pentru HMAC care nu se bazează pe rezistența la coliziune a PRF-ului subiacent. Când aveți dubii, treceți la SHA-2.
- @StephenTouset – da, am primit asta. Cu toate acestea, există vreo utilizare a SHA-1 de care ar trebui să fugi, mai degrabă decât să te îndepărtezi sau să te îndepărtezi.
- Nu, altfel acesta ar fi sfatul. Rezistența la coliziune a SHA-1 ' este ruptă doar în sens teoretic chiar acum. Nu s-au găsit încă coliziuni cunoscute, deși cel mai bun atac actual este doar la limita fezabilității.
Răspuns
Când oamenii spun că HMAC-MD5 sau HMAC-SHA1 sunt încă sigure, înseamnă că „sunt încă siguri ca PRF și MAC.
Presupunerea cheie aici este că cheia este necunoscută atacatorului.
$$ \ mathrm {HMAC} = \ mathrm {hash} (k_2 | \ mathrm {hash} (k_1 | m)) $$
-
Potențial atacul 1: Găsiți o coliziune universală, care este „valabilă pentru mai multe chei:
Utilizând HMAC, mesajul nu este hash direct, dar are $ k_1 $ ca prefix. Aceasta înseamnă că atacatorul nu face acest lucru” Nu știți starea internă a hashului atunci când mesajul începe. Găsirea unui mesaj care se ciocnește pentru majoritatea opțiunilor este de $ k_1 $ este extrem de greu 1 .
-
Potențial atac 2: Recuperează cheia
Pentru ca acest lucru să aibă succes, funcția hash are nevoie de pauze mult mai mari decât doar coliziunile. Este similar cu un prim atac pre-imagine, o proprietate care continuă să fie puternică atât pentru MD5, cât și pentru SHA1.
Pe de altă parte, dacă ați folosit o cheie cunoscută de atacator și atacatorul are capacitatea de a găsi coliziuni în hash-ul subiacent (pentru IV-uri arbitrare), acestea se transformă în coliziuni ale HMAC. Deci, dacă aveți nevoie de securitate într-un scenariu fără cheie, utilizați un hash rezistent la coliziune, cum ar fi SHA2 și luați în considerare să nu utilizați deloc HMAC.
1 Bănuiesc că nu este este posibil (pentru dimensiuni realiste ale mesajelor) chiar și pentru atacatorii nelimitați din punct de vedere computerizat, dar dovedind că este dificil.
Comentarii
- Deci, când SHA1 nu trebuie utilizat? adică descoperirea problemei în SHA1 împiedică utilizarea acesteia unde?
- @ user93353 Așa cum am spus, securitatea HMAC-SHA1 depinde de cheia necunoscută. Dacă nu există o cheie sau este cunoscută de atacator , ciocnirile din SHA1 devin o amenințare. Dar SHA1 ar trebui să fie rar, dacă vreodată, utilizat în modele noi, deoarece există alternative mai bune disponibile.
- Dacă cheia este cunoscută de atacator, atunci chiar și SHA2 va fi o problemă, nu-i așa?
- @ user93353 Depinde de ceea ce vrei să obții. Bineînțeles că niciun hash fără cheie nu este un MAC.
- @CodesInChaos – spui că HMAC-SHA1 este un problemă numai dacă cheia este cunoscută. Dar dacă cheia este cunoscut, asta va fi o problemă pentru orice operațiune HMAC-hash, nu?