Dlaczego powinienem używać uwierzytelnionego szyfrowania zamiast samego szyfrowania?

Istnieją różne tryby działania szyfrowania blokowego, z których niektóre zapewniają „szyfrowanie”, a niektóre z nich zapewniają uwierzytelnione szyfrowanie .

Dlaczego warto używać tryb uwierzytelnionego szyfrowania , a nie tylko tryb szyfrowania?

To pytanie nie ma na celu omówienie różnych trybów szyfrowania uwierzytelnionego vrs (chociaż dobrym rozwiązaniem może być wybranie): jego celem jest uzasadnienie, dlaczego / kiedy AE jest lepsze niż „zwykłe” szyfrowanie.

Komentarze

Odpowiedź

Istotna różnica między zwykłym szyfrowaniem a szyfrowaniem uwierzytelnionym (AE) jest to, że AE dodatkowo provi des autentyczności, podczas gdy zwykłe szyfrowanie zapewnia tylko poufność. Przeanalizujmy szczegółowo te dwa pojęcia.

W dalszym tekście zakładamy, że $ K $ jest tajnym kluczem, który jest znany upoważnionym stronom, ale nieznanym atakującym.

Cele

Poufność (prywatność) oznacza, że atakujący nie może uzyskać żadnych informacji o tekście jawnym $ P $ z zaszyfrowanego tekstu $ E_K (P) $ z wyjątkiem, być może, długości. Innymi słowy, tekst zaszyfrowany wygląda jak losowy ciąg dla tych, którzy nie znają $ K $ , nawet jeśli mają jakąś kontrolę nad tekstem jawnym. Wszystkie folklorystyczne metody szyfrowania, od jednorazowej tabliczki do Enigmy, zapewniają poufność (przy pewnych założeniach) i tylko ją.

Dane autentyczność (integralność) oznacza, że upoważniony podmiot (odbiorca), który posiada $ K $ , może sprawdzić, czy ved data $ D $ jest autentyczna, tj. została utworzona tylko przez nadawcę, który zna $ K $ . Dane mogą być tekstem jawnym lub zaszyfrowanym i istnieje subtelna różnica w tym, co jest autentyczne w każdym przypadku: jeśli tekst zaszyfrowany jest uwierzytelniony, wówczas wiemy, że właściciel klucza autoryzował szyfrogram, ale niekoniecznie tekst jawny. Tradycyjnym sposobem uzyskania autentyczności jest użycie kodu uwierzytelniania wiadomości (MAC): $$ H_K (D) = T, $$ gdzie $ K $ w obu schematach jest niebezpiecznie niebezpieczne dla większości instancji. Dlatego zalecany jest schemat łączony.

Szyfrowanie uwierzytelnione

Uwierzytelnione szyfrowanie (AE) zapewnia jednocześnie poufność i autentyczność danych. Schemat AE jest zwykle bardziej skomplikowany niż schematy tylko poufne lub tylko autentyczne. Jednak jest łatwiejszy w użyciu, ponieważ zwykle wymaga tylko jednego klucza i jest bardziej niezawodny, ponieważ użytkownik ma mniejszą swobodę w zrobieniu czegoś złego (zobacz także bardziej szczegółowa odpowiedź ).

Jako osobna funkcja, uwierzytelniony schemat szyfrowania może uwierzytelniać, ale nie szyfrować, część swoich danych wejściowych, która jest nazywana powiązanymi danymi . Na przykład możemy chcieć zaszyfrować zawartość pakietu internetowego, ale musimy pozostawić jego nagłówek niezaszyfrowany, ale nadal powiązany z danymi wewnętrznymi.

Bezpieczeństwo

Nie sprecyzowaliśmy jeszcze, co rozumiemy przez bezpieczny schemat. Najwyraźniej istnieje kilka pojęć związanych z bezpieczeństwem, a użytkownik musi dokonać wyboru spośród nich w zależności od możliwości, których oczekuje od przeciwnika.

