Puncte:1

Contra pentru cifrurile de flux care se bazează pe funcții hash

drapel al

Într-un răspuns de Aici cineva mentioneaza:

dacă aveți o funcție hash-cu-oracol-puteri, atunci este destul de ușor să generați un flux pseudo-aleatoriu dintr-o cheie secretă, prin hashing K||n unde K este cheia secretă și n este un numărător. Prin XOR-ul acestui flux pseudo-aleatoriu dependent de cheie cu datele de criptat, aveți un cifru de flux.

În aceeași postare există și această parte referitoare la utilizarea funcțiilor hash criptografice pentru crearea unui cifr de flux:

O funcție hash criptografică este o funcție care este rezistentă la preimagini, a doua preimagini și coliziuni. Din câte știu, nu s-a dovedit că aceste condiții sunt suficiente pentru a construi un stream cipher.

Din câte știu, se crede că toți algoritmii simetrici existenți în prezent, în special AES, sunt doar siguri. Singura dovadă pe care o avem în ceea ce privește securitatea lor este utilizarea lor în practică și că atacurile care au fost încercate până acum nu reduceau catastrofal securitatea acelor algoritmi.

Problema că „nu s-a dovedit că aceste condiții sunt suficiente pentru a construi un cifru de flux” este într-adevăr singura problemă? Care sunt alte probleme cu cifrurile de flux care sunt induse de funcțiile hash? Sunt probabil mai puțin sigure? Probabil sunt mai lente? Probabil că folosesc prea multă memorie? Doar că există și alți algoritmi de criptare cercetați care promit rezultate mai bune?

Aș presupune că o funcție hash cu o dimensiune de bloc mai mare are avantajul că pot fi utilizate chei mai lungi sau non-uri mai lungi. Pentru SHA-512 se poate folosi o cheie cu 384 de biți și un nonce de 128 de biți. O altă posibilitate ar fi să continuați să utilizați chei de 256 de biți, să folosiți nonces de 128 de biți și să aveți o dimensiune maximă mai bună a mesajului de 2^128 de blocuri (sau 2^137 de biți pentru SHA-512) în comparație cu ~2^39 de biți pentru AES-GCM cu doar nonces pe 96 de biți (care ar fi un obiectiv frumos după părerea mea).

