Próbuję dowiedzieć się więcej o trybie GCM i różnicach między CBC. Wiem już, że GCM zapewnia MAC, który jest używany do uwierzytelniania wiadomości. Z tego, co przeczytałem, i z fragmentów kodu, które widziałem, GCM wykonuje ekskluzywne lub podobne do CBC, ale nie jestem pewien, czemu jest wyłączne lub przeciw. W trybie CBC tekst na wyłączność lub jest tekstem jawnym w stosunku do poprzedniego bloku tekstu zaszyfrowanego, z wyjątkiem pierwszego bloku, który używa losowego IV. Czy GCM robi to samo, czy też działa na wyłączność – czy przeciwko czemuś innemu? Jeśli tak, czy ktoś może pokrótce wyjaśnić, w jaki sposób GCM używa IV i jak jest wykonywane wyłączne lub.
Komentarze
- Jeśli zignorujesz uwierzytelnianie, GCM zachowuje się jak tryb CTR, a nie jak tryb CBC. Wyszukaj je na Wikipedii.
- Tylko dlatego, że nie jest ' t zdefiniowane na tej stronie … GCM = Galois / Counter Mode i CBC = Cipher Block Chaining … inne definicje obejmują MAC (Message Authentication Code), IV (Initialisation Vector) i CTR (CounTeR Mode).
Answer
Tryby GCM i CBC działają wewnętrznie zupełnie inaczej; oba zawierają szyfr blokowy i wyłączność-lub, ale używają ich na różne sposoby.
W trybie CBC szyfrujesz blok danych, pobierając bieżący blok tekstu jawnego i wykluczając poprzedni blok szyfrogramu (lub IV), a następnie przesłanie wyniku tego przez szyfr blokowy; wyjściem szyfru blokowego jest blok tekstu zaszyfrowanego.
Tryb GCM zapewnia zarówno prywatność (szyfrowanie), jak i integralność. Aby zapewnić szyfrowanie, GCM utrzymuje licznik; dla każdego bloku danych wysyła aktualną wartość licznika poprzez szyfr blokowy. Następnie pobiera dane wyjściowe z szyfru blokowego i wykluczające lub z tekstem jawnym, tworząc tekst zaszyfrowany.
Zwróć uwagę na dwie kluczowe różnice:
-
Co jest „edytowane na wyłączność” lub „na wyłączność”; w trybie CBC tekst jawny jest „na wyłączność” lub „z danymi, które zna atakujący (IV lub poprzedni blok tekstu zaszyfrowanego); stąd to samo w sobie nie zapewnia żadnego nieodłącznego bezpieczeństwa (zamiast tego robimy to, aby zminimalizować prawdopodobieństwo, że wyślemy ten sam blok dwa razy przez szyfr blokowy). W trybie GCM tekst jawny jest na wyłączność lub „edytuje” z wyjściem z szyfru blokowego; jest to nieodłączne od modelu bezpieczeństwa, że atakujący nie może odgadnąć tego wyjścia (chyba że zna już tekst jawny i tekst zaszyfrowany).
-
Co jest przesyłane przez szyfr blokowy; w trybie CBC, tekst jawny jest wysyłany przez szyfr blokowy (po tym, jak został „zrandomizowany” z wyłącznikiem-lub); w trybie GCM to, co jest wysyłane przez szyfr blokowy, nie zależy od tego, czy dane są zaszyfrowane, ale zamiast tego tylko w stanie wewnętrznym.
Jeśli chodzi o sposób, w jaki GCM używa IV (osobiście uważam „nonce” za lepsze określenie tego, czego używa GCM, ponieważ wzmacnia to pomysł, że w przypadku GCM nie można dwukrotnie użyć tej samej wartości jednorazowej dla tego samego klucza), cóż, służy do inicjalizacji licznika.
Komentarze
- Bardzo interesujące … Jeśli dobrze rozumiem, mówisz, że w trybie GCM zaszyfrowany tekst bloku jest wyłączny – lub ' z tekstem jawnym, który został właśnie wprowadzony przez szyfr i ten blok jest następnie wysyłany. Jeśli to prawda, to w jaki sposób ten blok jest odszyfrowywany? Czy nie ' t tekst zaszyfrowany z szyfrowania AES (na przykład) wymaganego do odszyfrowania danych? jest to uzyskane? Również, jeśli o jest uzyskiwany sztywny zaszyfrowany tekst, który może być użyty do wyłączności – lub wysłanego zaszyfrowanego tekstu, który zwróciłby zwykły tekst i nie wymagałby dalszego deszyfrowania… ' czegoś brakuje .. .
- Nie, w GCM bierzemy licznik, wysyłamy go przez szyfr blokowy, a następnie wyłączamy – lub to z tekstem jawnym, tworząc szyfrogram. Po stronie odszyfrowywania utrzymujemy ten sam licznik, wysyłamy go przez szyfr blokowy, a następnie wyłączamy – lub to z szyfrogramem, aby utworzyć tekst jawny.
- @poncho Więc w GCM nie potrzebujemy „Odszyfrowana” część szyfru blokowego? Ponieważ używamy „szyfrowania” po obu stronach.
- Jeśli użyjesz tego samego numeru jednorazowego dwa razy z tym samym kluczem, otwierasz się na … jaki atak?
- @RobertSiemer: dwa ataki: a) atakujący uzyskuje znaczną ilość informacji o dwóch wiadomościach zaszyfrowanych tą samą wartością jednorazową (prawdopodobnie wystarczającą, aby wydedukować obie treści) oraz b) atak uzyskuje informacje, które pozwoliłyby mu zmienić wiadomości bez wykrycia