W przypadku trybów działania tylko poufność najpopularniejszy pojęcie bezpieczeństwa dotyczy ataków z użyciem wybranego tekstu jawnego . Niech $ E $ będzie schematem szyfrowania. Zakładamy, że przeciwnik nie tylko zna niektóre teksty jawne $ P $ , ale także może wybrać niektóre z nich do zaszyfrowania (jest to dość praktyczna sytuacja).W związku z tym pozwalamy przeciwnikowi wybrać dowolny tekst jawny do szyfrowania, i to wiele razy z rzędu. To, czego wciąż wymagamy od bezpiecznego schematu, to generowanie losowo wyglądających tekstów szyfrowania w każdym przypadku: $$ E_K (P_1), E_K (P_2), \ ldots, E_K (P_n) \ sim RandomString (| P_1 | + | P_2 | + \ cdots + | P_n |) $$

Przeciwnik nie może rozróżnić całego zestawu zaszyfrowanych tekstów, które otrzymuje z wyjścia prawdziwego generatora bitów losowych tej samej długości, nawet jeśli przeciwnik powtarza swoje oskarżenia. Ten ostatni wymóg oznacza, że schemat musi być niedeterministyczny, a tryby tylko poufności, które spełniają te wymagania, są albo probabilistyczne, albo nonce.

Zauważam, że istnieją folklorystyczne pojęcia bezpieczeństwa, które odnoszą się do bezpieczeństwo schematu z możliwością odzyskania samego klucza $ K $ . Było to istotne, gdy klucz mógł być używany gdzie indziej, ale jest to teraz znacznie mniej powszechne, a pojęcie bezpieczeństwa opisane powyżej jest powszechne.

Bezpieczeństwo trybów autentyczności jest zdefiniowane w w inny sposób. Niech $ H_K $ będzie takim schematem z tajnym kluczem $ K $ . Wymagamy, aby jeśli przeciwnik wybierał dane $ D $ , które nie zostały jeszcze uwierzytelnione, to jego szanse na odgadnięcie tagu $ T $ takie, że $$ H_K (D) = T $$ są pomijalne. Jeśli prześle parę $ (D, T) $ do weryfikatora, otrzyma odpowiedź $ \ perp $ (błąd).

Zauważ, że nie rozmawialiśmy o atakach na wybrany zaszyfrowany tekst na trybach tylko poufnych. Są to ataki, w których przeciwnik może również wysyłać własne zaszyfrowane teksty do odszyfrowania. Chociaż to ustawienie pojawia się również w praktyce (nawet jeśli rzadziej niż ataki z użyciem wybranego tekstu jawnego), schematy zapewniające tylko poufność nie są odporne na takie ataki. Aby ustanowić tego rodzaju zabezpieczenia, użytkownik musi ponownie skorzystać z uwierzytelnionego szyfrowania .

Bezpieczeństwo uwierzytelnionych schematów szyfrowania jest zdefiniowane w dwóch częściach. Po pierwsze, podobnie jak w przypadku trybów poufności, przeciwnik musi nie być w stanie odróżnić zaszyfrowanych tekstów od losowych ciągów. Po drugie, niezależnie od fałszywego (nie utworzonego w $ K $ ) zaszyfrowanego tekstu, który wysyła do odszyfrowania, prawdopodobnie otrzyma $ \ perp $ w odpowiedzi.

Dlatego uwierzytelnione tryby szyfrowania zapewniają również ochronę przed atakami z wykorzystaniem wybranego szyfrogramu, jeśli jest to konieczne.

Jak to działa

Istnieje wiele zintegrowanych schematów szyfrowania z uwierzytelnianiem: CCM, GCM, OCB, EAX itp. , gdzie mechanizmy zapewniające poufność i autentyczność są ze sobą ściśle powiązane. Projekt tych schematów wykracza daleko poza temat. Istnieje jednak prosty, złożony schemat, znany jako Encrypt-then-MAC, który działa w następujący sposób. Niech $ K_1, K_2 $ będzie tajnymi kluczami, $ P $ będzie zwykłym tekstem, $ E $ to jakiś tryb szyfrowania, a $ H $ to jakiś MAC. Następnie schemat $$ \ Pi_ {K_1, K_2}: M \ rightarrow E_ {K_1} (M) || H_ {K_2} (E_ {K_1} (M)) $$ to bezpieczny uwierzytelniony schemat szyfrowania, jeśli $ E $ to bezpieczny tryb poufności, a $ H $ to bezpieczny tryb autentyczności.

