zaczynamy od losowego IV., IV oznacza wektor inicjalizacji, który można zdefiniować jako: wartość początkową używaną do rozpoczęcia jakiegoś iteracyjnego procesu. W przypadku CBC IV musi być losowy (a więc nieprzewidywalny), a zatem musi być unikalny dla każdej transakcji. Pierwszy blok szyfrogramu jest po prostu niezaszyfrowanym random IV. aby wytworzyć resztę szyfrogramu, najpierw losowy IV jest XOR ' D z pierwszym blokiem zwykłego tekstu (m). Wynik zostanie zaszyfrowany okrągłym kluczem k, aby zwrócić pierwszy blok zaszyfrowanego tekstu (c)., Ten tekst zaszyfrowany jest następnie XOR ' D z następnym blokiem tekstu jawnego (m), wynik jest zaszyfrowany okrągłym kluczem k i zwraca drugi blok zaszyfrowanego tekstu (c). Proces jest kontynuowany, dopóki wszystkie bloki nie zostaną zaszyfrowane.
aby odszyfrować, po prostu odwracamy proces.
ważnym elementem szyfrowania CBC jest to, że random IV jest nieprzewidywalny., Jeśli IV stanie się przewidywalny, nasz schemat szyfrowania stanie się podatny na wybrane ataki za pomocą zwykłego tekstu. Chosen Plaintext Attack (CPA) to model ataku, który zakłada, że atakujący może uzyskać ciphertext dla dowolnych Plaintext i użyć ich do ujawnienia informacji o zaszyfrowanych wiadomościach. W związku z tym nieprzewidywalny IV jest potrzebny do zapewnienia bezpieczeństwa CPA.
proszę o cierpliwość, ponieważ staram się wyjaśnić, jak ten atak będzie działał: możliwe jest wykonanie wybranego ataku tekstowego w obecności przewidywalnych IV ze względu na naturę XOR., Jeśli XOR tej samej wartości razem (0101 ⊕ 0101) będzie zawsze równe 0, więc anuluje się. Jeśli więc podejrzewasz, że zaobserwowany tekst szyfrowy c odpowiada konkretnemu tekstowi jawnemu m, Możesz przetestować swoją hipotezę za pomocą przewidywalnego IV. Jeśli tekst jawny, o którym mowa, został zaszyfrowany za pomocą IV1, tak że c = E(k, m ⊕ IV1), możesz przesłać nowy tekst jawny do zaszyfrowania i sprawdzić, czy otrzymasz pasujący wynik: c. ponieważ możesz przewidzieć, że IV będzie IV2, wysyłasz m ⊕ IV1 ⊕ IV2., Proces CBC będzie XOR tego wejścia z następnym IV, IV2 tak, że: c = E (k, m ⊕ IV1 ⊕ IV2 ⊕ IV2) stąd IV2 anuluje się, i po raz kolejny szyfrujemy E (k, IV1 ⊕ m), co spowoduje ponownie z c i jeśli tak się stanie, byliśmy w stanie odgadnąć, co było wcześniej zaszyfrowane z IV1.
naprawdę świetna robota, jeśli przez to przeszedłeś — ^
z tym chciałbym przejrzeć jeszcze jeden tryb szyfru blokowego, który zakończy pierwszy blog z tej 3 części serii. Jeśli to był duży wysiłek, aby przejść tak daleko, teraz może być dobry czas na krótką przerwę przed kontynuacją!,
Ok, więc sprawdziliśmy EBC, CBC, i ich luki, ale na koniec, i chyba najważniejsze wprowadzę Randomized Counter Mode (CTR). Jest to najnowszy, najbezpieczniejszy tryb pracy, a także bardziej wydajny niż morfologia.
tryb licznika randomizowanego również przyjmuje losowy IV. IV służy tutaj jednak innemu celowi. Nasz klucz jest łączony (np., via AES) z iterowaną wersją naszego IV: powyżej dodajemy 1 do naszego IV dla każdej iteracji, w przeciwnym razie otrzymamy powtarzający się wynik. Robimy to, dopóki nie mamy pad Tak długo, jak nasz zwykły tekst wiadomości. Podobnie jak szyfr jednokrotnego szyfru strumieniowego, teraz XOR naszej wiadomości tekstowej z naszym pseudorandomowym pad, aby uzyskać tekst szyfrowy. Jeśli twój sprzęt ma wiele silników AES, jest to bardzo wydajne, ponieważ jest równoległe. W CBC, każdy szyfertext zależał od poprzedniego bloku szyfertext, więc nie było możliwe równoległe połączenie.,
nie potrzebujemy nawet szyfru blokowego, aby połączyć nasze IV i key w pseudorandomowy pad. Szyfry blokowe muszą być odwracalne. Jeśli przyjrzysz się dokładnie mechanice randomizowanego trybu licznika, zauważysz, że odszyfrowanie nie wymaga od nas odwrócenia F(k, IV). Biorąc pod uwagę naturę XOR, wszystko, co musimy zrobić, to zregenerować ten sam pseudorandom pad i XOR go z naszym szyfrowym tekstem. Dlatego, aby odszyfrować, musimy powtórzyć operację, a nie ją odwrócić.,
mówiąc abstrakcyjnie (dotychczas unikałem abstrakcyjnych pojęć), oznacza to, że procedura, której używamy do połączenia naszego tajnego klucza i IVF(k, IV) musi być funkcją Pseudorandomową (PRF) w przeciwieństwie do permutacji Pseudorandomowej (PRP). W rzeczywistości stosujemy te koncepcje w tym blogu. Zarówno PRPs, jak i PRFs są deterministycznymi procedurami, które, biorąc pod uwagę dane wejściowe, powodują pseudorandomowe wyjście. AES, XOR). PRP jest jednak bardziej rygorystyczny w tym sensie, że musi być odwracalny., W rzeczywistości terminy PRP i block cipher (takie jak AES) są często używane synonimicznie. PRF nie musi jednak być odwracalny. Jeśli wrócisz do poprzednich slajdów wyświetlanych w tym poście, teraz zrozumiesz notację PRF i PRP.
To kończy mój przegląd szyfrowania symetrycznego! Zajęliśmy się szyframi strumieniowymi i blokowymi. Następnie, ponieważ szyfry blokowe mogą być wykonywane tylko na około 16 bajtach na raz, omówiliśmy tryby działania używane do wykonywania szyfrów blokowych na dużych tekstach. Wyjaśniliśmy również koncepcje PRPs vs PRFs.