13.05.2013 Views

Wykład 1 – podstawowe pojęcia i definicje

Wykład 1 – podstawowe pojęcia i definicje

Wykład 1 – podstawowe pojęcia i definicje

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Spis treści:<br />

<strong>Wykład</strong> 1 <strong>–</strong> <strong>podstawowe</strong> <strong>pojęcia</strong> i <strong>definicje</strong>....................................................................... 1<br />

<strong>Wykład</strong> 2 <strong>–</strong> Kryptografia, algorytmy historyczne.............................................................. 2<br />

<strong>Wykład</strong> 3 i 4 <strong>–</strong> Elementy kryptoanalizy............................................................................. 4<br />

<strong>Wykład</strong> 5 i 6 <strong>–</strong> Algorytmy blokowe................................................................................... 5<br />

<strong>Wykład</strong> 7 i 8 <strong>–</strong> algorytmy strumieniowe............................................................................ 9<br />

<strong>Wykład</strong> 9,10,11 <strong>–</strong> kryptografia asymetryczna ................................................................. 11<br />

<strong>Wykład</strong> 12 - Jednokierunkowe funkcje skrótu i ich zastosowania .................................. 12<br />

<strong>Wykład</strong> 1 <strong>–</strong> <strong>podstawowe</strong> <strong>pojęcia</strong> i <strong>definicje</strong><br />

1. Dwa aspekty bezpieczeństwa systemów informacyjnych<br />

a. Safety <strong>–</strong> system nie stanowi zagroŜenia dla środowiska, w którym działa<br />

b. Security <strong>–</strong> gromadzone, przetwarzane i przesyłane przez system dane oraz inne<br />

zasoby nie mogą być wykorzystywane w sposób niezgodny z dedykowanym<br />

przez właściciela im przeznaczeniem<br />

2. Źródła zagroŜeń dla danych: heterogeniczność, wielodostępność systemów.<br />

3. Główny cel ochrony <strong>–</strong> ochrona informacji gromadzonej, przetwarzanej i wysyłanej.<br />

4. Rola systemów ochrony informacji wzrasta wraz ze zmianą modelu gospodarki (globalizacja,<br />

zmiana zaleŜności pomiędzy podmiotami, zmiana typu pracownika, zwiększenie<br />

się roli informacji w funkcjonowaniu organizacji) i ze zmianą wykorzystywanego<br />

przez organizacje środowiska informatycznego (powszechne wykorzystanie sieci,<br />

handel elektroniczny, biznes elektroniczny).<br />

5. Ochrona informacji polega na ochronie następujących jej atrybutów:<br />

a. Poufność (niedostępność treści danych dla wszystkich nieuprawnionych podmiotów;<br />

mechanizmy wspierające: poziomy bezpieczeństwa, szyfrowanie danych;<br />

mechanizmy wspierające aspekt poufności powinny równieŜ umoŜliwiać<br />

identyfikację prób jego naruszenia)<br />

b. Integralność (dane nie mogą być zmieniane w sposób nieuprawniony, przez<br />

podmioty nieuprawnione <strong>–</strong> modyfikacja danych nie mui się wiązać z utratą poufności;<br />

mechanizmy wspierające: funkcje skrótu, system korekcji błędów,<br />

procedury uwierzytelniania; przyczyny utraty integralności: ingerencja nieupowaŜnionych<br />

podmiotów, zaniedbania, błędy transmisji i przetwarzania;<br />

system powinien być w stanie wykryć próbę naruszenia integralności danych;<br />

integralność i poufność powinny być zapewnione zarówno w przypadku przechowywania<br />

danych jak i ich przetwarzania i przesyłania).<br />

c. Dostępność (moŜliwość korzystania z systemu w sposób zdefiniowany w polityce<br />

przez uprawnionych uŜytkowników; przyczyny utraty dostępności: awaria<br />

systemu przetwarzania, transmisji, składowania danych, błędy uŜytkowników,<br />

celowy atak niektórych podmiotów; system powinien mieć moŜliwość wykrywania<br />

prób naruszenia dostępności, bo atak na dostępność moŜe być pierwszym<br />

etapem ataku na poufność i integralność; mechanizmy wspierające wła-<br />

1


ściwie zaprojektowany system, monitorowanie stopnia zuŜycia zasobów systemowych,<br />

monitorowanie ruchu w sieci)<br />

d. Spójność (konieczność zapewnienia zgodności danych pomiędzy sobą gdy są<br />

przechowywane w róŜnych miejscach oraz pomiędzy ich zapisem a stanem<br />

rzeczywistym, dotyczy przewaŜnie baz danych; warunki statyczne <strong>–</strong> określają<br />

zaleŜność pomiędzy danymi w kaŜdym stanie bazy danych, warunki dynamiczne<br />

<strong>–</strong> określają reguły zmiany stanów; przyczyny utraty spójności: niepoprawne<br />

operacje, niewłaściwa synchronizacja, awaria systemu; mechanizmy<br />

wspierające spójność: właściwe zarządzanie transakcjami, odtwarzanie bazy w<br />

przypadku awarii; integralność to nie jest to samo co spójność)<br />

6. Zapewnienie bezpieczeństwa informacji jest: procesem ograniczenia ryzyka lub prawdopodobieństwa<br />

utraty, problemem typu najsłabszego ogniwa, wymaga ustanowienia<br />

kompromisu pomiędzy środkami, kosztami i łatwością wykorzystania.<br />

7. Ochrona bezpieczeństwa wymaga zdefiniowania i wykorzystania mechanizmów dla<br />

kaŜdego z następujących aspektów bezpieczeństwa:<br />

a. Dostęp (określa metody uzyskiwania informacji, definiuje ścieŜki na których<br />

występują dane)<br />

b. Identyfikacja (zdolność do jednoznacznego rozróŜniania podmiotów, sama<br />

identyfikacja nie daje pewności, Ŝe ten kto korzysta z danego identyfikatora<br />

jest w rzeczywistości tym, za kogo się podaje <strong>–</strong> brak weryfikacji toŜsamości)<br />

c. Uwierzytelnianie (zdolność do wykazania, Ŝe podmiot, za którego się podaje,<br />

jest autentyczny)<br />

d. Autoryzacja (zdolność do określenia zbioru dozwolonych operacji w systemie<br />

dla danego identyfikatora podmiotu).<br />

8. Dodatkowe aspekty bezpieczeństwa:<br />

a. Rozliczalność (zdolność powiązania działań z tymi, którzy je wykonali, wiąŜe<br />

się z koniecznością monitorowania procesów, umoŜliwia identyfikację podmiotów<br />

w sposób niezaprzeczalny)<br />

b. Uświadomienie (poziom zrozumienia procesów bezpieczeństwa i sposobów<br />

ich stosowania, prezentowany przez społeczność uŜytkowników)<br />

c. Administrowanie (proces zarządzania bezpieczeństwem systemu, który wpływa<br />

na standardowe administrowanie systemem informacyjnym)<br />

<strong>Wykład</strong> 2 <strong>–</strong> Kryptografia, algorytmy historyczne<br />

1. Kryptografia <strong>–</strong> ogół wiedzy o metodach matematycznych związanych z takimi<br />

aspektami bezpieczeństwa, jak poufność, integralność i uwierzytelnianie. Kryptoanaliza<br />

<strong>–</strong> ogół wiedzy o metodach matematycznych przełamywania (osłabiania, pokonywania)<br />

usług związanych z bezpieczeństwem informacji realizowanych metodami<br />

kryptograficznymi. Kryptologia: kryptografia + Kryptoanaliza.<br />

2


