Cześć, piszę aplikację, która używa algorytmu AES z użyciem trybu CBC. Mimo szukania, nie bardzo rozumiem co zrobić z wektorem inicjującym po zaszyfrowaniu danych. Rozumiem, że atakujący nie powinien znać tego wektora? Jeśli nie może go znać, to co zrobić, aby ten wektor był bezpieczny?
Wektor inicjujący w AES - co z nim potem zrobić.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 411
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
IV nie musi być tajne, często w ogóle dokleja się je jako 1 blok szyfrogramu. To klucz ma być tajny! Ja bym jednak zadał sobie pytanie czy CBC to w roku 2019 dobry pomysł, ale to inna sprawa... State of the art to raczej AE/AEAD i jakiś AES-GCM.
IV samo w sobie jest dla atakujacego bezużyteczne, równie dobrze mógłby po prostu potraktować 1 blok jako IV i atakować resztę szyfrogramu, będzie mu na koniec brakować tylko tego pierwszego bloku.
Pamiętaj też, jakie możliwości twoja aplikacja udostępnia atakującemu. Jeśli może deszyfrować dowolny szyfrogram, a ty np. raportujesz mu "błąd deszyfrowania", to można w ten sposób odszyfrować dowolne dane za pomocą padding oracle...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 411
@Shalom: Myślałem nad użyciem innego trybu, ale na chwilę obecną chcę użyć biblioteki, która nie wspiera trybu GCM: https://github.com/bricke/Qt-AES
W każdym razie dzięki za odpowiedź na pytanie oraz na uświadomienie mnie w kwestii padding oracle. Mam zamiar jeszcze raz zweryfikować bardzo dokładnie mój pomysł, aby to szyfrowanie było bezpieczne.
- Rejestracja: dni
- Ostatnio: dni
@arkadiusz97: jak chcesz być bezpieczny, to zapomnij o tym, że jakiekolwiek szyfry istnieją - https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2009/july/if-youre-typing-the-letters-a-e-s-into-your-code-youre-doing-it-wrong/