Wikipedysta:KamillaŚ/Tryby pracy szyfrów blokowych


Wikipedysta:KamillaŚ/Tryby pracy szyfrów blokowych w encyklopedii

Z Wikipedii, wolnej encyklopedii < Wikipedysta:KamillaŚ Przejdź do nawigacji Przejdź do wyszukiwania

W kryptografii tryb pracy szyfru blokowego jest algorytmem wykorzystującym szyfr blokowy w celu zapewnienia bezpieczeństwa informacji, takiego jak poufność lub autentyczność . [1] Szyfr blokowy sam w sobie nadaje się tylko do bezpiecznej transformacji kryptograficznej (szyfrowania lub deszyfrowania) jednej grupy bitów o stałej długości nazywanej blokiem. [2] Tryb pracy opisuje, w jaki sposób wielokrotnie nakładać operacje jednoblokowe szyfru, aby bezpiecznie przekształcać dane większe niż blok. [3] [4] [5]

Większość trybów wymaga unikalnej sekwencji binarnej, nazywanej często wektorem inicjującym (IV), dla każdej operacji szyfrowania. IV nie może się powtarzać, aw niektórych trybach musi być także losowy. Wektor inicjalizacyjny służy do zapewnienia, że różniące się od siebie teksty zaszyfrowane są tworzone nawet wtedy, gdy ten sam tekst jawny jest wielokrotnie szyfrowany niezależnie za pomocą tego samego klucza. [6] Szyfrowanie blokowe może działać na więcej niż jednym rozmiarze bloku, ale podczas transformacji rozmiar bloku jest zawsze stały. Tryby szyfrowania blokowego działają na całych blokach i wymagają, aby ostatnia część danych została dopełniona do pełnego bloku, jeśli jest mniejsza niż bieżący rozmiar bloku. [2] Istnieją jednak tryby, które nie wymagają dopełnienia, ponieważ efektywnie używają szyfru blokowego jako szyfru strumieniowego .

Historycznie, tryby szyfrowania były szeroko badane pod kątem ich właściwości propagacji błędów w różnych scenariuszach modyfikacji danych. Późniejszy rozwój traktował ochronę integralności jako całkowicie odrębny cel kryptograficzny. Niektóre nowoczesne tryby pracy łączą poufność i autentyczność w efektywny sposób i są znane jako uwierzytelnione tryby szyfrowania . [7]

Spis treści

Historia i standaryzacja | edytuj kod

Padding | edytuj kod

Szyfr blokowy działa na jednostkach o stałym rozmiarze (nazywanym rozmiarem bloku ), ale wiadomości mają różne długości. Zatem niektóre tryby (ECB i CBC ) wymagają, aby ostatni blok został uzupełniony przed szyfrowaniem. Istnieje kilka schematów paddingu (uzupełnienia bloku). Najprostszym jest dodanie bajtów zerowych do tekstu jawnego w celu dostosowania jego długości do wielokrotności rozmiaru bloku, ale należy zwrócić uwagę, że pierwotną długość jawnego tekstu można odzyskać. Jest to trywialne, na przykład, jeśli tekst jawny jest literałem łańcuchowym takim, jak w języku C, który nie zawiera żadnych bajtów zerowych, poza tymi na końcu. Nieco bardziej złożone jest to w pierwotnej metodzie DES, polegającej na dodaniu pojedynczego jedynkowego bitu , a następnie wystarczającej liczby bitów zerowych do wypełnienia bloku; jeśli komunikat kończy się na granicy bloku, zostaje dodany cały blok dopełniający. Najbardziej wyrafinowane są schematy specyficzne dla CBC, takie jak kradzież tekstu zaszyfrowanego lub residual block termination , które nie tworzą żadnego dodatkowego zaszyfrowanego tekstu, (kosztem dodatkowej złożoności). Schneier i Ferguson sugerują dwie proste możliwości: dołączenie bajtu o wartości 128 (hex 80), a następnie tyle bajtów zerowych, ile potrzeba do wypełnienia ostatniego bloku, lub wypełnienie ostatniego bloku n bajtami o wartości n .

