ochrona, Algorytmy kryptograficzne = szyfry


OCHRONA DANYCH

Literatura:

Czechowski, Sienkiewicz, Przestępcze oblicza komputerów, PWN, Warszawa 1993;

D. E. Denning, Kryptografia i ochrona danych, Warszawa 1992;

D. Ferbrache, Patologia wirusów komputerowych, WNT, Warszawa 1993;

S. Garfunkel, G. Stafford, Practical UNIX and Internet Security;

J. Hrusek, Wirusy komputerowe i ochrona antywirusowa, WKT, Warszawa 1995;

B. Schneier, Kryptografia dla praktyków, WNT, Warszawa 1995;

B. Schneier, Ochrona poczty elektronicznej, WNT, Warszawa 1996;

J. Stokłosa, Algorytmy kryptograficzne, 1994;

J. Stokłosa, Kryptograficzna ochrona danych w systemach komputerowych, NAKOM, Poznań 1994;

J. Stokłosa (red.), Ochrona danych w systemach komputerowych, Poznań 1997;

Wprowadzenie.

Relacja między otoczeniem zewnętrznym a systemem komputerowym przedstawia się następująco:

Programy oddziałujące na otoczenie powinny być bezpieczne - tym zajmuje się inżynieria oprogramowania.

Na wykładach będziemy zajmować się oddziaływaniem otoczenia na systemy komputerowe i zabezpieczeniami stosowanymi w celu przeciwdziałania ”bezprawnemu” i niepożądanemu ich zniszczeniu

Dane są chronione (bezpieczeństwo danych) przed:

zniszczeniem;

ujawnieniem;

modyfikacją.

    1. Przeciwdziałanie zagrożeniom (środki):

Środki prawne:

§ 267 Bezprawne uzyskiwanie informacji.

§ 268 Udaremnianie uzyskiwania informacji.

§ 269 Niszczenie zapisów szczególnego znaczenia.

§ 265 Ujawnienie tajemnicy państwowej.

§ 285 Podłączenie się do urządzeń telekomunikacyjnych.

Atrybut danych jest to stopień ochrony jakiej mają te dane podlegać.

Dane można podzielić na: jawne, poufne oraz poufne szczególnego znaczenia.

Poufność danych jest to prawo jednostki do tego z kim chce się podzielić posiadanymi danymi oraz do tego od kogo chce przyjąć informacje.

Autentyczność danych - identyfikacja, uwierzytelnianie.

Przestępstwo komputerowe jest to:

Minimalny zbiór czynów uznanych przez Radę Europy za przestępstwa komputerowe:

oszustwa związane z wykorzystaniem komputera (finansowe);

fałszerstwa z wykorzystaniem komputera (fałszywe pieniądze);

niszczenie danych i programów komputerowych;

sabotaż komputerowy (fizyczne niszczenie);

włamania do systemów komputerowych (hacking);

nieuprawnione przechwytywanie informacji (w sieciach);

bezprawne kopiowanie i rozpowszechnianie programów komputerowych prawnie chronionych;

bezprawne kopiowanie topografii układów półprzewodnikowych.

    1. Fakultatywny zbiór czynów uznanych przez Radę Europy za przestępstwa komputerowe:

modyfikacja danych lub programów komputerowych;

szpiegostwo komputerowe;

używanie komputerów bez zezwolenia (wykorzystywanie czasu jałowego procesora);

d) używanie prawnie chronionego programu komputerowego bez zezwolenia.

Powyższe zestawy zostały stworzone przez komitet ekspertów dla Rady Europy.

Ochrona dostępu.

W systemach komputerowych ochrona dostępu jest realizowana przez identyfikację użytkownika za pomocą hasła. Hasło jest ciągiem znaków wprowadzanych przez użytkownika z konsoli (Novell: 4-20, UNIX najczęściej 8). Po wprowadzeniu hasła system sprawdza jego prawidłowość na podstawie pliku, w którym hasła są przechowywane w postaci zaszyfrowanej. Szyfrowanie polega na podaniu ciągu znaków - hasła, jako parametr funkcji szyfrującej f. Funkcja ta charakteryzuje się tym, że obliczenie wartości funkcji odwrotnej do f jest bardzo trudne. Administrator systemu posiada narzędzia umożliwiające wykrycie haseł „słabych” w systemie, czyli haseł łatwych do odgadnięcia, np. takich, które znajdują się w słownikach. Hasło modyfikowane przez użytkownika jest również sprawdzane przez system operacyjny. Sprawdzane jest czy hasło to jest różne od poprzednich haseł i czy wprowadzone słowo jest nietrywialne. Istnieje również możliwość wygenerowania losowego hasła przez system operacyjny.

Czas bezpiecznego stosowania hasła określony jest wzorem:

,

co w praktyce daje wzór:

,

gdzie:

|A| - liczba liter alfabetu, którym się posługujemy,

h - długość hasła,

z - liczba znaków wymienianych między systemem a użytkownikiem przy rozpoczynaniu sesji,

v - prędkość przesyłania znaków;

Przykład:

Jeśli |A|=95, h=6 zn, z=20, v=9600 zn/s to , dla |A| = 26 T = 30dni.

Wniosek: należy korzystać ze wszystkich dostępnych znaków.

Prawdopodobieństwo złamania hasła.

P - prawdopodobieństwo znalezienia właściwego hasła (pożądane),

P0 - najmniejsza wartość prawdopodobieństwa obliczana jako stosunek

t - czas dokonywania systematycznych prób łamania (miesiące ciągłej pracy komputera),

n1 - liczba haseł, które można złamać w ciągu m miesięcy obliczana jako stosunek ,

n2 - liczba wszystkich możliwych haseł (|A|h).

Pozostałe oznaczenia jak wyżej.

P0 można więc obliczyć następująco:

Stąd wynika, że powinno być:

Z tego wzoru wyznacza się h, np.: dla m = 3 miesiące, P = 10-6, v=1200zn/s, z=20zn:

|A| = 26 => h = 11, a dla |A| = 95 => h = 8.

Wprowadza się mechanizmy zniechęcania intruzów takie jak: zwiększanie czasu między kolejnymi nieudanymi próbami dostania się do systemu. Algorytm dostępu do systemu może wyglądać np. tak:

W niektórych systemach tworzone są listy haseł. Dla poszczególnych sesji używa się kolejnego hasła z listy.

Łatwo jest również obliczyć wartość funkcji szyfrującej F(F(x) ), F(F(F(x))), ... , Fn(x). Wykorzystuje się to w sposób następujący (przykład dla n=1000): po wprowadzeniu hasła przez użytkownika system porównuje je z plikiem hasłowym i jeśli jest prawidłowe wprowadza do tego pliku postać F999(x) hasła. Przy następnym wejściu do systemu następuje ponowne sprawdzenie hasła i jeśli jest poprawne do pliku wprowadzana jest postać F998 hasła, itd. Każde nowe hasło niszczy poprzednie.

Zasilanie komputerów.

Sprzęt komputerowy powinien być podłączony z oddzielnym bezpiecznikiem z oddzielnej sieci.

Zasilanie elektryczne komputera powinno być pozbawione takich zjawisk jak:

spadki napięcia - 84%,

zaniki napięcia - 5%

wahania częstotliwości ,

przepięcia - 1%,

zakłócenia impulsowe (pojawianie się pików),

zakłócenia komutacyjne (iskrzenie) - 7%,

