´╗┐ Szyfrowanie DES Sieradz

Szyfrowanie DES

┬á┬á┬á┬á Obecnie stosowane szyfry symetryczne s─ů zdecydowanie bardziej skomplikowanej ni┼╝ te opisane w poprzednim artykule (ni┼╝ np. szyfr Cezara). Szyfrowaniem nie zajmuj─ů si─Ö ju┼╝ ludzie, lecz komputery. Dlatego te┼╝ najwa┼╝niejsza zmiana jaka nast─ůpi┼éa w momencie zastosowania maszyn licz─ůcych do szyfrowania, jest zmiana obiektu szyfrowania. Cz┼éowiek szyfrowa┼é znaki (kt├│re sk┼éada┼éy si─Ö na s┼éowa). Komputer pracuje w systemie binarnym. Dla niego s─ů tylko dwa stany ÔÇ×0ÔÇŁ i ÔÇ×1ÔÇŁ. Komputer umie tylko wykonywa─ç operacje matematyczne na ÔÇ×0ÔÇŁ i ÔÇ×1ÔÇŁ ale za to robi to bardzo szybko. W procesie szyfrowania komputery operuj─ů na bitach. W┼Ťr├│d wielu szyfr├│w symetrycznych obecnie stosowanych nale┼╝y wymieni─ç algorytm DES. Standard szyfrowania danych zaakceptowany w roku 1977 przez Narodowe Biuro Standard├│w (National Bureau of Standards), stosowany do szyfrowania informacji ÔÇťnie utajnionej, ale wa┼╝nej”. Szczeg├│┼éowy opis algorytmu DES zosta┼é opublikowany. Dzi─Öki temu┬áalgorytm DES prawdopodobnie nie zawiera tzw. ukrytych drzwi (tak okre┼Ťla celowo zostawione przez autor├│ algorytmu luki, pozwalaj─ůce na cz─Ö┼Ťciowe lub ca┼ékowite z┼éamanie tego szyfru).

Pogl─ůdowo algorytm szyfrowania danych wygl─ůda nast─Öpuj─ůco: na pocz─ůtku tekst jawny, kt├│ry ma zosta─ç zaszyfrowany, dzielony jest na 64-bitowe bloki (co odpowiada 8 znakom 8-bitowego kodu ASCII). Blok 64-bitowy poddawany jest permutacji wst─Öpnej. Potem dzielony jest na dwa podci─ůgi 32-bitowe. Nast─Öpnie wykonywanych jest 16 cykli jednakowych operacji, nazywanych funkcjami f┬á (funkcjami Feistela). Po szesnastym cyklu lewa i prawa strona s─ů ┼é─ůczone i poddawane permutacji ko┼äcowej. Poni┼╝ej opisa┼éem szczeg├│┼éowo ka┼╝dy z┬á etap├│w szyfrowania.

Permutacja pocz─ůtkowa

Bity stanowi─ůce blok danych wej┼Ťciowych poddawane s─ů procesowi zamiany miejsc wed┼éug permutacji pocz─ůtkowej, okre┼Ťlonej jako IP . Nie b─Öd─Ö tutaj prezentowa┼é tabeli transpozycji IP. Mo┼╝na j─ů znale┼║─ç praktycznie w ka┼╝dym podr─Öczniku dotycz─ůcym kryptologii. Do┼Ť─ç jednak powiedzie─ç, ┼╝e w wyniku tego procesu otrzymujemy 64-bitowy blok, w kt├│rym zgodnie z tablic─ů transpozycji IP np. pierwszy bit jest 58 bitem bloku wej┼Ťciowego, bit 2 jest 50 bitem bloku wej┼Ťciowego.

Podzia┼é na cz─Ö┼Ťci

Blok otrzymany w wyniku permutacji pocz─ůtkowej IP jest nast─Öpnie dzielony na cz─Ö┼Ť─ç lew─ů i praw─ů (po 32 bity ka┼╝da). Oznaczamy je jako L i R.

Iteracja funkcji f

