Transcript Document

Podstawy kryptografii
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
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
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
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
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
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
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
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
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
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
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”
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 ;-)
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)
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)
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
Uproszczony model szyfrowania
konwencjonalnego
Wspólny klucz
A
Tekst zaszyfrowany
Tekst jawny
Źródło
komunikatu
Tekst jawny
Kanał informacyjny
Algorytm
szyfrujący
Algorytm
deszyfrujący
B
Miejsce
przeznaczenia
Model szyfrowania
konwencjonalnego
Kryptoanalityk
Źródło
komunikatu
X
Szyfrator
K
Y
X`
K`
Deszyfrator
X
Miejsce
przeznaczenia
Bezpieczny kanał
Źródło
klucza
• Szyfrator tworzy tekst zaszyfrowany Y=EK(X)
• Odbiorca posiadający klucz może odwrócić
przekształcenie X=DK(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
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
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
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ść
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
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
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)
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
:
tekst zaszyfrowany:
szyfr juliusza cezara
VCBIU MXOLXVCD FHCDUD
• Dla szyfru Cezara łatwo można przeprowadzić
kryptoanalizę metodą brutalną polegającą na
wypróbowaniu 25 możliwych kluczy k
Szyfry jednoalfabetowe
• Dla szyfrów jednoalfabetowych możemy zastosować
jako szyfr dowolną permutację 26 znaków alfabetu
• Oznacza to 26!=4*1026 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
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
Litera
E
T
R
N
I
O
A
D
Częstość
(%)
12,75
9,25
8,50
7,75
7,75
7,50
7,25
4,25
Litera
L
H
C
F
U
M
P
G
Częstość
(%)
3,75
3,50
3,50
3,00
3,00
2,75
2,75
2,00
Litera
Częstość
W
V
B
K
X
Q
Z
1,50
1,50
1,25
0,50
0,50
0,50
0,25
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
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
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
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
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
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
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
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
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
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)
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
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(28) 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
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
4
6
8
Nk
4
4
4
Nr
10
12
14
Nb
4
6
8
Nk
6
6
6
Nr
12
12
14
Nb
4
6
8
Nk
8
8
8
Nr
14
14
14
Ogólny opis algorytmu
128-bitowy tekst jawny
T e k s t
j a w n y
Macierz
Stanu
T t w w
e
n
k j y 1
s a
2
Runda 1
ByteSub
ShiftRow
MixColumn
AddRoundKey
w
1 2
Klucz
rundy 1
Runda 2
Klucz
rundy 2
Runda 10
Klucz
rundy 10
$
{
u
*
\
:
S
a
&
C
.
x
^
g
!
$ * a x - \ & ^ { : C g u S . !
128-bitowy tekst zaszyfrowany
128-bitowy klucz
Generator
kluczy rund
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
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
a0,0
a1,0
a2,0
a3,0
a0,1
a1,1
a2,1
a3,1
a0,2
aai,j
1,2
a2,2
a3,2
a0,3
a1,3
a2,3
a3,3
S-Box
b0,0
b1,0
b2,0
b3,0
b0,1
b1,1
b2,1
b3,1
b0,2
bbi,j
1,2
b2,2
b3,2
b0,3
b1,3
b2,3
b3,3
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
e
i
m
b
f
j
n
c
g
k
o
d
h
l
p
brak przesunięcia
przesunięcie o 1 bajt
przesunięcie o 2 bajty
przesunięcie o 3 bajty
a
f
k
p
b
g
l
m
c
h
i
n
d
e
j
o
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
a0,0
a1,0
a2,0
a3,0
aa0,j
0,1
aa1,j
1,1
2,1
aa2,j
3,1
aa3,j
a0,2
a1,2
a2,2
a3,2
a0,3
a1,3
a2,3
a3,3
oc(x)
b0,0
b1,0
b2,0
b3,0
bb0,j
0,1
bb1,j
1,1
bb2,j
2,1
3,1
bb3,j
b0,2
b1,2
b2,2
b3,2
b0,3
b1,3
b2,3
b3,3
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
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
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
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
Szyfrowanie asymetryczne
• Algorytmy asymetryczne z kluczem jawnym opierają się
na funkcjach matematycznych, a nie na podstawianiu i
permutacji
• Szyfrowanie jest asymetryczne, wykorzystuje dwa
klucze: publiczny (ogólnie dostępny) i prywatny
Klucz
jawny B
Klucz
prywatny B
A
Tekst zaszyfrowany
Tekst jawny
Źródło
komunikatu
Tekst jawny
Kanał informacyjny
Algorytm
szyfrujący
Algorytm
deszyfrujący
B
Miejsce
przeznaczenia
Szyfrowanie asymetryczne poufność
Kryptoanalityk
Źródło
komunikatu
X
Szyfrowanie
A
KJb
Y
X`
KPb`
Deszyfrowanie
X
Miejsce
przeznaczenia
KPb
Źródło pary
kluczy
B
Szyfrowanie asymetryczne uwierzytelnienie
Kryptoanalityk
Źródło
komunikatu
X
Szyfrowanie
Y
KPa`
Deszyfrowanie
A
Miejsce
przeznaczenia
B
KPa
Źródło pary
kluczy
X
KJa
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
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=fk(X) - łatwe przy znajomości k i X
• X=fk-1(Y) - łatwe przy znajomości k i Y
• X=fk-1(Y) - niewykonalne, gdy znamy Y, a nie znamy k
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
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
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
Algorytm RSA (2)
• Szyfrowanie i deszyfrowanie bloku tekstu jawnego M i
zaszyfrowanego C mają następującą formę:
C = Me mod n
M = Cd mod n =
(Me)d mod n =
Med 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 n, e, d aby M = Med mod n oraz
podany schemat był bezpieczny?
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
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 n =
pq oraz 0<m<n i dowolnej liczby k, zachodzi następująca
zależność
mk(n)+1 = mk(p – 1)(q – 1)+1  m mod n
RSA i twierdzenie Eulera
• Z twierdzenia Eulera wynika, że mk(n)+1  m mod n dla
n=pq, p i q to liczby pierwsze
• Aby osiągnąć następującą zależność potrzebną w
algorytmie RSA
M = Med mod n
• musimy podstawić ed = k(n)+1
Generowanie kluczy w RSA
1.
2.
3.
4.
5.
Wybierz dwie liczby pierwsze p, q
Oblicz n=pxq
Wybierz liczbę całkowitą d taką, że nwd(d,(n))=1 oraz
1<d<(n)
Oblicz e  d-1 mod (n)
Klucz jawny KJ={e,n} i klucz prywatny KP={d,n}
Szyfrowanie i deszyfrowanie
w RSA
Szyfrowanie
• Tekst jawny: M<n
• Tekst zaszyfrowany: C = Me mod n
Deszyfrowanie
• Tekst zaszyfrowany: C
• Tekst jawny: M = Cd mod n
Ł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)
Porównanie RSA i AES
Cecha
AES
RSA
Szybkość
działania
+
–
Bezpieczeństwo
+
+
Zastosowania
Poufność
(szyfrowanie
danych)
Uwierzytelnianie,
dystrybucja kluczy,
podpis cyfrowy
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
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
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ń
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ł
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
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
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
Generowanie wyciągu w MD5 (2)
Dopełnienie
(1-512) bitów
Długość
komunikatu
64
(K mod 2 )
L x 512 bitów=N x 32 bity
K bitów
Komunikat
512 bitów
512 bitów
Y0
Y1
512
ABCD
128
HMD5
100...0
512 bitów
...
Yq
512
128
HMD5
512 bitów
...
YL-1
512
128
HMD5
512
128
HMD5
128 bitowy wyciąg
Przetwarzanie komunikatu w 512bitowych 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 Yq
oraz bufor ABCD (MDq)
• Dodatkowo w każdym etapie
korzysta się z kolejnych części
tablicy T[1,...,64]
skonstruowanej na podstawie
funkcji sinus
Yq
MDq
512
128
32
A
B
C
D
fF (ABCD,Yq,T[1,...,16])
A
B
C
D
fG (ABCD,Yq,T[17,...,32])
A
B
C
D
fH (ABCD,Yq,T[33,...,48])
A
B
C
D
fI (ABCD,Yq,T[49,...,64])
+
mod 2
32
+
32
mod 2
+
32
mod 2
128
MDq+1
+
32
mod 2
Elementarna operacja MD5
• Każdy z kroków wykonywanych 64
razy dla każdego bloku ma postać
AB+CLSs(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 232
A
B
C
D
g
+
mod 232
+
mod 232
X[k]
+
T[i]
mod 2
32
CLSs
+
mod 2
32
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
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
Kolejny wykład
Bezpieczeństwo sieci komputerowych