Dodatkowe funkcje uwierzytelnionych schematów szyfrowania

Oprócz zapewniania zarówno poufności, jak i autentyczności, uwierzytelnione schematy szyfrowania mogą mieć szereg dodatkowych funkcji. Żaden schemat nie ma ich wszystkich, dlatego najlepszy wybór zależy od ustawień użytkownika.

  • Poziom bezpieczeństwa . Schemat gwarantuje tylko poufność i autentyczność danych do niektórych związanych z ilością zaszyfrowanych danych lub żądań odszyfrowania. To ograniczenie jest zwykle znacznie mniejsze niż przestrzeń kluczy, a dla trybów opartych na AES zwykle nie przekracza 2 $ ^ {64} $ .

  • Paralelizm Jeśli dostępnych jest dużo zasobów, można chcieć równolegle uruchomić szyfrowanie, deszyfrowanie lub weryfikację. Tryby wykorzystujące łączenie łańcuchowe (takie jak te wywodzące się z szyfrowania CBC lub konstrukcji gąbki) są trudne do zrównoleglenia.

  • Szyfrowanie online . Mówimy że schemat jest w trybie online, jeśli pozwala na szyfrowanie natychmiast po udostępnieniu danych, bez wiedzy o ich długości.

  • Korzystanie z patentów . Jeden z najciekawszych schematów AE, tryb OCB, jest opatentowany i występuje rzadziej ly używane i analizowane z powodu tej właściwości.Często pożądane jest, aby schemat był wolny od patentów.

  • Aktualizacja tagów . Większość schematów, z kilkoma wyjątkami, takimi jak GCM, wymaga ponownego obliczenia prawie całego zaszyfrowanego tekstu, jeśli zmodyfikowana zostanie niewielka część tekstu jawnego. Jeśli szyfrogram można szybko zaktualizować, pozwoliłoby to na znacznie szybsze przetwarzanie dużych ilości zaszyfrowanych danych, np. Szyfrowanie dysku twardego.

  • Użycie liczb jednorazowych lub losowych IVs . Nonces i losowe IV prowadzą do różnych modeli zabezpieczeń, które są często niekompatybilne (schematy mogą być zabezpieczone z wartościami nonce, ale nie z losowymi IV o tej samej długości lub odwrotnie). Chociaż unikalność jednorazowa może być trudniejsza do zapewnienia, losowe IV wymagają oddzielnego mechanizmu generowania liczb losowych i prowadzi do rozwinięcia tekstu zaszyfrowanego.

  • Klucz zmienny, numer jednorazowy, lub długość tagu . Wszystkie te trzy parametry są zwykle ograniczone przez aplikację korzystającą ze schematu AE. Z kolei schematy AE mają swoje własne, czasem niekompatybilne ograniczenia. Im większa różnorodność schematu, tym więcej aplikacji pasuje.

  • Przetwarzanie powiązanych danych . Wszystkie nowoczesne schematy pozwalają na uwierzytelnianie powiązanych danych, które nie są szyfrowane. Niektóre z nich nie mogą jednak wstępnie przetworzyć AD przed zakończeniem tekstu jawnego, co może negatywnie wpłynąć na wydajność.

Dodatkowa lektura

raport techniczny autorstwa Rogaway to obszerne badanie poufności – tylko tryby, adresy MAC i niektóre tryby szyfrowania z uwierzytelnieniem. Zawiera również wszystkie formalne szczegóły dotyczące pojęć bezpieczeństwa.