Nast─Öpuje teraz 16 rund identycznych operacji opisanych funkcj─ů f, w czasie kt├│rych blok prawy R jest przekszta┼écany przy wykorzystaniu klucza. Pojedyncza iteracja wygl─ůda tak: Blok Ri jest rozszerzany za pomoc─ů permutacji rozszerzaj─ůcej do bloku 48-bitowego. Jednocze┼Ťnie nast─Öpuje obr├│bka klucza. Poniewa┼╝ klucz jest 64-bitowy, redukowany jest do klucza 56 bit├│w przez pomini─Öcie co ├│smego bitu parzysto┼Ťci. Tak przygotowany ci─ůg bit├│w poddawany jest permutacji wej┼Ťciowej , po czym dzielony jest na dwa podci─ůgi 28-bitowe. Nast─Öpnie po┼éowy te przesuwane s─ů w lewo o jeden lub dwa bity, zale┼╝nie od numeru cyklu. Nast─Öpnie w wyniku permutacji kompresuj─ůcej powstaje klucz 48-bitowy Ki (stanowi klucz i-ej iteracji Ki). Teraz blok Ri sumowana jest modulo 2 z stworzonym w┼éa┼Ťnie 48-bitowym kluczem┬á Ki. Po tej operacji otrzymany ci─ůg dzielony jest na 8 cz─Ö┼Ťci po 6-bit├│w ka┼╝da i wprowadzany do skrzynek S-blok├│w, gdzie z 6-bitowych podci─ůg├│w na wyj┼Ťciu otrzymujemy 4-bitowe┬á podci─ůgi, kt├│re ┼é─ůczymy ze sob─ů. Nowo powsta┼éy ci─ůg jest na wyj┼Ťciu poddany permutacji i otrzymujemy zaszyfrowany ci─ůg 32-bitowy. Blok sumowany modulo 2 z lew─ů po┼é├│wk─ů bloku wej┼Ťciowego. 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 lewa i prawa po┼éowa danych jest ┼é─ůczona za pomoc─ů operacji XOR.

Warto tu jeszcze wyja┼Ťni─ç jak dochodzi do zamiany blok├│w 6-bitowyn na 4-bitowe w skrzynkach zwanych S-blokami. Jest 8 S-blok├│w. Ka┼╝dy z nich inny. S-bloki mo┼╝na sobie wyobrazi─ç jako tablice o 4 wierszach i 16 kolumnach. Element tabeli to 4-bitowe liczby. Wyb├│r wiersza i kolumny tabeli wygl─ůda nast─Öpuj─ůco. Dzieli si─Ö 6-bitowe ci─ůgi wej┼Ťciowe w ten spos├│b, ┼╝e pierwszy i ostatni bit ci─ůgu tworzy liczb─Ö 2-bitow─ů, kt├│ra wybiera wiersz (na 2 bitach mo┼╝na zakodowa─ç liczb─Ö 0..3). Pozosta┼ée (┼Ťrodkowe 4-bity) bity tworzy liczb─Ö, kt├│ra wybiera kolumn─Ö. Wskazany element tabeli jest podawany jako wynik podstawienia (4-bitowy).

Permutacja końcowa

W ostatnim kroku algorytmu 64-bitowy blok poddawany jest permutacji ko┼äcowej IP-1, stanowi─ůcej odwrotno┼Ť─ç transformacji pocz─ůtkowej IP.

Implementacja algorytmu DES mo┼╝e by─ç zrealizowana zar├│wno programowo jaki i sprz─Ötowo. Opracowanie programu szyfruj─ůcego DES (mo┼╝na to zrobi─ç praktycznie w dowolnym j─Özyku programowania np. C) zajmuje troch─Ö czasu, a efekt pracy jest z regu┼éy … niezbyt zadawalaj─ůcy. Okazuje si─Ö bowiem, ┼╝e zaszyfrowanie pojedynczego pliku 5MB (np. zdj─Öcia) jest bardzo szybkie, ale zaszyfrowanie archiwum o pojemno┼Ťci 10GB ju┼╝ jest bardzo czasoch┼éonne. Dlatego te┼╝ algorytm DES implementuje si─Ö sprz─Ötowo. Mo┼╝na to zrobi─ç na bazie procesora TMS320. Wymaga to oczywi┼Ťcie odpowiedniego zaprogramowania procesora, ale efekt jest zdecydowanie lepszy. Taki uk┼éad scalony jest w stanie┬á szyfrowa─ç z szybko┼Ťci─ů rz─Ödu GB/sek. Najbardziej jednak bezpieczn─ů implementacj─ů algorytmu DES jest budowa dedykowanego uk┼éadu scalonego. Takie uk┼éady stasuje si─Ö w praktyce. Implementacje sprz─Ötowe s─ů nie tylko szybsze ale i bezpieczniejsze ni┼╝ programowe. Do systemu z dedykowanym uk┼éadem scalonym trudniej si─Ö bowiem w┼éama─ç (i zmieni─ç algorytm szyfruj─ůcy) ni┼╝ do komputera z oprogramowaniem realizuj─ůcym szyfrowanie DES.