|
Procesory z rodziny TMS320 umożliwiają implementacje różnych algorytmów
szyfrowania sygnałów dla wielu urządzeń. Ten opis przedstawia jeden
z algorytmów szyfrowania danych za pomocą procesora TMS320C25. Niestety
artykuł ten nie zawiera kodu programu realizującego algorytm szyfrowania,
ponieważ ich publikowanie jest zastrzeżone przez U.S. Department of
State Export Control Regulations. W celu uzyskania bardziej szczegółowych
informacji należy się skontaktować, z National Bureau of Standard.
Danymi wejściowymi algorytmu DES mogą być : text, plik lub dowolne
dane w postaci binarnej. Głównie stosuje się go do kodowania sygnału
mowy w celu uzyskania bezpiecznej transmisji w przekazie bezpośrednim
lub danych przesyłanych za pośrednictwem modemu.
Kodowanie:
 Rys1. Schemat blokowy algorytmu DES.
Algorytm został przedstawiony pod katem implementacji
go na procesor TMS320C25. Schemat blokowy algorytmu DES przedstawia
powyższy rysunek. Algorytm koduje dane w porcjach po 64 bity. Każdy
64-bitowy blok podlega na wejściu permutacji według macierzy IP, następnie
strumień bitów zostaje podzielony na części L0 i R0 po 32 bity każda.
Obie części są poddawane kolejnym transformacjom w 16 cyklach przy
użyciu specjalnego klucza K. Wyjścia Li i Ri kolejnych kroków są obliczane
według bloku Li-1 i Ri-1 oraz klucza Ki. Krok ostatni różni się od
pozostałych, oba bloki L16 i K16 są łączone w jeden 64- bitowy blok
i poddane odwrotnej permutacji przez macierz IP-1. Macierz permutacji
IP oraz IP-1 przedstawia PONIŻSZY RYSUNEK . Każdy element macierzy
wskazuje na poszczególne bity z 64-bitowego bloku wejściowego począwszy
od bitów najmłodszych. Na przykład, po permutacji IP bit 64 najstarszy
jest na pozycji 58 następny na 50 itp. według rysunku:
 Przykładowe macierze permutacji IP i odwrotna IP.
Funkcja f(Ri-1,Ki) z rys.1 jest kombinacja prawego bloku Ri-1 i podklucza Ki,. Wejściem i wyjściem tej funkcji jest blok 32-bitowy.
Algorytm obliczania wartości funkcji (Ri-1,Ki)
 Schemat blokowy obliczania wartości funkcji f(Ri-1,Ki).
Poniższy rysunek przedstawia macierze E, P i S1 użyte w realizacji funkcji f(Ri-1,Ki). Bloki S1 do S8 dokonują konwersji ciągu 6-bitow na 4 bity w sposób następujący: Pierwszy i ostatni bit sekwencji tworzą razem numer wiersza I o wartości pomiędzy 0 a 3, pozostałe środkowe cztery bity tworzą numer kolumny J o wartości pomiędzy 0 a 15. Bloki S są macierzami o rozmiarach 4x16 każdy, których elementy przyjmują wartości od 0 do 15 w zapisie dziesiętnym. Każdy z elementów można przedstawić za pomocą 4 bitów. Wyjściem każdego bloku S są 4-bity wyznaczane na podstawie numerów I i J. Na przykład, jeżeli wejściem bloku S1 jest ciąg 001010 to I=0 i J=5, a wiec wyjściem bloku S1 będzie wartość, 15 czyli 1111.
Generacja podkluczy Ki.
 Rys.2. Schemat blokowy algorytmu generowania podkluczy.
Klucz szyfrujący K ma długość 64 bitów, lecz do szyfrowania wykorzystuje się tylko 56. Z pozostałych ośmiu bitów wykorzystywany jest ósmy bit, który jest bitem parzystości dodatniej dla 64 bitów klucza. Z 64 bitowego klucza generowanych jest 16 podkluczy Ki każdy o długości 48 bitów. Sposób generacji przedstawia rys.7. Po permutacji 56 bitów (macierz PC-1) są one rozdzielone na dwie części Ci i Di po 28 bitów. Następnie w 16 krokach są one przesuwane w lewo i łączone w 56 bitowy blok, który po permutacji PC-2 daje 48 bitowy klucz, macierz PC-1 i PC-2 przedstawia rys2. Przesuwanie bitów części C i D odbywa się w ten sposób, ze najstarszy bit wchodzi na miejsce najmłodszego itd. Nie w każdym kroku przesuwana jest taka sama ilość bitów. Sposób przesuwania przedstawia tabela 1.
 Rys.6. Przykład macierz PC-1 i PC-2.
Tabela 1.
|
Numer kroku
|
Przesuniecie
|
|
1
|
1
|
|
2
|
1
|
|
3
|
2
|
|
4
|
2
|
|
5
|
2
|
|
6
|
2
|
|
7
|
2
|
|
8
|
2
|
|
9
|
1
|
|
10
|
2
|
|
11
|
2
|
|
12
|
2
|
|
13
|
2
|
|
14
|
2
|
|
15
|
2
|
|
16
|
2
|
|
17
|
2
|
|
18
|
1
|
Dwa tryby pracy algorytmu DES.
 Rys.8. Dwa tryby pracy algorytmu DES ECB i OFB.
Algorytm DES może być implementowany w różnych trybach pracy. Na rysunku 8 przedstawiono dwa z nich: Electronic CodeBook (ECB) i Output FeedBack (OFB). Wybór trybu pracy algorytmu uzależniony jest od rodzaju danych wejściowych oraz od wykorzystania kodowanych informacji. Tryb ECB jest reprezentacją rysunku 1. Podstawowa różnica obu trybów jest to, ze tryb OFB nie wymaga specjalnego urządzenia deszyfrującego. Sygnał wejściowy jest bramkowany funkcja XOR z kluczem szyfrującym. Wystarczy dokonać tej samej operacji po stronie odbiorcy, aby otrzymać sygnał odszyfrowany. Układ ten wymaga jednak synchronizacji nadawcy z odbiorca w celu dołączenia na wejście bramki tych samych sygnałów klucza i danych.
Schemat blokowy dekodowania DES.
 Schemat blokowy dekodowania.
Do deszyfracji danej 64-bitowej używany jest taki sam algorytm z jedna zmiana tzn. część środkowa przy deszyfracji rozpoczyna się od kroku 16 i kończy na 0 odwrotnie niż przy szyfrowaniu.
Źródło: http://db.tigra-system.pl/art.php?id=6
|