RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA

Podobne dokumenty
Szyfrowanie RSA (Podróż do krainy kryptografii)

Podstawy systemów kryptograficznych z kluczem jawnym RSA

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Zarys algorytmów kryptograficznych

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 5

Kryptologia przykład metody RSA

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

Bezpieczeństwo danych, zabezpieczanie safety, security

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Przewodnik użytkownika

Algorytmy asymetryczne

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Wybrane zagadnienia teorii liczb

Copyright by K. Trybicka-Francik 1

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

Copyright by K. Trybicka-Francik 1

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Systemy Mobilne i Bezprzewodowe laboratorium 12. Bezpieczeństwo i prywatność

Wykład IV. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Kryptografia publiczna (asymetryczna) Szyfrowanie publiczne (asym) Problem klucza publicznego. Podpisujemy cyfrowo. Jak zweryfikować klucz publiczny?

Matematyka dyskretna. Wykład 11: Kryptografia z kluczem publicznym. Gniewomir Sarbicki

Kryptografia systemy z kluczem publicznym. Kryptografia systemy z kluczem publicznym

Przykładowe zadania z teorii liczb

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Kryptografia szyfrowanie i zabezpieczanie danych

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.)

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

Spis treści. Przedmowa... 9

Informatyka kwantowa. Zaproszenie do fizyki. Zakład Optyki Nieliniowej. wykład z cyklu. Ryszard Tanaś. mailto:tanas@kielich.amu.edu.

Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe. kradzieŝy! Jak się przed nią bronić?

Zastosowania informatyki w gospodarce Wykład 5

a) Zapisz wynik działania powyższego algorytmu dla słów ARKA i MOTOR...

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Czym jest kryptografia?

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Luty 2001 Algorytmy (7) 2000/2001

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Laboratorium nr 3 Podpis elektroniczny i certyfikaty

Bezpieczeństwo usług oraz informacje o certyfikatach

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Bezpieczeństwo w sieci I. a raczej: zabezpieczenia wiarygodnosć, uwierzytelnianie itp.

2 Kryptografia: algorytmy symetryczne

Sieci komputerowe. Wykład 9: Elementy kryptografii. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

WEP: przykład statystycznego ataku na źle zaprojektowany algorytm szyfrowania

Kryptografia na procesorach wielordzeniowych

WSIZ Copernicus we Wrocławiu

Laboratorium nr 5 Podpis elektroniczny i certyfikaty

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zadanie 2: Kryptosystem Rabina

Liczby pierwsze - algorytm RSA

Szyfrowanie RSA. Liczba pierwsza jest liczbą naturalną posiadającą dokładnie dwa różne podzielniki - 1 oraz samą siebie.

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

Podpis elektroniczny

Parametry systemów klucza publicznego

Podstawy Secure Sockets Layer

Bezpieczeństwo w Internecie

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Matematyka dyskretna

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

SET (Secure Electronic Transaction)

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Zadania do samodzielnego rozwiązania

MADE IN CHINA czyli SYSTEM RESZTOWY

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 9

Wykład VIII. Systemy kryptograficzne Kierunek Matematyka - semestr IV. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup.

w Kielcach, 2010 w Kielcach, 2010

Scenariusz 18. Mały kryptograf

Podzielność liczb przez liczby od 2 do 13 WSTĘP CO TO ZNACZY, ŻE LICZBA JEST PODZIELNA PRZEZ INNĄ LICZBĘ? ZASADY PODZIELNOŚCI PRZEZ LICZBY OD 2 DO 10

Zadanie 1. Potęgi (14 pkt)

Ataki na algorytm RSA

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Algorytmy i struktury danych. Wykład 4

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

Korzystanie z Certyfikatów CC Signet w programie MS Outlook 98

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

INSTRUKCJA INSTALACJI I OBSŁUGI GPG4Win

MATeMAtyka 1. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony Klasa pierwsza

Szyfrowanie informacji

Seminarium Ochrony Danych

L6.1 Systemy liczenia stosowane w informatyce

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ POZIOM ROZSZERZONY Część I

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Algorytmy w teorii liczb

Bezpieczeństwo systemów komputerowych

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego

Liczby pierwsze na straży tajemnic

Transkrypt:

