Puncte:1

Acest algoritm de criptare bazat pe hash ar funcționa în teorie?

drapel bf

Tocmai mă gândeam la asta și nu am putut găsi nimic pe el online.

Deci ideea pe care am avut-o a fost aceasta:

Generarea unei chei aleatorii de o anumită lungime. Apoi împingând această cheie cu SHA256 (sau ceva de securitate similară), apoi treceți în buclă prin fiecare octet al hash-ului și fiecare octet al textului și faceți o operație XOR cu ambii acești octeți, generând un nou octet. Apoi, înșiră acești noi octeți împreună pentru a crea un text cifrat. Acest lucru poate fi ușor inversat dacă cunoașteți cheia.

Intrebarile mele:

Cât de sigur ar fi acest lucru potențial? Alte considerente? Sfaturi privind îmbunătățirile aduse sistemului?

Mulțumiri!

kelalaka avatar
drapel in
Sunteți pe cale de a găsi modul CTR standard [1979](https://ee.stanford.edu/~hellman/publications/32.pdf). Modul CTR a fost conceput inițial pentru PRF. Fie $H$ o funcție hash sigură, atunci $$H(k||contor_0) || F(k||contor_1) || \ldots || F(k||counter_m)$$ creează un flux securizat astfel încât să poată x-sau mesajul de criptat. Acestea oferă [o mulțime de avantaje și unele dezavantaje](https://crypto.stackexchange.com/q/85571/18298), de asemenea
Puncte:0
drapel ng

Da, acest lucru funcționează în esență (până la remedierea problemelor mici). O problemă notabilă este că hash-ul dvs. va fi același de fiecare dată, astfel încât să îl puteți recupera folosind un atac de text simplu cunoscut, apoi să falsificați mesaje liber.

O altă problemă mică este că puteți cripta mesajele numai atâta timp cât lungimea de ieșire a hash-ului dvs.

Ambele pot fi remediate prin eșantionarea unui IV aleatoriu și apoi prin hashing IV||key mai degrabă decât cheia. Dacă doriți să criptați mai multe blocuri, fie hash folosind o funcție de ieșire extensibilă, fie hash IV||cheie, (IV+1)||cheie etc.

Această construcție este doar un mod de contor (aleatoriu), în care folosim o funcție hash ca PRG. Deoarece hash-ul nostru are nevoie de proprietăți de pseudoaleatorie, acest lucru este sigur doar în modelul de oracol aleatoriu, iar hash-ul nostru trebuie să fie bun ca un oracol aleatoriu.

theflamingtiger avatar
drapel bf
Ce vrei să spui prin eșantionarea unui IV aleatoriu? Dacă este aleatoriu, asta nu înseamnă că o altă persoană nu o poate decripta?
Morrolan avatar
drapel ng
De obicei, IV-urile nu trebuie să fie secrete, așa că pur și simplu s-ar transmite împreună cu textul cifrat.
Puncte:0
drapel cn

Acest lucru este complet echivalent cu Vigenere cu dimensiunea cheii $256$ (iar cheia Vigenere va fi hash-ul cheii tale). Atunci nu este deloc sigur.

De exemplu, să presupunem că cunosc primii 256 de biți ai mesajului dvs. Atunci pot deduce întregul $h(k)$.

Și nici măcar eu nu știu $k$, pot prelua mesajul complet.

Desigur, dacă mesajul este exact $256$ biți, aveți o siguranță perfectă (este un pad unic).

theflamingtiger avatar
drapel bf
Acest lucru s-ar aplica și dacă mesajul are mai puțin de 256 de biți, nu?
Ievgeni avatar
drapel cn
Da, dar atunci întrebarea este despre dimensiunea cheii. Dacă este mai mult de 256, este mai puțin eficient decât un pad de o singură dată, atunci trebuie să fii sigur că cheia ta are suficientă entropie. În rest, poate fi forțat brutal.
theflamingtiger avatar
drapel bf
Aceasta este o situație complet teoretică: ce s-ar întâmpla dacă ai pune textul simplu într-un cod QR și apoi ai efectua procesul original pe acești octeți. Ar fi considerat acest lucru mai sigur, deoarece acum fiecare octet nu reprezintă neapărat unul în textul simplu original?
Ievgeni avatar
drapel cn
Nu sunt prea familiarizat cu codul QR. Dar dacă un adversar are o scurgere de informații despre distribuirea codului tău QR, poate deduce o mulțime de gânduri. De exemplu, prin xorarea a două părți de 256 de biți $c_1$, $c_2$, șterge complet cheia și apoi deduceți $m_1 \oplus m_2$. Nu știu dacă în cazul dvs. sunt date sensibile, dar în general astfel de scheme sunt considerate nesigure.
theflamingtiger avatar
drapel bf
Asta are foarte mult sens. Ok, ultimul lucru, ce se întâmplă dacă ar exista o modalitate de a amesteca acest cod QR într-un mod determinat de cheie/hash, astfel încât, fără ca ele cheie/hash cineva să încerce să decripteze, nu ar ști ce octeți corespund la ce?
Ievgeni avatar
drapel cn
Nu știu. Presupun că depinde de entropia permutației.

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.