DES (ang. Data Encryption Standard) – symetryczny szyfr blokowy zaprojektowany w 1975 roku przez IBM na zlecenie ówczesnego Narodowego Biura Standardów USA (obecnie NIST). Od 1976 do 2001 roku stanowił standard federalny USA, a od roku 1981 standard ANSI dla sektora prywatnego (znany jako Data Encryption Algorithm). Od kilku lat uznawany jest za algorytm niezapewniający odpowiedniego bezpieczeństwa, głównie ze względu na niewielką długość klucza, która sprawia, że jest bardzo podatny na atak siłowy. W 2001 roku w USA został zastąpiony w ramach standardu federalnego przez AES. Jest jednym z najlepiej przeanalizowanych algorytmów szyfrujących.

Historia DES powstał jako część zapoczątkowanego w 1972 roku przez Narodowe Biuro Standardów USA programu zabezpieczania informacji, w ramach którego planowano stworzyć jeden algorytm kryptograficzny do szyfrowania danych – taki sam dla ich przechowywania i przesyłania. 15 maja 1973 roku po konsultacjach z NSA w Rejestrze Federalnym opublikowane zostały wymagania projektowe stawiane potencjalnemu algorytmowi: miał zapewniać duży stopień bezpieczeństwa, być kompletnie określony i nietrudny do zrozumienia oraz łatwy do zaimplementowania sprzętowego. Miał ponadto spełniać warunki umożliwiające jego eksport. Dodatkowo jego bezpieczeństwo, zgodnie z zasadą Kerckhoffsa, nie mogło opierać się na tajności algorytmu, lecz na kluczu.

Wymagania te były, jak na owe czasy, tak rygorystyczne, że pomimo dużej liczby zgłoszeń pierwsza tura konkursu nie wyłoniła zadowalającego algorytmu. W związku z tym 27 sierpnia 1974 NBS ponownie opublikował informacje o zapotrzebowaniu na algorytm kryptograficzny. Wkrótce potem IBM zgłosił do konkursu swój algorytm, oparty na szyfrze blokowym Lucifer, spełniający podane kryteria. Nad rozwojem zgłoszonego szyfru pracowali Roy Adler, Don Coppersmith, Horst Feistel, Edna Grossman, Alan Konheim, Carl Mayer, Bill Notz, Lynn Smith, Walt Tuchman oraz Bryant Tuckerman. W celu oceny bezpieczeństwa algorytmu NBS zwróciło się o pomoc do NSA, a IBM rozpoczął procedurę jego patentowania.

Szczegóły algorytmu oraz oświadczenie IBM zezwalające na jego wykorzystanie w dowolnym celu zostały opublikowane 17 maja 1975 roku w Rejestrze Federalnym, a kilka miesięcy później, 1 sierpnia 1975 roku, Narodowe Biuro Standardów wydało komunikat zachęcający wszystkich zainteresowanych do wypowiedzenia się na temat jego bezpieczeństwa i przydatności. Po wielu ocenach krytycznych oraz zarzutach wobec NSA o celowe osłabienie szyfru poprzez skrócenie długości klucza oraz modyfikację S-bloków zorganizowano dwie konferencje naukowe, mające na celu ocenić algorytm. Na pierwszej z nich szyfr oceniono od strony matematycznej, na drugiej natomiast omawiano sensowność wydłużenia klucza.

23 listopada 1976 Data Encryption Standard został zaakceptowany jako standard federalny – możliwe było jego używanie do szyfrowania wszelkich nietajnych danych rządowych USA. Publikacja pełnego opisu algorytmu odbyła się 15 stycznia 1977 roku w ramach dokumentu FIPS PUB 46 – Data Encryption Standard. Pozostałe dokumenty związane ze standardem zostały opublikowane w roku 1980 (FIPS PUB 81 – DES Modes of Operation) oraz w roku 1981 (FIPS PUB 74 – Guidelines for Implementating and Using the NBS Data Encryption Standard). Algorytm kilkukrotnie (1983, 1988 – FIPS-46-1, 1993 – FIPS-46-2 oraz 1999 – FIPS-46-3) zdobywał certyfikat przedłużający jego ważność jako standardu federalnego. Ostatecznie został wycofany w 2001 roku, kiedy standardem federalnym stał się Advanced Encryption Standard.

W 1981 roku ANSI uznało DES za standard sektora prywatnego (ANSI X3.92-1981), jednocześnie przemianowując go na Data Encryption Algorithm.

