Algorytm klucza symetrycznego - Symmetric-key algorithm

Algorytmy z kluczem symetrycznymalgorytmy dla kryptografii , które korzystają z tych samych kluczy kryptograficznych zarówno do szyfrowania tekstu jawnego i deszyfrowania szyfrogramu . Klawisze mogą być identyczne lub może istnieć prosta transformacja między dwoma klawiszami. W praktyce klucze stanowią wspólny sekret między dwiema lub większą liczbą stron, który można wykorzystać do utrzymywania prywatnego łącza informacyjnego. Wymóg, aby obie strony miały dostęp do tajnego klucza, jest jedną z głównych wad szyfrowania kluczem symetrycznym w porównaniu z szyfrowaniem kluczem publicznym (znanym również jako szyfrowanie kluczem asymetrycznym).

Rodzaje

Szyfrowanie z kluczem symetrycznym może wykorzystywać szyfry strumieniowe lub blokowe .

  • Szyfry strumieniowe szyfrują cyfry (zwykle bajty ) lub litery (w szyfrach podstawieniowych) wiadomości pojedynczo. Przykładem jest ChaCha20 .
  • Szyfry blokowe pobierają pewną liczbę bitów i szyfrują je jako pojedynczą jednostkę, dopełniając tekst jawny tak, aby był wielokrotnością rozmiaru bloku. Advanced Encryption Standard (AES), zatwierdzony przez NIST w grudniu 2001 roku, wykorzystuje 128-bitowe bloki.

Realizacje

Przykłady popularnych algorytmów z kluczem symetrycznym obejmują Twofish , Serpent , AES (Rijndael), Camellia , Salsa20 , ChaCha20 , Blowfish , CAST5 , Kuznyechik , RC4 , DES , 3DES , Skipjack , Safer i IDEA .

Użyj jako prymityw kryptograficzny

Szyfry symetryczne są powszechnie używane do uzyskiwania innych prymitywów kryptograficznych niż tylko szyfrowanie.

Zaszyfrowanie wiadomości nie gwarantuje, że pozostanie ona niezmieniona podczas szyfrowania. Dlatego też często kod uwierzytelniania wiadomości jest dodawany do tekstu zaszyfrowanego, aby zapewnić, że zmiany w tekście zaszyfrowanym zostaną odnotowane przez odbiorcę. Kody uwierzytelniania wiadomości mogą być skonstruowane z szyfru AEAD (np. AES-GCM ).

Szyfrów symetrycznych nie można jednak używać do celów niezaprzeczalności , z wyjątkiem zaangażowania dodatkowych stron. Zobacz normę ISO/IEC 13888-2 .

Inną aplikacją jest budowanie funkcji skrótu z szyfrów blokowych. Zobacz funkcję kompresji jednokierunkowej dla opisów kilku takich metod.

Budowa szyfrów symetrycznych

Wiele współczesnych szyfrów blokowych opiera się na konstrukcji zaproponowanej przez Horsta Feistela . Konstrukcja Feistela umożliwia budowanie funkcji odwracalnych z innych funkcji, które same nie są odwracalne.

Bezpieczeństwo szyfrów symetrycznych

Symetryczny szyfr historycznie były podatne na ataki znane tekstem jawnym , ataków wybrany tekstem jawnym , różnicowej kryptoanalizy i liniowego kryptoanalizę . Staranne konstruowanie funkcji dla każdej rundy może znacznie zmniejszyć szanse na udany atak.

Zarządzanie kluczami

Kluczowa placówka

Algorytmy z kluczem symetrycznym wymagają, aby zarówno nadawca, jak i odbiorca wiadomości mieli ten sam tajny klucz. Wszystkie wczesne systemy kryptograficzne wymagały, aby nadawca lub odbiorca w jakiś sposób otrzymał kopię tego tajnego klucza przez fizycznie zabezpieczony kanał.

Prawie wszystkie nowoczesne systemy kryptograficzne nadal wykorzystują wewnętrznie algorytmy z kluczem symetrycznym do szyfrowania większości wiadomości, ale eliminują potrzebę fizycznie bezpiecznego kanału za pomocą wymiany kluczy Diffie-Hellman lub innego protokołu klucza publicznego w celu bezpiecznego osiągnięcia porozumienia w sprawie nowy nowy tajny klucz dla każdej sesji/rozmowy (utajnienie przekazywania).

Generowanie kluczy

W przypadku użycia z szyframi asymetrycznymi do przesyłania kluczy, generatory kluczy pseudolosowych są prawie zawsze używane do generowania kluczy sesji szyfrowania symetrycznego. Jednak brak losowości w tych generatorach lub w ich wektorach inicjujących jest katastrofalny i doprowadził w przeszłości do przerw kryptoanalitycznych. Dlatego ważne jest, aby implementacja używała do jej inicjalizacji źródła o wysokiej entropii .

Szyfr odwrotny

Szyfr odwrotny to szyfr, w którym tak jak wprowadza się tekst jawny do systemu kryptograficznego , aby uzyskać tekst zaszyfrowany , można wprowadzić tekst zaszyfrowany w to samo miejsce w systemie, aby uzyskać tekst jawny. Szyfr odwrotny jest również czasami określany jako szyfr samoodwrotny .

Praktycznie wszystkie mechaniczne maszyny szyfrujące implementują szyfr odwrotny, matematyczną inwolucję na każdej wpisanej literze. Zamiast projektować dwa rodzaje maszyn, jedną do szyfrowania, a drugą do odszyfrowywania, wszystkie maszyny mogą być identyczne i można je skonfigurować (z kluczami) w ten sam sposób.

Przykłady szyfrów odwrotnych obejmują:

Większość wszystkich nowoczesnych szyfrów można sklasyfikować jako szyfr strumieniowy , z których większość wykorzystuje odwrotny sumator szyfrów XOR lub szyfr blokowy , z których większość wykorzystuje szyfr Feistela lub schemat Lai-Masseya z odwrotną transformacją w każdej rundzie.

Uwagi

Bibliografia