referat Tomasza Pranszke o szyfrowaniu asymetrycznym

advertisement
Kryptografia asymetryczna
Tomasz Pranszke
1
1. Kryptografia asymetryczna
Kryptografia jest to sposób utajniania informacji w taki sposób, żeby była niemożliwa do
odczytania przez kogoś nie posiadającego specjalnego klucza.
Kryptografia asymetryczna to rodzaj kryptografii, w której wykorzystuje się dwa klucze. Jeden
klucz (klucz publiczny) służy do szyfrowania informacji, natomiast drugi klucz(klucz prywatny)
służy do odszyfrowywania tych informacji.
Schemat Algorytmu asymetrycznego
źródło: http://www.cryptography.ovh.org/
Kryptografię asymetryczną wynaleźli Martin Hellman oraz Whitfield Diffie w 1976 roku.
Zaproponowany przez nich kryptosystem umożliwiał używanie kanału publicznego do transmisji
kluczy wraz z bezpieczeństwem zakodowanych informacji. Ich propozycja polegała na użyciu
dwóch różniących się od siebie kluczy. Pierwszego E do szyfrowania wiadomości, drugiego D
do odszyfrowania ich. Jednak znajomość klucza E nie dawała możliwości znalezienia klucza D.
Lecz pozwalało użytkownikom na umieszczanie swoich publicznych kluczy (E) w
ogólnodostępnym miejsc (Internet). W dzisiejszych czasach algorytm przez nich wymyślony nie
jest już bezpieczny, lecz na bazie ich koncepcji powstało wiele innych lepszych algorytmów.
2
1.1 Zasada działania kryptografii asymetrycznej:
W katalogu publicznym zostaje umieszczony publiczny klucz (E) tego użytkownika. Natomiast
klucz prywatny (D) jest przechowywany przez użytkownika i nikt nie ma do niego dostępu
oprócz użytkownika. Metody deszyfrowania i szyfrowania nie są ukryte, ponieważ
bezpieczeństwo tego typu systemów nie polega na tajności sposobu szyfrowania,a na ilości i
trudności wymaganych obliczeń.
Procedury E i D muszą spełniać pewne warunki:

Odszyfrowując zaszyfrowaną wiadomość musimy dostać oryginalną wiadomość:
D(E(W)) = W dla każdej wiadomości W


E oraz D nie są obliczeniowo trudne, lecz nie istnieje łatwa metoda, która wyznaczy D za
pomocą E, np. jeśli klucz prywatny (D) jest jakąś dużą liczbą pierwszą, a klucz publiczny
(E) jest iloczynem D oraz równie dużej liczby pierwszej. Trudno jest, więc obliczyć
wartość tego klucza
W przypadku gdy wiadomość W zostaje najpierw odszyfrowana, a następnie
zaszyfrowana to powinno otrzymać się W:
E(D(W)) = W dla każdej wiadomości W
2. Najpopularniejsze algorytmy asymetryczne