Chronologia Data Wydarzenie 15 maja 1973 Narodowe Biuro Standardów USA po raz pierwszy publikuje informacje o zapotrzebowaniu na algorytm kryptograficzny 27 sierpnia 1974 NBS po raz drugi publikuje informacje o zapotrzebowaniu na algorytm kryptograficzny 17 marca 1975 Opis algorytmu DES zostaje opublikowany w Rejestrze Federalnym Sierpień 1976 Pierwszy warsztat naukowy na temat DES Wrzesień 1976 Drugi warsztat naukowy, na którym dyskutowano podstawy matematyczne algorytmu 23 listopada 1976 DES zostaje zatwierdzony jako standard 15 stycznia 1977 Opis algorytmu DES zostaje wydany jako dokument FIPS PUB 46 1983 Certyfikat ważności DES po raz pierwszy zostaje przedłużony na kolejne 5 lat 22 stycznia 1988 Certyfikat ważności DES po raz drugi zostaje przedłużony na kolejne 5 lat; wydana zostaje poprawiona wersja standardu FIPS PUB 46-1 1992 Biham oraz Shamir opisują pierwszy teoretyczny atak, który jest bardziej skuteczny niż atak brutalny: kryptoanalizę różnicową. Wymaga jednak nieralistycznej liczby tekstów jawnych: 30 grudnia 1993 Certyfikat ważności DES po raz trzeci zostaje przedłużony na 5 lat; opublikowany zostaje FIPS PUB 46-2 1994 Pierwsza próba kryptoanalizy DES z wykorzystaniem kryptoanalizy liniowej (Matsui, 1994). czerwiec 1997 Projekt DESCHALL jako pierwszy odszyfrowuje wiadomość zaszyfrowaną DES. 1998 Projekt distributed.net odtwarza klucz w ciągu 41 dni. lipiec 1998 EFF DES cracker (znany też jako Deep Crack) stworzony przez EFF odtwarza klucz algorytmu DES w 56 godzin. 19 stycznia 1999 Deep Crack wspólnie z distributed.net łamie klucz algorytmu w 22 godziny i 15 minut 25 października 1999 Certyfikat ważności DES po raz czwarty zostaje przedłużony; opublikowany zostaje FIPS PUB 46-3, który określa 3DES jako preferowany system szyfrowania 26 listopada 2001 Opublikowany zostaje standard AES jako FIPS 197 26 lipca 2004 NIST na łamach Federalnego Rejestru proponuje wycofanie FIPS 46-3 (wraz z kilkoma innymi standardami) 19 maja 2005 NIST wycofuje FIPS 46-3

Kontrowersje związane z udziałem NSA Gdy 1 sierpnia 1975 Narodowe Biuro Standardów wydało komunikat zachęcający wszystkich zainteresowanych do oceny algorytmu, pojawiło się wiele głosów oskarżające NSA o celowe osłabienie szyfru w taki sposób, aby nikt poza nimi nie mógł go złamać. Podstawowym zarzutem było osłabienie klucza szyfrującego – w algorytmie Lucifer, na którym opierał się DES, klucz ten miał początkowo 128 bitów, NSA zdołało jednak przekonać IBM do jego skrócenia do 56 bitów. Podejrzewano także, że NSA umieściło w S-blokach tylne wejście, umożliwiające im proste odszyfrowanie szyfrogramów. Alan Konheim, jeden z twórców DES, stwierdził, że wysłane do NSA struktury S-bloków zostały zmienione przez Agencję. Sprawa podejrzanej ingerencji NSA w strukturę szyfru była w 1978 roku badana przez Komisję Wywiadu Senatu USA, która w nieutajnionym podsumowaniu zwolniła Agencję Bezpieczeństwa z zarzutów.

Zarzuty związane z osłabieniem S-bloków były nieuzasadnione. Okazało się bowiem, że DES jest wyjątkowo odporny na kryptoanalizę różnicową, opublikowaną w roku 1990 przez Eli Bihama i Adi Shamira (nie byli oni pierwszymi odkrywcami). Zarówno IBM, jak i NSA znały już wcześniej tę technikę kryptoanalizy i zaprojektowali S-bloki w taki sposób, aby były na nią odporne.

Algorytm thumb|Schemat początkowa permutacji bloku – tabela powinna być czytana od lewej do prawej strony, od góry do dołu. Na miejsce bitu pierwszego podstawiany jest bit 58, na miejsce bitu drugiego podstawiany jest bit 50, i tak dalej thumb DES jest szyfrem blokowym z blokami o długości 64 bitów. Do szyfrowania i deszyfrowania danych wykorzystywanych jest 56 bitów klucza, który zapisany jest w postaci 64-bitowego ciągu, w którym co 8 bit jest bitem kontrolnym i może służyć do kontroli parzystości. Kilka z kluczy uważanych jest za klucze słabe oraz klucze półsłabe.