2. Zadania związane z kryptografią: poufność, integralność (pewność, Ŝe wiadomość nie<br />

będzie modyfikowana przez nieuprawnione osoby), uwierzytelnianie (potwierdzenie<br />

toŜsamości podmiotu), podpis cyfrowy, autoryzacja, walidacja, anonimowość (ukrywanie<br />

toŜsamości podmiotu zaangaŜowanego w pewien proces), niezaprzeczalność<br />

(zapobieganie odmowom pewnych ustaleń), znakowanie czasem, poświadczenie, certyfikacja.<br />

3. Szyfrowanie <strong>–</strong> tworzenie kryptogramu (tekstu zaszyfrowanego) na podstawie jawnego<br />

tekstu źródłowego i klucza (kluczy) kryptograficznego. Deszyfrowanie <strong>–</strong> odtwarzanie<br />

tekstu jawnego na podstawie klucza (kluczy) kryptograficznego przez podmiot<br />

uprawniony do odbioru wiadomości. Klucz kryptograficzny <strong>–</strong> informacja wykorzystywana<br />

w procesie szyfrowania (i / lub deszyfrowania) do utajniania / odtwarzania<br />

wiadomości jawnej. Adwersarz <strong>–</strong> podmiot, który w dwustronnej wymianie informacji<br />

nie jest ani odbiorcą, ani nadawcą, ale stara się bezpieczeństwo wymiany informacji<br />

na róŜne sposoby. Kanał fizycznie bezpieczny <strong>–</strong> kanał, który nie jest fizycznie dostępny<br />

dla adwersarza. Kanał niezabezpieczony <strong>–</strong> umoŜliwia adwersarzowi manipulowanie<br />

przesyłaną informacją. Szyfr bezwarunkowo bezpieczny <strong>–</strong> niezaleŜnie od<br />

ilości przechwyconej informacji gwarantuje ochronę tekstu jawnego. Szyfr bezpieczny<br />

obliczeniowo <strong>–</strong> nie moŜna go przełamać przy zastosowaniu systematycznej analizy<br />

z wykorzystaniem dostępnych zasobów.<br />

4. Steganografia <strong>–</strong> dział wiedzy zajmujący się utajnianiem wiadomości przez ukrycie jej<br />

w pewnych danych. Steganografię stosuje się zwykle w celu ukrycia samego faktu porozumiewania<br />

się. Steganografia techniczna: stosowanie niewidzialnego atramentu,<br />

nakłuwanie literek większego komunikatu szpilką (sekwencja kolejnych liter lub sylab<br />

tworzy ukrytą wiadomość).<br />

5. Zasada Kerckhoffsa <strong>–</strong> najprostsze z metod szyfrowania opierają swoją siłę na tajności<br />

procedury szyfrowania. KaŜdy, kto pozna tę regułę moŜe bez trudu (w skończonym,<br />

relatywnie krótkim czasie) odtworzyć wiadomość z kryptogramu. Szyfry najczęściej<br />

spotykane współcześnie w systemach informatycznych opierają swoją siłę nie na<br />

tajności algorytmu lecz na tajności klucza. Algorytm szyfrowania i deszyfrowania<br />

jest jawny. Algorytm powinien być publicznie znany <strong>–</strong> ułatwia ocenę, dyskusję i<br />

znajdowanie słabych punktów.<br />

6. Algorytmy symetryczne (podstawieniowe) <strong>–</strong> dla kaŜdej pary kluczy (e, d) „obliczeniowo<br />

łatwe” jest znalezienie na podstawie znajomości jednego z kluczy, drugiego<br />

klucza.<br />

a. Monoalfabetyczne: dla kaŜdego klucza definiuje się przekształcenie szyfrujące:<br />

E=(e(m1), e(m2), …, e(mN)) = (c1, c2, …, cN). Kluczem deszyfrującym jest<br />

takie przekształcenie d=e -1 , Ŝe:<br />

D(c) = (d(c1), d(c2), …, d(cN)) = (m1, m2, …, mN).<br />

b. Polialfabetyczne: dla kaŜdego klucza definiuje się przekształcenie szyfrujące:<br />

E=(p1(m1), p2(m2), …, pN(mN)) = (c1, c2, …, cN).<br />

Kluczem deszyfrującym jest takie przekształcenie d=e -1 , Ŝe:<br />

D(c) = (p1 -1 (c1), p2 -1 (c2), …, pN -1 (cN)) = (m1, m2, …, mN).<br />

c. Poligramowe: bloki o długości t znaków są przekształcane w bloki kryptogramu<br />

tej samej długości za pomocą przekształcenia liniowego:<br />

c1 = (m1k11 + m2k12 + … + mtk1t) mod n<br />

c1 = (m1k21 + m2k22 + … + mtk2t) mod n<br />

……………………………………<br />

3


c1 = (m1k1t + m2kt2 + … + mtktt) mod n<br />

W zapisie macierzowym: C = KM mod n<br />

d. Homofoniczny szyfr podstawieniowy <strong>–</strong> zastępuje kaŜdy symbol wiadomości<br />

jawnej losowo wybranym ciągiem c ze zbioru H(a), gdzie H(a) jest zbiorem<br />

homofonów dla znaku a. Szyfry homofoniczne wyŜszych stopni <strong>–</strong> kryptogram<br />

utworzony przy pomocy takiego szyfru moŜna odszyfrować do więcej niŜ jednego<br />

sensownego tekstu jawnego, w zaleŜności od uŜytego klucza szyfrowania.<br />

7. Algorytmy permutacyjne (przestawieniowe) <strong>–</strong> dla kaŜdego klucza e definiuje się<br />

przekształcenie szyfrujące E=(m1, m2, …, mN) = (c1, c2, …, cN). Kluczem deszyfrującym<br />

jest takie przekształcenie d=e -1 , Ŝe: D(c) = (c1, c2, …, cN) = m.<br />

<strong>Wykład</strong> 3 i 4 <strong>–</strong> Elementy kryptoanalizy<br />

1. Podstawowym zadaniem kryptografii jest utrzymanie w tajemnicy tekstu jawnego,<br />

bądź klucza, bądź obu elementów jednocześnie przed atakującymi (przeciwnikami),<br />

którzy chcą uzyskać dostęp do tekstów przesyłanych w kanale komunikacyjnym.<br />

2. Kryptoanaliza jest nauką o odtwarzaniu tekstu jawnego bez znajomości klucza. Zajmuje<br />

się równieŜ wyszukiwaniem słabych punktów systemów kryptograficznych oraz<br />

punktów, które mogą pozwolić na znalezienie sposobu poznania tekstu jawnego lub<br />

klucza.<br />

3. Utrata tajności klucza w sposób inny niŜ przy pomocy metod krypto analitycznych jest<br />

nazywana kompromitacją klucza.<br />

4. Kryptoanaliza zakłada, Ŝe bezpieczeństwo algorytmu jest oparte na kluczu. Kryptoanalityk<br />

zna wszystkie szczegóły algorytmu szyfrowania oraz jego implementację. ZałoŜenie<br />

takie jest fałszywe w wielu realnych systemach/<br />

5. Oznaczenia: Ci <strong>–</strong> ity kryptogram, Mi <strong>–</strong> ity tekst jawny, K <strong>–</strong> klucz, EK <strong>–</strong> operacja szyfrowania<br />

za pomocą klucza K, DK <strong>–</strong> operacja deszyfrowania za pomocą klucza K.<br />

6. WyróŜnia się główne metody łamania szyfrów:<br />

a. Łamanie z kryptogramami <strong>–</strong> Kryptoanalityk dysponuje kryptogramami kilku<br />

wiadomości, zaszyfrowanych z zastosowaniem tego samego algorytmu szyfrującego;<br />

zadanie polega na odtworzeniu tekstu jawnego, moŜliwie wielu wiadomości<br />

