Podstawy kryptografii
description
Transcript of Podstawy kryptografii
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”Proszęopomoc
• 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
Ź ró d łok o m u n ik a tu
A lg o ry tms z y fru ją c y
Tek s t ja w n y Tek s t ja w n y
A lg o ry tmd e s z y fru ją c y
K a n a ł in fo rm a c y jn y
Tek st z a s z y fro w a n y
W s p ó ln y k lu c z
M ie js c ep rz ez n ac z e n ia
A B
Model szyfrowania konwencjonalnego
• 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
Ź ró d łok o m u n ik a tu
S z y fra to r
Ź ró d łok lu c z a
B e z p ie c z n y k a n a ł
D e s z y fr a to rM ie js c e
p rz e z n a c z e n ia
K ry p to a n a l ity k X `K `
X Y X
K
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)• Klucza 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
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 Częstość (%)
Litera Częstość (%)
Litera Częstość
E 12,75 L 3,75 W 1,50 T 9,25 H 3,50 V 1,50 R 8,50 C 3,50 B 1,25 N 7,75 F 3,00 K 0,50 I 7,75 U 3,00 X 0,50 O 7,50 M 2,75 Q 0,50 A 7,25 P 2,75 Z 0,25 D 4,25 G 2,00
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 2tekst jawny : szyfrtranspozycyjnysyrrnpzcjyzftasoyyntekst 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 5tekst 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 atekst 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 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
Ogólny opis algorytmu
R u n d a 1
R u n d a 2
R u n d a 1 0
12 8-b itow y tek st jaw n y
12 8-b itow y tek st zaszy fro w any
K luczru ndy 1
G ene ra to rk luczy rund
12 8-b itow y k lucz
T e k s t j a w n y w 1 2
T t w we n k j y 1s a 2
K luczru ndy 2
K luczru ndy 1 0
$ * a x- \ & ^{ : C gu S . !
$ * a x - \ & ^ { : C g u S . !
M a c ie rz S ta n u
B y te S u b
S h iftR o w
M ix C o lu m n
A d d R o u n d K ey
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
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
ai,j bi,j
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 de f g hi j k lm n o p
a b c df g h ek l i jp m n o
b r a k p r z e su n ię c ia
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 ie o 2 b a j ty
p r z e s u n ię c ie o 3 b a j ty
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
a0,j
a1,j
a2,j
a3,j
b0,j
b1,j
b2,j
b3,j
o
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
Ź ró d łok o m u n ik a tu
A lg o ry tms z y fru ją c y
Tek s t ja w n y Tek s t ja w n y
A lg o ry tmd e s z y fru ją c y
K a n a ł in fo rm a c y jn y
Tek st z a s z y fro w a n y
M ie js c ep rz ez n ac z e n ia
A B
K lu czja w n y B
K lu czp ry w a tn y B
Szyfrowanie asymetryczne - poufność
B
Ź ró d łok o m u n ik a tu
S z y fro w a n ie
Ź ró d ło p a ryk lu cz y
D e s z y fro w a n ieM ie js c e
p rz ez n ac z e n ia
K ry p to a n a l ity k X `K P `b
X Y X
K J b
K P b
A
Szyfrowanie asymetryczne - uwierzytelnienie
B
A
Ź ró d łok o m u n ik a tu
S z y fro w a n ie
Ź ró d ło p a ryk lu cz y
D e s z y fro w a n ieM ie js c e
p rz ez n ac z e n ia
K ry p to a n a l ity k K P `a
X Y X
K J a
K P a
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. Wybierz dwie liczby pierwsze p, q
2. Oblicz n=pxq
3. Wybierz liczbę całkowitą d taką, że nwd(d,(n))=1 oraz 1<d<(n)
4. Oblicz e d-1 mod (n)
5. 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)
K o m u nika t
K b itó w
L x 5 1 2 b itó w = N x 3 2 b ity
D o p e łn ie n ie (1 -5 1 2 ) b itó w
D łu g o ś ćk o m u n ik a tu(K m o d 2 )6 4
1 0 0 .. .0
Y 0 Y 1
5 1 2 b itó w 5 1 2 b itó w
Y q
5 1 2 b itó w
Y L -1
5 1 2 b itó 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 81 2 8 1 2 8 1 2 8A B C D
1 2 8 b ito w y w y c ią g
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 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
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
Elementarna operacja MD5
• Każdy z kroków wykonywanych 64 razy dla każdego bloku ma postać
AB+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
+ m o d 2 3 2
g
+ m o d 2 3 2 X [k ]
+ m o d 2 3 2 T [i]
C L S s
+ m o d 2 3 2
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