kelalaka avatar
drapel in
Înrudit [Este SHA-256 securizat ca cifr de bloc CTR?](https://crypto.stackexchange.com/q/1656/18298) și [Putem folosi în schimb un fel de funcție âhashâ în modul CTR a unui cifru bloc?](https://crypto.stackexchange.com/q/37566/18298)
Puncte:7
drapel us

Problema că „nu s-a dovedit că aceste condiții sunt suficiente pentru a construi un cifru de flux” este într-adevăr singura problemă?

Deci, rezistența la coliziune nu este într-adevăr suficientă pentru a construi un cifr de flux securizat, exemplul standard ar fi să luați o funcție hash rezistentă la coliziune și să adăugați 128 $0$ biți la ieșire.Acest lucru moștenește în mod clar rezistența la coliziune, dar, de asemenea, nu oferă o ieșire care nu poate fi distinsă de aleatorie.

Probabil sunt mai lente?

Aceasta este de obicei identificată ca problema principală. Calcularea funcțiilor hash este de obicei de 3-10 ori mai lentă decât calcularea construcțiilor simetrice dedicate precum AES. Acest lucru se datorează cel mai probabil naturii hashing-ului care are un model de amenințare „mai puternic”, fiind nevoit să ofere securitate în fața adversarului care cunoaște toate valorile din calcule, în timp ce AES trebuie să ofere securitate doar atunci când adversarul nu cunoaște o singură intrare. - cheia.

Sunt probabil mai puțin sigure?

Deși am putea folosi funcții hash care nu furnizează pseudoaleatorie în rezultatul lor, construcțiile standard pe care le folosim au fost proiectate cu atenție pentru a oferi rezultate uniform aleatorii.
Argumentele detaliate depind de construcția de bază, dar, în general, putem construi un generator de flux de chei securizat ca o variație a $H(k\|p\|n\|\text{ctr})$ pentru funcții hash moderne cu umplutură adecvată $p$.
Ipoteza de securitate de bază este apoi similară cu cea a HMAC, necesitând ca funcția de compresie internă a hashurilor Merkle-Damgard să fie un PRF cu intrare dublă și permutarea internă a hashurilor bazate pe burete să fie o permutare aleatorie care este deja presupusă pentru rezistența la coliziune.

Maarten Bodewes avatar
drapel in
Un alt lucru care poate să nu fie *necesar* pentru funcțiile hash este că cheia trebuie protejată împotriva de ex. atacuri pe canale laterale. De asemenea, aceasta nu este o problemă cu majoritatea funcțiilor hash (altfel HMAC ar avea probleme), dar acest lucru poate să nu fie evident din *orice* funcție hash / implementare.
kelalaka avatar
drapel in
De asemenea, PRF este un singur mod și poate oferi o gamă largă de funcții în loc de PRP.
Puncte:6
drapel us

O funcție hash criptografică este o funcție care este rezistentă la preimagini, a doua preimagini și coliziuni. Din câte știu, nu s-a dovedit că aceste condiții sunt suficiente pentru a construi un stream cipher.

Ieșirea unei funcții hash criptografice, fiind rezistentă la coliziuni și pre-imagine, nu înseamnă neapărat că produc rezultate care nu se pot distinge de aleatoriu.Deoarece cu un atac de text simplu ales, fluxul generat poate fi extras cu ușurință. Dacă fluxul se distinge, atunci modelul perceptibil poate dezvălui informații despre textul simplu. Din câte știu eu (alții mă corectează dacă greșesc), nu a fost cunoscută o astfel de problemă cu niciuna dintre funcțiile hash utilizate în prezent. [Și, după cum au subliniat alții, se poate datora faptului că nicio astfel de analiză ciptografică a funcțiilor hash utilizate ca generator de flux nu a fost făcută cu suficientă rigoare, deoarece nu a fost niciodată intenționată să fie utilizată în acest fel]

Există câteva probleme legate de modul în care a fost prezentată întrebarea dvs. Există nonce, contor și cheie. Vorbești despre non-uri mai jos, dar fără contor și despre ecuația pe care ai citat-o $H(k\mathbin\|n)$ from answer are counter, dar nu nonce, așa că nu ați clarificat cum le folosiți.

Oricum, din câte știm noi, $H(k\mathbin\|n\mathbin\|\text{ctr})$ Unde $n$ și $\text{ctr}$ sunt, respectiv, nonce și counter ar putea fi un generator de flux bun pentru majoritatea funcțiilor hash, cred, atâta timp cât $k$, $n$ și $\text{ctr}$ toate au lungime fixă ​​(nu trebuie să vă faceți griji cu privire la atacurile de tip extensie de lungime pentru intrarea cu lungime fixă). Dar, mai general, trebuie să utilizați funcții care sunt considerate a fi funcții pseudo-aleatoare (cum ar fi HMAC) pentru o garanție rezonabilă de securitate dacă doriți să utilizați fluxul bazat pe hash. Ca în $\operatorname{HMAC}_k(n\mathbin\|\text{ctr})$ . Și pentru că HMAC utilizează hashing dublu și cifrurile bloc precum AES au o optimizare ridicată, cred că nu oferă performanța pe care o oferă fluxurile de ultimă generație (chacha, AES-CTR/GCM), chiar dacă este suficient de sigur.

kelalaka avatar
drapel in
Cum funcționează atacul cu extensia de lungime în modul CTR?
Manish Adhikari avatar
drapel us
@kelalaka am spus "MAI". De fapt, nu mă gândeam prea mult la cum să o fac în timp ce am scris răspunsul.Nu mă pot gândi la un scenariu realist pentru asta, dar îmi pot imagina un scenariu sălbatic în care n poate fi de orice lungime arbitrară (adică blocuri multiple) și un atacator poate controla IV, dar nu îl poate repeta. Deci el creează ceva de genul $n' = n\|i\|padding$ și extinde lungimea de la asta. Sau găsește un cifr cu nonce uriaș și format potrivit pentru asta și efectuează CPA cu control asupra nonce (folosește nonce mic), primește fluxul și efectuează extinderea lungimii pentru a obține fluxul original
Manish Adhikari avatar
drapel us
Bineînțeles, să o încerci pe contravaloare ar fi exclusă
Manish Adhikari avatar
drapel us
@kelalaka Gândit-o la un scenariu mai puțin „sălbatic”, un sistem are un defect care face foarte probabil să aleagă un IV cu formatul potrivit, așa cum este descris mai sus și să fie susceptibil la atacul de text cifrat ales. Textul cifrat trebuie să fie autentificat folosind MAC, dar nu autentifică IV. IV-ul este adăugat textului cifrat ales și sistemul nu ar decripta textul cifrat țintă (unul care folosește IV cu formatul potrivit). Un CCA2 în acest caz poate dezvălui fluxul de cheie pentru textul cifrat țintă prin extensia de lungime.
kelalaka avatar
drapel in
Acest lucru este nerealist în criptografia modernă. De ce trebuie să definim o lungime variabilă pentru a complica analiza și securitatea? Cunoaștem deja problemele din jurul lui, există o mulțime de exerciții despre acest lucru și, în mod similar, PRF-uri.
Manish Adhikari avatar
drapel us
Cred că da, ar fi trebuit să o exprim mai bine. Editând ușor răspunsul meu

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.