lub na poznaniu klucza zastosowanego do zaszyfrowania.<br />

b. Łamanie ze znanym tekstem jawnym <strong>–</strong> Kryptoanalityk dysponuje nie tylko<br />

kryptogramami kilku wiadomości lecz takŜe ich tekstami jawnymi. Zadanie<br />

polega na znalezieniu klucza zastosowanego do szyfrowania lub teŜ wydedukowania<br />

algorytmu do deszyfrowania kolejnych wiadomości zaszyfrowanych<br />

tym kluczem. Najpopularniejsza metoda.<br />

c. Łamanie z wybranym tekstem jawnym <strong>–</strong> Kryptoanalityk ma moŜliwość wybrania<br />

tekstu jawnego i ma dostęp do jego kryptogramu. Zadaniem kryptoanalityka<br />

jest wywnioskowanie klucza (kluczy) zastosowanego do zaszyfrowania<br />

4


lub wydedukowaniu algorytmu do deszyfrowania kolejnych wiadomości zaszyfrowanych<br />

tym samym kluczem.<br />

d. Łamanie z adaptacyjnie wybranym tekstem jawnym <strong>–</strong> Kryptoanalityk moŜe<br />

nie tylko wybrać dowolny tekst jawny do szyfrowania, ale takŜe wykonać kolejne<br />

próby, dobierając tekst jawny zgodnie z wynikami poprzednich szyfrowań.<br />

Przy łamaniu z wybranym tekstem jawnym łamiący moŜe wybrać do szyfrowania<br />

jeden duŜy blok tekstu jawnego. Przy łamaniu z adaptacyjnie wybranym<br />

tekstem jawnym moŜe wybrać mniejszy blok tekstu jawnego, potem wybrać<br />

inny, biorąc pod uwagę skutki poprzedniego wyboru.<br />

e. Łamanie z wybranym kryptogramem <strong>–</strong> Kryptoanalityk moŜe dobierać róŜne<br />

kryptogramy do deszyfrowania i mieć dostęp do odszyfrowanego tekstu jawnego.<br />

Gdy ma sprawdzoną metodę automatycznego deszyfrowania jego zadanie<br />

sprowadza się do znalezienia klucza.<br />

f. Łamanie z wybranym kluczem <strong>–</strong> Kryptoanalityk posiada pewną wiedzę o<br />

powiązaniach między kluczami.<br />

7. Całkowite złamanie szyfru <strong>–</strong> Kryptoanalityk znajduje taki klucz K, Ŝe DK(C) = M.<br />

Ogólne wnioskowanie <strong>–</strong> Kryptoanalityk znajduje alternatywny algorytm, równowaŜny<br />

z algorytmem DK(C), nie wymagającym poznania K. Lokalne wnioskowanie <strong>–</strong> Kryptoanalityk<br />

znajduje tekst jawny przechwyconego kryptogramu. Częściowe wnioskowanie<br />

<strong>–</strong> Kryptoanalityk zdobywa nieco informacji o kluczu i tekście jawnym. Informacją<br />

tą moŜe być kilka bitów klucza lub informacja o formacie tekstu jawnego.<br />

8. Tylko algorytmów z kluczem jednorazowym nie moŜna złamać dysponując nieograniczonymi<br />

zasobami. Wszystkie inne systemy moŜna złamać podstawiając po kolei<br />

wszystkie klucze i sprawdzając czy otrzymany tekst jest sensowny (brute force).<br />

Kryptografia zajmuje się przede wszystkim systemami, których nie da się złamać obliczeniowo<br />

9. ZłoŜoność metody łamania moŜna mierzyć kilkoma sposobami: złoŜoność danych,<br />

złoŜoność przetwarzania, złoŜoność pamięciowa.<br />

10. DuŜa przestrzeń klucz jest konieczna do złamania szyfru, ale nie jest wystarczająca.<br />

Mogą występować tzw. Ataki skrócone. Prawie nigdy nie da się udowodnić, Ŝe taki<br />

atak nie jest moŜliwy.<br />

11. Jeśli przyjmiemy, Ŝe k to długość klucza, a T to czas wykonywania pojedynczej operacji<br />

to maksymalny czas łamania szyfru wynosi 2 k T. Większość kluczy zostaje znalezionych<br />

w połowie czasu, zatem czas ten wynosi 2 k-1 T.<br />

12. Kryptoanaliza stosowana koncentruje się na atakach, które są w stanie uzyskać tekst<br />

jawny. Kryptografia teoretyczna koncentruje się na pokazaniu słabości algorytmu.<br />

<strong>Wykład</strong> 5 i 6 <strong>–</strong> Algorytmy blokowe<br />

1. Szyfry blokowe dzielą tekst jawny na bloki o stałej długości i wynikowy kryptogram<br />

ma taką samą długość. Algorytmy blokowe mogą pracować w róŜnych trybach. Przypominają<br />

algorytmy podstawieniowe w duŜej skali. Większość symetrycznych algorytmów<br />

blokowych opiera się o Strukturę Feistela.<br />

5


2. Algorytmy blokowe propagują błędy w pewnym ograniczonym zakresie lecz ze<br />

względu na swoją elastyczność i moŜliwość pracy w róŜnych trybach są najczęściej<br />

wykorzystywane do ochrony róŜnych atrybutów danych. Własności atrybutów blokowych<br />

są zaleŜne równieŜ od wybranego trybu pracy.<br />

3. Algorytmy blokowe są współczesną wersją ksiąŜek kodowych. Algorytm jest zestawem<br />

wielu ksiąŜek kodowych, wspólny klucz wymusza uŜycie jednej ksiąŜki, zmiana<br />

klucza powoduje wybór innej ksiąŜki.<br />

4. Dwie główne zasady szyfrowania: mieszanie (konfuzja) <strong>–</strong> oznacza rozmycie zaleŜności<br />

pomiędzy tekstami jawnymi, a ich zaszyfrowanymi odpowiednikami; i rozpraszanie<br />

(dyfuzja) <strong>–</strong> oznacza rozłoŜenie zawartych w tekście jawnym informacji w całym<br />

tekście szyfrowanym.<br />

5. Sieci Feistela <strong>–</strong> implementacja koncepcji Shanonna dotycząca przestawień i podstawień,<br />

blok wejściowy dzielony na dwie części, przetwarzanie wielokrotnie w procesie<br />

algorytmu rundy, podstawienie na lewej części danych, prawa część poddawana przestawieniom.<br />

Części są ze sobą zamieniane po kaŜdej rundzie.<br />

6. Efektem lawinowym nazywamy intensywniejszy niŜ dla rozpraszania proces rozmazania<br />

tekstu jawnego w tekście tajnym. Jest spotykany dla szyfrowania blokowego.<br />

KaŜdy bit zaszyfrowanego tekstu zaleŜy od wszystkich bitów w danym bloku. Dla<br />

zmiany pojedynczego bitu tekstu jawnego lub klucza kaŜdy bit tekstu zaszyfrowanego<br />

powinien zmienić swoją wartość z prawdopodobieństwem 0,5.<br />

7. DES : dane są szyfrowane w 64 bitowych blokach, klucz ma długość 16 bitów, algorytm<br />

produktowy (stosuje transpozycje w kolejnych etapach), szyfrowanie polega na<br />

serii etapów przetwarzających 64 bitowe dane wejściowe w 64 bitowy wynik. Deszyfrując<br />

wykonuje się te same etapy przy tym samym kluczu, ale w odwrotnej kolejności.<br />

NajwaŜniejszym elementem są S-bloki.<br />

8. Ataki czasowe <strong>–</strong> wykorzystanie znanych zaleŜności czasowych pomiędzy wejściem, a<br />

