Wektor inicjalizacji
W kryptografii wektor inicjujący ( IV ) lub zmienna początkowa ( SV ) jest wejściem do prymitywu kryptograficznego używanego do zapewnienia stanu początkowego. Zwykle IV musi być losowy lub pseudolosowy , ale czasami IV musi być nieprzewidywalny lub unikalny. Randomizacja ma kluczowe znaczenie dla niektórych schematów szyfrowania w celu osiągnięcia bezpieczeństwa semantycznego , właściwości, dzięki której wielokrotne użycie schematu w ramach tego samego key nie pozwala atakującemu na wywnioskowanie relacji między (potencjalnie podobnymi) segmentami zaszyfrowanej wiadomości. W przypadku szyfrów blokowych użycie IV jest opisane przez tryby działania .
Niektóre prymitywy kryptograficzne wymagają, aby IV był niepowtarzalny, a wymagana losowość jest wyprowadzana wewnętrznie. W tym przypadku IV jest powszechnie nazywany nonce (liczba używana tylko raz), a prymitywy (np. CBC ) są uważane za stanowe , a nie losowe . Dzieje się tak, ponieważ IV nie musi być jawnie przekazywany do odbiorcy, ale może pochodzić ze wspólnego stanu aktualizowanego zarówno po stronie nadawcy, jak i odbiorcy. (W praktyce krótki nonce jest nadal przesyłany wraz z komunikatem w celu rozważenia utraty komunikatu). Przykładem stanowych schematów szyfrowania jest działania licznika , który ma numer kolejny dla wartości jednorazowej.
Rozmiar IV zależy od użytego prymitywu kryptograficznego; w przypadku szyfrów blokowych jest to zazwyczaj rozmiar bloku szyfru. W schematach szyfrowania nieprzewidywalna część IV ma co najwyżej taki sam rozmiar jak klucz, aby zrekompensować ataki polegające na kompromisie czasu/pamięci/danych . Kiedy IV jest wybierany losowo, należy wziąć pod uwagę prawdopodobieństwo kolizji z powodu problemu z urodzinami . Tradycyjne szyfry strumieniowe, takie jak RC4 , nie obsługują jawnego IV jako danych wejściowych i potrzebne jest niestandardowe rozwiązanie do włączania IV do klucza szyfru lub stanu wewnętrznego. Wiadomo, że niektóre projekty realizowane w praktyce są niepewne; the Godnym uwagi przykładem jest protokół WEP , który jest podatny na ataki typu IV.
Motywacja
Szyfr blokowy jest jednym z najbardziej podstawowych prymitywów w kryptografii i jest często używany do szyfrowania danych . Jednak sam w sobie może być użyty tylko do zakodowania bloku danych o predefiniowanym rozmiarze, zwanym rozmiarem bloku . Na przykład pojedyncze wywołanie algorytmu AES przekształca 128-bitowy blok tekstu jawnego w blok tekstu zaszyfrowanego o rozmiarze 128 bitów. Klucz _ , który jest podany jako jedno wejście do szyfru, definiuje odwzorowanie między tekstem jawnym a tekstem zaszyfrowanym. Jeśli dane mają być szyfrowane o dowolnej długości, prostą strategią jest podzielenie danych na bloki, z których każdy odpowiada rozmiarowi bloku szyfru, i zaszyfrowanie każdego bloku osobno przy użyciu tego samego klucza. Ta metoda nie jest bezpieczna, ponieważ równe bloki tekstu jawnego są przekształcane w równe teksty zaszyfrowane, a osoba trzecia obserwująca zaszyfrowane dane może łatwo określić ich zawartość, nawet jeśli nie zna klucza szyfrującego.
Aby ukryć wzorce w zaszyfrowanych danych, unikając ponownego wydawania nowego klucza po każdym wywołaniu szyfru blokowego, potrzebna jest metoda losowania danych wejściowych. W 1980 roku NIST opublikował krajowy standardowy dokument o nazwie Federal Information Processing Standard (FIPS) PUB 81, który określa cztery tak zwane tryby działania szyfru blokowego , z których każdy opisuje inne rozwiązanie szyfrowania zestawu bloków wejściowych. Pierwszy tryb realizuje opisaną powyżej prostą strategię i został określony jako elektroniczna książka kodowa (EBC). W przeciwieństwie do tego, każdy z pozostałych trybów opisuje proces, w którym zaszyfrowany tekst z jednego etapu szyfrowania bloku zostaje wymieszany z danymi z następnego etapu szyfrowania. Aby zainicjować ten proces, wymagana jest dodatkowa wartość wejściowa, która musi zostać zmieszana z pierwszym blokiem i która jest określana jako wektor inicjujący . Na przykład łańcuch bloków szyfrujących Tryb (CBC) wymaga jako dodatkowego wejścia nieprzewidywalnej wartości o rozmiarze równym rozmiarowi bloku szyfru. Ta nieprzewidywalna wartość jest dodawana do pierwszego bloku tekstu jawnego przed kolejnym szyfrowaniem. Z kolei tekst zaszyfrowany utworzony w pierwszym etapie szyfrowania jest dodawany do drugiego bloku tekstu jawnego i tak dalej. Ostatecznym celem schematów szyfrowania jest zapewnienie bezpieczeństwa semantycznego : dzięki tej właściwości atakujący jest praktycznie niemożliwy do wyciągnięcia jakiejkolwiek wiedzy z zaobserwowanego tekstu zaszyfrowanego. Można wykazać, że każdy z trzech dodatkowych trybów określonych przez NIST jest semantycznie bezpieczny w ramach tak zwanych ataków z wybranym tekstem jawnym .
Nieruchomości
Właściwości IV zależą od zastosowanego schematu kryptograficznego. Podstawowym wymogiem jest unikalność , co oznacza, że żaden IV nie może być ponownie użyty pod tym samym kluczem. W przypadku szyfrów blokowych powtarzające się wartości IV zmieniają schemat szyfrowania w tryb elektronicznej książki kodowej: równe IV i równy tekst jawny dają równy tekst zaszyfrowany. W strumieniowym unikalność jest niezwykle ważna, ponieważ w przeciwnym razie zwykły tekst można w prosty sposób odzyskać.
-
Przykład: szyfry strumieniowe szyfrują tekst jawny P do tekstu zaszyfrowanego C , wyprowadzając strumień klucza K z danego klucza i IV oraz obliczając C jako C = Pxor K . Załóżmy, że osoba atakująca zaobserwowała dwie wiadomości C 1 i C 2 , obie zaszyfrowane tym samym kluczem i IV. Wtedy znajomość P 1 lub P 2 ujawnia inny tekst jawny od
- C 1 xor do 2 = ( P 1 xor K) xor ( P 2 xor K) = P 1 xlub P 2 .
Wiele schematów wymaga, aby IV był nieprzewidywalny przez przeciwnika . Odbywa się to poprzez losowy lub pseudolosowy wybór IV . W takich schematach szansa na duplikat IV jest znikoma , ale należy wziąć pod uwagę efekt problemu z urodzinami . Jeśli chodzi o wymóg wyjątkowości, przewidywalny IV może pozwolić na odzyskanie (częściowego) tekstu jawnego.
-
Przykład: Rozważmy scenariusz, w którym uprawniona strona o imieniu Alicja szyfruje wiadomości przy użyciu trybu łańcucha bloków szyfru. Rozważmy dalej, że istnieje przeciwnik o imieniu Ewa, który może obserwować te szyfrowania i jest w stanie przesyłać wiadomości w postaci zwykłego tekstu do Alicji w celu zaszyfrowania (innymi słowy, Ewa jest zdolna do ataku z wybranym tekstem jawnym ) . Załóżmy teraz, że Alicja wysłała wiadomość składającą się z wektora inicjującego IV 1 i zaczynającą się od bloku tekstu zaszyfrowanego C Alicja . Niech dalej P Alicja oznaczamy pierwszy blok tekstu jawnego wiadomości Alicji, niech E oznacza szyfrowanie, a P Eve oznacza przypuszczenie Ewy dla pierwszego bloku tekstu jawnego. Teraz, jeśli Ewa może określić wektor inicjujący IV 2 następnej wiadomości, będzie mogła przetestować swoje przypuszczenia, przesyłając do Alicji wiadomość w postaci zwykłego tekstu zaczynającą się od ( IV 2 xor IV 1 xor P Eve ); jeśli jej przypuszczenie było poprawne, ten blok zwykłego tekstu zostanie zaszyfrowany do C Alice przez Alicję. Wynika to z następującej prostej obserwacji:
- C Alicja = E ( IV 1 xor P Alicja ) = E ( IV 2 xor ( IV 2 xor IV 1 xor P Alicja )).
W zależności od tego, czy IV dla schematu kryptograficznego musi być losowy, czy tylko unikalny, schemat jest nazywany losowym lub stanowym . Podczas gdy losowe schematy zawsze wymagają, aby IV wybrany przez nadawcę został przesłany do odbiorców, schematy stanowe umożliwiają nadawcy i odbiorcy dzielenie wspólnego stanu IV, który jest aktualizowany w określony sposób po obu stronach.
Szyfry blokowe
Przetwarzanie danych za pomocą szyfru blokowego jest zwykle opisywane jako tryb działania. Tryby są zdefiniowane przede wszystkim dla szyfrowania oraz uwierzytelniania , chociaż istnieją nowsze projekty, które łączą oba rozwiązania bezpieczeństwa w tak zwanych uwierzytelnionych trybach szyfrowania . Podczas gdy szyfrowanie i uwierzytelnione tryby szyfrowania zwykle przyjmują IV pasujący do rozmiaru bloku szyfru, tryby uwierzytelniania są zwykle realizowane jako algorytmy deterministyczne , a IV jest ustawiony na zero lub inną stałą wartość.
Szyfry strumieniowe
W szyfrach strumieniowych IV są ładowane do wewnętrznego tajnego stanu szyfru z kluczem, po czym wykonywana jest pewna liczba rund szyfrowania przed zwolnieniem pierwszego bitu danych wyjściowych. Ze względu na wydajność projektanci szyfrów strumieniowych starają się, aby ta liczba rund była jak najmniejsza, ale ponieważ określenie minimalnej bezpiecznej liczby rund dla szyfrów strumieniowych nie jest trywialnym zadaniem i uwzględnienie innych kwestii, takich jak utrata entropii, unikalna dla każdego konstrukcja szyfru, powiązane IV i inne ataki związane z IV są znanym problemem bezpieczeństwa szyfrów strumieniowych, co sprawia, że ładowanie IV w szyfrach strumieniowych jest poważnym problemem i przedmiotem ciągłych badań.
WEP4
Algorytm szyfrowania 802.11 o nazwie WEP (skrót od Wired Equivalent Privacy ) używał krótkiego, 24-bitowego IV, co prowadziło do ponownego wykorzystania IV z tym samym kluczem, co doprowadziło do łatwego złamania . Wstrzykiwanie pakietów pozwoliło na złamanie WEP w czasie zaledwie kilku sekund. To ostatecznie doprowadziło do wycofania WEP.
SSL 2.0 IV
W trybie łączenia bloków szyfrów (tryb CBC) IV nie musi być tajne, ale musi być nieprzewidywalne (w szczególności dla dowolnego tekstu jawnego nie może być możliwe przewidzenie IV, który zostanie powiązany z tekstem jawnym z wyprzedzeniem generacji IV.) w czasie szyfrowania. Dodatkowo dla trybu sprzężenia zwrotnego wyjścia (tryb OFB), IV musi być unikalny. W szczególności (wcześniej) powszechna praktyka ponownego używania ostatniego bloku tekstu zaszyfrowanego wiadomości jako IV dla następnej wiadomości jest niepewna (na przykład ta metoda była używana przez SSL 2.0). Jeśli atakujący zna IV (lub poprzedni blok tekstu zaszyfrowanego) przed określeniem następnego tekstu jawnego, może sprawdzić swoje przypuszczenia dotyczące tekstu jawnego jakiegoś bloku, który został wcześniej zaszyfrowany tym samym kluczem. Jest to znane jako atak TLS CBC IV, zwany także atakiem BEAST .
Zobacz też
- Nonce kryptograficzne
- Wypełnienie (kryptografia)
- Losowe nasienie
- Sól (kryptografia)
- Tryby działania szyfru blokowego
- CipherSaber (RC4 z IV)
Dalsza lektura
- Schneier, B. (1996). Kryptografia stosowana (wyd. 2). Nowy Jork: Wiley. ISBN 978-0-471-12845-8 .
- Ferguson, N.; Schneier, B. (2003). Praktyczna kryptografia . Nowy Jork: Wiley. ISBN 978-0-471-22894-3 .