Tryby CFB, OFB i CTR nie wymagają żadnych specjalnych środków do obsługi tekstów jawnych, których długości nie są wielokrotnościami rozmiaru bloku, ponieważ tryby działają poprzez xorowanie jawnego tekstu z wyjściem szyfru blokowego. Ostatni częściowy blok tekstu jawnego jest xorowany z pierwszymi kilkoma bajtami ostatniego bloku strumienia klucza , tworząc końcowy blok tekstu zaszyfrowanego, który ma taki sam rozmiar, jak końcowy blok częściowego tekstu jawnego. Ta charakterystyka szyfrów strumieniowych sprawia, że nadają się one do zastosowań wymagających szyfrowanych danych zaszyfrowanych tekstem o tym samym rozmiarze, co oryginalne dane zwykłego tekstu, oraz dla aplikacji, które przesyłają dane w postaci strumieniowej, w których niewygodne jest dodawanie bajtów paddingu.

Popularne tryby | edytuj kod

Zdefiniowano wiele trybów działania. Niektóre z nich opisano poniżej. Celem trybów szyfrowania jest maskowanie wzorców, które istnieją w zaszyfrowanych danych, jak pokazano w opisie słabości EBC .

Różne tryby szyfrowania maskują wzorce, kaskadując zaszyfrowane bloki szyfru lub inne globalnie deterministyczne zmienne do następnych bloków szyfru. Wzorce i szyfrogramy wymienionych trybów są podsumowane w poniższej tabeli:

Uwaga: g(i) jest dowolną funkcją deterministyczną, często funkcją tożsamościową .

Electronic Codebook (ECB) | edytuj kod

Szablon:Infobox Najprostszym z trybów szyfrowania jest tryb Elektronic Codebook (ECB) (nazwany tak po konwencjonalnych fizycznych książkach kodowych [8] ). Wiadomość jest podzielona na bloki, a każdy blok jest szyfrowany osobno.

Wadą tej metody jest brak dyfuzji . Ponieważ ECB szyfruje identyczne bloki zwykłego tekstu do identycznych bloków tekstu zaszyfrowanego , nie ukrywa dobrze wzorców danych. Pod pewnymi względami nie zapewnia poważnej poufności wiadomości i wcale nie jest zalecany do stosowania w protokołach kryptograficznych.

Uderzający przykład stopnia, w jakim EBC może pozostawić wzorce danych tekstowych w zaszyfrowanym tekście, można zobaczyć, gdy tryb EBC jest używany do szyfrowania obrazu bitmapowego, który wykorzystuje duże obszary jednolitego koloru. Chociaż kolor każdego pojedynczego piksela jest zaszyfrowany, cały obraz może zostać rozpoznany, ponieważ wzór identycznie kolorowych pikseli w oryginale pozostaje w zaszyfrowanej wersji. Szablon:Multiple image Tryb ECB może również sprawić, że protokoły bez ochrony integralności będą jeszcze bardziej podatne naataki replay attacks, ponieważ każdy blok jest odszyfrowywany dokładnie w ten sam sposób.

Cipher Block Chaining (CBC) | edytuj kod

Szablon:Infobox Ehrsam, Meyer, Smith i Tuchman wymyślili tryb działania Cipher Block Chaining (CBC) w 1976 roku. [9] W trybie CBC każdy blok tekstu jawnego jest XORowany z poprzednim blokiem tekstu zaszyfrowanego przed jego zaszyfrowaniem. W ten sposób każdy blok tekstu zaszyfrowanego zależy od wszystkich dotychczas zaszyfrowanych bloków tekstowych Aby każdy komunikat był unikalny, IV musi być użyty w pierwszym bloku.

Jeśli pierwszy blok ma indeks 1, formuła matematyczna dla szyfrowania CBC jest