wyjściem w kontekście zmiany tekstu jawnego i klucza. Ataki analityczne <strong>–</strong> wykorzystują<br />

wiedzę z dostępnych kryptogramów, umoŜliwiają odtworzenie części lub całych<br />

kluczy dla poszczególnych rund, pozostała część dostępna przez przegląd zupełny.<br />

Ataki te wykorzystują pewne właściwości statystyczne.<br />

9. Kryptoanaliza róŜnicowa <strong>–</strong> statystyczny atak na algorytmy oparte na sieci Feistel<br />

Funkcja F daje rezultaty zaleŜne od wejścia i od klucza. Polega na porównywaniu rezultatów<br />

dwóch szyfrowań wykonanych z uŜyciem określonej pary kluczy. Dla zadanego<br />

wejścia otrzymujemy określone róŜnice na wyjściu z prawdopodobieństwem p.<br />

Jeśli odnajdziemy przykłady dające wyŜsze prawdopodobieństwo moŜemy wnioskować<br />

o wartości klucza rundy. Proces musimy powtarzać dla kaŜdej rundy. UmoŜliwia<br />

atak na DES rzędu 2 47 operacji, z uŜyciem 2 47 tekstów jawnych. Atak przeszukania<br />

zupełnego 2 55 jest bardziej praktyczny, bo nie wymaga dodatkowej analizy koniecznej<br />

w przypadku analizy róŜnicowej.<br />

10. Kryptoanaliza liniowa <strong>–</strong> oparta na próbie określenia liniowego przybliŜenia przekształcenia<br />

deszyfrującego DES. UmoŜliwia skuteczny atak na DES przy uŜyciu 2 47<br />

tekstów jawnych.<br />

11. Kryptoanaliza algebraiczna <strong>–</strong> polega na przedstawieniu algorytmu w postaci zbioru<br />

równań, a następnie ich rozwiązaniu. Jest skuteczny między innymi dla AES. Wykazano,<br />

Ŝe liczba operacji wymagana do złamania klucza nie rośnie wykładniczo do ilo-<br />

6


ści rund W ataku tym naleŜy uŜyć jednej pary: blok z tekstem jawnym <strong>–</strong> blok z tekstem<br />

zaszyfrowanym. Metoda skuteczna równieŜ dla szyfrów strumieniowych.<br />

12. Tryby pracy:<br />

a. Elektroniczna ksiąŜka kodowa ECB <strong>–</strong> kaŜdy 64 bitowy blok jest kodowany<br />

niezaleŜnie z zastosowaniem tego samego klucza; zastosowania <strong>–</strong> bezpieczna<br />

transmisja pojedynczych wartości.<br />

b. Wiązania bloków zaszyfrowanych CBC <strong>–</strong> dane wejściowe algorytmu szyfrującego<br />

stanowią XOR następnych 64 bitów tekstu jawnego i poprzednich 64<br />

bitów tekstu zaszyfrowanego; zastosowania <strong>–</strong> transmisja blokowa ogólnego<br />

zastosowania, uwierzytelnianie.<br />

c. Szyfrowanie ze sprzęŜeniem zwrotnym CFB <strong>–</strong> dane przetwarzane są po j bitów;<br />

zastosowania <strong>–</strong> transmisja strumieniowa ogólnego zastosowania, uwierzytelnianie.<br />

d. SprzęŜenie zwrotne wyjściowe OFB <strong>–</strong> transmisja strumieniowa przez kanał<br />

naraŜony na zakłócenia<br />

13. Podwójny DES <strong>–</strong> przy danym tekście jawnym i dwóch kluczach K1 i K2 tekst zaszyfrowany<br />

jest generowany jako C=EK1(EK2(P)). Deszyfrowanie wymaga odwrócenia<br />

kolejności kluczy P=DK1(DK2(C)).<br />

14. Potrójny DES z dwoma kluczami - przy danym tekście jawnym i dwóch kluczach<br />

K1 i K2 tekst zaszyfrowany jest generowany jako C=EK1(DK2(EK1(P))). Deszyfrowanie<br />

wymaga odwrócenia kolejności kluczy P=DK1(EK2(DK1(C))).<br />

15. Potrójny DES z trzema kluczami: C=EK1(EK2(EK3(P))), P=DK1(DK2(DK3(C))).<br />

16. IDEA <strong>–</strong> szyfr blokowy, bloki mają po 64 bity. Klucz ma 128 bitów. Zastosowanie 16<br />

bitowych podbloków, zastosowanie prostych operacji algebraicznych, podobieństwo<br />

między szyfrowaniem, a deszyfrowaniem, regularna struktura ułatwiająca zastosowanie<br />

w technice VLSI. Długość bloków powinna być duŜa, co utrudnia kryptoanalizę,<br />

długość klucza powinna uniemoŜliwiać atak brute force. Mieszanie (konfuzja) <strong>–</strong> zaleŜność<br />

tekstu zaszyfrowanego od jawnego powinna być skomplikowana. Rozpraszanie<br />

(dyfuzja) <strong>–</strong> kaŜdy bit wejścia powinien wpływać na kaŜdy bit wyjścia (tekstu zaszyfrowanego).<br />

17. W IDEA mieszanie uzyskuje się za pomocą trzech podstawowych operacji wykonywanych<br />

na dwóch 16 bitowych blokach: XOR logiczny, dodawanie liczb całkowitych<br />

modulo 216, mnoŜenie liczb całkowitych modulo 216+1.<br />

18. Rozpraszanie jest osiągane za pomocą <strong>podstawowe</strong>j jednostki algorytmu nazywanej<br />

strukturą mnoŜenia / dodawania. Struktura ta produkuje dwa 16 bitowe wyniki z<br />

dwóch 16 bitowych wartości tekstu jawnego i dwóch 16 bitowych podkluczy wyprowadzanych<br />

z klucza. Wszystkie 52 podklucze są generowane na podstawie głównego<br />

128 bitowego klucza. Pierwsze 8 podkluczy generowane bezpośrednio z klucza, następnie<br />

cyklicznie przesuwamy klucz w lewo o 25 bitów i generujemy kolejne 8 podkluczy.<br />

Procedurę powtarzamy do wygenerowania 52 podkluczy.<br />

19. AES-Rijndael <strong>–</strong> blokowy algorytm szyfrowania z kluczem symetrycznym pozwalającym<br />

na wykorzystanie klucza o długości 128, 192 lub 512 bitów. Charakteryzuje się<br />

bardzo wysoką wydajnością zarówno w implementacji sprzętowej, jak i programowej,<br />

uwzględniającej róŜne potrzeby środowiska i systemy operacyjne. Testy wykazały, Ŝe<br />

7


nie wymaga duŜo pamięci operacyjnej, co sprawia, Ŝe moŜna go stosować w wielu<br />

niedostępnych dla innych algorytmów miejscach.<br />

20. Rijndael opis <strong>–</strong> proces szyfrowania podlega iteracjom, przy czym wyróŜnia się: rundę<br />

wstępną, pewną ilość rund standardowych, z których kaŜda składa się z 4 transformacji<br />

(ilość rund zaleŜy od klucza i wynosi odpowiednio 10, 12, 14), rundę końcową.<br />

21. Spełnia trzy główne załoŜenia twórców <strong>–</strong> odporność na wszystkie znane ataki, szybkość<br />

pracy, zwartość kodu na róŜnych platformach. Aktualny stan wiedzy nie pozwala<br />

na atak na wiadomości szyfrowane tym algorytmem. Atak brutalny jest niewykonalny<br />

ze względu na długość klucza, jest łatwy do implementacji sprzętowej i programowej.<br />

