Implementacja szyfrowania AES w C

Implementacja szyfrowania AES w C
0

Hej, mam pytanie, jak w jakiś "prosty" sposób zaimplementować szyfrowanie AES-256 do programu C?
Może jakaś biblioteka? Proszę o pomoc.

Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 6 godzin
  • Postów:1607
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 5 godzin
1

Używając OpenSSLa to wywołanie dwóch funkcji do enkrypcji i kolejnych dwóch do dekrypcji.


0

Dzięki, ... się z tym już ze 3h. Próbowałem już literacode, nie idzie, gcrypt, to samo..

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:dzień
1

Ogólnie dobra implementacja AES jest dość trudna do uzyskania bez wsparcia sprzętowego. Więc albo użyj OpenSSLa, LibreSSLa, NaCL lub BoringSSL albo pisz coś używając AES-NI. Alternatywnie polecam Ci coś prostszego w implementacji jak ChaCha20.


Zobacz pozostały 1 komentarz
hauleth
Mówisz o tym https://0xec.blogspot.com.es/2016/04/reversing-petya-ransomware-with.html?m=1? No tak, obcięcie połowy bitów może powodować problemy.
Shalom
Za pierwszym razem brali tylko połowę bajtów klucza, potem brali tylko górne połówki wordów, a potem jeszcze coś źle zrobili ;) Więc nie wiem czy to takie trywialne w implementacji... :)
hauleth
Trywialne, pod warunkiem, że zapiszesz to tak jak DJB to opisał, a nie będziesz próbował zrobić własne combosy na 16 bitach zamiast 32 jak w papierach jest.
hauleth
Chodzi o to, że jeśli zapiszesz Salsa/ChaCha20 tak jak jest w papierach to wszystko będzie działać raczej poprawnie (AFAIK brak side channel attacks). Natomiast jeśli użyjesz AES to masz timing attacks, a zakładam, że OP chce szyfrować coś znajdującego się na maszynie użytkownika więc side channel attack jest bardziej prawdopodobny. Innym problemem jest konieczność dobrania odpowiedniego trybu, bo inaczej całe szyfrowanie o kant rzyci. Patrząc, że OP pyta o AESa to zakładam, że na 99.9% użył by ECB. Przy szyfrach strumieniowych nie masz tego problemu.
Shalom
@hauleth szyfrowanie na maszynie usera to raczej ma więcej problemów niz side channel, np. dekompilacje/debugging i wyciągnięcie klucza ;) Ale tutaj wielkiej różnicy między AESem czy Salsa/ChaCha to nie będzie. No i jest też kwestia tego, ze AES jest stosunkowo stary i wiele ataków na niego wymyślono. Salsa/ChaCha są dużo młodsze i póki co uważane za bezpieczne, bo jeszcze nikt nie wymyślił jak je pokonać. Ale to nie znaczy że sie nie da.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.