RSA
El Gamal
DSA
2.1 Algorytm RSA:
Algorytm ten jest jednym z pierwszych i w tym momencie najpopularniejszych asymetrycznych
algorytmów kryptograficznych z kluczem publicznym. Opracowany został przez Rona Rivesta,
Adi Szamira i Leonarda Adlemana. Jest to pierwszy algorytm, który może być stosowany do
szyfrowania jak i do podpisów cyfrowych. Cała idea tego algorytmu polega na tym, że na
początku wybierane są losowo dwie duże liczby pierwsze, które w zapisie dziesiętnym są daleko
od siebie, natomiast bitowo są zbliżone. Następnie dokonywane są na nich operacje
matematyczne, które są obliczeniowo proste, natomiast bardzo trudne jeśli chciałby ktoś
odwrócić proces generowania kluczy. Uzyskanie klucza publicznego (E) na podstawie klucza
prywatnego (D) jest równie trudne jak uzyskanie klucza D na podstawie klucza E.
3
2.1.1 Algorytm Euklidesa
Algorytm Euklidesa to algorytm znajdowania największego wspólnego dzielnika(NWD) dwóch
różnych liczb naturalnych dodatnich. Nie wymaga rozkładania liczb na czynniki pierwsze.
Zasada działania:
1.
2.
3.
4.
Dane są dwie liczby naturalne dodatnie a i b
Oblicz c jako resztę z dzielenia a przez b
Zastąp a przez b, zaś b przez c
Jeżeli c = 0, to szukane NWD = a, w przeciwnym wypadku przejdz do pkt. 2
Przykład 1
NWD liczb 978 i 28 wynosi 2. Obliczenia wyglądały następująco:
a
b
c
978
28
26
28
26
2
26
2
0
2
0
0
Przykład 2
Liczby 46406 i 36957 są względnie pierwsze, co można pokazać następująco:
a
b
46406
36957
9449
8610
839
220
179
41
15
11
4
3
1
36957
9449
8610
839
220
179
41
15
11
4
3
1
0
4
Jeśli będzie przechowywana informacja o kolejnych ilorazach, to będzie też możliwość
wyznaczenia liczb naturalnych w równaniu:
a * p + b * q = NWD(a,b)
Metoda ta nazywana jest rozszerzonym algorytmem Euklidesa.
2.1.2 Zasada działania algorytmu RSA(generowanie kluczy):
Na początku generowany jest klucz RSA, żeby go wygenerować losowane są dwie duże liczby
pierwsze p i q oraz liczba e względnie pierwsza z (p-1)(q-1).
Następnie obliczane jest:
d = e-1 mod (p-1)(q-1)
Ponieważ zostało wybrane wzglednie pierwsze e, ma ono odwrotność i obliczyć je można
szybko korzystając z rozszerzonego algorytmu Euklidesa.
Obliczana jest również wartość n:
n=p*q
Kluczem publicznym jest para (e,n). Natomiast kluczem prywatnym para (d,n). Liczby p i q
należy zniszczyć.
Żeby zaszyfrować wiadomość należy liczbę reprezentującą wiadomość(m) podnieść do potęgi e
modulo n:
c = me mod n
Żeby tą wiadomość zdeszyfrować należy podnieść zaszyfrowaną wiadomość do potęgi d.
Zgodnie z twierdzeniem Eulera dostaniemy oryginalną wiadomość:
cd = med = m mod n
Nie znając d nie można łatwo odzyskać wiadomości z kryptogramu.
Nie znając faktoryzacji(rozkład na czynniki) n na p i q nie znamy też prostej metody
odtworzenia d z e.
5
2.2 Algorytm El Gamal:
Jest to jeden z dwóch najważniejszych algorytmów kryptografii asymetrycznej. Algorytm ten
swoje działania opiera na trudności problemu logarytmu dyskretnego w ciele liczb całkowitych
modulo duża liczba pierwsza(Ciało Zp). Algorytm został przedstawiony przez przez Tahera
Elgamala. Algorytm umożliwia szyfrowania oraz obsługę podpisów cyfrowych.
2.2.1 Ciało Zp
Ciałem Zp jest zbiór {0,1,2, ... , p -1}, gdzie p jest liczbą pierwszą z wyróżnionymi elementami:


+ : (a,b) → (a+b) mod p
* : (a,b) → (a*b) mod p
Taki zbiór spełnia wszystkie aksjomaty ciała, więc jest przykładem ciała skończonego o
charakterystyce równej p.
2.2.2 Logarytm dyskretny
Logarytm dyskretny elementu b(przy podstawie a) w danej grupie skończonej jest to taka liczba
całkowita c, że w grupie zachodzi równość:
ac = b
Logarytm dyskretny nie zawsze istnieje, a jeśli istnieje nie jest jednoznaczny. Znalezienie
logarytmu dyskretnego jest trudnym problemem.
O ile potęgowanie wymaga O(log c) operacji, liczone są a, a2, a4, a8, ... , po czym wymnażane te
z nich dla których bity c = 1, to jedyną prostą metodą rozwiązywania problemu logarytmu
dyskretnego jest przeszukanie wszystkich możliwych c. Siła tego logarytmu polega na czasie
jaki jest potrzebny, żeby go odwrócić.
2.2.3 Zasady działania algorytmu El Gamal:
Na początku następuje generacja klucza poprzez wybranie dowolnej liczby pierwszej p,
dowolnego generatora α grupy multiplikatywnej, tzn. taki element, którego rząd jest równy p - 1
oraz dowolne k, takie że 1 < k < p – 1.
Następnie liczona jest β w następujący sposób:
β = αk mod p
Kluczem publicznym jest (p, α, β). Natomiast kluczem prywatnym (p, α, β, k).
6
Mając do zaszyfrowania wiadomość(m) należy przedstawić ją jako element grupy 1 < m < p – 1,
wybrać losowo liczbę x i policzyć:
(αx, m * βx) mod p
Deszyfrowanie wykonuje się w następujący sposób. Należy otrzymane αx podnieść do potęgi k:
(αx)k = αxk = (αk)x = βx
Następnie należy znaleść odwrotność βx rozszerzonym algorytmem Euklidesa:
γ – to odwrotność βx
γβx + δp = 1
γβx ≡ 1 mod p
γ ≡ (βx)-1 mod p
Wtedy należy podzielić m
* βx przez βx, czyli mnożymy przez jej odwrotność:
(m * βx) * γ ≡ m * (βx * γ) ≡ m * 1 ≡ m mod p
2.3 Podpis cyfrowy(podpis elektroniczny):
Podpis cyfrowy umożliwia potwierdzenie autentyczności dokumentu, weryfikację osoby
podpisującej, zapewnienie niezmienności treści od momentu podpisania oraz uniemożliwienie
zaprzeczenia faktowi podpisania tego dokumentu.
2.3.1 Funkcja hashująca:
Funkcja hashująca to funkcja, która przyporządkowuje łańcuchom znaków dowolnej
długości(obiektom) jakąś liczbę z skończonego przedziału(hash). Funkcja hashująca nie może
posiadać prostych zależności między obiektem, a wartością hasha.
Przykład prostej funkcji hashującej:
Wartością hasha jest reszta z dzielenia danej liczby przez 13.
h(1234) = 12
h(2000) = 11
7
h(735261) = 7
2.3.2 Tworzenie podpisu cyfrowego:
1. Nadawca generuje klucz prywatny(czarny) i klucz publiczny(biały). Dostarcza klucz
publiczny odbiorcy.
2. Nadawca tworzy hash za pomocą funkcji hashującej.
3. Nadawca szyfruje ten hash za pomocą swojego klucza prywatnego. Zaszyfrowany hash
jest właśnie podpisem elektronicznym.
4. Nadawca przekazuje ten podpis cyfrowy oraz niezaszyfrowana wiadomość do odbiorcy.
źródło: http://szyfrowanie.estrefa.net/gfx/artykuly/podpis-cyfrowy.png
2.3.3 Weryfikacja podpisu cyfrowego:
1. Odbiorca odszyfrowuje hash korzystając z klucza publicznego nadawcy.
2. Odbiorca z przekazanej mu wiadomości tworzy hash.
3. Odbiorca porównuje oba hashe. Jeżeli są takie same, to zagwarantowana jest:
 autentyczność – dane wysłał nadawca, ponieważ podpis cyfrowy gwarantuje brak
możliwości podszycia się pod nadawcę. Jeśli ktoś próbowałby się podszyć to
odbiorca zauważyłby wysłaną do Niego błędną sygnaturę
 integralność – dane nie zostały zmienione przez osobę niepowołaną, hash
wiadomości się zgadza
 niezaprzeczalność – nadawca nie może wyprzeć się wysłania wiadomości,
ponieważ tylko on zna swój klucz prywatny. Jeśli odbiorca porówna hashe i są
one identyczne, to jest jednoznaczne z tym, że tylko ten nadawca mógł wysłać tą
wiadomość
8
źródło: http://szyfrowanie.estrefa.net/gfx/artykuly/weryfikacja-podpisu-cyfrowego.png
9
Download