22. Rijndael <strong>–</strong> szczegóły działania <strong>–</strong> <strong>podstawowe</strong> <strong>pojęcia</strong>: stan i runda. Runda to odpowiednik<br />

standardowego etapu obliczeń, mający jako parametr tzw. Klucz rundy. Z reguły<br />

runda jest superpozycją co najmniej dwóch bijekcji (podstawienia i permutacji).<br />

Przekształcenia składające się na kaŜdą rundę operują na pewnej macierzy prostokątnej<br />

stanowiącej wynik kolejnych obliczeń podczas realizacji algorytmu, nazywanej<br />

stanem. Jest to macierz w zbiorze {0,1} 8 , czyli macierz, w której współczynniki to<br />

bajty. Macierz bajtowa stanu ma 4 wiersze i Nb kolumn (Nb to długość bloku podzielona<br />

przez 32), Nb={4, 6, 8}. Klucz szyfrujący jest równieŜ reprezentowany jako macierz<br />

o 4 wierszach.<br />

23. Liczbę kolumn tego klucza oznaczamy jako Nk. Nk wyliczane jest tak samo jak Nb.<br />

Długość klucza i bloku (Nb i Nk) moŜemy zmieniać niezaleŜnie. Liczba rund Nr zale-<br />

Ŝy od Nb i Nk.<br />

24. Przekształcenie rundy jest bijekcją będącą superpozycją czterech bijekcji składowych.<br />

Runda składa się z następujących czterech przekształceń operujących na macierzy stanu:<br />

a. Przekształcenie ByteSub (operuje się na poszczególnych elementach macierzy<br />

stanu, które są pojedynczymi bajtami. KaŜdy bajt przechodzi transformację i<br />

jest wpisywany w to samo miejsce).<br />

b. Przekształcenie ShiftRow (przesuwa cyklicznie kolejne wiersze macierzy stanu<br />

o odpowiednią liczbę pozycji; wartości przesunięcia zaleŜą od wielkości<br />

bloku i klucza; poniewaŜ takie przesunięcie sprowadza się jedynie do zmiany<br />

uporządkowania danych w pamięci, nie jest złoŜone obliczeniowo).<br />

c. Przekształcenie MixColumn (miesza wartości zawarte w jednej kolumnie,<br />

⎡02<br />

03 01 01⎤<br />

⎢ ⎥<br />

zmieniając jednocześnie ich wartości: B = CA, gdzie C= ⎢<br />

01 02 03 01<br />

⎥ )<br />

⎢01<br />

01 02 03⎥<br />

⎢ ⎥<br />

⎣03<br />

01 01 02⎦<br />

d. Do kaŜdej rundy dodawany jest z klucza pierwotnego specjalny klucz rundy,<br />

który zostaje w tej transformacji połączony z macierzą danych za pomocą<br />

XORa. Poszczególne komórki klucza są XORowane z odpowiednimi komórkami<br />

macierzy stanu.<br />

25. Operacje MixColumn i ShiftRow zapewniają silną dyfuzję (zamiana jednego bitu stanu<br />

wpływa na wszystkie bity stanu w małej liczbie rund). Operacje ByteSub i dodawanie<br />

klucza zapewniają silną konfuzję (zgubienie zaleŜności <strong>–</strong> na podstawie rezultatu<br />

jednej rundy nie moŜna wywnioskować macierzy stanu na początku kolejnej rundy.<br />

Aby przeprowadzić kryptoanalizę róŜnicową, między poszczególnymi rundami muszą<br />

8


istnieć przewidywalne róŜnice. Udowodniono, Ŝe odpowiednie prawdopodobieństwa<br />

wykorzystywane przy kryptoanalizie DESa w przypadku Rijndaela nie są wystarczające<br />

do przeprowadzenia skutecznego ataku. Udowodniono, Ŝe zaleŜności danych pomiędzy<br />

rundami dla Rijndaela są tak małe, Ŝe Kryptoanaliza liniowa jest nieskuteczna.<br />

Istnieją ataki (ISL, Square), które są zdolne do złamania algorytmu Rijndaela, ale dla<br />

liczby rund znacznie mniejszej niŜ to określone w standardzie.<br />

<strong>Wykład</strong> 7 i 8 <strong>–</strong> algorytmy strumieniowe<br />

1. Uogólnienie koncepcji szyfrowania z jednym kluczem one-time-pad. MoŜliwość szacowania<br />

bezpieczeństwa i większa praktyczność niŜ OTP. Jest inicjowany przy pomocy<br />

krótkiej tajnej wiadomości stanowiącej klucz. Klucz jest rozciągany do długiego<br />

ciągu stanowiącego klucz szyfrowania.<br />

2. Klucz szyfrowania jest wykorzystywany zgodnie z ideą klucza jednorazowego: TT =<br />

TJ XOR Klucz. Podstawą jest generator ciągów pseudolosowych. Generowane są pojedyncze<br />

bity lub bajty.<br />

3. Algorytmy synchroniczne <strong>–</strong> są szyframi, w których strumień klucza jest generowany<br />

niezaleŜnie od zawartości tekstu jawnego i szyfrogramu. Jest potrzebna pełna synchronizacja<br />

pomiędzy nadawcą, a odbiorcą. Nie ma propagacji błędów <strong>–</strong> pojedynczy<br />

błąd nie wpływa na kolejne porcje danych. Doskonale radzi sobie w sytuacjach o du-<br />

Ŝym prawdopodobieństwie błędów transmisji. Jest podatny na taki zmiany bitów.<br />

Zmiana bitu w szyfrogramie powoduje zmianę bitu w tekście jawnym. Podatność na<br />

taki wstawiania i usuwania bitów / bajtów. Utrata synchronizacji.<br />

4. Jeśli transformacja łącząca strumień klucza ze strumieniem tekstu jawnego jest funkcją<br />

XOR, wówczas błędy bitowe w pewnych pozycjach szyfrogramu będą miały<br />

wpływ tylko na odpowiednie fragmenty tekstu jawnego. Nie ma zatem propagacji błędów.<br />

Wadą tego rozwiązania jest zapewnienie pełnej synchronizacji pomiędzy nadawcą,<br />

a odbiorcą. W przypadku jej braku odtworzenie tekstu jawnego przez odbiorcę stanie<br />

się niemoŜliwe. Dla zminimalizowania wpływu utraty synchronizacji stosuje się<br />

np. sekwencje inicjujące, numeracje ramek, itp.<br />

5. Algorytmy asynchroniczne <strong>–</strong> samo synchronizujące się szyfry strumieniowe <strong>–</strong> generowany<br />

strumień klucza jest zaleŜny od wartości klucza oraz od wartości poprzednich<br />

szyfrogramów. Liczba szyfrogramów wpływająca na wartość klucza musi być stała w<br />

obszarze działania całego szyfru. Generator strumienia szyfrującego uŜywa kilku poprzednich<br />

bitów szyfrogramu przy generowaniu kolejnych elementów ciągu. Pojedynczy<br />

błąd rozprzestrzenia się na kilka kolejnych elementów szyfrogramu. Powrót do<br />

poprawnego deszyfrowania po usunięciu lub wstawieniu bitów jest automatyczny z<br />

ustaloną liczbą niemoŜliwych do odzyskania bitów wiadomości.<br />

6. Algorytmy asynchroniczne są szyframi z pamięcią. Stanowi ją bufor dla szyfrogramów<br />

ze stanów poprzednich. Implementując tego rodzaju szyfry pojawia się problem<br />

polegający na wygenerowaniu strumienia klucza w pierwszych t-chwilach. Jedną z<br />

technik rozwiązania tego problemu moŜe być uŜycie dla pierwszych t-chwil wektora<br />

inicjalizującego IV.<br />

7. Jedną z podstawowych własności tych szyfrów jest samosynchronizacja. Szyfry te po<br />

utracie synchronizacji zdolne są do jej automatycznego przywrócenia, poniewaŜ pro-<br />

9


ces deszyfrowania zaleŜy tylko od t stanów poprzednich, a nie od wszystkich, jak w<br />

przypadku algorytmów synchronicznych. ZaleŜność ta korzystnie wpływa równieŜ na<br />

propagację błędów, która jest w tym przypadku ograniczona do t szyfrogramów. Kolejną<br />

zaletą są dobre właściwości statystyczne. PoniewaŜ kaŜdy bit tekstu jawnego<br />

wpływa na wartość szyfrogramu, statystyczne własności tekstu jawnego ulegają rozrzuceniu<br />

w obrębie wszystkich szyfrogramów, dlatego te szyfry są odporniejsze na<br />

ataki bazujące na redundancji tekstu jawnego.<br />

8. Tradycyjne algorytmy strumieniowe wykorzystują rejestry przesuwne. Rejestr przesuwny<br />

generuje serię stanów i towarzyszy mu sprzęŜenie zwrotne, na przykład rejestr<br />

z liniowym sprzęŜeniem zwrotnym <strong>–</strong> linear feedback shift register (LFSR). Dwa podejścia<br />

do wykorzystania LFSR na potrzeby szyfrowania: jeden LFSR z nieliniową<br />

funkcją połączeń, kilka LFSR połączonych nieliniową funkcją. Kluczem jest początkujące<br />

wypełnienie LFSR (ziarno). Ciąg szyfrujący stanowi wyjście rejestru (zestawu<br />

rejestrów). Pojedynczy rejestr LFSR jest specjalnym przypadkiem złoŜonych rejestrów.<br />

W celu przejścia od przypadku pojedynczego do przypadku wielokrotnego uŜycia:<br />

niech LFSR0, …, LFSRn-1 będą identyczne; ziarno LFSR0 jest identyczne z ziarnem<br />

LFSR; ziarno LFSR1 jest identyczne z ziarnem LFSR z kroku pierwszego, itd.<br />

9. Algorytm Berlekampa-Masseya: dysponując częścią określonego strumienia moŜemy<br />

znaleźć najkrótszy LFSR, który wygenerowałby taką sekwencję. Wymiar problemu<br />

wynosi N 2 , gdzie N jest długością LFSR. Algorytm jest iteracyjny, potrzebuje jedynie<br />

2N kolejnych bitów.<br />

10. Sekwencja bitów: s=(s0, s1, s2, …, sn); liniowa złoŜoność: s jest najmniejszym rozmiarem<br />

LFSR generującym s; niech L będzie liniową złoŜonością s; wtedy s jest wielomianem<br />

definiującym połączenia rejestru o następującej postaci:<br />

C(x)=c0+c1x+c2x 2 +…+cLx L . Algorytm pozwala określić C(x) i L.<br />

11. Algorytm ten jest efektywną metodą określenia minimalnego LFSR do wygenerowania<br />

sekwencji. Znany jest tekst jawny oraz wartości bitów generatora. MoŜe być uŜyty<br />

do odnalezienia wszystkich bitów z wystarczająco długim ciągiem generatora. Wystarcza<br />

2L bitów, gdzie L jest liniową złoŜonością generatora. Ciąg pseudolosowy musi<br />

mieć duŜą złoŜoność liniową. Generowana sekwencja jest dobra, jeśli spełnia kryteria<br />

pseudolosowości. Dobry generator musi być nieprzewidywalny.<br />

12. Atak korelacji <strong>–</strong> intruz uzyskuje część ciągu wygenerowanego przez LFSR. Zgodnie<br />

z zasadą Kerckhoffa moŜemy załoŜyć, Ŝe rejestr i funkcje są znane. Jedynie nie jest<br />

znany klucz <strong>–</strong> ziarno. Celem jest odtworzenie początkowego stanu rejestru LFSR.<br />

Znamy wszystkie połączenia dla wielomianu generującego i funkcji nieliniowej. Czasami<br />

jest moŜliwe określenie początkowego ustalenia LFSR niezaleŜnie poprzez korelację<br />

wyjścia LFSR z dostępnym ciągiem bitów lub poprzez typowy atak dziel i rządź.<br />

13. Generator Blum Micali: w generatorze tym wykorzystuje się trudność w obliczaniu<br />

logarytmu dyskretnego; wybieramy dwie liczby pierwsze a i p oraz x0 (zarodek), a następnie<br />

obliczamy: xi+1=a xi (mod) p dla i=1,2,…. Pseudolosowy ciąg bitów tworzony<br />

jest w następujący sposób: ki = 1 jeŜeli xi < (p-1)/2 lub 0 w przeciwnym przypadku.<br />

14. Generator Blum-Blum-Shub: znajdujemy dwie duŜe liczby pierwsze p i q takie, Ŝe<br />

p≡3 (mod 4) oraz q≡3 (mod 4); N=pq. Wybieramy losową liczbę x względnie pierwszą<br />

z N, a następnie obliczamy x0=x 2 mod N; x0 stanowi zarodek dla generatora. Liczymy<br />

xi+1=xi 2 mod N. Generowanym bitem jest najmłodszy bit xi+1.<br />

15. Algorytm RC4 <strong>–</strong> długość klucza to 40 lub 128 bitów. Jest to algorytm strumieniowy,<br />

w zaleŜności od długości klucza tworzony jest ciąg bajtów, który wykorzystuje się ja-<br />

10


ko klucz jednorazowy. Daje moŜliwość stosowania kluczy róŜnej długości. Łatwa realizacja<br />

sprzętowa dzięki prostocie algorytmu. Dwie fazy działania: tworzenie klucza<br />

jednorazowego i szyfrowanie za pomocą XORa; klucz jednorazowy jest uŜywany tylko<br />

raz w operacji XOR. Czas szyfrowania około 10 razy szybszy niŜ dla DES. MoŜliwa<br />

Kryptoanaliza z wykorzystaniem pary: tekst jawny, tekst zaszyfrowany. Stosowany<br />

w protokole WEP.<br />

<strong>Wykład</strong> 9,10,11 <strong>–</strong> kryptografia asymetryczna<br />

1. Motywacja: wzrost potrzeb związanych z bezpieczeństwem z powodu rozwoju sieci<br />

komputerowych, potrzeba realizacji elektronicznych transakcji, operacji finansowych<br />

z zapewnieniem uwierzytelniania, podpisu cyfrowego, niezaprzeczalności, trudna realizacja<br />

podanych usług bezpieczeństwa stosując wyłącznie algorytmy symetryczne,<br />

trudna realizacja usługi dystrybucji klucza w środowisku sieciowym z wieloma uŜytkownikami<br />

stosując wyłącznie szyfrowanie symetryczne.<br />

2. Algorytmy asymetryczne z kluczem jawnym opierają się na funkcjach matematycznych,<br />

a nie na podstawianiu i permutacji. Szyfrowanie jest asymetryczne: wykorzystuje<br />

się dwa klucze: publiczny i prywatny.<br />

3. W szyfrowaniu symetrycznym ten sam algorytm jest stosowany zarówno do szyfrowania,<br />

jak i deszyfrowania, a nadawca i odbiorca muszą znać taki sam algorytm i mieć<br />

taki sam klucz. W szyfrowaniu asymetrycznym jeden algorytm jest wykorzystywany<br />

do szyfrowania i deszyfracji z parą kluczy (prywatny, publiczny). Nadawca i odbiorca<br />

muszą mieć jeden z pary kluczy.<br />

4. W szyfrowaniu symetrycznym klucz nie moŜe być ujawniony, odszyfrowanie komunikatu<br />

bez posiadania innych danych powinno być niemoŜliwe lub bardzo kosztowne,<br />

a znajomość algorytmu oraz próbki tekstu zaszyfrowanego nie mogą być wystarczające<br />

do odkrycia klucza.<br />

5. W szyfrowaniu asymetrycznym jeden z dwóch kluczy nie moŜe być ujawniony, odszyfrowanie<br />

komunikatu bez posiadania innych danych musi być niemoŜliwe lub bardzo<br />

kosztowne, a znajomość algorytmu, jednego klucza lub próbki tekstu zaszyfrowanego<br />

nie mogą być wystarczające do odkrycia drugiego klucza.<br />

6. Wymagania dla systemów szyfrowania z kluczem jawnym: strona B moŜe łatwo na<br />

drodze obliczeń wygenerować swój klucz prywatny i publiczny, nadawca A znając<br />

klucz publiczny B i tekst jawny wygenerować tekst zaszyfrowany, odbiorca B moŜe<br />

łatwo otrzymać tekst jawny z tekstu zaszyfrowanego znając swój klucz prywatny, dla<br />

przeciwnika znającego klucz jawny B, określenie klucza prywatnego B powinno być<br />

niewykonalne, dla przeciwnika znającego klucz jawny B i tekst zaszyfrowany, określenie<br />

tekstu jawnego powinno być niewykonalne, funkcje szyfrowania i deszyfrowania<br />

mogą być stosowane w dowolnej kolejności.<br />

7. Kryptoanaliza algorytmów asymetrycznych: atak brute force, atak na podstawie<br />

klucza jawnego: próba wyliczenia klucza prywatnego, atak prawdopodobnego komunikatu<br />

<strong>–</strong> wszystkie moŜliwe komunikaty są szyfrowane kluczem jawnym i porównywane<br />

z tekstem zaszyfrowanym. Większość algorytmów asymetrycznych umoŜliwia<br />

szyfrowanie, podpis elektroniczny, etc. Niektóre słuŜą jedynie wymianie kluczy, inne<br />

jedynie stosowane są do podpisów elektronicznych.<br />

11


8. Algorytm plecakowy Merkle-Hellman <strong>–</strong> wygeneruj ciąg superrosnący, przekształć<br />

do postaci ogólnego plecaka, klucz publiczny <strong>–</strong> ogólny plecak (OP), klucz prywatny<br />

(CS) <strong>–</strong> ciąg superrosnący + przekształcenie. Łatwo szyfrować OP, CS umoŜliwia proste<br />

deszyfrowanie.<br />

9. Wymiana kluczy, algorytm Diffie-Hellman (DH) <strong>–</strong> niech p będzie liczbą pierwszą,<br />

g <strong>–</strong> generatorem. Dla dowolnego x={1, 2, …, p-1} istnieje takie n, Ŝe x = g n (mod p).<br />

Alicja wybiera tajną wartość a, Bob wybiera tajną wartość b. Alicja wysyła g a (mod p)<br />

do Boba, Bob wysyła g b (mod p) do Alicji. Oboje obliczają wspólną wartość g ab (mod<br />

p). Wartość ta moŜe stanowić symetryczny tajny klucz. Jeśli intruz będzie w stanie<br />

znaleźć a oraz b, system będzie złamany (rozwiązanie problemu dyskretnego logarytmu).<br />

Strategia Man in the Middle (MiM): intruz ma wspólny sekret g at (mod p) z Alicją<br />

i g tb (mod p) z Bobem, ale Alicja ani Bob nie wiedzą o istnieniu intruza. Aby<br />

uchronić się przed atakiem MiM naleŜy stosować wymianę DH szyfrem symetrycznym,<br />

szyfrować wymianę DH szyfrem publicznym, podpisywać wartości DH kluczem<br />

prywatnym.<br />

10. RSA <strong>–</strong> niech p i q będą duŜymi liczbami pierwszymi, N=pq. Niech e będzie względnie<br />

pierwsze do (p-1)(q-1). Znajdujemy takie d, Ŝe ed=1 mod (p-1)(q-1). Klucz publiczny<br />

(N, e). Klucz prywatny: d. Szyfrowanie C = M e (mod N), deszyfrowanie: M = C d<br />

(mod N). N oraz e są publiczne, dlatego jeśli intruz znajdzie rozkład N to moŜe łatwo<br />

znaleźć d, poniewaŜ ed = 1 mod (p-1)(q-1). Łatwa faktoryzacja jest zagroŜeniem dla<br />

RSA. Jest złotym standardem dla kryptografii klucza publicznego, umoŜliwia szyfrowanie<br />

i podpisywanie, a takŜe przetrwało próbę czasu.<br />

11. Podpis elektroniczny pozwala uwierzytelnić źródło treści wiadomości w sposób porównywalny<br />

z wykorzystaniem trzeciej strony. Nadawca nie moŜe wyprzeć się faktu<br />

nadania wiadomości <strong>–</strong> niezaprzeczalność (ograniczona moŜliwościami technicznymi <strong>–</strong><br />

autentyczność klucza, moŜliwości prawne <strong>–</strong> kradzieŜ klucza lub kompromitacja). W<br />

podpisie wymagana jest obecność trzeciej osoby, która w przypadku sporu sprawdza<br />

poprawność nadsyłanych komunikatów przez nadawców.<br />

12. Nigdy nie naleŜy podpisywać losowych dokumentów , zawsze podpisywać skrót, a nie<br />

sam dokument. W przeciwnym wypadku właściwości podpisu RSA mogą zostać uŜyte<br />

przeciwko podpisującemu. Najpierw naleŜy podpisywać, a potem szyfrować. Zmiana<br />

klucza publicznego moŜe bowiem ułatwić fałszerstwo.<br />

13. Algorytm Rabina <strong>–</strong> problem faktoryzacji (podobnie jak w RSA), moŜna pokazać, Ŝe<br />

złamanie algorytmu Rabina jest równoznaczne z rozwiązaniem problemu faktoryzacji,<br />

a co za tym idzie, ze złamaniem RSA. Schemat: wybieramy p, q <strong>–</strong> liczby pierwsze,<br />

N=pq. Szyfrowanie C = M 2 mod N. Deszyfrowanie: dane p i q, musimy odnaleźć<br />

pierwiastek z C modulo N (wykorzystanie Chińskiego Twierdzenia o Resztach).<br />

<strong>Wykład</strong> 12 - Jednokierunkowe funkcje skrótu i ich zastosowania<br />

1. Stworzenie praktycznego systemu szyfrowania asymetrycznego z kluczem jawnym<br />

wymaga uŜycia funkcji jednokierunkowej z bocznym wejściem (przekształcenie dziedziny<br />

na przedział w taki sposób, Ŝe kaŜda wartość funkcji ma tylko jedną odwrotność,<br />

z tym, Ŝe obliczenie funkcji jest łatwe, a obliczenie odwrotności niewykonalne.<br />

12


2. Funkcja haszująca z danych o zmiennym rozmiarze wylicza pewien wynik H(m) o<br />

stałym rozmiarze, zwany wyciągnikiem lub skrótem komunikatu. Wynik haszowania<br />

jest funkcją wszystkich bitów i zapewnia wykrywanie błędów oraz uwierzytelnianie.<br />

3. Wymagania dla funkcji haszującej: moŜna zastosować dla dowolnej wielkości bloku<br />

danych, tworzy dane wyjściowe o ustalonej długości, H(x) jest łatwo obliczyć dla<br />

kaŜdego x co ułatwia implementację sprzętową i programową, dla kaŜdego kodu m<br />

znalezienie takiego x, Ŝe H(x) = m nie jest wykonywalne na drodze obliczeń, dla kaŜdego<br />

danego bloku x, znalezienie takiego y róŜnego od x, Ŝe H(y)=H(x) jest niewykonalne<br />

na drodze obliczeń, znalezienie pary (x, y), takiej, Ŝe H(x)=H(y) jest niewykonalne<br />

na drodze obliczeń.<br />

4. Notacja klucza publicznego: podpis Alicji dla wiadomości M prywatnym kluczem<br />

[M]Alicja, szyfrowanie wiadomości M kluczem publicznym {M}Alicja, wtedy<br />

{[M]Alicja}Alicja = M, [{M}Alicja]Alicja = M.<br />

5. Przypuśćmy, Ŝe Alicja podpisała M, Alicja wysyła M oraz S = [M]Alicja do Boba. Bob<br />

weryfikuje, Ŝe M = {S}Alicja. JeŜeli M jest duŜe, [M]Alicja jest kosztowne obliczeniowo.<br />

Przypuśćmy natomiast, Ŝe Alicja podpisuje h(M), gdzie h(M) jest mniejsze od M: Alicja<br />

wysyła M oraz S=[h(M)]Alicja do Boba. Bob sprawdza, czy h(M) = {S}Alicja.<br />

6. MAC <strong>–</strong> Message Authentication Code <strong>–</strong> kod słuŜący uwierzytelnianiu danych, argumentami<br />

funkcji uwierzytelniającej są tajny klucz oraz wiadomość. Wartością wyjściową<br />

funkcji jest kod MAC.<br />

7. HMAC <strong>–</strong> keyed-Hash Message Authentication Code <strong>–</strong> MAC z kluczem tajnym zapewniający<br />

zarówno ochronę integralności jak i autentyczność danych. Standardowy<br />

kod MAC zapewnia ochronę integralności, ale moŜe podlegać sfałszowaniu jeśli nie<br />

jest zabezpieczony dodatkowym mechanizmem chroniącym jego autentyczność (np.<br />

podpisem cyfrowym).<br />

8. Podpis elektroniczny zapewnia ochronę integralności. Alicja wysyła M oraz<br />

S=[h(M)]Alicja do Boba. JeŜeli M będzie zmienione na M` lub S zmienione na S`<br />

(przypadkowo lub celowo), to Bob to wykryje: h(M’) ≠{S}Alicja, h(M) ≠{S`}Alicja,<br />

h(M`) ≠{S`}Alicja.<br />

9. Podpis elektroniczny zapewnia niezaprzeczalność. Alicja wysyła M oraz<br />

S=[h(M)]Alicja do Boba. Alicja nie moŜe wyprzeć się podpisu. Udowodnienie niezaprzeczalności<br />

dla podpisu elektronicznego, w przeciwieństwie do niezaprzeczalności<br />

dla Mac, jest moŜliwe, bowiem w przypadku MAC Alicja stosuje algorytm symetryczny,<br />

który Bob mógł znać, a zatem mógł sfałszować komunikat. W przypadku<br />

podpisu, Bob nie ma dostępu do takich informacji <strong>–</strong> tylko ktoś kto zna klucz prywatny<br />

Alicji mógł przesłać komunikat (sama Alicja lub ktoś kto jej ów klucz ukradł).<br />

10. Alicja podpisuje h(M), wysyła M oraz S=[h(M)]Alicja do Boba. Bob weryfikuje, Ŝe<br />

h(M) = {S}Alicja. Bezpieczeństwo zaleŜy od bezpieczeństwa kryptosystemu klucza publicznego<br />

i funkcji skrótu. Niech intruz znajdzie kolizję M`≠M taką, Ŝe h(M`) ≠ h(M).<br />

Wtedy intruz moŜe zmienić M na M` i schemat podpisu jest złamany.<br />

11. Projekt kryptograficznej funkcji skrótu <strong>–</strong> poŜądana własność: efekt lawinowy,<br />

zmiana dowolnego bitu spowoduje zmianę duŜej liczby bitów skrótu; kryptograficzne<br />

funkcje skrótu składają się z wielu rund; potrzebne bezpieczeństwo i prędkość realizacji.<br />

Dane wejściowe są rozbijane na bloki, kompresja stosowana względem bloków,<br />

wartość bloku zaleŜna od obecnej i od wyjścia z poprzedniej rundy. Wyjście z ostat-<br />

13


niej rundy jest wartością skrótu. Dla funkcji skrótu rozwaŜamy rozmiar bloku 512 bitów,<br />

kompresja bloku wyjściowego <strong>–</strong> 128 bitów.<br />

12. Trzy podejścia obliczania HMAC: h(M, K), h(K, M)<br />

a. h(K, M) <strong>–</strong> niech M`=(M, X), wtedy h(K, M`) = F(h(K, M), M`) <strong>–</strong> intruz moŜe<br />

obliczyć HMAC z M` bez znajomości klucza K <strong>–</strong> kompromitacja klucza<br />

b. h(M, K) <strong>–</strong> niech h(M`) = h(M), wtedy: h(M, K) = F(h(M), K) = F(h(M`), K) =<br />

h(M`, K) <strong>–</strong> w tym przypadku intruz nie moŜe obliczyć h(M, K) bez znajomości<br />

K; lepsze podejście, choć jeszcze nie najlepsze<br />

c. właściwy sposób na HMAC: niech B będzie długością w bajtach funkcji skrótu<br />

(dla popularnych funkcji B=64); definiujemy ipad=0x36 (00110110) powtarzany<br />

B razy, opad=0x5C (01011100) powtarzany B razy; wtedy HMAC(M,<br />

K) = H(K XOR opad, H(K XOR ipad, M))<br />

13. Algorytm MD5 <strong>–</strong> z wejściowego komunikatu o dowolnej długości generuje 128 bitowy<br />

skrót; dane wejściowe przetwarzane są w 512 bitowych blokach; komunikat jest<br />

dopełniany tak, aby jego długość w bitach przystawała do 448 modulo 412, czyli długość<br />

komunikatu musi być o 64 bity mniejsza niŜ całkowita wielokrotność 512 bitów.<br />

Dopełnienie dodaje się zawsze, nawet gdy komunikat ma Ŝądaną wartość. Dopełnienie<br />

składa się z bitu 1, po którym następuje odpowiednia ilość bitów 0.<br />

14. Do komunikatu uzupełnionego o dopełnienie dodaje się 64 bitową reprezentację długości<br />

pierwotnego komunikatu w bitach (przed dopełnieniem). JeŜeli komunikat jest<br />

dłuŜszy niŜ 2 64 to uŜywa się tylko młodszych 64 bitów długości. Oznacza to, Ŝe pole<br />

długości zawiera długość początkowego komunikatu modulo 2 64 . Następnie cały komunikat<br />

wraz z dopełnieniem i długością jest przetwarzany w blokach Y0, Y1, …, YL-1<br />

o długości 512 bitów.<br />

15. Do przechowywania pośrednich i końcowych wartości funkcji haszujących stosuje się<br />

bufor 128 bitowy. Bufor ten moŜna zapisać jako cztery 32 bitowy rejestry A, B, C, D,<br />

które na początku są inicjowane następująco: A=01234567, B=89ABCDEF,<br />

C=FEDCBA98, D=76543210. Wszystkie cztery etapy mają podobną strukturę lecz<br />

kaŜdy korzysta z innej elementarnej funkcji logicznej. W kaŜdym etapie jest przetwarzany<br />

aktualny blok oraz bufor ABCD. Dodatkowo w kaŜdym etapie korzysta się z<br />

kolejnych części tablicy T=[1, 2, …, 64] skonstruowanej na podstawie funkcji sinus.<br />

KaŜdy z kroków wykonywanych 64 razy dla kaŜdego bloku ma postać:<br />

A

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!