dat un hash H() , cum ar fi sha256
și un text secret S
și o sare publică P
cunoașterea H(S) va dezvălui HMAC(P, S)?
pentru a clarifica: întrebarea este dacă este posibil să înveți rezumatul, nu secretul.
În cazul meu specific, HMAC(S) este de fapt HKDF(S), dar presupun că pentru această întrebare partea legată de siguranță este doar faza de extragere.
protocolul este următorul:
Alice->Bob: preluați mesajul2 după mesajul1 care avea conținut H(mesaj1)
Bob->Alice: mesajul2 de la Charlie spune: chacha(HKDF(mesaj1), simplu)
Pare destul de evident că forțarea brută a S este încă imposibilă:
Pentru fiecare rundă, un atacator ar avea capacitatea de a testa împotriva H(S) sau HMAC(S), dar acest lucru nu ajută, deoarece efortul este identic. Testarea împotriva ambilor face doar de două ori mai lent.
Cu toate acestea, ne pasă de secretul hashului în sine, deoarece aceasta este cheia derivată. Chiar dacă presupunem că ar putea fi posibilă „reluarea” unei funcții hash doar din rezumatul acesteia [1]
și apoi continuați-l ca HMAC, ar funcționa numai cu H(S+sare), nu cu H(sare+S), care HKDF este [2]
Acum ultimul lucru pe care pur și simplu nu îl înțeleg este entropia. Dezvăluirea hash-ului lui S reduce entropia, astfel încât hmac-ul să fie mai slab? Din câte înțeleg, un digerat a ceva dispersează de fapt entropia, astfel încât să nu se distingă de aleatorie. Deci, nu puteți „reface” aceeași dispersie, dacă a dispărut deja.
- https://stackoverflow.com/questions/20895009/what-state-needs-to-be-stored-to-allow-resumable-hash-computations
- De ce folosește HKDF HMAC (sare, cheie) în loc de HMAC (cheie, sare)?