Komentarze

  • Mógłbym dodać, że w wielu praktycznych sytuacjach wybór uwierzytelnionego schematu szyfrowania jest w dużej mierze podyktowany odpowiednią konwencją lub protokołami. Bardzo często ludzie marszczą brwi na widok uwierzytelnionego szyfrowania, ale w praktyce ' widziałem, że zarówno niestandardowe implementacje MAC-następnie-szyfrowania, jak i szyfrowania-wtedy-MAC mają wady niż zastosowania uwierzytelnionego szyfrowania. Dzieje się tak, ponieważ poprawne zaimplementowanie kombinacji wymaga bardzo dużej uwagi na szczegóły.
  • Jeśli chodzi o dodatkowe właściwości, unikanie tworzenia kanałów bocznych (szczególnie kanałów bocznych taktowania) było krytyczne przy ocenie bezpieczeństwa zestawu szyfrów AE (AD). W praktyce oznacza to, że możliwe jest zaimplementowanie szyfru w taki sposób, aby działał w czasie, na który nie ma wpływu klucz ani tekst wejściowy.

Odpowiedź

Kiedy przesyłamy informacje przez niezabezpieczony kanał, chcemy, aby nasze dane były bezpieczne.

Więc co to oznacza? Aby to omówić, wykorzystamy standardową sytuację kryptograficzną Alicji i Boba. Alicja chce wysłać coś ( zwykły tekst ) przez niezabezpieczony kanał (co to oznacza zostanie omówione) do Roberta. Ten kanał będzie słuchają Ewa (podsłuchująca) i Mallory (który próbuje złośliwie wtrącić się) – co to oznacza zostanie omówione w odpowiednim czasie.

Poufność : Kiedy Alicja wysyła wiadomość do Boba, wymagamy, aby Ewa podsłuchująca, która słuchała ich komunikacji, nie mogła dowiedzieć się niczego o treści ich wiadomości.

Uzasadnienie : W przeciwnym razie Ewa może dowiedzieć się czegoś, czym Alicja / Bob nie chcą się podzielić

Rozwiązanie: Używamy szyfrowania , które przekształca tekst jawny w tekst zaszyfrowany, który (w sensie teorii informacji ) zawiera tylko informacje o tekście jawnym, których nie można wyodrębnić. Oznacza to, że (parafrazując Goldwasser ) cokolwiek ing Ewa może dowiedzieć się o tekście jawnym, ponieważ zna szyfrogram, może również wydedukować bez tekstu zaszyfrowanego.

Nawet w tym przypadku musimy być ostrożni. Tylko dlatego, że schemat działa przeciwko pasywnemu napastnikowi (osobie, która po prostu podsłuchuje strumień wiadomości), nie czyni go silnym przeciwko aktywnemu atakującemu. Rozważ na przykład CBC jest używany. Jest bezpieczny w grze IND CPA , co może wydawać się bezpieczne. Jednak w grze CCA pozwalamy atakującemu prosić o odszyfrowanie wiadomości (ale nie odszyfrowanie tekstu zaszyfrowanego) . Co może zrobić, mając tekst zaszyfrowany $ c = {\ small IV} \ mathbin \ | c_1 \ mathbin \ | \ dots \ mathbin \ | c_n $ to poprosić o odszyfrowanie $ c „= a \ mathbin \ | c $, gdzie $ a $ jest niepustą wiadomością. To nie jest równe zaszyfrowanemu tekstowi, więc jest dozwolone w grze, a biorąc tylko ostatnie $ n $ bloków, może on wyodrębnić zaszyfrowany tekst.

Taki przykład nie jest tak wymyślony, jak mogłoby się wydawać, ponieważ to, co modelujemy jako wyrocznia deszyfrująca, może równie dobrze istnieć w tym, że atakujący może być w stanie odszyfrować ciągi, ale dane, o które może poprosić odszyfrowanie może zacząć się od określonego ciągu (podobnie jak w przypadku wstrzyknięcia SQL).

Autentyczność : Kiedy Bob odbiera wiadomość, wie, że to na pewno od Alicji.

Uzasadnienie: W przeciwnym razie Mallory mógłby wysłać wiadomość do Boba, twierdząc, że pochodzi od Alicji bez wiedzy Boba. „są bardzo wyrozumiali co do tego, co oznacza dla Malloryego utworzenie fałszywej wiadomości – wygrywa, jeśli może stworzyć dowolną wiadomość, którą akceptuje Bob (nawet jeśli jest prawie taka sama, jak ta, którą Alicja już mu wysłała). Jest na to wiele sposobów, takich jak powtórzenie, zmiana kolejności lub ataki z odwracaniem bitów.