zakłócenia radiowe (wysokiej częstotliwości) - 2%,

zniekształcenia nieliniowe (kształtu sinusoidy),

pojawienie się składowej stałej.

0x01 graphic

Zakłócenia 4, 6, 7 można wyeliminować przy pomocy dławika dolnoprzepustowego separującego sieć energetyczną od komputera (listwy zasilające np.: Acar, Liza, itp.). Spadki napięcia można wyeliminować przy użyciu autotransformatorów (np. LineR firm APC). Żadne jednak z tych urządzeń nie pozwala pracować na komputerze przy całkowitym zaniku napięcia. Do ich wyeliminowania służą urządzenia zasilania awaryjnego potocznie nazwane UPS (ang. Uninterruptable Power Supply). Pozwalają one wyeliminować też pozostałe zakłócenia.

UPS off-line:

W momencie gdy płynie prąd jest on przepuszczany tylko przez filtr, w przypadku zaniku napięcia układ sterowania przełącza przełącznik.

Wady:

Zalety: cena.

0x01 graphic

UPS on-line:

Prąd jest cały czas podawany na baterie. Bateria musi być wysokiej jakości, bo jest ciągle ładowana i rozładowywana. Gwarantują izolację galwaniczną. Są w stanie zrównoważyć obniżone napięcie nawet do 70V. Technologia bardzo droga.

Zasilacze hybrydowe - nie mają przełącznika na wyjściu, lecz falownik zasilany prądem stałym z prostownika w trybie normalnym i z baterii w trybie awaryjnym.

Parametr

Zasilacz idealny

Off-line

on-line

Stabilizowanie napięcia

Tak

Nie lub skokowo

Tak

Stabilizacja częstotliwości

Tak

Nie

Tak

Tolerancja napięcie we.

0-µ

187V-242V

130V-250V

Zniekształcenie przebiegu

Brak

Tak

<2%

Tłumienie zniekształceń sieciowych

Tak

Nie lub częściowo

Tak

Izolacja galwaniczna

Tak

Nie

Tak

Praca przy częstych zanikach

Tak

Nie

Tak

Masa i wymiary

1

1

1,5

Charakterystyka zasilaczy.

Moc zasilaczy mierzymy w volto-amperach (VA), przelicznik VA*cosj ->W zależy od firmy (cosj należy do przedziału: 0,6-0,9). Czas podtrzymywania gwarantowany przez większość UPS-ów wynosi ok. 15min. W razie potrzeby ciągłej pracy stosowana jest kombinacja: UPS + generator. Generator nie musi być tej samej mocy co UPS.

Metody kryptograficzne (krypto grafos - grec. ukryte pismo)

Symetryczny system kryptograficzny (klasyczny, konwencjonalny, z tajnym kluczem) :

Klucz deszyfrujący nie powinien być istotnie różny od szyfrującego (w 99% takie same). Jeżeli się różnią to do różnicy można dojść w czasie wielomianowym.

Asymetryczny system kryptograficzny (publiczny, z publicznym kluczem) :

zaszyfrować może każdy, odszyfrować tylko posiadacz klucza k*.

Warunki na to, aby system kryptograficzny był bezwarunkowo bezpieczny:

Klucz musi być stosowany jednokrotnie.

Klucz musi być co najmniej tak długi jak szyfrowana wiadomość.

Klucz musi być losowy.

Nic nie można powiedzieć o kluczu obserwując kryptogram.

System kryptograficzny jest obliczeniowo bezpieczny jeżeli :

używamy funkcji jednokierunkowej.

Def. Funkcja jednokierunkowa (one-way function)

f : X Y

dla każdego x należącego do X - wartość f(x) wyznacza się w czasie wielomianowym

dla każdego y należącego do Y - wartość f -1(y) wyznacza się w czasie wykładniczym, nawet jeżeli funkcja f jest znana

Dotychczas nie udowodniono, że istnieje chociaż jedna funkcja jednokierunkowa.

Funkcje uważane za jednokierunkowe :

rozkład liczby na czynniki pierwsze

Łatwo jest pomnożyć dwie długie liczby przez siebie, trudno jest je rozłożyć na czynniki pierwsze. Na razie najdłuższa liczba jaką udało się rozłożyć to liczba 130-cyfrowa.

2. y = x2 mod n

też używa się liczb rzędu 100 cyfr

3. y = ax mod n

też używa się liczb rzędu 100 cyfr

Kryptoanalityka:

Atak na tekst zaszyfrowany — dysponowanie tylko szyfrogramem;

Atak poprzez tekst częściowo znany — wiadomo, że pewne słowa zostały użyte;

Atak poprzez wybrany tekst jawny — kryptoanlityk może posłać coś do deszyfratora i obejrzeć wynik;

Atak poprzez wybrany tekst zaszyfrowany

Algorytmy kryptograficzne = szyfry.

Szyfry przestawieniowe.

1) można wykorzystać schemat :

macierz

tekst jawny figura geometryczna tekst zaszyfrowany

matryca

np. : (zapisujemy rzędami, odczytujemy kolumnami)

P

R

Z

E

S

T

A

W

I

E

N

I

O

W

Y

*

PSIO RTEW ZANY EWI*

2) inny rodzaj przestawiania (wykorzystanie klucza)

m = WLAZŁ KOTEK NA PŁOTEK I MRUGA ŁADN

k = MARYSIA

Zapisujemy klucz (słowo MARYSIA) a pod nim cyfry (kolejność jak w alfabecie, jeżeli litery w słowie się powtórzą to pierwsza ma mniejszy numer) :

Cyfry wyznaczą kolumny.

Następnie zapisujemy poniżej tekst jawny wierszami, tak żeby pisząc w wierszu o numerze x nie przekroczyć kolumny o numerze x.

M A R Y S I A

4 1 5 7 6 3 2

1 W L

2 A Z Ł K O T E

3 K N A P Ł O

4 T

5 E K I

6 M R U G A

7 Ł A D N

Po takim zapisaniu odczytujemy kolumnami (najpierw pierwsza kolumna, potem druga ...)

c = LZNKRA E TO WAKTEMŁ ŁAIUD OŁA KPGN

W rzeczywistym szyfrogramie spacje są usuwane.

Szyfry podstawieniowe (klasa bardzo bogata w przykłady). f : a β

(26 znaków)

α

A B C D E F G H I ... Z

β

Z O S I A B C D E ... Y

m = A B B C D I A

c = Z O O S I E Z

szyfr Cezara.

n - liczba liter w alfabecie

k - przesunięcie

szyfrowanie : c=(m+k) mod n

np. : n = 27

k = 3

m = Z A P I E K A N K A

c = C D T L H N D R N D

Jest to przykład „czystego” szyfru Cezara, w którym występuje przesunięcie liter o trzy.

3)

szyfrowanie : c=(m*k) mod n

np.: n = 27

k = 3

m = 1 2 9 10 ( 1 * 3 ) mod 27 = 3 itd...

c = 3 6 0 3

Ponieważ to przekształcenie jest niejednoznaczne (kłopoty podczas deszyfracji), trzeba nałożyć warunki :

NWD (k,n) = 1

np.: n = 27

k = 7

m = 2 3 4 5 6 ( 2 * 7 ) mod 27 = 14 itd...

c = 14 21 1 8 15

Jak obliczyć z powrotem m?

m=(c*k -1 ) mod n

UWAGA ! to jest arytmetyka modularna, taka że :

( a -1 * a ) mod n = 1

np.: dla n = 27

7 -1 = 4 bo ( 7 * 4 ) mod 27 = 1

5 -1 = 11 bo ( 5 * 11) mod 27 = 1

funkcja Eulera : ϕ: NN

ϕ(n) = ilość liczb mniejszych od n, względnie pierwszych z n.

Dwie liczby p i q są względnie pierwsze jeżeli NWD(p,q)=1.

N

ϕ(n)

liczby mniejsze od n, względnie pierwsze z n

1

0

-

2

1

1

3

2

1, 2

4

2

1, 3

5

4

1, 2, 3, 4

6

2

1, 5

7

6

1, 2, 3, 4, 5, 6

8

4

1, 3, 5, 7

9

6

1, 2, 4, 5, 7, 8

Własności funkcji Eulera :

1) Jeżeli p jest liczbą pierwszą to :

ϕ(p)=p-1

ϕ(pa)=pa-1(p-1)

2) Jeżeli p i q są liczbami pierwszymi to :

ϕ(pq)=(p-1)(q-1)

3) Jeżeli p1, p2, ... , pn są względnie pierwsze to :

ϕ(p1, p2, ..., pn)=ϕ(p1)ϕ(p2) ... ϕ(pn)

Algorytm obliczania at mod n aÎ{0,1,2,...,n-1}, t- liczba całkowita dodatnia.

Trzeba rozłożyć t na postać dwójkową : t=t j*2 j+t j-1*2 j-1+...+t 1*2+t 0

i zastosować algorytm:

w := 1

for i = j downto 0 do

begin

w := w2 mod n

if t i = 1 then w := (w * a) mod n

end

write (w) // w = at mod n

a-1 mod n = aϕ(n) - 1 mod n

Przykład ( przy obliczaniu wykorzystano własność funkcji Eulera):

ϕ (27) = ϕ (33) = 32 * (3-1) = 18

7-1 mod 27 = 717 mod 27

t = 17 = 10001b

i=4, w=1, w=1*7 mod 27=7;

i=3, w=72 mod 27=22;

i=2, w=222 mod 27=484 mod 27=25;

i=1, w=252 mod 27=625 mod 27=4;

i=0, w=42 mod 27=16, w=16*7 mod 27=112 mod 27=4

Szyfry homofoniczne (wieloznaczeniowe)

homonimy morze może

Bóg Bug buk

f : a 2B

Znaki alfabetu jawnego zastępujemy homofonami. Jednemu znakowi przypisujemy od 1 do kilku homofonów. Wtedy wiadomość jawną można zapisać na różne sposoby (prowadzi to do tego, że przestaje działać analiza częstotliwości występowania liter). Jeśli ktoś złamie szyfr to nie wie, którą wiadomość odszyfrował.

Przykład :

Alfabet jawny

Homofony

A

c, 9, $

B

X, g, 0, 8

C

s, t, 6, j

Wiadomość jawną m = ABBAC można zapisać różnie :

m = A B B A C

c 0 g $ j

9 0 0 $ 6

$ g X 9 s

Szyfry polialfabetyczne (wieloalfabetyczne)

Jeden alfabet wejściowy, wiele alfabetów wyjściowych. Korzystają ze zbioru przekształceń:

{fi : aBi}

W praktyce korzystamy ze znanych przekształceń i korzystamy z nich wielokrotnie.

Szyfr Veginre

c = (m + ki) mod 27 i = {1,2,3,4,5}

Przykład : k = NARTY

m = A B B C X O U R S A V

k = N A R T Y N A R T Y N

O C T ...

Łamanie: indeks koincydencji, badanie okresu klucza.

Szyfr Vernama (1917 r.)

Szyfr ten zachowuje się tym lepiej im dłuższy jest okres klucza (np. 10100). Klucz wygenerowany przez rejestr przesuwny ma dobre właściwości statystyczne. Klucz jest pseudolosowy, stosowany jednokrotnie. Szyfr ten jest dość wolny, ale przy spełnieniu podkreślonych warunków jest szyfrem bezwarunkowo bezpiecznym.

Szyfry wieloliterowe

Jednocześnie przekształca się wiele znaków.

Szyfr Playfair'a

Stosowano 25 znaków alfabetu. Klucz - układ znaków w tablicy (wygenerowany losowo), ilość możliwych kluczy 25!

Z

M

A

P

W

S

F

U

H

B

T

C

I

R

O

G

V

N

Y

D

X

Q

E

K

L

Każdą parę liter tekstu jawnego m1m2 szyfruje się wg następujących reguł:

Jeśli m1 i m2 znajdują się w tym samym wierszu, to c1 i c2 są znakami z prawej strony m1 i m2, przy czym pierwszą kolumnę traktuje się jako położoną na prawo od ostatniej kolumny.

Jeśli m1 i m2 znajdują się w tej samej kolumnie, to c1 i c2 są znakami położonymi poniżej m1 i m2, przy czym pierwszy wiersz traktuje się jako położony pod ostatnim wierszem.

Jeśli m1 i m2 znajdują się w różnych wierszach i kolumnach, to c1 i c2 są brane z przeciwległych rogów prostokąta wyznaczonego przez m1 i m2, przy czym c1 pochodzi z wiersza zawierającego m1, c2 zaś - z wiersza zawierającego m2.

Jeśli m1=m2, to do tekstu jawnego między te litery wstawia się nieznaczącą literę (np. X), co eliminuje powtórzenia.

Jeśli tekst jawny ma nieparzystą liczbę znaków, to na końcu tekstu jawnego dopisuje się nieznaczącą literę.

np. :

m = U N I W E R S Y T E T X X - znak pusty

c = I E O A K I H G I X G Z

2) Hill 1929

przekształca liczbę liter o długości t na tyle samo liter

Ogólnie :

c = (K * m ) mod n

Przykład t = 2

m = m1 c = c1 K = k11 k12

m2 c2 k21 k22

c1 = ( k11 m1 + k12 m2 ) mod n jeśli t = 3 to 3 równania itd...

c2 = ( k21 m1 + k22 m2 ) mod n

Łatwe do złamania, wystarczy przechwycić cztery pary (m,c). Wiedząc, że c=K*m mod n

można wyznaczyć K=cm-1 mod n.

Deszyfracja następuje za pomocą macierzy odwrotnej K-1.

DK(c)=K-1c mod n=K-1Km mod n=m, przy czym:

K-1K mod n=I (macierz jednostkowa).

Szyfry produktowe (kaskadowe)

produkt funkcji - złożenie funkcji

Enigma (lata 20-te)

1919 - maszyna szyfrująca do celów handlowych, wycofana po pewnych zmianach do celów wojskowych

1929 - kurs kryptologów w Poznaniu

Rajewski, Różycki, Zygalski - złamali Enigmę w 1930 r.

Maszyna powstała w Niemczech

Składała się z 5 do 8 walców (wirników) każdy z nich permutował 26 elementów - na wejście walca wchodziło 26 cyfr i wychodziło w zmienionym, przypadkowym porządku.

Połączenie kilku takich walców dawało dużo kombinacji.

Kluczem było początkowe ustawienie walców.

Jakie błędy popełnili Niemcy ? Te same słowa na początku i końcu komunikatów, przesyłanie klucza tym samym kanałem, którym przesyłali wiadomość.

Lucifer (lata 70-te IBM)

Wykonywane są na przemian podstawienia Si i permutacje Pi. Każde podstawienie Si jest funkcją klucza K.

P - permutacja

s - skrzynka

Działanie skrzynki s (uproszczony schemat dla dwóch wejść) :

Dla każdej skrzynki są ustalone dwie możliwe permutacje (ustawienie 0 lub 1).

Klucz to podanie ustawienia dla wszystkich skrzynek (jest ich 32 * 16 = 512). Klucz jest jednak 128 - bitowy, powielony do 512 bitów

Algebraiczna postać normalna funkcji boolowskiej :

Funkcja liniowa:

Przykład:

x1

x2

f(x1,x2)=a1x1⊕ a2x2

0

0

f(x1,x2)=0

0

1

f(x1,x2)=x1

1

0

f(x1,x2)=x2

1

1

f(x1,x2)=x1x2

Funkcja afiniczna:

2n+1 — liczba wszystkich funkcji afinicznych n-argumentowych

— liczba wszystkich funkcji boolowskich

Nieafiniczną funkcję boolowską nazywamy funkcją nieliniową. Rzędem nieliniowości funkcji boolowskiej nazywamy liczbę zmiennych w najdłuższym iloczynie ze współczynnikiem 1.

Funkcja 4-go rzędu

Przy n wejściach skrzynka może realizować n funkcji boolowskich. Żeby szyfr był dobry muszą one być nieliniowe (patrz wyżej).

Dla skrzynek S :

- 2 wejścia - wszystkie funkcje są liniowe

- 3 wejścia - 3% funkcji liniowych

- 4 wejścia - wszystkie funkcje są nieliniowe (dlatego skrzynki są w Luciferze 4-wejściowe).

DES - rozwinięcie Lucifera

NBS (dzisiaj NIST - National Institution of Standard and Technology) ogłosiła konkurs na szyfr blokowy

Wygrał IBM, w 1997 r DES został uznany za standard w USA.

DES pracuje na 64-bitowych blokach tekstu jawnego. Po początkowej permutacji blok wejściowy jest dzielony na lewą i prawą połowę, każda o długości 32 bitów. Następnie jest wykonywanych 16 cykli jednakowych operacji, nazywanych funkcjami f, w czasie których dane są łączone z kluczem. Po szesnastym cyklu lewa i prawa połowa są łączone z kluczem. Po szesnastym cyklu lewa i prawa połowa są łączone i końcowa permutacja (będąca odwrotnością permutacji początkowej) kończy przebieg algorytmu.

Klucz ma długość 56 bitów. (Zwykle klucz jest zapisany za pomocą 64 bitów, przy czym każdy co ósmy jest bitem parzystości, który jest pomijany). Kluczem może być dowolna liczba o długości 56 bitów, która może być zmieniona w dowolnej chwili. Kilka z tych liczb jest uważane za klucze słabe, lecz mogą one być pominięte. Całe bezpieczeństwo spoczywa na kluczu.

W każdym cyklu bity klucza są przesuwane, a następnie jest wybierane 48 bitów z 56 bitów klucza. Prawa połowa bloku danych jest rozszerzona do 48 bitów za pomocą permutacji z rozszerzeniem, łączona za pomocą poelementowej sumy modulo 2 z 48 bitami przesuniętego i spermutowanego klucza, jest dokonywane podstawienie bloku 32 nowych bitów za pomocą algorytmu podstawiania, a potem jeszcze raz jest dokonywana permutacja. Te cztery operacje tworzą funkcje f. Ciąg wyjściowy funkcji f jest dalej łączony z lewą połową za pomocą poelementowej sumy modulo 2. Wynikiem tych operacji jest nowa lewa połowa bloku; stara lewa połowa staje się nową prawą .

Permutacja początkowa dokonuje transpozycji bloku wejściowego np.:

58

50

42

34

26

18

10

2

60

52

44

36

28

20

12

4

62

54

46

38

30

22

14

6

64

56

48

40

32

24

16

8

57

49

41

33

25

17

9

1

59

51

43

35

27

19

11

3

61

53

45

37

29

21

13

5

63

55

47

39

31

23

15

7

Jeden krok algorytmu wygląda następująco :

Li+1 = Ri Ri = Li+1

Ri+1 = Li ⊕ f (Ri , ki) Li = Ri+1 ⊕ f (Ri , ki)

Szyfrowanie i deszyfrowanie następuje w tą samą stronę (przy deszyfrowaniu zamieniana jest kolejność kluczy - w 1-ej iteracji wybieramy K16, potem K15 itd., aż do K1).

Schemat całego algorytmu + schemat generowania kluczy cząstkowych :

0x01 graphic

Liczba możliwych kluczy to 256.

Średnia liczba bezpiecznych kluczy przy ataku brutalnym (całościowe przeszukiwanie to 254).

Kryptoanaliza różnicowa (zakłada możliwość wykonania eksperymentu - przesyłania wiadomości jawnej i odczytania zaszyfrowanej) pozwala zmniejszyć przestrzeń bezpiecznych kluczy do 247. Dokonuje się jej przez wprowadzenie dwóch wejść różniących się o ustaloną liczbę bitów i obserwuje wyjście.

Analiza liniowa (również atak przez tekst jawny) pozwala zmniejszyć przestrzeń bezpiecznych kluczy do 243 - to już nie jest bezpieczna liczba (można złamać w kilka dni).

Rozwiązaniem jest częste zmienianie kluczy.

Gdyby klucz był 128 - bitowy, byłoby 2128 kluczy - nie do złamania (dzisiaj).

W przypadku DESA znane są cztery klucze słabe(k1=k2) i sześć półsłabych (k1<> k2) takie, że :

triple DES - odmiana DES'a :

W 1980 r. ISO zaproponowała DES jako standard międzynarodowy DEA-1.

Amerykanie sprzeciwili się żeby ten szyfr został standardem - do zeszłego roku można było importować do USA urządzenia szyfrujące z kluczem do 40 bitów (DES ma klucz o długości 64).

FEAL - N

Algorytm wykorzystuje 64-bitowe bloki i 64 lub 128 - bitowy klucz. Zamiarem jego twórców było opracowanie algorytmu podobnego do DES, lecz takie, żeby każdy cykl był mocniejszy niż w DES. Algorytm taki, składający się z mniejszej liczby cykli, byłby szybszy.

(Fast Encipherment Algorithm, japońska firma NTT)

Podstawowy krok jak w DESie :

Liczbę kroków N ustala użytkownik.

N>= 4

Zalecane, żeby N było parzyste, a najlepiej 2x.

Realizację algorytmu rozpoczyna się od 64- bitowego bloku danych (może to być zarówno tekst jawny jak i szyfrogram ). Najpierw blok danych jest sumowany modulo 2 z 64 bitami klucza. Następnie blok danych jest dzielony na lewą i prawą połowę. Lewa jest sumowana modulo 2 z prawą, tworząc nową prawą połowę, i te dwie połowy przechodzą przez N cykli (na początku przez cztery). W każdym cyklu prawa połowa jest łączona z szesnastoma bitami klucza (przy użyciu funkcji f) i sumowana modulo 2 z lewą połową, tworząc nową prawą połowę. Oryginalna prawa połowa (sprzed rozpoczęcia cyklu) tworzy nową lewą połowę. Po N cyklach (nie należy zamieniać lewej i prawej połowy po N cyklach) lewa połowa jest sumowana modulo 2 z prawą połową, formując nową prawą połowę, a następnie lewa i prawa połowa podlegają konkatenacji i tworzą jeden 64-bitowy blok. Blok ten jest sumowany modulo 2 z 64-bitowym blokiem klucza i na tym realizacja algorytmu się kończy.

N - liczba iteracji w algorytmie

funkcja f

Realizacja funkcji f polega na pobieraniu 32 bitów danych oraz 16 bitów klucza i mieszaniu ich. Najpierw blok danych jest dzielony na części po 8 bitów, które są następnie sumowane modulo 2 i zastępowane każdy każdym, aż osiągną stan wyjściowy. Występujące tam funkcje są zdefiniowane następująco:

S0(a, b)= przesunąć cyklicznie w lewo 2 bity ((a + b) mod 256)

S1(a, b)= przesunąć cyklicznie w lewo 2 bity ((a + b + 1) mod 256)

Ten sam algorytm może być użyty zarówno do szyfrowania jak i do deszyfrowania. Różnica polega na odwrotnej kolejności podawania klucza.

Układ służący do generowania kluczy jest podobny.

Kryptoanaliza różnicowa

przy czterech krokach 8 kluczy (wystarczy zbadać)

8

128

12

221

16

229

20

237

24

245

28

256

30

260

32

263

wniosek: liczba kroków co najmniej 32

IDEA - International Data (Encryption) Encipherment Algorithm

Odporność na analityki kryptograficzne - nie jest znana metoda nawet ograniczenia przestrzeni kluczy w sposób istotny.

Szyfry wykładnicze

klucz szyfrujący to para e, n

m, c ∈{0,1,...,n-1}

c = me mod n ke = (e, n) - klucz szyfrujący

m = cd mod n kd = (d, n) - klucz deszyfrujący

e, d ∈ N

Szyfrowanie jednym kluczem, deszyfrowanie drugim = system asymetryczny

warunki:

(me mod n)d mod n = m — warunek oczywisty potrzebny do deszyfracji

(cd mod n)e mod n = c

Jakie warunki muszą spełniać e, d, n, aby przemienność m i c była możliwa?

Tw. Fermata

Jeżeli m i n spełniają warunki:

NWD(m, n)=1 {wzgl. pierwsze }

to mϕ(n) mod n =1

Tw. Jeżeli

1° e d mod ϕ(n) = 1, gdzie ϕ jest funkcją Eulera

2° m ∈ [0, n-1], przy czym NWD(m, n)=1

to:

(me mod n)d mod n = m

(md mod n)e mod n = m

Z 1° wynika, że dla pewnej liczby całkowitej r:

e d = r ϕ(n) + 1

wobec tego

Wybór d i e:

Wybieramy d z zadanego wcześniej przedziału (d musi być liczbą względnie pierwszą z ϕ(n)). Wyznaczamy e jako odwrotność d, co oznaczamy e=inv(d, ϕ(n)) na podstawie równania:

ed mod ϕ(n)=1

w sposób następujący:

e=dϕ(ϕ(n))-1mod ϕ(n).

Można oczywiście wybrać na początku e i analogicznie wyliczyć d.

Konstruując system kryptograficzny musimy mieć na uwadze warunki 1° i 2°.

Implementacje

szyfr Pohlinga — Hellmana { Moc algorytmu leży w złożoności — trudności w logarytmowaniu dyskretnym dla dużych n}

n - duża liczba pierwsza

ϕ(p) = p -1

e d mod (p - 1) = 1 → d = e-1 mod (p-1)= eϕ(p-1) -1 mod (p-1)

Klucze do szyfrowania ke=(e, p) i deszyfrowania kd=(d, p)

{ten szyfr traktować jako ciekawotkę}

Szyfr RSA (Rirest, Shamir, Adleman) (To trzeba znać)

c= me mod n

m = cd mod n

n = p q — iloczyn dwóch pierwszych liczb p, q — kilkusetcyfrowe, wybierane losowo

d ∈ [max (p, q)+1, n-1] - jest „dowolną” liczbą pierwszą z tego przedziału, ale musi być względnie pierwsza z ϕ(n),

    1. NWD (d, ϕ(n))=1; ϕ(n)=(p-1)(q-1) {info: chodzi o to, aby klucz deszyfrujący był długi}

    2. Jeśli po wyznaczeniu na podstawie d liczby e=inv(d, ϕ(n)) i e<log2n to trzeba wybrać inną wartość d.

    3. e d mod ϕ(n) = 1 → e d mod (p-1)(q-1) = 1

    4. ke=(e, n); kd=(d, n);

    5. ponownie mamy do czynienia z szyfrem asymetrycznym.

Można ujawnić klucz szyfrujący ke.

Z każdym użytkownikiem wiążemy parę (ke; kd). Każdy może zaszyfrować, zdeszyfrować może ten kto ma klucz kd — (dokładnie ten, kto zna d)

W tym przypadku są 2 możliwości ataku:

Przykład:

_ A B ... Z

0 1 2 ... 26

szyfrujemy BOAT m = 02 15 01 20 = m1 m2 m3 m4

generujemy klucze p=7, q=79

n=7*79=553

d=[max(7,79)+1,552]

(p-1)(q-1)=6*78=468

d=401

401*e mod 468 =1

e=401ϕ(468)-1mod 468

ϕ(468)= ϕ(223213)=144 ⇒ e=401143 mod 468 =461

ke=(461, 553), kd=(401, 553);

BOAT m= 02 15 01 20 = m1 m2 m3 m4

c1 = 2461 mod 553=445

c2 = 15461 mod 553=148

c3 = 1461 mod 553 = 1

c4 = 20461 mod 553 = 426

c = 445 148 001 426

Nie stosuje się RSA do szyfrowania - jest zbyt wolny. Używa się go do podpisu cyfrowego.

Szyfr Elgamal'a {wystarczy 200 cyfr}

g ∈ {0,1, ..., q-1}; q — liczba pierwsza

Każdy użytkownik wybiera sobie losowo liczbę całkowitą a, gdzie a ∈ {0,1,..., q-1}

kd = (a, q);

ke = (ga, q)

m - wiadomości

r - całkowite, losowo wybrane

przesyłamy (g r mod q, m g ar mod q)

odbiorca oblicza:

(gr)q mod q = gar mod q

(m g ar mod q)( gar)-1 mod q = m

Skąd wziąć duże liczby pierwsze? {sita są nieefektywne}

Przykładowe tw.

Liczba n jest pierwsza ⇔ istnieje x:

1° xn-1 mod n =1

2° x(n-1)/p. mod n ≠ 1; dla każdego p/(n-1)

Liczby Mersenne'a Mn=2n-1. Znamy ich 29 (ostatnia n=132049), jeżeli Mn liczbą pierwszą, to n jest liczbą pierwszą.

Algorytmy probabilistyczne

Solorey & Strassen (1977) — bada czy duża liczba n jest pierwsza

Nie dokonujemy rozkładu na czynniki pierwsze.

Stosujemy funkcję - symbol Jacobiego (oznaczenie J(b, n) lub (b/n))

b, n *n - liczba nieparzysta

* b≤n

* NWD (b, n) =1

J(7,13) = J(13 mod 7, 7)(-1)(6*12)/4 = J(6,7) = -1

{INFO: J(6673, 15693) — obliczyć dla wprawy}

Algorytm sprawdzania czy n jest liczbą pierwszą:

b ∈(1, n-1) ← wybieramy losowo

testujemy:

NWD (b, n) = 1;

J(b, n) mod n = b(n-1)/2 mod n lub J(b, n)≡b(n-1)/2 mod n

Losowo generujemy 100 prób (100 liczb b). Jeśli n jest liczbą pierwszą to punkty 1 i 2 są spełnione dla każdego b. W przeciwnym przypadku 1 i 2 są spełnione z prawdopodobieństwem co najwyżej 0.5 dla każdej wartości b, a więc najwyżej 1/2100 dla 100 wartości b.

Prościej - jeżeli n nie będzie liczbą pierwszą to jeden z dwóch warunków nie będzie spełniony.

Algorytm Merklego-Hellmana. Szyfr „plecakowy” (korzystamy z problemu upakowania)

Mamy dodatnią liczbę całkowitą b oraz wektor dodatnich liczb całkowitych I=(i1, i2, ..., in). Czy istnieje taki podciąg elementów ∈I, żeby ich suma była równa b?

(Z1, Z2, ..., Zn) - wektor zero-jedynkowy taki, żeby

m= (m1, m2, ..., mn) — wiadomość jawna zero-jedynkowa

k = (k1, k2, ..., kn) — klucz — wektor 0 - 1

— szyfrogram

Problem wyznaczenia klucza:

Algorytm wyboru klucza:

a = (a1, a2, ..., an) ciąg superwzrastający

; 1 ≤ i ≤ n

np.: (1, 2, 4, 8, 16)

wybieramy parę liczb (r, w) 1< w < r;

; NWD(r, w) = 1;

for i=1 to n do

ki := w ai mod r — klucz szyfrujący jawny ke

kd = (a1, a2, ..., an, w-1, r) — klucz deszyfrujący {INFO: (a1, a2, ..., an, w-1) — tajne elementy klucza}

Algorytm deszyfrowania:

wejście S

wyjście m(m1, m2, ..., mn)

S'=Sw-1 mod r

if S'≥an then mn=1 else mn=0;

for i:=n-1 downto 1 do

if (Si=S-) then mi=1 else mi=0;

S=Sw-1 mod r =

ki = wai mod r

w-1ki mod r = ai mod r

Przykład:

n = 5

m = (0,1,0,1,1)

r = 8443

a = (171, 196, 457, 1191, 2410)

w = 2550

w-1 mod r = 3950 ;w-1=inv(w,r)

ke = (5457, 1663, 216, 6013, 7439)

m ke = 1663 + 6013 + 7439 = 15115

deszyfrowanie:

S'=15114 * 3950 mod 8443 = 3797

W połowie lat 80-tych wykazano, że można go złamać w czasie wielomianowym. Istnieje podejrzenie, że osłabia go ciąg superwzrastający. Multiplikatywny nie został jeszcze złamany.

Techniki kryptograficzne

m = m1, m2, ...

k - stałe lub k = k1, k2, ...

Szyfry:

Przykłady: Vigenere'a, Vernama.

Szyfry strumieniowe:

Losowość klucza - podejście statystyczne - musi spełniać testy statystyczne.

Golomb (60-te) trzy testy losowości ciągów binarnych.

Definicje:

Seria w ciągu (xn) to podciąg identycznych elementów takich, że poprzedza go i następuje po nim inny element.

Funkcja autokorelacji — określa stopień zgodności ciągu oryginalnego i przesuniętego (przesuwanie cykliczne).

0 w ciągu = 1

1 w ciągu = -1

; T — okres

Postulaty Golomba

ciąg o długości T

Jeżeli T jest parzyste to liczba zer i jedynek jednakowa.

    1. Jeżeli T jest nieparzyste to liczba zer i jedynek różna o ± jeden

    2. W cyklu o długości T połowa serii ma długość 1, 1/4 długość 2, 1/8 długość 3,....

Funkcja autokorelacji:

Złożoność strukturalna ciągu (co do losowości)

x0, f(x0), f(f(x0)), f(f(f(x0))), ... — ciągi strukturalnie losowe

f — funkcja jednokierunkowa

Łatwo wyznaczyć ten ciąg

Podejście teoretyczne — ciągi algorytmicznie losowe

Złożoność Kołmogorowa

Jeżeli ciąg ma długość n, k(x)≥n; k(x) — ciąg Kołmogorowa

Ten problem jest nierozstrzygalny - nie można orzec, że ciąg jest algorytmicznie losowy.

Urządzenia generujące ciągi liczbowe:

Rejestr przesuwający (n-stopniowy).

dla uproszczenia zakładamy, że rejestr jest binarny

f — funkcja boolowska najlepiej

Rejestr liniowy (ze sprzężeniem zwrotnym) - LFSR.

trójstopniowy

1

0

1

1

1

0

0

0

1

1

1

0

0

1

1

1

1

0

0

1

0

1

0

0

1

1

0

1

0

0

0

0

1

T=2n-1 maksymalny okres jaki można uzyskać w rejestrach liniowych; pseudolosowy maksymalny ciąg wygenerowany przez rejestr n-stopniowy

w(x) = xn + an-1xn-1 + ... + a1x + a (?????) - książka podaje taką wersję: w(x)=anxn+an-1xn-1+...+a1x+1

Tw. Największa liczba całkowita T taka, że w(x) dzieli xT+1 wyznacza okres ciągu generowanego przez liniowy rejestr zwrotny z wielomianem sprzężenia zwrotnego w(x)

w(x) — wielomian nierozkładalny {nie można go przedstawić za pomocą iloczynu wielomianów}

Jeżeli rejestr generuje ciąg maksymalny to jego wielomian jest nierozkładalny. {W drugą stronę nie zachodzi!}

Tw. Niech w(x) nędzie wielomianem charakterystycznym nLFSR. Najmniejsza liczba całkowita p., taka że xp⊕1|w(x) określa okres generowanego przez ten rejestr ciągu.

Dla ustalonego n ile jest wielomianów gen. ciąg maks.

λ(5)=6

λ(8)=16

λ(10)=60

λ(16)=2048

λ(32)=67108864

wszystkich wielomianów jest 2n {a0, a1, ...,an ∈{0,1}}

Rejestry liniowe nie są dobre !

wystarczy przechwycić ciąg o długości 2n, można wyznaczyć wszystkie współczynniki a0, a1, ...,an

Należy skomplikować urządzenie i zrobić nieliniową funkcję sprzężenia zwrotnego...

Nieliniowe rejestry przesuwające (z liniową funkcją sprzężenia zwrotnego)

okres = 2n jest maksymalny (tutaj można dopuścić same zera w stanie początkowym)

Ciąg de Bruijn'a — T=2n

graf de Bruijn'a - opisuje wszystkie możliwe zachowania rejestru generującego ciągi maksymalne

Gn(V, E)

V=X(n) - zbiór wierzchołków to zbiór n - elementów ciągów

    1. Cyklem de Bruijna grafie Gn nazywamy cykl przechodzący przez każdy wierzchołek grafu dokładnie jeden raz. Cykl de Bruijna w grafie Gn jest więc cykl o okresie T=2n. W Gn istnieje cykli. Każdemu cyklowi de Bruijna odpowiada ciąg maksymalny generowany przez nNFSR. Będziemy go nazywać ciągiem de Bruijna rzędu n. Dla grafu G4 cykl (0001, 0010, 0100, 1001, 0011, 0110, 1101, 1010, 0101, 1011, 0111, 1111, 1110, 1100, 1000, 0000) jest cyklem de Bruijna. Odpowiada mu ciąg maksymalny 000100110101111... generowany przez 4NFSR.

x= x1, x2, ..., xn ; y= y1, y2, ..., yn;; x, y ∈E

y= x2x3 ... xnyn

Przykład n=3:

B(3)=2

B(4)=16

B(6)=67108884

B(7)≈1,4*1017

B(8)≈1,33*1036

B(16)=109259

Trudność w syntezie funkcji f

(Konstrukcja funkcji sprzężenia zwrotnego nNFSR)

WEJŚCIE: Funkcja sprzężenia zwrotnego f(x0, x1, ..., xn-1) określona dla nLFSR generującego ciąg maksymalny.

    1. METODA:

    2. f*(x0, x1, ..., xn-1) = f(x0, x1, ..., xn-1) ⊕

    3. WYJŚCIE:

    4. Funkcja sprzężenia zwrotnego f*(x0, x1, ..., xn-1) dla nNFSR generującego ciąg maksymalny.

Zauważmy, że w przypadku nLFSR ciąg maksymalny oznacza ciąg o okresie 2n-1, natomiast dla nNFSR jest to ciąg o okresie 2n. Funkcja nieliniowa dodana do funkcji sprzężenia zwrotnego nLFSR generującego ciąg maksymalny sprawia, że rejestr może znaleźć się w stanie 00...0 i opuścić go tworząc w ten sposób cykl o okresie Y=2n.

    1. Przykład:

    1. x0 x1 x2

      f(x0 x1 x2)

      f*(x0 x1 x2)

      0 0 0

      0

      1

      0 0 1

      0

      1

      0 1 0

      1

      0

      0 1 1

      1

      1

      1 0 0

      1

      0

      1 0 1

      1

      0

      1 1 0

      0

      1

      1 1 1

      0

      0

      0 0 0 → 0 0 1 → 0 1 1 → 1 1 1 → 1 1 0 → 1 0 1 → 0 1 0 → 1 0 0 → 0 0 0

      Algorytm Prefer-one

      WEJŚCIE:

      Liczba naturalna n.

      METODA:

      Wpisz n zer.

      Aby otrzymać k-ty bit ciągu, k>n, dopisz 1. Jeśli utworzona w ten sposób n-tka nie wystąpiła dotąd w ciągu, to k:=k+1 i powtarzaj krok 2. W przeciwnym przypadku.

      Dopisz 0. Jeśli utworzona w ten sposób n-tka nie wystąpiła dotąd w ciągu, to k:=k+1 i przejdź do kroku 2. Jeśli wystąpiła, zatrzymaj się.

      WYJŚCIE:

      Ciąg maksymalny o okresie 2n.

      Przykład:

      Stosując algorytm dla n=4 otrzymujemy:

      00001111011001010000,

      a zatem cykl (0000, 0001, 0011, 0111, 1111, 1110, 1101, 1011, 0110, 1100, 1001, 0010, 0101, 1010, 0100, 1000) jest cyklem de Bruijna. W celu otrzymania następnego cyklu, w otrzymanym ciągu zamieniamy ostatnią 1na 0:

      0000111101100100

      i kontynuujemy postępowanie począwszy od kroku 2 algorytmu otrzymując ciąg

      00001111011001001

      nie będący maksymalnym. Wobec tego kont. postępowanie:

      000011110110000

      00001111010110010000, ←

      by w rezultacie uzyskać ciąg wskazany strzałką. Postępując w sposób dalej uzyskujemy kilka następnych ciągów (strzałką ← oznaczono ciągi wynikowe):

      00001111010110000

      00001111010101

      00001111010010110000 ←

      00001111010010000

      00001111010010000

      00001111010000

      00001111001011010000 ←

      ...

      Pytanie: czy ciąg wygenerowany przez rejestr nieliniowy można wygenerować za pomocą rejestru liniowego?

      TAK, bardzo łatwo!

      16 stopni (?)

      Każdy ciąg można uzyskać za pomocą rejestru liniowego.

      Pytanie o jego najmniejszą liczbę stopni?

      L(x) — złożoność linowa ciągu x

      Tw.

      Niech x będzie ciągiem de Bruijn'a generowanym przez n-stopniowy nieliniowy rejestr przesuwający.

      Wówczas

      2n-1+n ≤ L(x) ≤ 2n-1

      n=4 L(x)≥12

      n=8 L(x)≥136

      n=16 L(x)≥216-1+16 > 32000

      Będziemy używać rejestry liniowe w konfiguracjach ... (?)

      x1

      x2

      y

      0

      0

      0

      0

      1

      0

      1

      0

      0

      1

      1

      1

      Generator pani Vera Pless

      NWD (m, n) = 1 ⇒ T =T1*T2= (2n-1) (2m-1)

      T1=2n-1; T2=2m-1

      Wykorzystanie szyfrów blokowych

      Metoda licznikowa.

      I0 - wartość początkowa rejestru

      Kolejne bloki wejściowe do E są generowane przez prosty licznik. Za pomocą tej metody jest możliwe generowanie i-tego znaku klucza ki bez konieczności generowania pierwszych i-1 znaków klucza przez ustawienie licznika na wartość I0+i-1 - jest to szczególnie przydatne przy dostępie do i-tego znaku w pliku o dostępie bezpośrednim.

      Output - block - feedback mode — OBF

      W tej metodzie rejestr (bufor) służy jako wejście do algorytmu EB szyfru blokowego z kluczem B. Podczas i-tej iteracji jest realizowany algorytm EB(bufor), młodszy znak (prawy) bloku wyjściowego jest wygenerowany znakiem klucza ki. Otrzymany w wyniku algorytmu blok znaków jest ponownie umieszczany w buforze. Każdy element ki jest znakiem a nie bitem. Redukuje to liczbę szyfrowań z użyciem algorytmu EB. Wiadomość wejściowa jest dzielona na strumień znaków i szyfrowana z jednoczesnym generowaniem klucza.. Technika ta jest również nazywana wewnętrznym sprzężeniem zwrotnym, ponieważ sprzężenie jest wewnętrzne w stosunku do procesu generowania strumienia klucza, w przeciwieństwie do metody samosynchronizującej, w której pętla sprzężenia zwrotnego wychodzi do strumienia już zaszyfrowanego.

      Szyfr samosynchronizujący:

      CFB — Cipher Feedback Mode

      Rejestr sprzężenia zwrotnego R jest rejestrem przesuwającym, w którym każdy zaszyfrowany znak ci natychmiast po jego wygenerowaniu jest przesuwany w jeden koniec (znak z drugiego końca jest po prostu odrzucany). Rejestr jest inicjowany wartością początkową I0. Podczas każdej iteracji algorytm E szyfru blokowego generuje na podstawie rejestru R blok wyjściowy, z którego najmniej znaczący znak jest następnym znakiem klucza.

      W metodzie tej błędy transmisji wpływają na pętlę sprzężenia zwrotnego. Jeśli podczas transmisji znak zostanie zmieniony lub zgubiony to rejestr przesuwający odbiorcy będzie miał inną wartość niż nadawcy (tekst nie zostanie poprawnie odszyfrowany). Ponieważ rejestry synchronizują się co n cykli (n-liczba znaków w bloku) tekst będzie ponownie poprawnie deszyfrowany.

      Aby zdeszyfrować i-ty znak ci zaszyfrowanego tekstu wystarczy umieścić w rejestrze R n poprzednich znaków zaszyfrowanego tekstu ci-n,...,ci-1 i wykonać jeden cykl sprzężenia zwrotnego w celu otrzymania klucza ki.

      Ostatni blok jest zwykle sumą kontrolną, zależną od każdego bitu szyfrowanej wiadomości.

      m = ORGANIZACJA

      k = SGYEFTBABEO

      c = GYEFTABABEOP

      O + S mod 27 = G

      Techniki szyfrowania blokowego.

      Do tej pory rozpatrywaliśmy taki schemat (na rysunku nie zaznaczono klucza).

      Code Book Mode — tak nazywamy ten tryb stosowania szyfru; jednakowe bloki będą miały taką samą postać zaszyfrowaną.

      Wniosek:

      Nie szyfrujemy wiadomości dłuższych od długości bloku (DEC 64bity)

      Cipher Block Chaining — szyfrowanie wiązane blokowe (CBC)

      C0=I0

      Ci+1=E(cimi+1)

      mi+1= ciD(ci+1)=

      =ciD(E(cimi+1))= mi+1

      Metoda podobna do CFB z tą różnicą, że do rejestru przesuwającego jest ładowany przez pętlę sprzężenia cały zaszyfrowany blok, którego znaki wraz ze znakami następnego zaszyfrowanego bloku uczestniczą w obliczaniu różnicy symetrycznej. Następnie wynik tej różnicy jest przesyłany do szyfru blokowego realizującego algorytm E z kluczem K.

      Ponieważ każdy zaszyfrowany blok ci jest obliczany z mi oraz z poprzedniego bloku ci-1, zatem jeden błąd, który może wystąpić podczas transmisji, ma wpływ najwyżej na dwa bloki. Podobnie jak w CFB ostatni blok jest sumą kontrolną.

      Podstawowe usługi kryptograficzne

      • poufność kontroli dostępu

      • integralność danych — odpowiada na pytanie czy nasze dane nie zostały zmienione w sposób przypadkowy lub celowy

      • podpis cyfrowy (uwierzytelnianie)

      • kontrola dostępu

      • niezaprzeczanie

      Integralność danych

      Jednokierunkowa funkcja skrótu — argumentem jednokierunkowej funkcji skrótu H(M) jest wiadomość M o dowolnej długości. Wartością tej funkcji jest liczba h o ustalonej długości.

      h = H(M), przy czym h jest liczbą o długości m

      Istnieje wiele funkcji, których argumentem są liczby o dowolnej długości i które przyjmują wartości będące liczbami o ustalonej długości, lecz jednokierunkowe funkcje skrótu mają dodatkowe właściwości:

      • Mając dane M, łatwo jest obliczyć h

      • Mając dane h, trudno jest obliczyć M

      • Mając dane M, trudno jest znaleźć inną wiadomość M' taką, że H(M)=H(M').

      Znaczenie słowa trudno zależy od określenia wymagań bezpieczeństwa w danej sytuacji, lecz dla większości rzeczywistych implementacji definiuje się pojęcie trudny problem jako wymagający wykonania 264 operacji, a niekiedy nawet więcej.

      Jednokierunkowa funkcja skrótu zależna od klucza jest często oznaczana jako MAC (Message Authentication Code - ciąg uwierzytelniania wiadomości). Tylko osoba mająca identyczny klucz może zweryfikować skrót. Są one bardzo użyteczne w zabezpieczaniu autentyczności bez wprowadzania tajności. Przykład takiej funkcji:

      m = m1m2m3...mn-1

      H = Hn = h(m)

      Hi=p(Hi-1, mi)

      MAC na bazie szyfru blokowego

      Najprostszym sposobem utworzenia jednokierunkowej funkcji skrótu zależnej od klucza jest szyfrowanie wiadomości za pomocą algorytmu blokowego w trybie szyfrowego sprzężenia zwrotnego (CFB) (ANSI X9.9, ISO9797). Funkcja RIPE-MAC bazuje na normie ISO9797 i korzysta z algorytmu DES jako blokowej funkcji szyfrującej. Istnieją dwie odmiany funkcji RIPE-MAC: jedna wykorzystująca zwykły algorytm DES (RIPE-MAC1), druga wykorzystująca trzykrotne szyfrowanie algorytmem DES w celu uzyskania jeszcze większego bezpieczeństwa (RIPE-MAC3). Funkcja RIPE-MAC1 wykonuje szyfrowanie 64 bitów bloku wiadomości alg. DES jednokrotnie, RIPE-MAC3 - trzykrotnie.

      Algorytm składa się z trzech części. Najpierw wiadomość jest poszerzana do długości będącej wielokrotnością 64 bitów. Następnie poszerzona wiadomość jest dzielona na 64-bitowe bloki. Do skracania tych bloków używa się funkcji kompensującej z kluczem, sterowanej przez klucz tajny, która daje pojedynczy blok 64 bitów. W tym bloku można użyć alg. DES, jednorazowo lub trzykrotnie. Ostatecznie ciąg wyjściowy jest poddawany szyfrowaniu na bazie alg. DES z innym kluczem, otrzymanym z klucza wykorzystywanego w procesie kompensacji.

      Jednokierunkowa funkcja skrótu bez klucza, z wykorzystaniem alg. szyfru blokowego (ISO10118-2)

      Przekształcenie U nie jest konieczne, natomiast musi być kiedy klucz jest dłuższy od szyfrowanej wiadomości.

      Dwa powyższe rozwiązania tworzą skróty 64-bitowe (niedobre - powinno być min. 128 bitów)

      Inne funkcje skrótu:

      MD4, MD5, SHA (secure Hash Alghoritm na bazie MD5), RIPEMD (128 bit), RIPEMD-160 (160 bit.)

      Podpis cyfrowy

      związany z układem asynchronicznym (inne klucze szyfrujący i deszyfrujący)

      sign(m) = Dk*(m)

      podpis jest związany z kluczem i podpisującym

      Podpisuje się skrót wiadomości

      Problem w wygenerowaniu par kluczy (k, k*) dla każdego użytkownika.

      Dwie filozofie PGP każdy użytkownik generuje sobie klucze

      autorytet generuje i rozsyła klucze

      26

      Ochrona danych — prof. J. Stokłosa.



      Wyszukiwarka

      Podobne podstrony:
      W7 Kodowanie i Kryptografia Szyfry symetryczne 2g
      Nikodem Metody ochrony przed kryptoanaliz¡
      5 Algorytmy blokowe kryptoanaliza
      Istota kryptograficznej ochrony informacji
      Miejsce, rola i zasady działania urządzeń kryptograficznej ochrony
      ALGORYTMY POSTĘPOWANIA KONWOJ, Technik Ochrony Fizycznej Osób i Mienia, Konwoje
      Ochrona własności intelektualnej 7
      Układy Napędowe oraz algorytmy sterowania w bioprotezach
      rodzaje ooznaczen i ich ochrona
      Ochrona budowli przed wodą i wilgocią gruntową
      5 Algorytmy
      Ochrona prawna Wymiar sprawiedliwosci
      ochrona przeciwpozarowa
      5 Algorytmy wyznaczania dyskretnej transformaty Fouriera (CPS)
      WykĹ‚ad ochrona pacjenta przed zakażeniem
      Ochrona dz 1 ppt
      Formy ochrony przyrody w Polsce

      więcej podobnych podstron