Înainte de a vorbi despre atacuri, vă sugerez să folosiți chei aleatorii cu destui biți (cel puțin 128 de biți) în locul parolelor. Nu este nevoie să rubricați cheia de multe ori, doar folosiți o cheie bună. Dacă este derivată din parolă, utilizați o funcție bună de derivare a cheii pentru a deriva cheia și utilizați-o în schimb.
Acum, revenind la întrebarea dvs., ați spus-o singur, un atac de text simplu cunoscut este posibil. Și este dezastruos de ușor să faci asta.Tot ce trebuie să știți este un singur bloc de text simplu pentru a recupera tot textul simplu ulterior prin dezvăluirea hash-ului din acel bloc. Acesta este un nivel de securitate mult mai scăzut în comparație cu ceea ce se așteaptă de la cifrurile moderne, care sunt concepute pentru a fi sigure împotriva adversarilor capabili să efectueze atacuri alese cu text clar sau cu text cifrat ales. Nici măcar nu este atât de dificil de înțeles sau cel puțin de a restrânge numărul fezabil de încercări pentru un bloc de text simplu pe baza formatelor de fișiere, puține informații disponibile despre proprietarul fișierului etc., care pot fi folosite pentru a decripta întregul text cifrat.
De fapt, cu mult înainte să mă gândesc și la un cifr similar, dar în loc să trimit totul în mod iterativ, m-am gândit să fac xor din jumătatea stângă a ieșirii hash cu blocul de text simplu și hash jumătatea dreaptă pentru următorul bloc. Acest lucru poate fi randomizat prin amestecarea numărului public aleatoriu cu cheia. Un alt mod mai bine cunoscut este utilizarea hash în modul CTR pentru a genera fluxul, așa cum facem cu cifrurile bloc, deoarece modul CTR nu necesită să puteți decripta blocul. După cum a subliniat kelalaka, oferă și acces aleatoriu.
Dar amintiți-vă că acest lucru nu poate fi demonstrat ca fiind sigur în modelul simplu și, prin urmare, nu puteți fi foarte sigur de securitatea sa cu funcții hash precum SHA-2, care nu a fost conceput pentru a fi utilizat în acest fel. Acest lucru necesită o presupunere suplimentară că funcția ta hash este suficient de aproape de un oracol aleatoriu pentru a fi utilizată astfel în siguranță. Și chiar dacă este sigur cu funcții hash obișnuite, probabil că nu va avea o utilizare pe scară largă, deoarece va fi mult mai lent decât AES sau Chacha20 asistat de hardware (care folosește și modul CTR așa cum s-a menționat mai sus).