RSA Symetryczny system szyfrowania to taki, w którym klucz szyfrujący pozwala zarówno szyfrować dane, jak również odszyfrowywać je. Opisane w poprzednich rozdziałach systemy były systemami symetrycznymi. Podstawową wadą systemów symetrycznych jest ścisła konieczność ochrony klucza. Z tego powodu mozna je było stosować tylko w ograniczonych grupach użytkowników. R.L.Rivest A. Shamir L. Adleman Twórcy algorytmu RSA W roku 1977 trzej profesorowie z MIT w USA, Ronald L. Rivest, Adi Shamir i Leonard Adleman, opublikowali nowy rodzaj szyfrowania danych, który nazwano od pierwszych liter ich nazwisk systemem RSA. Jest to niesymetryczny algorytm szyfrujący, którego zasadniczą cechą są dwa klucze: publiczny do kodowania informacji oraz prywatny do jej odczytywania. Klucz publiczny (można go udostępniać wszystkim zainteresowanym) umożliwia jedynie zaszyfrowanie danych i w żaden sposób nie ułatwia ich odczytania, nie musi więc być chroniony. Dzięki temu firmy dokonujące transakcji poprzez sieć Internet mogą zapewnić swoim klientom poufność i bezpieczeństwo. Drugi klucz (prywatny, przechowywany pod nadzorem) służy do odczytywania informacji zakodowanych przy pomocy pierwszego klucza. Klucz ten nie jest udostępniany publicznie. System RSA umożliwia bezpieczne przesyłanie danych w środowisku, w którym może dochodzić do różnych nadużyć. Bezpieczeństwo oparte jest na trudności rozkładu dużych liczb na czynniki pierwsze. Przykład: Załóżmy, iż dysponujemy superszybkim komputerem, który jest w stanie sprawdzić podzielność miliarda dużych liczb w ciągu jednej sekundy. Aby złamać szyfr RSA należy rozbić klucz publiczny na dwie liczby pierwsze będące jego dzielnikami. Znajomość tych liczb pozwala rozszyfrować każdą informację zakodowaną kluczem prywatnym i publicznym. Brzmi dosyć prosto. Jednakże nie ma prostej metody rozbijania dużych liczb na czynniki pierwsze. Nie istnieje żaden wzór, do którego podstawiamy daną liczbę i w wyniku otrzymujemy wartości jej czynników pierwszych. Należy je znaleźć testując podzielność kolejnych liczb. Z rozważań o liczbach pierwszych wynika, iż w przypadku dwóch różnych dzielników pierwszych jeden musi leżeć poniżej wartości pierwiastka z danej liczby, a drugi powyżej. Zatem, aby go znaleźć musimy wyliczyć

pierwiastek z rozkładanej liczby, a następnie testować podzielność przez liczby nieparzyste leżące poniżej tego pierwiastka. Statystycznie poszukiwany czynnik pierwszy powinien znajdować się w górnej połówce zakresu od 2 do pierwiastka z n. Ile działań musimy wykonać? Policzmy. Klucz 128 bitowy. Pierwiastek jest liczbą 64 bitową. W zakresie od 2 do 2 64 co druga liczba jest nieparzysta, zatem jest ich około 2 64 / 2 = 2 63. Ponieważ interesuje nas tylko górna połówka, to ilość liczb do sprawdzenia jest dwa razy mniejsza, czyli wynosi 2 63 / 2 = 2 62. Ile czasu zajmie naszemu superkomputerowi sprawdzenie podzielności przez około 2 62 liczb, jeśli w ciągu 1 sekundy wykonuje on miliard sprawdzeń? Odpowiedź brzmi: zajmie to około: 2 62 / 10 9 = 4611686018 sekund = 76861433 minut = 1281023 godzin = 53375 dni = 146 lat Czy sądzisz, że ktoś będzie czekał przez prawie dwa życia na złamanie szyfru? Zatem można podać do publicznej wiadomości liczbę będącą iloczynem dwóch dużych liczb pierwszych i mieć prawie pewność, iż nikt jej nie rozbije na czynniki pierwsze w rozsądnym czasie. Ostatecznie zamiast 128 bitów możemy zwiększyć klucz do np. 1024 bitów, a wtedy czas łamania szyfru liczy się miliardami miliardów... miliardów lat. Fazy algorytmu RSA Algorytm RSA składa się z trzech podstawowych kroków: 1. Generacja klucza publicznego i tajnego. Klucz publiczny jest przekazywany wszystkim zainteresowanym i umożliwia zaszyfrowanie danych. Klucz tajny umożliwia rozszyfrowanie danych zakodowanych kluczem publicznym. Jest trzymany w ścisłej tajemnicy. 2. Użytkownik po otrzymaniu klucza publicznego, np. poprzez sieć Internet, koduje za jego pomocą swoje dane i przesyła je w postaci szyfru RSA do adresata dysponującego kluczem tajnym, np. do banku, firmy komercyjnej, tajnych służb. Klucz publiczny nie musi być chroniony, ponieważ nie umożliwia on rozszyfrowania informacji proces szyfrowania nie jest odwracalny przy pomocy tego klucza. Zatem nie ma potrzeby jego ochrony i może on być powierzany wszystkim zainteresowanym bez ryzyka złamania kodu. 3. Adresat po otrzymaniu zaszyfrowanej wiadomości rozszyfrowuje ją za pomocą klucza tajnego. Przykładowe zastosowania RSA

Bezpieczne połączenie internetowe Sieć komputerowa Internet jest środowiskiem o niskim bezpieczeństwie poufności przesyłanych danych. Pakiety danych podróżujące pomiędzy różnymi węzłami sieci mogą być podglądane przez osoby nieupoważnione. Szyfrowanie danych zapewni nam bezpieczeństwo. Nawiązanie bezpiecznego połączenia wykorzystującego szyfrowanie RSA składa się z następujących etapów: 1. Obie stacje generują zestaw kluczy RSA. 2. Stacje wymieniają się kluczami publicznymi, które posłużą do szyfrowania przesyłanych wiadomości. Operacja ta jest bezpieczna, ponieważ klucze publiczne nie pozwalają odczytać zaszyfrowanych przy ich pomocy wiadomości. Zatem przechwycenie klucza publicznego przez osobę nieupoważnioną nie da jej żadnych korzyści. 3. Wysyłane wiadomości stacje szyfrują przy pomocy otrzymanego klucza publicznego. 4. Odebrane wiadomości stacje rozszyfrowują przy pomocy swojego klucza prywatnego, który nie był ujawniany. Dzięki temu przechwycenie szyfrogramu w drodze do odbiorcy nie przyniesie osobie nieupoważnionej żadnych korzyści. Bezpieczne połączenia internetowe są dzisiaj szeroko wykorzystywane w sieci do prowadzenia działalności handlowej. Dzięki nim klienci banków mogą bezpiecznie zarządzać swoimi kontami oraz dokonywać zakupów w sieci z wykorzystaniem kart płatniczych. Podpis cyfrowy Załóżmy, iż stacja A chce wysłać do stacji B wiadomość W podpisaną cyfrowo. 1. W tym celu stacja A szyfruje wiadomość W za pomocą swojego klucza tajnego i szyfr dołącza do tej wiadomości. Klucz tajny stacja A otrzymuje od instytucji zajmującej się przydzielaniem certyfikatów jest to tzw. podpis elektroniczny, który jednoznacznie identyfikuje nadawcę wiadomości. W efekcie nowa wiadomość W' składa się z oryginalnej wiadomości W oraz jej zaszyfrowanej kopii. 2. W takiej postaci wiadomość W' zostaje przesłana do stacji B. 3. Stacja B rozszyfrowuje kopię kluczem publicznym stacji A. Klucz publiczny stacji A może być pobrany z serwera instytucji przydzielającej certyfikaty lub otrzymany od stacji A i potwierdzony przez instytucję przydzielającą certyfikaty. W ten sposób stacja B ma pewność, iż klucz publiczny na pewno dotyczy stacji A. 4. Stacja B porównuje obie części wiadomości W'. Jeśli są takie same, to oznacza to, iż pochodzą rzeczywiście od stacji A. Jeśli przesyłana wiadomość jest poufna, to do jej przekazania można dodatkowo wykorzystać bezpieczne połączenie internetowe.

Tworzenie kluczy RSA I II III Znajdź dwie duże liczby pierwsze (mające np. po 128 bitów). Oznacz je jako p i q. Istnieją specjalne algorytmy generujące duże liczby pierwsze, które wykorzystują np. test Millera- Rabina. Oblicz: Ø = (p - 1) (q - 1) oraz n = p q Liczby pierwsze p i q usuń, aby nie wpadły w niepowołane ręce. Ø to tzw. funkcja Eulera, n jest modułem. Wykorzystując odpowiednio algorytm Euklidesa znajdź liczbę e, która jest względnie pierwsza z wyliczoną wartością funkcji Eulera Ø (tzn. NWD(e, Ø) = 1) Liczba ta powinna również spełniać nierówność 1 < e < n. Nie musi ona być pierwsza lecz nieparzysta. IV Oblicz liczbę odwrotną modulo Ø do liczby e, czyli spełniającą równanie d e mod Ø = 1. Można to zrobić przy pomocy rozszerzonego algorytmu Euklidesa, który umieściliśmy w naszym artykule. V Klucz publiczny jest parą liczb (e, n), gdzie e nazywa się publicznym wykładnikiem. Możesz go przekazywać wszystkim zainteresowanym. VI Klucz tajny to (d, n), gdzie d nazywa się prywatnym wykładnikiem. Klucz ten należy przechowywać pod ścisłym nadzorem. Przykład: p = 13 q = 11 Wybieramy dwie dowolne liczby pierwsze. W naszym przykładzie nie będą one duże, aby nie utrudniać obliczeń. W rzeczywistości liczby te powinny być ogromne. Obliczamy Ø = (p - 1) (q - 1), czyli tzw. funkcję Eulera: Ø = 120 Ø = (13-1) (11-1) = 12 10 = 120 Obliczamy moduł n: n = 143 n = p q = 13 11 = 143 e = 7 d = 103 Wyznaczamy wykładnik publiczny e. Ma on być względnie pierwszy z Ø czyli z liczbą 120. Warunek ten spełnia, np. liczba 7. Wyznaczamy następnie wykładnik prywatny, który ma być odwrotnością modulo Ø liczby e, czyli d 7 mod 120 = 1. Liczbą spełniającą ten warunek jest 103 (7,143) Klucz publiczny (e, n) (103,143) Klucz tajny (d, n)

Szyfrowanie kluczem publicznym RSA I II Otrzymujesz od adresata klucz publiczny w postaci pary liczb (e, n). Wiadomość do zaszyfrowania zamieniasz na liczby naturalne t, które muszą spełniać nierówność 0 < t < n Można tutaj skorzystać np. z łączenia kodów znaków. Oczywiście adresat musi znać użyty przez ciebie sposób przekształcenia tekstu w liczbę, aby mógł on później odtworzyć otrzymaną wiadomość. Zwykle nie ma z tym problemu, ponieważ nadawca i odbiorca stosują wspólne oprogramowanie, które troszczy się za ciebie o takie szczegóły techniczne. Na tak otrzymanych liczbach wykonujesz operację szyfrowania i otrzymujesz liczby III c = t e mod n. IV Liczby c są zaszyfrowaną postacią liczb t i przekazuje się je adresatowi wiadomości. Klucz (e, n) umożliwił ich zaszyfrowanie, lecz nie pozwala ich rozszyfrować. Przykład: e = 7 n = 143 c = 7 Otrzymaliśmy klucz publiczny (e, n). Przy jego pomocy możemy zakodować liczby od 0 do 142. Zauważ, iż liczby 0 oraz 1 nie zostaną zakodowane Załóżmy, iż chcemy przesłać adresatowi zaszyfrowaną liczbę t = 123. W tym celu musimy obliczyć wartość wyrażenia: c = 123 7 mod 143 = 425927596977747 mod 143 = 7 Wynik jest zaszyfrowaną liczbą 123. Przesyłamy go do adresata. Rozszyfrowywanie kluczem prywatnym RSA I Jesteś adresatem zaszyfrowanych wiadomości. Wcześniej wszystkim korespondentom przesłałeś wygenerowany klucz publiczny (e,n), za pomocą którego mogą oni szyfrować i przesyłać ci swoje dane. Otrzymujesz więc zaszyfrowaną wiadomość w postaci liczb naturalnych c, które muszą spełniać warunek: 0 < c < n II Liczbę c przekształcasz na pierwotną wartość t stosując wzór: t = c d mod n III Z otrzymanej liczby t odtwarzasz wg ustalonego systemu znaki tekstu. Teraz możesz odczytać przesłaną wiadomość.

Przykład: d = 103 n = 143 c = 7 Otrzymaliśmy zakodowaną wiadomość o wartości 7. Jesteśmy w posiadaniu klucza prywatnego, który służy do rozszyfrowywania wiadomości zakodowanych kluczem publicznym. Wykonujemy następujące operacje: t = 7 103 mod 143 Potęga jest zbyt duża, aby można ją było w normalny sposób obliczyć (języki programowania mają zwykle ograniczenia co do wielkości liczb całkowitych). Jednakże nas nie interesuje wartość liczbowa potęgi, a jedynie reszta z dzielenia jej przez 143. Możemy więc rozłożyć potęgę na iloczyn składników o wykładnikach równych kolejnym potęgom liczby dwa: t = 123 7 103 mod 143 = 7 64 + 32 + 4 + 2 + 1 mod 143 = (7 64 mod 143) (7 32 mod 143) (7 4 mod 143) (7 2 mod 143) 7 mod 143 7 1 mod 143 = 7 7 2 mod 143 = (7 1 mod 143) 2 mod 143 = 49 mod 143 = 49 7 4 mod 143 = (7 2 mod 143) 2 mod 143 = 49 2 mod 143 = 113 7 8 mod 143 = (7 4 mod 143) 2 mod 143 = 113 2 mod 143 = 42 7 16 mod 143 = (7 8 mod 143) 2 mod 143 = 42 2 mod 143 = 48 7 32 mod 143 = (7 16 mod 143) 2 mod 143 = 48 2 mod 143 = 16 7 64 mod 143 = (7 32 mod 143) 2 mod 143 = 16 2 mod 143 = 113 Do wyliczenia potęgi bierzemy tylko te reszty, które występują w sumie potęg 2: (jeśli byłoby ich bardzo dużo, to każde mnożenie można wykonać z operacją modulo, dzięki czemu wynik nigdy nie wyjdzie poza wartość modułu) t = 7 103 mod 143 = 113 16 113 49 7 mod 143 = 123