C i = E K ( P i C i 1 ) , {\displaystyle C_{i}=E_{K}(P_{i}\oplus C_{i-1}),} C 0 = I V {\displaystyle C_{0}=IV}

natomiast formuła matematyczna do odszyfrowywania CBC jest

P i = D K ( C i ) C i 1 , {\displaystyle P_{i}=D_{K}(C_{i})\oplus C_{i-1},} C 0 = I V . {\displaystyle C_{0}=IV.}

Przykład | edytuj kod

CBC jest najczęściej stosowanym trybem działania. Jego główną wadą jest to, że szyfrowanie jest sekwencyjne (nie może być zrównoleglone), a komunikat musi być dopełniony do wielokrotności rozmiaru bloku szyfru (padding. Jednym ze sposobów radzenia sobie z tym ostatnim problemem jest metoda znana jako kradzież szyfrogramów. Trzeba zauważyć, że jednobitowa zmiana w tekście jawnym lub wektorze inicjującym (IV) wpływa na wszystkie następne bloki tekstu zaszyfrowanego.

Odszyfrowanie z niepoprawną wartością IV powoduje, że pierwszy blok tekstu jawnego jest uszkodzony, ale kolejne bloki tekstu jawnego będą poprawne. Dzieje się tak dlatego, że każdy blok jest XORowany z szyfrogramem poprzedniego bloku, a nie tekstem jawnym, więc nie trzeba odszyfrowywać poprzedniego bloku przed użyciem go jako IV do odszyfrowania bieżącego bloku. Oznacza to, że blok tekstu jawnego można odzyskać z dwóch sąsiednich bloków szyfrogramu. W konsekwencji odszyfrowywanie może zostać zrównoleglone. Zauważyć trzeba, że jednobitowa zmiana w szyfrogramie powoduje całkowite uszkodzenie odpowiedniego bloku tekstu jawnego i odwraca odpowiedni bit w następującym bloku tekstu jawnego, ale reszta bloków pozostaje nienaruszona. Ta osobliwość jest wykorzystywana w atakach takich jak POODLE .

Jawne wektory inicjalizacyjne [10] wykorzystują tę właściwość, przygotowując pojedynczy losowy blok do jawnego tekstu. Szyfrowanie odbywa się normalnie, z tym wyjątkiem, że IV nie musi być przekazywany do procedury deszyfrowania. Niezależnie od tego, z jakiego deszyfrowania korzysta IV, tylko blok losowy jest "uszkodzony". Można go bezpiecznie odrzucić, a resztą odszyfrowania jest oryginalny tekst jawny.

Propagating Cipher Block Chaining (PCBC) | edytuj kod

Szablon:Infobox Propagating Cipher Block Chaining [11] [12] został zaprojektowany tak, aby powodować propagowanie niewielkich zmiany w szyfrogramie w nieskończoność podczas deszyfrowania, a także podczas szyfrowania. W trybie PCBC każdy blok tekstu jawnego jest XORowany z wcześniejszym blokiem jawnego tekstu i poprzednim blokiem tekstu zaszyfrowanego przed jego zaszyfrowaniem. Podobnie jak w trybie CBC, wektor inicjalizacyjny jest używany w pierwszym bloku.

Algorytmy szyfrowania i odszyfrowywania są następujące:

C i = E K ( P i P i 1 C i 1 ) , P 0 C 0 = I V {\displaystyle C_{i}=E_{K}(P_{i}\oplus P_{i-1}\oplus C_{i-1}),P_{0}\oplus C_{0}=IV} P i = D K ( C i ) P i 1 C i 1 , P 0 C 0 = I V {\displaystyle P_{i}=D_{K}(C_{i})\oplus P_{i-1}\oplus C_{i-1},P_{0}\oplus C_{0}=IV}

PCBC jest używany w protokołach Kerberos v4 i WASTE, ale poza tym nie jest powszechny. W przypadku wiadomości zaszyfrowanej w trybie PCBC, jeśli dwa sąsiednie bloki tekstu szyfrowanego są zamienione, nie ma to wpływu na odszyfrowywanie kolejnych bloków. [13] Z tego powodu PCBC nie jest używany w Kerberos v5.

Cipher Feedback (CFB) | edytuj kod

Szablon:Infobox Tryb sprzężenia zwrotnego (CFB), bliski krewny CBC, czyni szyfr blokowy samoczynnie synchronizującym się szyfrem strumieniowym . Operacja jest bardzo podobna; w szczególności odszyfrowywanie CFB jest prawie identyczne jak szyfrowanie CBC wykonywane odwrotnie:

C i = E K ( C i 1 ) P i {\displaystyle C_{i}=E_{K}(C_{i-1})\oplus P_{i}} P i = E K ( C i 1 ) C i {\displaystyle P_{i}=E_{K}(C_{i-1})\oplus C_{i}} C 0 =   IV {\displaystyle C_{0}=\ {\mbox{IV}}}

Z definicji samosynchronizującego się szyfru, jeśli część zaszyfrowanego tekstu zostanie utracona (np. Z powodu błędów transmisji), odbiorca utraci tylko część pierwotnej wiadomości (zniekształcona treść) i powinien być w stanie kontynuować prawidłowe odszyfrowanie pozostałe bloki po przetworzeniu pewnej ilości danych wejściowych. Najprostszy sposób użycia CFB opisany powyżej nie jest samosynchronizujący. Tylko wtedy, gdy utracony zostanie cały blok tekstu zaszyfrowanego, CFB zsynchronizuje się, ale utrata tylko jednego bajtu lub bitu spowoduje trwałe zaburzenie deszyfrowania. Aby możliwa była synchronizacja po utracie tylko jednego bajtu lub bitu, jeden bajt lub bit musi być zaszyfrowany jako blok. CFB może być używany w ten sposób w połączeniu z rejestrem przesuwającym jako wejściem dla szyfru blokowego.

Aby użyć CFB do utworzenia samoczynnie synchronizującego się szyfru strumieniowego, który zostanie zsynchronizowany dla dowolnej wielokrotności utraconych bitów x, trzeba zacząć od zainicjowania rejestru przesuwania wielkości rozmiaru bloku za pomocą wektora inicjalizacyjnego. Jest to zaszyfrowane za pomocą szyfru blokowego, a najwyższe x bitów wyniku są XORowane za pomocą x bitów tekstu jawnego w celu wygenerowania x bitów tekstu zaszyfrowanego. Te x bitów wyjścia są przenoszone do rejestru przesuwnego, a proces (zaczynając od zaszyfrowania rejestru przesuwnego z szyfrem blokowym) powtarza się dla następnych x bitów tekstu jawnego. Odszyfrowywanie jest podobne, zacznij od wektora inicjalizacyjnego, zaszyfruj i ustaw XOR jako wysokie bity wyniku za pomocą x bitów tekstu zaszyfrowanego, aby uzyskać x bitów tekstu jawnego, a następnie przesuń X bitów tekstu zaszyfrowanego do rejestru przesuwnego i ponownie zaszyfruj. Ten sposób postępowania jest znany jako CFB-8 lub CFB-1 (w zależności od wielkości przesunięcia). [14]

W zapisie, w którym S i oznacza i-tym stan rejestru przesuwnego, A << x jest przesunięty w górę x bitów, głowica (a, x) jest x najwyższe bity, a n oznacza liczbę bitów IV:


C i = head ( E K ( S i 1 ) , x ) P i {\displaystyle C_{i}={\mbox{head}}(E_{K}(S_{i-1}),x)\oplus P_{i}} P i = head ( E K ( S i 1 ) , x ) C i {\displaystyle P_{i}={\mbox{head}}(E_{K}(S_{i-1}),x)\oplus C_{i}} S i =   ( ( S i 1 << x ) + C i )  mod  2 n {\displaystyle S_{i}=\ ((S_{i-1}<<x)+C_{i}){\mbox{ mod }}2^{n}} S 0 =   IV {\displaystyle S_{0}=\ {\mbox{IV}}}

Jeśli x bitów zostanie utraconych z zaszyfrowanego tekstu, szyfr wyśle niepoprawny tekst jawny, dopóki rejestr przesuwny nie będzie równy stanowi, który trzymał podczas szyfrowania, w którym to momencie nastąpiła ponowna synchronizacja szyfru. Spowoduje to, że bloki n / s wyjścia będą zniekształcone za pomocą n bloków i s przesuniętych bitów.

Podobnie jak w trybie CBC, zmiany w tekstach jawnych rozprzestrzeniają się na zawsze w szyfrogramie, a szyfrowanie nie może być zrównoleglone. Podobnie jak CBC, odszyfrowywanie może być zrównoleglonw Podczas odszyfrowywania jednobitowa zmiana w zaszyfrowanym tekście wpływa na dwa bloki tekstu jawnego: jednobitową zmianę w odpowiednim bloku tekstu jawnego i całkowite zniekształcenie następującego bloku z jawnym tekstem. Później bloki zwykłego tekstu są normalnie odszyfrowane.

CFB ma dwie zalety w porównaniu z trybem CBC z trybami szyfrowania strumieniowego OFB i CTR: szyfr blokowy jest używany tylko w kierunku szyfrowania, a komunikat nie musi być dopełniany do wielokrotności rozmiaru bloku kodu szyfrującego (choć kradzież tekstu zaszyfrowanego może być również używane do niepotrzebnego wypełniania).

Output Feedback(OFB) | edytuj kod

Szablon:Infobox Tryb output feedback (OFB) tworzy szyfr blokowy w szyfrze synchronicznego strumienia . Generuje bloki kluczy , które są następnie XORowane z blokami tekstu jawnegoi, aby uzyskać tekst zaszyfrowany. Podobnie jak w przypadku innych szyfrów strumieniowych, przerzucenie nitu w zaszyfrowanym tekście powoduje powstanie odwróconego bitu w tekście jawnym w tym samym miejscu. Właściwość ta pozwala na prawidłowe działanie wielu kodów korygujących błędy nawet po zastosowaniu przed szyfrowaniem.

Ze względu na symetrię operacji XOR szyfrowanie i odszyfrowywanie są dokładnie takie same:

C j = P j O j {\displaystyle C_{j}=P_{j}\oplus O_{j}} P j = C j O j {\displaystyle P_{j}=C_{j}\oplus O_{j}} O j =   E K ( I j ) {\displaystyle O_{j}=\ E_{K}(I_{j})} I j =   O j 1 {\displaystyle I_{j}=\ O_{j-1}} I 0 =   IV {\displaystyle I_{0}=\ {\mbox{IV}}}

Każda operacja szyfrowania bloku sprzężenia zwrotnego zależy od wszystkich poprzednich, dlatego nie może być wykonywana równolegle. Ponieważ jednak tekst jawny lub tekst zaszyfrowany jest używany tylko w ostatecznym XOR, operacje szyfrowania blokowego mogą być wykonywane z wyprzedzeniem, co pozwala na wykonanie ostatniego kroku równolegle, gdy dostępny jest tekst jawny lub tekst zaszyfrowany.

Możliwe jest uzyskanie strumienia klucza w trybie OFB przez użycie CBC ze stałym ciągiem zer jako danych wejściowych. Może to być przydatne, ponieważ pozwala na użycie szybkich implementacji sprzętowych trybu CBC do szyfrowania w trybie OFB.

Użycie trybu OFB z częściowym blokiem jako sprzężenia zwrotnego, takiego jak tryb CFB, zmniejsza średnią długość cyklu o współczynnik równy 2 32 {\displaystyle 2^{32}} albo więcej. Model matematyczny zaproponowany przez Daviesa i Parkina i potwierdzony wynikami eksperymentalnymi pokazał, że tylko przy pełnym sprzężeniu zwrotnym można osiągnąć średnią długość cyklu w pobliżu maksimum możliwego do uzyskania. Z tego powodu wsparcie dla skróconej informacji zwrotnej zostało usunięte ze specyfikacji OFB. [15] [16]

Counter (CTR) | edytuj kod

Szablon:Infobox

Uwaga: Tryb CTR (CM) jest również znany jako tryb licznika całkowitoliczbowego (ICM) i segmentowy licznik liczby całkowitej (SIC)

Podobnie jak OFB, tryb Counter zamienia szyfr blokowy na szyfr strumieniowy . Generuje następny blok strumienia klucza , szyfrując kolejne wartości "licznika". Licznik może być dowolną funkcją, która generuje sekwencję, która nie jest powtarzająca się przez dłuższy czas, chociaż zwykły licznik przyrostu jeden po drugim jest najprostszy i najbardziej popularny. Wykorzystanie prostej deterministycznej funkcji wejściowej było kontrowersyjne; krytycy argumentowali, że "celowe narażenie kryptosystemu na znany systematyczny wkład stanowi niepotrzebne ryzyko." [17] Jednak obecnie tryb CTR jest powszechnie akceptowany, a wszelkie problemy są uważane za słabość podstawowego szyfru blokowego, który, jak się oczekuje, jest bezpieczny, niezależnie od systemowego nastawienia w jego danych wejściowych. [18] Wraz z CBC, tryb CTR jest jednym z dwóch trybów szyfrowania bloków zalecanych przez Nielsa Fergusona i Bruce'a Schneiera. [19]

Tryb CTR został wprowadzony przez Whitfielda Diffiego i Martina Hellmana w 1979 roku. [20]

Tryb CTR ma podobną charakterystykę do OFB, ale pozwala także na losową właściwość dostępu podczas odszyfrowywania. Tryb CTR doskonale nadaje się do pracy na maszynie wieloprocesorowej, w której bloki mogą być szyfrowane równolegle. Co więcej, nie cierpi on na problem krótkiego cyklu, który może wpływać na OFB. [21]

Jeśli IV / nonce jest losowa, to można je łączyć z licznikiem za pomocą dowolnej operacji bezstratnej (konkatenacji, dodawania lub XOR) w celu wytworzenia rzeczywistego unikalnego bloku blokującego do szyfrowania. W przypadku nie-losowego nonce (takiego jak licznik pakietów), nonce i licznik powinny być łączone (np. Przechowywanie nonce w wyższych 64 bitach i licznik w niższych 64 bitach 128-bitowego bloku licznika) . Proste dodanie lub wymyślenie wartości jednorazowej i licznika w jednej wartości może w wielu przypadkach złamać zabezpieczenia pod wybranym atakiem jawnego tekstu, ponieważ napastnik może manipulować całą parą liczników IV, aby spowodować kolizję. Gdy atakujący kontroluje parę liczników IV i tekst jawny, XOR tekstu zaszyfrowanego ze znanym tekstem jawnym da wartość, która po XORed z tekstem zaszyfrowanym drugiego bloku dzielącego tę samą parę liczników IV odszyfruje ten blok. [22]

Zauważ, że liczba całkowita na tym schemacie jest równoważna wektorowi inicjalizującemu (IV) na innych diagramach. Jeśli jednak informacja o przesunięciu / położeniu jest uszkodzona, częściowe odtworzenie takich danych nie będzie możliwe z powodu zależności od przesunięcia bajtu.

Propagacja błędu | edytuj kod

Przed powszechnym stosowaniem kodów uwierzytelniania wiadomości i uwierzytelnionego szyfrowania powszechne było omawianie właściwości "propagacji błędu" jako kryterium wyboru dla trybu działania. Można na przykład zauważyć, że błąd jednego bloku w przesyłanym zaszyfrowanym tekście spowodowałby błąd jednego bloku w zrekonstruowanym prostym tekście dla szyfrowania w trybie ECB, podczas gdy w trybie CBC taki błąd miałby wpływ na dwa bloki.

Niektórzy uważali, że taka odporność była pożądana w obliczu przypadkowych błędów (np. Szum linii), podczas gdy inni argumentowali, że korekcja błędów zwiększyła zakres, w którym napastnik złośliwie manipuluje wiadomością.

Jeśli jednak zostanie zastosowana właściwa ochrona integralności, taki błąd spowoduje (z dużym prawdopodobieństwem), że cały komunikat zostanie odrzucony. Jeśli pożądana jest odporność na błąd losowy, kody kodów korekcji błędów powinny zostać zastosowane do szyfrogramu przed transmisją.

Uwierzytelnione szyfrowanie | edytuj kod

Zaprojektowano wiele trybów działania, aby łączyć tajność i uwierzytelnianie w jednym prymitywie kryptograficznym. Przykładami takich trybów są XCBC , [23] IACBC , IAPM , [24] OCB , EAX , CWC , CCM i GCM . Uwierzytelnione tryby szyfrowania są klasyfikowane jako tryby jednoprzebiegowe lub dwuprzebiegowe. Niektóre jednoprzebiegowe uwierzytelnione algorytmy szyfrowania , takie jak tryb OCB , są obciążone patentami, podczas gdy inne zostały specjalnie zaprojektowane i wydane w taki sposób, aby uniknąć takiego utrudnienia.

Ponadto niektóre tryby pozwalają również na uwierzytelnianie niezaszyfrowanych powiązanych danych i są nazywane schematami AEAD (uwierzytelnione szyfrowanie z powiązanymi danymi). Na przykład tryb EAX jest schematem AEAD z dwoma przejściami, podczas gdy tryb OCB jest jednoprzebiegowy.

Inne tryby i inne prymitywy kryptograficzne | edytuj kod

Zaproponowano znacznie więcej trybów pracy dla szyfrów blokowych. Niektóre zostały zaakceptowane, w pełni opisane (nawet standaryzowane) i są w użyciu. Inne zostały uznane za niebezpieczne i nigdy nie powinny być używane. Jeszcze inne nie kwalifikują się jako poufność, autentyczność lub uwierzytelnione szyfrowanie - na przykład tryb kluczowych informacji zwrotnych i mieszanie Daviesa-Meyera .

NIST przechowuje listę proponowanych trybów dla szyfrów blokowych w Modes Development . [14] [25]

Szyfrowanie dysku często wykorzystuje specjalne tryby specjalnie zaprojektowane dla aplikacji. Zmodyfikowane tryby szyfrowania wąskopasmowego ( LRW , XEX i XTS ) oraz tryby szyfrowania szerokokadłubowego ( CMC i EME ) służą do bezpiecznego szyfrowania sektorów dysku (patrz teoria szyfrowania dysku ).

Wiele trybów wykorzystuje wektor inicjalizacyjny (IV), który w zależności od trybu może wymagać takiego zastosowania, jak użycie go tylko raz (jednorazowo) lub nieprzewidywalność przed publikacją itp. Ponowne użycie IV z tym samym kluczem w trybie CTR, GCM lub OFB powoduje, że XOR ma taki sam strumień klucza z dwoma lub więcej zwykłymi tekstami, jednoznaczne niewłaściwe użycie jednorazowej podkładki, z katastrofalną utratą bezpieczeństwa. Deterministyczne, uwierzytelnione tryby szyfrowania, takie jak algorytm NIST Key Wrap i tryb AEAD [rfc: 5297 SIV], nie wymagają IV jako wejścia i zwracają ten sam zaszyfrowany tekst i znacznik uwierzytelnienia za każdym razem dla danego zwykłego tekstu i klucza. Inne tryby IV odporne na nadużywanie, takie jak AES-GCM-SIV, korzystają z wejścia IV, na przykład w maksymalnej ilości danych, które można bezpiecznie zaszyfrować jednym kluczem, a jednocześnie nie ulegają awarii, jeżeli ten sam IV jest używany wielokrotnie.

Szyfrowanie blokowe może być również wykorzystywane w innych protokołach kryptograficznych . Są one zwykle używane w trybach działania podobnych do opisanych tutaj trybów blokowych. Podobnie jak w przypadku wszystkich protokołów, aby zapewnić bezpieczeństwo kryptograficzne, należy zwrócić uwagę na prawidłowe zaprojektowanie tych trybów działania.

Istnieje kilka programów, które używają szyfru blokowego do budowania kryptograficznej funkcji mieszającej . Zobacz opis funkcji kilku takich metod w funkcji kompresji jednostronnej .

Kryptograficznie bezpieczne generatory liczb pseudolosowych (CSPRNG) można również budować przy użyciu szyfrów blokowych.

Kody uwierzytelniania wiadomości (MAC) są często budowane z szyfrów blokowych. CBC-MAC , OMAC i PMac przykłady.

Zobacz też | edytuj kod

Przypisy | edytuj kod

  1. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  2. a b {{{tytuł}}}. ISBN 978-0-470-47424-2.{{Cytuj książkę}} Brakujące pola: tytuł.
  3. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  4. {{{tytuł}}}. ISBN 0-8493-8523-7.{{Cytuj książkę}} Brakujące pola: tytuł.
  5. . {{Cytuj pismo}} Brakujące pola: czasopismo.
  6. . {{Cytuj pismo}} Brakujące pola: czasopismo.
  7. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  8. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  9. William F. Ehrsam, Carl HW Meyer, John L. Smith, Walter L. Tuchman, "Weryfikacja wiadomości i wykrywanie błędu transmisji przez łańcuchy blokowe", Patent USA 4074066, 1976
  10. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  11. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  12. {{{tytuł}}}. ISBN 0-13-046019-2.{{Cytuj książkę}} Brakujące pola: tytuł.
  13. {{{tytuł}}}. ISBN 0-387-97317-6.{{Cytuj książkę}} Brakujące pola: tytuł.
  14. a b Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  15. {{{tytuł}}}. ISBN 0-306-41366-3.{{Cytuj książkę}} Brakujące pola: tytuł.
  16. http://www.crypto.rub.de/its_seminar_ws0809.html[martwy link]
  17. {{{tytuł}}}. ISBN 0-306-41366-3.{{Cytuj książkę}} Brakujące pola: tytuł.
  18. Helger Lipmaa, Phillip Rogaway i David Wagner. Komentarze do NIST dotyczące trybów pracy AES: szyfrowanie w trybie CTR. 2000
  19. Niels Ferguson, Bruce Schneier, Tadayoshi Kohno, Cryptography Engineering, strona 71, 2010
  20. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  21. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  22. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.
  23. Virgil D. Gligor , Pompiliu Donescu, "Fast Encryption and Authentication: XCBC Encryption and XECB Authentication Modes". Proc. Fast Software Encryption, 2001: 92-108.
  24. Charanjit S. Jutla, "Tryby szyfrowania z integralnością prawie wolnej wiadomości", Proc. Eurocrypt 2001, LNCS 2045, maj 2001.
  25. Błąd w składni szablonu {{Cytuj stronę}}. Brak podanego tytułu cytowanej strony (parametr tytuł=|).{{Cytuj stronę}} Brakujące pola: tytuł.

[[Kategoria:Algorytmy kryptograficzne]] [[Kategoria:Tryby działania szyfrów blokowych]] [[Kategoria:Strony z nieprzejrzanymi tłumaczeniami]]

Na podstawie artykułu: "Wikipedysta:KamillaŚ/Tryby pracy szyfrów blokowych" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy