Pentru început, nu sunt în niciun caz un expert sau ceva aproape de asta în criptografie. Știu lucrurile de bază despre asta, suficient pentru a alege mai mult sau mai puțin o metodă de implementat și apoi a citi despre ea, astfel încât să știu ce implementez. Așa că vă rog să vă scuzați orice întrebări presupuse stupide haha.
Având în vedere acest lucru, am creat o clasă de criptare/decriptare AES-256/CBC/PKCS#7 + HMAC-SHA512 într-o aplicație de asistent Android pe care o creez (se presupune că ar avea la nivel local (foarte?) lucruri personale și s-ar putea să-l public pe Play Store, deci nu este doar pentru mine). Se presupune că acea combinație va fi foarte sigură pentru următorii ??(?) ani. S-ar putea să fie puțin mai lent, dar nu mă deranjează, cel puțin deocamdată (foarte puține date). Totuși, am citit și că există o problemă cu aceasta, și anume atunci când vectorul de inițializare este reutilizat. Cu CBC, se pare că nu se pot recupera datele (nu?), așa cum se poate și cu alte moduri, și de aceea am ales-o pe aceasta. [Dacă există alte probleme cu această metodă, mă bucur să aflu despre ele.]
Dar este posibil, după ceva timp, să detectăm modele și să vedeți unde mesajele sunt egale (blocuri egale de 16 octeți). Știind ce înseamnă acel bloc, s-ar putea ști că nu s-a schimbat de-a lungul timpului după diferite versiuni criptate, de exemplu.
Așa că am avut o idee, care este: toate datele pe care le criptez trebuie să fie codificate folosind UTF-7. Valorile de octet rămase (128-255) sunt folosite ca valori aleatorii pentru a fi puse câte câte 16 octeți, într-o poziție aleatorie. De exemplu, în indexul 4 se adaugă un octet de 154, iar în indexul 19 se adaugă un octet de 234. În acest fel, este întotdeauna aleatoriu și, de fapt, blocurile egale în date vor fi diferite dacă același IV este reutilizat ("aleatoriu" poate repeta valori și nu pot verifica dacă le-am folosit deja în acest caz, așa că m-am gândit pe aceasta pentru a preveni probleme).
Este aceasta o abordare bună? Ar putea atenua problema? Poate o rezolvăm complet pentru următorii ani infiniti și metoda ar fi acum complet sigură sau cel puțin mult mai sigură?
De asemenea, dacă ceva din ce am spus este greșit, mă bucur să fiu corectat! Mulțumiri!