Deci, ar trebui să fie în regulă dacă folosesc SHA256, generează o cheie de 256 de biți, apoi împart șirul hexagonal al cheii în mod egal în 2 părți și folosesc prima parte ca IV în criptarea AES pe 256 de biți?
Nu, există modalități mai bune.
În primul rând, atunci când creați o cheie aveți nevoie de un generator de numere aleatoare, sigur din punct de vedere criptografic. daca tu deriva o cheie dintr-un secret principal - uneori numită semințe - aveți nevoie de o funcție de derivare a cheii sau KDF. În acest din urmă caz ați putea de ex. utilizați HKDF cu un hash bun, cum ar fi SHA-256. În principiu, puteți crea de ex. Ieșire pe 384 de biți folosind HKDF - chiar și atunci când utilizați SHA-256, dar nu cred că este o idee bună, din cauza următoarei părți a răspunsului.
În al doilea rând, reutilizarea unei combinații cheie/IV nu este o idee bună; în funcție de modul și mesaj, este posibil să scurgeți doar câteva date sau tot mesajul.
În general, puteți utiliza doar un IV cu zero dacă cheia este generată aleatoriu pentru fiecare mesaj. Ar fi mai bine decât reutilizarea unei părți a cheii. După cum s-a indicat, un IV nu este considerat, în general, a fi secret, așa că dacă utilizați date cheie ca implementări IV, ar putea foarte bine să-l scurgă.
Dacă trebuie să criptați mai multe mesaje cu aceeași cheie, atunci puteți utiliza a sintetic IV sau SIV. În acest fel, veți pierde date doar dacă mesajele sunt complet identice, cu prețul unei anumite performanțe, deoarece modurile SIV sunt multi-pass (mesajele trebuie procesate de două ori).
În general, ar trebui să utilizați doar un IV randomizat și să îl trimiteți cu textul cifrat. Nu este clar din întrebare dacă acest lucru a fost luat în considerare; ar fi cel mai comun mod de a gestiona generația a IV-a.
În cele din urmă, cheile nu sunt alfanumerice; sunt formați din biți. De fiecare dată când o cheie este tradusă în text, deschideți o problemă de securitate. Deci nu face asta: păstrează cheile binare.Prefer să folosesc AES-128 cu o cheie complet aleatorie și să folosesc ceilalți 128 de biți pentru IV decât să revin la utilizarea hexazecimale.
Hexazecimalele sunt utile numai pentru consumul uman, de ex. în timpul testării sau depanării când vine vorba de cheile secrete.