Rozwiązanie: aby uzyskać samo uwierzytelnienie, możemy użyć MAC .

Autentyczność i poufność : Alicja i Bob komunikują się poufnie, a każda wiadomość jest autentyczny.

Uzasadnienie: Jeśli strumień jest tylko poufny (tj. jest szyfrowany, ale nie jest szyfrowany z uwierzytelnianiem), wówczas podsłuchujący mógłby zmodyfikować przesyłaną wiadomość, nawet jeśli nie wiedziałby, co to jest. Na przykład załóżmy, że Alicja & Robert używa doskonale zabezpieczonych jednorazowych tabliczek czasowych ( OTP ) z tajnym kluczem $ k $ i wiadomością $ m $:

$$ A \ text {send} c = m \ oplus k \ to B \\ \ prec M \ text {przecięcia} c \ succ \\ M \ text {wysyła} c „= c \ oplus h \ to B \ text {(dla jakiejś wartości} h) \\ B \ text {odbiera} c” \ text {od M, ale uważa, że tak jest} c \ text {wysłano z} A \\ B \ text {deszyfruje} m „= c” \ oplus k = c \ oplus h $$ Oznacza to, że $ B $ otrzymał wiadomość $ m „$, ale myśli, że to $ m $.

Więc przypuśćmy, że protokół nie jest uwierzytelniony, a Mallory wie, że wiadomość, którą Alicja wyśle Bobowi, brzmi:” Zgadzam się wysłać £ ??? na konto nr ???? „dla niektórych wartości ???. Nawet jeśli nie mogą dokładnie dowiedzieć się, czym jest konto, a więc być może nie są w stanie wysłać płatności na swoje konto, mogą zmienić to nie jest już konto Alicji.

Rozwiązanie: uwierzytelnione szyfrowanie!


Dobry artykuł wyjaśniający potrzebę AE to ten post na blogu autorstwa Matthew Greena. Bardziej techniczne wprowadzenie do trybów działania to ten artykuł autorstwa Rogaway.

Komentarze

  • Jedynym schematem szyfrowania, który zapewnia teoretyczne bezpieczeństwo informacji, jest pole jednorazowe. Schematy szyfrowania IND-CPA gwarantują jedynie, że informacji nie można wyodrębnić z zaszyfrowanego tekstu przez probabilistycznego przeciwnika z czasów wielokrotnych.
  • Ach tak, to było niejasne (/ niepoprawnie!) napisane. Dziękuję za edycję – zamierzałem umieścić to jako ' nie zawiera żadnych informacji <, które można wyodrębnić > '
  • W rzeczywistości wiele ” tylko poufne ” w rzeczywistości nawet tryby nie ' nie zapewniają dobrej poufności, gdy są atakowane przez aktywnego atakującego (który może modyfikować wiadomości lub montować wybrany tekst jawny lub ataki z szyfrogramem) . Dlatego te tryby w praktyce (dla kanału komunikacyjnego) muszą być używane razem z niektórymi adresami MAC, nawet w celu uzyskania części poufnej. Tryb AE po prostu łączy je w jeden.
  • @ PaŭloEbermann / Ktoś inny: naprawdę nie ' nie sądzę, żebym ' napisał tutaj dobrą odpowiedź (w końcu jest piątek!), ale chciałem tylko zapisać kilka pierwszych przemyśleń. Zapraszam do dodawania własnych odpowiedzi / edytowania tej odpowiedzi / wpisywania własnych odpowiedzi. Jeśli ludzie uważają, że moja odpowiedź jest ” wystarczająco bliska ” do dobrej (czytając ją ponownie, nie ' t) to ' możesz po prostu edytować lub ponownie używać moich słów w swoich.
  • Myślę, że AE zapewnia również integralność ( en.wikipedia.org/wiki/Authenticated_encryption ), więc warto to również dodać.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *