background image

 

 

Podstawy kryptografii

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Plan wykładu

• Wstęp

• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Wstęp

• Podstawowym sposobem zabezpieczania 

informacji przesyłanych w sieci komputerowej jest 

kryptografia

• Kryptografia zajmuje się zapisywaniem tekstu w 

sposób utajniony. Szyfrowanie to zamiana tekstu 

jawnego na kryptogram. Deszyfrowaniem 

nazywamy operację odwrotną

• Kryptoanaliza zajmuje się zagadnieniami 

związanymi z łamaniem szyfru, czyli próbą 

znalezienia klucza szyfru lub odczytaniu tekstu 

jawnego na podstawie kryptogramu, bez 

znajomości klucza

• Systemy kryptograficzne opisują sposób 

realizacji usług w sieci teleinformatycznej przy 

użyciu technik kryptograficznych

background image

 

 

Motywacja rozwoju 

kryptografii

• Wzrost potrzeb związanych z bezpieczeństwem z 

powodu rozwoju sieci komputerowych

• Potrzeba realizacji elektronicznych transakcji, 

operacji finansowych z zapewnieniem 
uwierzytelnienia, podpisu cyfrowego, 
niezaprzeczalności, itd.

• Trudna realizacja podanych usług 

bezpieczeństwa bez stosowania technik 
kryptograficznych

background image

 

 

Plan wykładu

• Wstęp

• Rodzaje systemów kryptograficznych

• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Rodzaje systemów 

kryptograficznych

Według metody przekształcenia tekstu jawnego w 

tekst zaszyfrowany: 

• Podstawienie zakłada, że każdy element tekstu 

jawnego (bit, znak, litera) jest odwzorowywany na 
inny element

• Transpozycja zakłada przestawienie kolejności 

elementów tekstu jawnego. Podstawowy wymogi 
to brak straty informacji i odwracalność każdej 
operacji. Większość systemów, zwanych 
systemami produktowymi (ang. product systems
przewiduje wiele etapów podstawiania i 
transponowania

background image

 

 

Rodzaje systemów 

kryptograficznych

Według liczby używanych kluczy:
• Szyfrowanie z jednym kluczem 

(konwencjonalne, symetryczne, z tajnym 
kluczem), np. AES, DES

• Szyfrowanie z dwoma kluczami (asymetryczne, 

z kluczem jawnym), np. RSA

background image

 

 

Rodzaje systemów 

kryptograficznych

Według sposobu przetwarzania tekstu jawnego:
• Szyfr blokowy przetwarza po kolei każdy blok 

tekstu wejściowego, produkując jeden blok 
wyjściowy na każdy blok wejściowy

• Szyfr strumieniowy przetwarza elementy 

wejściowe w sposób ciągły, produkując 
jednocześnie materiał wyjściowy

background image

 

 

Bezpieczeństwo systemów 

kryptograficznych

• Schemat szyfrujący jest bezwarunkowo 

bezpieczny, jeżeli generowany tekst 
zaszyfrowany nie zawiera wystarczająco dużo 
informacji, by jednoznacznie określić 
odpowiadający mu tekst jawny, niezależnie od 
ilości dostępnego tekstu zaszyfrowanego

• Schemat szyfrujący jest obliczeniowo 

bezpieczny, jeżeli koszt złamania szyfru 
przewyższa wartość informacji zaszyfrowanej 
oraz/lub czas potrzebny do złamania szyfru 
przekracza użyteczny „czas życia” informacji

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych

• Historia kryptografii

• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Historia (1)

• W VII w p.n.e w Grecji stosowano do szyfrowania 

scytale 

• Tekst pisany był na nawiniętym na patyk pasku 

skórzanym

• Po rozwinięciu tekst widoczny na pasku był 

trudny do odszyfrowania

• Odszyfrowanie wymaga ponownego 

nawinięcia na patyk

• Na przykład tekst „Proszę o pomoc”

Pros

zęop

omoc

• Po odczytaniu na pasku wygląda „pzoręmooospc”

background image

 

 

Historia (2)

• Szyfr Cezara polegający na przesunięciu liter 

tekstu o 3 używany przez Juliusz Cezara do 
komunikacji z wojskami

• Dzięki stosowaniu tego szyfru Juliusz Cezar podbił 

całą Galię z wyjątkiem pewnej małej wioski ;-) 

background image

 

 

Historia (3)

• Polacy w czasie wojny polsko-bolszewickiej (1919-

1920) potrafili odszyfrować depesze wroga, co 
ułatwiało działania wojenne (więcej na 
serwisy.gazeta.pl/df/1,34467,2856516.html)

background image

 

 

Historia (4)

• Enigma – maszyna szyfrująca 

używana przez wojska 
niemieckie od lat 20 XX wieku 
do czasów drugiej wojny 
światowej. W 1932 roku 
Enigma została złamana przez 
polskich matematyków: Marian 
Rejewski, Jerzy Różycki i 
Henryk Zygalski)

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii

• Szyfrowanie symetryczne

• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Uproszczony model 

szyfrowania konwencjonalnego 

Ź r ó d ł o

k o m u n i k a t u

A l g o r y t m

s z y f r u j ą c y

T e k s t  j a w n y

T e k s t   j a w n y

A l g o r y t m

d e s z y f r u j ą c y

K a n a ł   i n f o r m a c y j n y

T e k s t   z a s z y f r o w a n y

W s p ó l n y   k l u c z

M i e j s c e

p r z e z n a c z e n i a

A

B

background image

 

 

Model szyfrowania 

konwencjonalnego 

• Szyfrator tworzy tekst zaszyfrowany Y=E

K

(X)

• Odbiorca posiadający klucz może odwrócić 

przekształcenie X=D

K

(Y)

• Przeciwnik śledzący Y, ale pozbawiony dostępu do X 

i K, próbuje odgadnąć hipotetyczny tekst jawny X` i 

hipotetyczny klucz K`. Zakładamy, że zna on 

algorytm szyfrujący E i deszyfrujący D

Ź r ó d ł o

k o m u n i k a t u

S z y f r a t o r

Ź r ó d ł o

k l u c z a

B e z p i e c z n y   k a n a ł

D e s z y f r a t o r

M i e j s c e

p r z e z n a c z e n i a

K r y p t o a n a l i t y k

X `

K `

X

Y

X

K

background image

 

 

Techniki szyfrowania 

• Steganografia służy do ukrycia faktu istnienia 

komunikatu, np. zaznaczanie liter, atrament 

sympatyczny 

• Techniki podstawiania polega na zastępowaniu 

elementów (bitów) tekstu jawnego innymi 

elementami (bitami)

• Techniki transpozycyjne polegają na 

permutacji liter (przestawieniu) tekstu jawnego

background image

 

 

Steganografia (1)

• Herodot w "Dziejach" opisuje następujący tajny 

przekaz informacji

• Despota Hiastus przetrzymywany przez króla 

perskiego Dariusza postanawia przesłać 
informację
 do swego zięcia Arystogorasa z 
Miletu, tak aby mogła się ona przedostać mimo 
pilnujących go strażników 

• Aby tego dokonać na wygolonej głowie swego 

niewolnika tatuuje przesłanie 

• Kiedy niewolnikowi odrosły włosy posyła go z 

oficjalnym, mało istotnym listem

background image

 

 

Steganografia (2)

• Stosowanie 

atramentu 
sympatycznego

• Nakłuwanie szpilką 

liter tekstu (książki)

• Sformułowanie 

komunikatu, aby 
sekwencja kolejnych 
liter, sylab bądź 
wyrazów tworzyła 
ukrytą wiadomość

background image

 

 

Steganografia w informatyce

• W komputerowym zapisie obrazu (zdjęcie jpg, 

film mpg) lub dźwięku (mp3) pewne bity można 
zmienić bez wpływu na jakość obrazu (dźwięku) 

• Na tych bitach przesyłane są tajne informacje

które można odczytać wiedząc gdzie zostały 
ukryte 

background image

 

 

Techniki podstawiania 

• Technika podstawienia polega na zastępowaniu 

elementów (liter, bitów) tekstu jawnego innymi 
elementami (b literami, bitami) według 
ustalonego schematu

• Przykładowe algorytmy: szyfr Cezara, Szyfr 

Playfair, szyfr Vigenere’a

background image

 

 

Szyfr Cezara (1)

• Szyfr Cezara polega na zastąpieniu każdej litery 

alfabetu literą znajdującą się o trzy pozycje dalej

C=E(p)=(p+3) mod (26)

• C to litera tekstu zaszyfrowanego odpowiadająca 

literze tekstu jawnego o indeksie p

• Przesunięcie może mieć wielkość dowolną, więc 

ogólna postać algorytmu wygląda następująco:

C=E(p)=(p+k) mod (26),    0<k<26

• Algorytm deszyfrujący ma postać:

p=D(C)=(C-k) mod (26)

background image

 

 

Szyfr Cezara (2)

• Przykład dla szyfru Cezara (przesunięcie o 3 znaki)
• Klucz

a b c d e f g h i j k l m n o p q r s t u v w x y z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

• Szyfrowanie
tekst jawny       :  szyfr juliusza cezara
tekst zaszyfrowany:  VCBIU MXOLXVCD FHCDUD

• Dla szyfru Cezara łatwo można przeprowadzić 

kryptoanalizę metodą brutalną polegającą na 
wypróbowaniu 25 możliwych kluczy k

background image

 

 

Szyfry jednoalfabetowe 

• Dla szyfrów jednoalfabetowych możemy 

zastosować jako szyfr dowolną permutację 26 
znaków alfabetu

• Oznacza to 26!=4*10

26

 możliwych kluczy, czyli 

można wykluczyć próby rozszyfrowania metodą 
brutalną

• Jednak, jeśli kryptoanalityk zna tekst 

zaszyfrowany i jego charakter (język tekstu 
jawnego), może on wykorzystać regularności 
zawarte w języku

background image

 

 

Szyfry jednoalfabetowe - 

kryptoanaliza

• Dla każdego języka można określić względną 

częstość występowania liter (film „Motyl i 
skafander”)

• Poniższa tabela prezentuje procentową częstość 

względną występowania poszczególnych liter w 
tekście angielskim 

background image

 

 

Techniki transpozycyjne (1)

• Techniki transpozycyjne polegają na permutacji 

liter tekstu jawnego

• Najprostszym takim szyfrem jest tzw. technika 

płotu, polegająca na tym, że tekst jawny zapisuje 

się jako ciąg kolumn, a odczytuje jako ciąg 

wierszy

• Na przykład dla płotu o wysokości 2
tekst jawny       : szyfrtranspozycyjny
syrrnpzcjy
zftasoyyn
tekst zaszyfrowany: syrrnpzcjyzftasoyyn

background image

 

 

Techniki transpozycyjne (2)

• Bardziej skomplikowany system polega na zapisaniu 

komunikatu w prostokącie, a następnie odczytanie ze 

zmianą kolejności kolumn

Klucz       : 3 1 4 2 7 6 5
tekst jawny : b a r d z i e
              j s k o m p l
              i k o w a n y
              s y s t e m p
              o l e g a n a
tekst zaszyfrowany: 

ASKYLDOWTGBJISORKOSEELYPAIPNMNZMAEA

• Szyfr transpozycyjny można uczynić znaczenie 

bezpieczniejszym poprzez stosowanie kilku etapów 

transpozycji, co utrudnia znacznie rekonstrukcję 

klucza 

background image

 

 

Konfuzja i dyfuzja 

Shannon, twórca teorii informacji przedstawił w 

1949 roku dwie główne zasady szyfrowania: 

• Konfuzja oznacza rozmycie zależności pomiędzy 

tekstami jawnymi a ich zaszyfrowanymi wersjami 

• Dyfuzja oznacza rozłożenie zawartych w tekście 

jawnym informacji w całym tekście 
zaszyfrowanym 

Proste szyfry podstawieniowe (szyfr Cezera, szyfr 

Vigenere’a) zapewniają tylko konfuzję, gdyż każda 
litera jest szyfrowana oddzielnie

background image

 

 

Efekt lawinowy 

• Efektem lawinowym określamy intensywniejszy 

niż dla dyfuzji rozmazanie tekstu jawnego w 

tekście zaszyfrowanym 

• Jest spotykany dla szyfrowania blokowego 
• Każdy bit zaszyfrowanego tekstu zależy od 

wszystkich bitów tekstu jawnego w danym bloku

• Dla zmiany pojedynczego bitu tekstu jawnego lub 

klucza, każdy bit tekstu zaszyfrowanego powinien 

zmienić swoją wartość z prawdopodobieństwem 

równym dokładnie 50%

• Kryptoanaliza różnicowa wykorzystuje nawet 

niewielkie odstępstwo od tej zasady

background image

 

 

Algorytmy produktowe 

• Większość współczesnych algorytmów blokowych 

to algorytmy produktowe – po kolei 
wykonywane są proste, stosunkowo mało 
bezpieczne kroki szyfrujące zwane rundami 
(iteracjami)

• Dzięki stosowaniu wielu rund bezpieczeństwo 

algorytmu znacząco rośnie

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne

• Algorytm AES

• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Konkurs AES 

• W 1997 roku agencja NIST (ang. National Institute 

of Standards and Technology) rozpisała konkurs na 
nowy standard szyfrowania, który miał otrzymać 
nazwę AES (ang. Advanced Encryption Standard)

• Wybrany algorytm, Rijndael opracowany został 

przez naukowców belgijskich dr Joan Daemen oraz 
dr Vincent Rijmen

• Rijndael jest blokowym algorytmem szyfrowania z 

kluczem symetrycznym pozwalającym na 
wykorzystanie klucza szyfrującego o długości 128, 
192 i 256 bitów

background image

 

 

Dlaczego wygrał Rijndeal

• Znakomita kombinacja gwarantowanego 

poziomu bezpieczeństwa, wydajności, 
efektywności i łatwości implementacji

• Rijndael charakteryzuje się bardzo dobrą 

wydajnością zarówno przy implementacji 
sprzętowej, jak i programowej uwzględniającej 
różne środowiska i systemy operacyjne

• Testy wykazały, że nie wymaga dużo pamięci 

operacyjnej, co sprawia, że można go stosować w 
wielu niedostępnych dla innych algorytmów 
miejscach

background image

 

 

Rijndael w pigułce (1)

• Algorytm blokowy (128, 192 lub 256 bitowe bloki 

danych)

• Szyfrowanie jest symetryczne, zatwierdzono klucze 

o długościach 128, 192 i 256 bitów

• Proces szyfrowania podlega iteracjom, przy czym 

rozróżnia się: rundę wstępną, pewną ilość rund 

standardowych (ich ilość zależy od długości klucza i 

wynosi odpowiednio 10, 12 lub 14), z których każda 

posiada 4 transformacje, rundę końcową 

• Został zatwierdzony jako następca algorytmu DES
• Rijndael nie jest chroniony żadnymi zastrzeżeniami 

patentowymi, więc nie wymaga opłat licencyjnych

background image

 

 

Rijndael w pigułce (2)

• Spełnia 3 główne założenia postawione przez 

twórców algorytmu: odporność na wszystkie 

znane ataki, szybkość pracy i zwartość kodu na 

różnych platformach, łatwość implementacji

• Aktualny stan wiedzy w zakresie kryptoanalizy 

nie pozwala na skuteczny atak na wiadomości 

szyfrowane tym algorytmem

• Atak brutalny, czyli sprawdzenie wszystkich 

możliwych kluczy szyfrujących jest praktycznie 

niewykonalny ze względu na długość klucza

• Jest łatwy do implementacji sprzętowej 

(większość rodzajów procesorów, smartcard) i 

programowej (wiele popularnych języków 

programowania)

background image

 

 

Szczegóły algorytmu Rijndael 

(1)

• Podstawowe pojęcia służące do opisu algorytmu 

to "Stan" i "runda"

• Runda (ang. round) to odpowiednik 

standardowego etapu obliczeń mającym jako 
parametr tzw. Klucz Rundy (ang. Round Key

• Z reguły runda jest superpozycją, co najmniej 2 

bijekcji tzw. podstawienia i permutacji,  w 
Rijndaelu tych przekształceń jest więcej

background image

 

 

Szczegóły algorytmu Rijndael 

(2)

• Przekształcenia składające się na każdą rundę 

operują na pewnej macierzy prostokątnej 

stanowiącej wynik pośredni kolejnych obliczeń 

podczas realizacji algorytmu i  nazywanej Stanem 

(ang. State

• Jest to macierz o współczynnikach w ciele GF(2

8

lub inaczej w zbiorze {0,1}

8

 czyli macierz, której 

współczynniki to bajty

• Macierz bajtowa Stanu ma 4 wiersze i Nb 

kolumn (Nb to długość bloku podzieloną przez 32), 

Nb=4, 6 lub 8 

• Klucz szyfrujący jest również reprezentowany jako 

macierz o 4 wierszach 

background image

 

 

Szczegóły algorytmu Rijndael 

(3)

• Liczbę kolumn tego klucza oznaczamy przez Nk 
• Liczba Nk jest równa długości klucza podzielonej przez 

32; Nk=4, 6 lub 8

• Długość klucza i bloku, czyli Nk i Nb możemy zmieniać 

niezależnie 

• Liczba rund Nr stosowana w algorytmie zależy od Nb i 

Nk

Nb

Nk

Nr

Nb

Nk

Nr

Nb

Nk

Nr

4

4

10

4

6

12

4

8

14

6

4

12

6

6

12

6

8

14

8

4

14

8

6

14

8

8

14

background image

 

 

Ogólny opis algorytmu 

 

R u n d a   1

R u n d a   2

R u n d a   1 0

1 2 8 - b i t o w y  t e k s t  j a w n y

1 2 8 - b i t o w y  t e k s t  z a s z y f r o w a n y

K l u c z

r u n d y  1

G e n e r a to r

k l u c z y  r u n d

1 2 8 - b i t o w y  k l u c z

T   e   k   s   t       j   a   w   n   y       w       1   2

T   t   w   w

e       n      

k   j   y   1

s   a       2

K l u c z

r u n d y  2

K l u c z

r u n d y  1 0

$   *   a   x

-   \   &   ^

{   :   C   g

u   S   .   !

$   *   a   x   -   \   &   ^   {   :   C   g   u   S   .   !

M a c i e r z  

S t a n u

B y te S u b

S h i f t R o w

M i x C o l u m n

A d d R o u n d K e y

background image

 

 

Opis jednej rundy algorytmu 

• Przekształcenie rundy jest bijekcją będąca 

superpozycją 4 bijekcji składowych

• Runda składa się z następujących czterech 

przekształceń operujących na macierzy Stanu

– przekształcenia ByteSub
– przekształcenia ShiftRow
– przekształcenia MixColumn
– dodawania klucza rundy

• Ostatnia runda nie zawiera przekształcenia 

MixColumn 

background image

 

 

Przekształcenie ByteSub 

• Przy transformacji ByteSub operuje się na 

poszczególnych elementach macierzy Stanu, 
które są pojedynczymi bajtami

• Każdy bajt przechodzi transformację, którą ze 

względów historycznych nazwano S-Boxem i jest 
wpisywany w to samo miejsce 

• W fazie tej wykonuje się jedynie operacje na 

bajtach, a zatem jest to łatwe nawet w 
procesorach 8-bitowych

S - B o x

b   b   b   b  
b   b   b   b  
b   b   b   b  
b   b   b   b  

0 , 0

0 , 1

0 , 2

0 , 3

1 , 0

1 , 1

1 , 2

1 , 3

2 , 0

2 , 1

2 , 2

2 , 3

3 , 0

3 , 1

3 , 2

3 , 3

a  

0 , 0

a   a   a  

a   a   a   a  
a   a   a   a  
a   a   a   a  

0 , 1

0 , 2

0 , 3

1 , 0

1 , 1

1 , 2

1 , 3

2 , 0

2 , 1

2 , 2

2 , 3

3 , 0

3 , 1

3 , 2

3 , 3

a

i , j

b

i , j

background image

 

 

Przekształcenie ShiftRow 

• Ta transformacja przesuwa cyklicznie kolejne 

wiersze macierzy o odpowiednią liczbę pozycji

• Wartości przesunięcia zależą od wielkości bloku 

i klucza - dla naszych danych pierwszego wiersza 

się nie przesuwa, drugi przesuwa się o 1 kolumnę, 

trzeci o 2 kolumny, a czwarty o 3 kolumny 

• Ponieważ takie przesunięcie sprowadza się 

jedynie do zmiany uporządkowania danych w 

pamięci, jest ono łatwe w realizacji dla każdego 

procesorów.

a     b     c     d

e     f     g     h

i     j     k     l

m     n     o     p

a     b     c     d

f     g     h     e

k     l     i     j

p     m     n     o

b r a k  p r z e s u n i ę c i a

p r z e s u n ię c ie  o  1  b a j t

p r z e s u n ię c i e  o  2  b a j t y

p r z e s u n ię c ie  o  3  b a j t y

background image

 

 

Przekształcenie MixColumn 

• Transformacja MixColumn miesza wartości 

zawarte w jednej kolumnie w dość skomplikowany 
sposób, zmieniając jednocześnie ich wartości 

• Dzięki zastosowaniu specjalnych struktur 

algebraicznych taka operacja może zostać 
wykonana dość sprawnie na 8-bitowym 
procesorze lub wykorzystując pełną moc 
procesora 32-bitowego

c x( )

b   b   b   b  
b   b   b   b  
b   b   b   b  
b   b   b   b  

0 , 0

0 , 1

0 , 2

0 , 3

1 , 0

1 , 1

1 , 2

1 , 3

2 , 0

2 , 1

2 , 2

2 , 3

3 , 0

3 , 1

3 , 2

3 , 3

a   a   a   a  
a   a   a   a  
a   a   a   a  
a   a   a   a  

0 , 0

0 , 1

0 , 2

0 , 3

1 , 0

1 , 1

1 , 2

1 , 3

2 , 0

2 , 1

2 , 2

2 , 3

3 , 0

3 , 1

3 , 2

3 , 3

a

0 , j

a

1 , j

a

2 , j

a

3 , j

b

0 , j

b

1 , j

b

2 , j

b

3 , j

o

background image

 

 

Dodawanie klucza rundy 

• Dla każdej rundy generowany jest z klucza 

pierwotnego specjalny klucz rundy, który zostaje 
w tej transformacji połączony z macierzą danych 
za pomocą operacji XOR 

• Poszczególne komórki (bajty) klucza są 

XORowane z odpowiednimi komórkami (bajtami) 
macierzy Stanu 

background image

 

 

Bezpieczeństwo Rijndael (1) 

• Operacje MixColumn i ShiftRow zapewniają silną 

dyfuzję (zamiana jednego bitu stanu wpływa na 

wszystkie bity stanu w małej liczbie rund)

• Operacje ByteSub i dodawanie klucza rundy 

zapewniają silną konfuzję (zgubienie zależności – 

na podstawie rezultatu jednej rundy nie można 

wywnioskować macierzy stanu na początku rundy)

• Aby przeprowadzić kryptoanalizę różnicową, między 

poszczególnymi rundami muszą istnieć 

przewidywalne różnice. Udowodniono, że 

odpowiednie prawdopodobieństwa wykorzystywane 

przy kryptoanalizie DES-a w przypadku Rijndaela nie 

są wystarczające do przeprowadzenia skutecznego 

ataku

background image

 

 

Bezpieczeństwo Rijndael (2)

• Udowodniono, że zależności danych pomiędzy 

rundami dla Rijndaela są tak małe, iż 
kryptoanaliza liniowa jest całkowicie 
nieskuteczna

• Istnieją ataki (np. Square, XSL), które są zdolne 

do złamania algorytmu Rijndaela ale dla liczby 
rund znacznie mniejszej niż określone w 
standardzie

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES

• Szyfrowanie asymetryczne

• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Szyfrowanie asymetryczne

• Algorytmy asymetryczne z kluczem jawnym 

opierają się na funkcjach matematycznych, a nie 
na podstawianiu i permutacji 

• Szyfrowanie jest asymetryczne, wykorzystuje 

dwa kluczepubliczny (ogólnie dostępny) i 
prywatny

Ź r ó d ł o

k o m u n i k a t u

A l g o r y t m

s z y f r u j ą c y

T e k s t  j a w n y

T e k s t  j a w n y

A l g o r y t m

d e s z y f r u j ą c y

K a n a ł   i n f o r m a c y j n y

T e k s t   z a s z y f r o w a n y

M i e j s c e

p r z e z n a c z e n i a

A

B

K l u c z

j a w n y  B

K l u c z

p r y w a tn y   B

background image

 

 

Szyfrowanie asymetryczne - 

poufność

B

Ź r ó d ł o

k o m u n i k a t u

S z y f r o w a n i e

Ź r ó d ł o  p a r y

k l u c z y

D e s z y f r o w a n i e

M i e j s c e

p r z e z n a c z e n i a

K r y p to a n a l i ty k

X `

K P `

b

X

Y

X

K J

b

K P

b

A

background image

 

 

Szyfrowanie asymetryczne - 

uwierzytelnienie

B

A

Ź r ó d ł o

k o m u n i k a t u

S z y f r o w a n i e

Ź r ó d ł o   p a r y

k l u c z y

D e s z y f r o w a n i e

M i e j s c e

p r z e z n a c z e n i a

K r y p to a n a l i ty k

K P `

a

X

Y

X

K J

a

K P

a

background image

 

 

Funkcja jednokierunkowa

• Stworzenie praktycznego systemu szyfrowania 

asymetrycznego z kluczem jawnym wymaga 
zastosowania funkcji jednokierunkowej z 
bocznym wejściem 
(ang. trapdoor one-way function)

• Funkcja jednokierunkowa to taka, która 

przekształca swoją dziedzinę na przedział w taki 
sposób, że każda wartość funkcji ma tylko jedną 
odwrotność, z tym że obliczenie funkcji jest łatwe 
(czas wielomianowy), a obliczenie odwrotności 
niewykonalne (wysiłek obliczeniowy rośnie szybciej niż 
wielomianowo):

• Y=f(X)  -  łatwe
• X=f

-1

(Y)  -  niewykonalne

background image

 

 

Funkcja jednokierunkowa z 

bocznym wejściem

• Obliczenie funkcji jednokierunkowej z bocznym 

wejściem jest łatwe w jednym kierunku, a 
niewykonalne w drugim, chyba że są znane 
pewne dodatkowe informacje, które umożliwiają 
obliczenie odwrotności w czasie wielomianowym

• Y=f

k

(X)  -  łatwe przy znajomości k i X

• X=f

k-1

(Y)  -  łatwe przy znajomości k i Y

• X=f

k-1

(Y)  -  niewykonalne, gdy znamy Y, a nie 

znamy k

background image

 

 

Kryptoanaliza algorytmów 

asymetrycznych 

• Atak metodą brutalną (sprawdzenie wszystkich 

kombinacji klucza)

• Atak na podstawie klucza jawnego – próba 

wyliczenia klucza prywatnego na podstawie 
klucza jawnego

• Atak prawdopodobnego komunikatu – 

wszystkie możliwe komunikaty są szyfrowane 
kluczem jawnym i porównywane z tekstem 
zaszyfrowanym

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne

• Algorytm RSA

• Algorytmy haszujące
• Algorytm MD5
• Podsumowanie

background image

 

 

Algorytm RSA (1)

• Algorytm RSA został opublikowany w 1978 roku 

przez Rona Rivesta, Adi Shamira i Lena 
Adlemana

• Algorytm RSA to szyfr blokowy, w którym tekst 

jawny i tekst zaszyfrowany są liczbami 
całkowitymi od 0 do n-1 dla pewnego n 

• Tekst jawny jest szyfrowany blokami, z których 

każdy ma wartość binarną mniejszą niż n

background image

 

 

Algorytm RSA (2)

• Szyfrowanie i deszyfrowanie bloku tekstu jawnego 

M i zaszyfrowanego C mają następującą formę: 

C = M

e

 mod n    

M = C

d

 mod n = 

(M

e

)

d

 mod n = 

M

ed

 mod n

• Zarówno odbiorca i nadawca muszą znać wartość n 
• Klucz jawny to KJ={e,n}, a klucz prywatny to 

KP={d,n}

• Jak wyznaczyć liczby ned aby M = M

ed

 mod 

oraz podany schemat był bezpieczny?

background image

 

 

Funkcja Eulera

• Leonhard Euler – szwajcarski 

matematyk i fizyk żyjący w XVIII 
wieku

• Funkcja Eulera, zapisywana jako 

(n) oznacza liczbę dodatnich 

liczb całkowitych mniejszych od 
n i jednocześnie względnie 
pierwszych względem n 

• Dla każdej liczby pierwszej p 

zachodzi 

(p) = p – 1

background image

 

 

Twierdzenie Eulera 

Teza: Dla każdego a i n względnie pierwszych to n 

dzieli bez reszty liczbę (a

(n)

 – 1), czyli a

(n)

  1 

mod n

• Z twierdzenia Eulera wynika, że dla dwóch liczb 

pierwszych p i q i dwóch liczb całkowitych takich, 
że pq oraz 0<m<n i dowolnej liczby k
zachodzi następująca zależność 

m

k

(n)+1

 = m

k(p – 1)(q – 1)+1

  m mod n

background image

 

 

RSA i twierdzenie Eulera

• Z twierdzenia Eulera wynika, że m

k

(n)+1

  m mod 

dla n=pqp i q to liczby pierwsze

• Aby osiągnąć następującą zależność potrzebną w 

algorytmie RSA

M = M

ed

 mod n

• musimy podstawić ed = k

(n)+1

background image

 

 

Generowanie kluczy w RSA

1. Wybierz dwie liczby pierwsze pq
2. Oblicz n=pxq
3. Wybierz liczbę całkowitą d taką, że 

nwd(d,

(n))=1 oraz  1<d<

(n)

4. Oblicz  d

-1

 mod 

(n)

5. Klucz jawny KJ={e,n} i klucz prywatny 

KP={d,n}

background image

 

 

Szyfrowanie i deszyfrowanie 

w RSA

Szyfrowanie
• Tekst jawny: M<n
• Tekst zaszyfrowany: C = M

e

 mod n 

Deszyfrowanie
• Tekst zaszyfrowany: C
• Tekst jawny: M = C

d

 mod n

background image

 

 

Łamanie RSA

• Metoda brutalna – odpowiednia długość klucza 

zapewnia bezpieczeństwo

• Ponieważ znane jest {n,e} to rozkładając n na 

czynniki pierwsze p i q można obliczyć 

(n) i d

Odpowiednie duże liczby pierwsze zapewniają 
bezpieczeństwo. Dlatego duże liczby pierwsze są 
nieustannie poszukiwane i następne chronione

• Określić 

(n) bezpośrednio 

• Określić d bezpośrednio bez znajomości 

(n)

background image

 

 

Porównanie RSA i AES

Cecha

AES

RSA

Szybkość 

działania

+

Bezpieczeństwo

+

+

Zastosowania

Poufność 

(szyfrowanie 

danych)

Uwierzytelnianie

, dystrybucja 

kluczy,

podpis cyfrowy

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA

• Algorytmy haszujące

• Algorytm MD5
• Podsumowanie

background image

 

 

Algorytmy haszujące

• Funkcja haszująca z danych M o zmiennym 

rozmiarze wylicza pewien wynik H(M) o stałym 
rozmiarze, zwany też wyciągiem lub skrótem 
komunikatu 

• Wynik haszowania jest funkcją wszystkich bitów 

komunikatu i zapewnia wykrywanie błędów, 
uwierzytelnianie

• Haszowanie jest używane w większości systemów 

kryptograficznych stosowanych w sieciach 
komputerowych
, np. PGP, podpis elektroniczny, 
TLS (SSL)

• Przykładowe algorytmy haszujące to MD5, SHA

background image

 

 

Wymagania dla funkcji 

haszującej

• H można zastosować do dowolnej wielkości bloku 

danych

• H tworzy dane wyjściowe o ustalonej długości
• H(x) jest łatwo obliczyć dla każdego x, co ułatwia 

implementację sprzętową i programową

• Dla każdego kodu m znalezienie takiego x, że 

H(x)=m nie jest wykonywalne na drodze obliczeń

• Dla każdego danego bloku x, znalezienie takiego 

y różnego od x, dla którego H(y)=H(x) nie jest 
wykonywalne na drodze obliczeń

• Znalezienie pary (x,y), że H(y)=H(x) nie jest 

wykonywalne na drodze obliczeń

background image

 

 

Kryptoanaliza algorytmów 

haszujących

• Podstawowy atak na funkcje haszującą może 

polegać na próbie stworzenia komunikatu
który daje taki sam skrót jak przechwycony 
komunikat

• Poza tym można próbować zmodyfikować tekst 

w taki sposób, aby skrót się nie zmienił

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące

• Algorytm MD5

• Podsumowanie

background image

 

 

Algorytm MD5 

• Algorytm MD5 (ang. Message Digest) został stworzony 

przez Rona Rivesta i opublikowany jako RFC1321 

• Algorytm z wejściowego komunikatu o dowolnej 

długości generuje 128-bitowy wyciąg 

• Dane wejściowe przetwarzane są w 512 bitowych 

blokach

• Przykład działania
• MD5("Ala ma kota") = 

91162629d258a876ee994e9233b2ad87 

• MD5("Ala ma koty") = 

6a645004f620c691731b5a292c25d37f 

background image

 

 

Generowanie wyciągu w MD5 

(1)

• Dodawanie bitów dopełniających
• Dodanie długości komunikatu
• Inicjalizacja 128-bitowego bufora MD
• Przetwarzanie komunikatu w blokach 512-

bitowych

• Otrzymanie wyniku

background image

 

 

Generowanie wyciągu w MD5 

(2)

K o m u n i k a t

  b i t ó w

L    

x 5 1 2   b i t ó w = N   x   3 2   b i ty

D o p e ł n i e n i e  

( 1 - 5 1 2 )   b i tó w

D ł u g o ś ć

k o m u n i k a t u

( K  m o d   2 )

6 4

1 0 0 .. . 0

Y

0

Y

1

5 1 2   b i tó w

5 1 2   b i t ó w

Y

q

5 1 2   b i t ó w

Y

L - 1

5 1 2   b i t ó w

. . .

. . .

H

M D 5

5 1 2

H

M D 5

5 1 2

H

M D 5

5 1 2

H

M D 5

5 1 2

1 2 8

1 2 8

1 2 8

1 2 8

A B C D

1 2 8   b i t o w y  w y c i ą g

background image

 

 

Przetwarzanie komunikatu w 

512-bitowych blokach 

• Wszystkie 4 etapy mają 

podobną strukturę, lecz 

każdy korzysta z innej 

elementarnej funkcji 

logicznej oznaczanej w 

specyfikacji jako F, B, H, I 

• W każdym etapie jest 

przetwarzany aktualny blok 

Y

q

 oraz bufor ABCD (MD

q

• Dodatkowo w każdym 

etapie korzysta się z 

kolejnych części tablicy 

T[1,...,64] skonstruowanej 

na podstawie funkcji sinus

f ( A B C D ,Y , T [ 1 , .. . ,1 6 ] )

F  

q

1 2 8

M D

q

A                 B             C             D

A               B             C              D

3 2

f ( A B C D , Y ,T [ 1 7 , .. . ,3 2 ] )

G  

q

A               B             C              D

f ( A B C D , Y ,T [ 3 3 , .. . ,4 8 ] )

H  

q

A               B             C              D

f ( A B C D , Y ,T [ 4 9 , .. . ,6 4 ] )

I  

q

5 1 2

Y

q

+

 

m o d  2

3 2

+

 

m o d   2

3 2

+

 

m o d  2

3 2

+

 

m o d  2

3 2

1 2 8

M D

q + 1

background image

 

 

Elementarna operacja MD5 

• Każdy z kroków wykonywanych 64 

razy dla każdego bloku ma postać

AB+CLS

s

(A+g(B,C,D)+X[k]+T[i])

• Przez g oznaczamy jedną z funkcji 

elementarnych F, G, H, I

• X[k] oznacza k-te 32 bitowe słowo 

w przetwarzanym 512-bitowym 

bloku

• T[i] oznacza i-te 32 bitowe słowo 

w tablicy stałych

• Wszystkie dodawania są 

realizowane modulo 2

32

background image

 

 

Plan wykładu

• Wstęp
• Rodzaje systemów kryptograficznych
• Historia kryptografii
• Szyfrowanie symetryczne
• Algorytm AES
• Szyfrowanie asymetryczne
• Algorytm RSA
• Algorytmy haszujące
• Algorytm MD5

• Podsumowanie

background image

 

 

Podsumowanie

• Algorytm symetryczne stosują wiele różnych 

sposobów dla zapewnianie silnej konfuzji i dyfuzji

• Algorytmy asymetryczne i haszujące umożliwiają 

efektywną realizację szeregu funkcji bezpieczeństwa 
(np. uwierzytelnianie, podpis cyfrowy, integralność)

• Bezpieczeństwo kryptograficzne algorytmów zależy 

od konstrukcji algorytmu i długości klucza

• Ważnym aspektem jest ochrona praw patentowych, 

która może ograniczać możliwość stosowania 
danego algorytmu

background image

 

 

Kolejny wykład

Bezpieczeństwo sieci 

komputerowych


Document Outline