Algorytm szyfrowania danych jest następujący: na początku tekst jawny, który ma zostać zaszyfrowany, dzielony jest na bloki 64-bitowe. Następnie dla każdego bloku wykonywane są następujące operacje: dokonywana jest permutacja początkowa bloku przestawiająca bity w pewien określony sposób – nie zwiększa ona bezpieczeństwa algorytmu, a jej początkowym celem było ułatwienie wprowadzania danych do maszyn szyfrujących używanych w czasach powstania szyfru blok wejściowy rozdzielany jest na dwie 32-bitowe części: lewą oraz prawą wykonywanych jest 16 cykli tych samych operacji, zwanych funkcjami Feistela, podczas których dane łączone są z kluczem. Operacje te wyglądają następująco: bity klucza są przesuwane, a następnie wybieranych jest 48 z 56 bitów klucza prawa część danych rozszerzana jest do 48-bitów za pomocą permutacji rozszerzonej rozszerzona prawa połowa jest sumowana modulo 2 z wybranymi wcześniej (i przesuniętymi) 48 bitami klucza zsumowane dane dzielone są na osiem 6-bitowych bloków i każdy blok podawany jest na wejście jednego z S-bloków (pierwszy 6-bitowy blok na wejście pierwszego S-bloku, drugi 6-bitowy blok na wejście drugiego S-bloku itd.). Pierwszy i ostatni bit danych określa wiersz, a pozostałe bity kolumnę S-BOXa. Po wyznaczeniu miejsca w tabeli, odczytuje się wartość i zamienia na zapis dwójkowy. Wynikiem działania każdego S-bloku są 4 bity wyjściowe – tworzą one 32-bitowe wyjście S-bloków. Każdy S-Blok ma inną strukturę wyjście S-bloków poddawane jest permutacji w P-blokach bity tak przekształconego bloku są sumowane modulo 2 z bitami lewej połowy danych tak zmieniony blok staje się nową prawą połową, poprzednia prawa połowa staje się natomiast lewą połową – cykl dobiega końca po wykonaniu 16 cykli operacji prawa i lewa połowa danych jest łączona w 64-bitowy blok dokonywana jest permutacja końcowa

Deszyfrowanie polega na zastosowaniu tych samych operacji w odwrotnej kolejności (różni się od szyfrowania tylko wyborem podkluczy, który teraz odbywa się od końca).

Tryby pracy algorytmu W dokumencie DES Modes of Operation określono cztery tryby pracy algorytmu: elektroniczna książka kodowa – w tym trybie pracy każdy blok tekstu jawnego szyfrowany jest w blok szyfrogramu, dzięki czemu możliwe jest stworzenie książki kodowej tekstu jawnego oraz odpowiadającego mu szyfrogramu wiązanie bloków zaszyfrowanych – tryb ten wykorzystuje mechanizm sprzężenia zwrotnego: w operacji szyfrowania bieżącego bloku tekstu jawnego wykorzystywany jest poprzedni blok szyfrogramu, w związku z czym każdy blok szyfrogramu zależny jest zarówno od bloku tekstu jawnego, jak i od poprzedniego bloku szyfrogramu sprzężenie zwrotne szyfrogramu – tryb ten umożliwia szyfrowanie danych strumieniowych; do procesu szyfrowania informacji wykorzystywany jest rejestr, najczęściej o pojemności odpowiadającej wielkości bloku, a rozpoczęcie szyfrowania możliwe jest dopiero po odebraniu pełnego bloku danych. W jednym przebiegu n zaszyfrowanych bitów z rejestru sumowanych jest modulo 2 z n bitami tekstu jawnego – tak powstaje pierwszych n bitów szyfrogramu, bity te są następnie dodawane na koniec kolejki sprzężenie zwrotne wyjściowe – tryb ten jest podobny do trybu sprzężenia zwrotnego szyfrogramu – z tą różnicą, że na koniec kolejki dodawane jest n bitów poprzedniego bloku wyjściowego, a nie szyfrogramu

Kryptoanaliza algorytmu Pomimo tego, że DES jest jednym z najlepiej przeanalizowanych szyfrów blokowych, nadal najbardziej praktycznym atakiem na niego jest atak brutalny. Istnieją skuteczniejsze metody kryptoanalizy szyfru, jednak z powodu narzuconych wymagań rozważane były tylko teoretycznie.

Atak siłowy