Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 27

1

Spis Treści
Wstęp…………………………………………………………………………………………..3

Rozdział 1 Podstawy identyfikacji…….………………………………………………….5

Rozdział 2 Rodzaje identyfikacji użytkowników…...……………………………….......7

Rozdział 3 Hasła…………………………………………………………………………...8

Rozdział 4 Protokoły typu wyzwanie-odpowiedź (challenge-response)………………10

4.1 Hasła jednorazowe…………………………………………………...10

4.2 Klucz publiczny i jego zastosowanie………………………………..11

4.2.1 Szyfry asymetryczne…………………………………………14


4.2.1.1 RSA…………………………………………………14

4.2.2 Szyfry symetryczne…………………………………………..15

4.2.2.1 Szyfry blokowe na podstawie DES……………………….16

Rozdział 5 Protokół SSL…………………………………………………………………19

5.1 Certyfikaty w protokole SSL………………………………………..19

5.2 Schemat działania……………………………………………………21

Rozdział 6 Dowody o wiedzy zerowej …………………………………………………..23

6.1 Protokół identyfikacyjny Fiata-Shamira…………………………...23

6.2 Protokół identyfikacyjny Fiata-Shamira (FS)……………………..24

Wstęp

Schemat identyfikacji (ang.identification schemes) zwanymi też schematami uwierzytelniania


podmiotu odbywa się miedzy dwoma uczestnikami:

2
 Podmiotem uwierzytelnianym, którego nazywać będziemy użytkownikiem
 Podmiot weryfikującym, czyli weryfikatorem.

Celem takiego schematu jest udowodnienie przez użytkownika weryfikatorowi swojej


tożsamości. Procedura identyfikacji ma na celu kontroli dostępu.
Pojęcia tego nie należy mylić z podpisami cyfrowymi oraz z autentyfikowanym uzgadnianiem
klucza, choć te pojęcia są sobie bliskie.
Zastosowania schematów identyfikacji obejmują: logowanie się do systemu komputerowego,
do banku internetowego, pobieranie pieniędzy z bankomatu, itp..
Podmiotem uwierzytelnianym może być np. klient banku, a weryfikatorem bankomat.
Identyfikacja jest wymagana w wielu zastosowaniach. Na ogół celem procedury
identyfikacji jest kontrola dostępu. Metody, które umożliwiają identyfikacje nazywamy
protokołami identyfikacji.
Protokoły identyfikacji to protokół zachodzący między dwoma uczestnikami:
dowodzącym (przyjmujemy jako P) i weryfikującym (przyjmujemy jako V). Celem tego
protokołu jest sprawdzenie przez weryfikującego wiarygodności dowodzącego (czy jest tym
za kogo się podaje).

Protokół identyfikacji posiada własności:


 poprawność - jeśli dowodzący (P) „nie kłamie” i jest tym za kogo się podaje, to
protokół zakończy się wynikiem prawda.
 weryfikujący (V) nie może podszyć się pod dowodzącego (P), czyli
wykorzystać informacji zdobytych podczas wykonania protokołu
 brak przyjmowania cudzej tożsamości – prawdopodobieństwo tego, że przy
wykonaniu protokołu identyfikacji (P) uda się podszyć za kogoś innego jest
zaniedbywane. Warunek powinien być spełniony nawet jeśli podszywający się
uczestniczył w protokołach identyfikacji oraz transferowalności.

Obecnie istniejące protokoły identyfikacji można podzielić na:


 słabe uwierzytelnianie (hasła, PIN itp.),
- raz podsłuchane hasło może być później użyte, nawet jeśli wysyłane jest w
postaci zaszyfrowanej,

3
 protokoły typu wyzwanie—odpowiedz (challenge-response):
- pytanie o losową informacje z dużego zbioru (małe prawdopodobieństwo
powtórzeń),
-hasła jednorazowe (brak powtórzeń),
 protokoły z wiedzą zerową;

Identyfikacja jest jednym z pierwszych kroków w kierunku zapewnienia ochrony


danych systemu komputerowego przed nieautoryzowanym dostępem. Istotą identyfikacji jest
ścisłe i niezawodne kontrolowanie.
Do podjęcia tematyki przedstawionej w pracy zainspirowało mnie możliwość
przybliżenia procesu regulującego dzisiejsze procesy zabezpieczeń, wymagana w wielu
zastosowaniach i praktykowana jak i rozwijana z biegiem czasu.

Rozdział 1 Podstawy identyfikacji

Identyfikacja systemu, osoby, czy bądź programu jest protokołem komunikacji między
dwoma stronami: udowadniającym (z ang. prover), oznaczanym przez użytkowników
najczęściej literką „P”, oraz istniejącym po drugiej stronie weryfikator, którego oznaczamy
literką „V”. Podstawowym zadaniem udowodniającego jest przedstawienie się
weryfikatorowi, tak by przekonać go, iż ma do czynienia właśnie z nim.

4
Działanie protokołu identyfikacyjnego może zakończyć się fiaskiem na dwojaki sposób:
1. podszywający się pod udowodniającego „P” intruz , może oszukać weryfikatora„V”,
który uwierzy, iż komunikuje się z „P”. Daną sytuację nazywamy fałszywą akceptacją
(ang. false acceptance).
2. weryfikator „V” może nie uwierzyć w autentyczność „P”. Sytuację nazywamy
fałszywym odrzuceniem (ang. false rejection). Wartości prawdopodobieństw
wystąpienia .
Wartości prawdopodobieństw wystąpienia tych sytuacji, oznaczane (odpowiednio) przez
……, jest charakterystyczne dla protokołu identyfikacyjnego.
Przypatrzmy się dwóm postacią protokołu identyfikacji. W pierwszej z nich np. Bolek
zapytuje drugą osobę o imię i po uzyskaniu odpowiedzi „Lolek”, zakłada jej
prawdziwość; prawdopodobieństwo fałszywej akceptacji jest tu stuprocentowe (
……zaś fałszywe odrzucenie jest niemożliwe (….).
W drugim przypadku, podejrzliwy Bolek zakłada stuprocentowe oszustwo interlokutora,
nie dając prawdziwemu Lolkowi żadnych szans na konwersację, zabezpieczając się w ten
oto sposób przed złymi intencjami intruza.
odrzucając jednak wszelkie próby nawiązania konwersacji (……)
A więc w przypadku idealnego protokołu identyfikacyjnego obydwie wartości …..—
powinno zmniejszyć ilość niepożądanych zdarzeń.
Identyfikacja podmiotu (z ang. entity) może być osoba, program, host, która może być
rozpatrywana jako weryfikacja tego podmiotu w następujących kategoriach:

• bycia,
• posiadania,
• wiedzy.

Pierwsza kategoria nazywana jest identyfikacją użytkownika (ang. User identification), bo


użytkownik w systemie komputerowym cechuje się pewnymi niepowtarzalnymi, osobistymi
właściwościami, jak odcisk palca, charakter pisma (podpis ręczny), barwa głosu, struktura
siatkówki i tęczówki oka itp. Informacje cyfrowe wszelkiego rodzaju mogą być natomiast z
łatwością kopiowana, w konsekwencji nie sposób jest odróżnić oryginału od kopii.
Druga kategoria posiadania odnosi się do przedmiotów „martwych”, jednocześnie
unikatowych przedmiotów dla użytkownika, jak np. karta magnetyczna lub chipowa,

5
chroniona tajnym kodem dostępu. Przedmiot traktowany jest jako świadectwo autentyczności
osoby posiadającej
Trzecia kategoria oparta jest na bazie pewnych tajnych informacji, które znane są
jedynie
uprawnionemu podmiotowi. Przykładem takiej informacji są wszelkiego rodzaju hasła. Z
jednej strony ich tajność jest warunkiem sine qua non wiarygodności identyfikacji — hasło,
które utraciło swoją tajność, może posłużyć każdemu intruzowi do swych niecnych celów.
Jednakże drugiej strony uprawniony podmiot, który hasła zapomniał, nie może zaświadczyć o
swej autentyczności.
Obydwie kategorie, czyli posiadania i wiedzy, posiadają jedną wspólną cechę, którą
jest wykorzystywanie sekretnej informacji. Natomiast, jeżeli chodzi o sposób
przechowywania informacji znamiennie różnią się: w pierwszym przypadku informacja
zapisana jest wewnątrz pewnego gadżetu, czyli niejako na zewnątrz identyfikującego się
podmiotu; w drugim przypadku informacja (w postaci określonej wiedzy) tkwi organicznie
wewnątrz podmiotu np. w umyśle użytkownika czy w numerze seryjnym BIOS-u komputera.

Rozdział 2 Rodzaje identyfikacji użytkowników

W dzisiejszych czasach istnieje szerokie spectrum możliwości identyfikacji użytkowników.


Jednym z nich jest odczyt odcisków palców, które przyjęto za niepowtarzalną cechę osoby,

6
zaakceptowaną jako niepodważalny dowód w postępowaniach sądowych. Natomiast w
systemie identyfikacji odcisk palca traktowany jest jako wzorzec wypukłości i wklęsłości, a
dokładniej jako skatalogowany szablon linii papilarnych ( ang.minutiae).
AFIM ( ang. automated fingerprint identification machines ) czyli automaty służące do
identyfikacji linii papilarnych, których podstawową cechą jest prawdopodobieństwo błędnej
akceptacji lub błędnego odrzucenia rzędu 10–3 lub mniejszym. Pojedynczy wzorzec odcisku
palca zajmuje około 1 kilobajta pamięci i trwa mniej niż10 sekund, którego proces
identyfikacji przeprowadzany jest w kilku sekund. Koszt zakupu takiej maszyny jest wciąż
nie opłacalny.
Następną metodą identyfikacji jest struktura siatkówki i tęczówki oka.
Specjalne urządzenia skanują i przetwarzają strukturę siatkówki (tęczówki) na pozycję
cyfrowych szablonów. Jeden szablon wymaga przynajmniej 40 bajtów pamięci samo zaś
skanowanie trwa 30 sek. Prawdopodobieństwo błędnego odrzucenia wynosi 10-6
Metoda identyfikacji głosu należy do najbardziej zawodnych metod ( przykładowo
głos danej osoby może zostać nagrany, a następnie odtworzony przez intruza za
pośrednictwem telefonu), jednak najprostsza w implementacji, przeprowadzana np. przez
wspomniany telefon.
Podpis odręczny stanowi najstarszą metodę, stanowiąca do uwierzytelniania
dokumentów papierowych. Pomimo ze dwa składane podpisy składane przez jedną osobę nie
będą nigdy takie same, cechy wspólne podpisów będą uwidocznione: styl pisania-charakter,
rodzaj pióra użytego, pochyłość liter.
W metodach identyfikacji opierających się na kodzie genetycznym DNA człowieka,
prawdopodobieństwo błędu wynosi zero ( wykluczając parę bliźniąt o podobnym kodzie) . W
praktyce stosowana jest w specjalistycznych laboratoriów, bowiem pochłania dużo czasu, a
ponadto wymaga dysponowania przykładowymi próbkami kodu genetycznego
identyfikowanej osoby. Aspekty zagadnienia wykluczają identyfikacje użytkownika w
systemie komputerowym.

Rozdział 3 Hasła

7
Zacznę ten rozdział od pytania, do czego służą hasła? Przede wszystkim, aby osoby
uprawnione miały jedyny dostęp do komputerów. Wyszczególniamy także inne powody,
wśród nich:
 miejsce na dysku dostępne użytkownikowi jest limitowane, na ogół nie
chcemy aby ktoś inny korzystał z naszego limitu;
 nie chcemy również by ktoś kasował nasze pliki, niezależnie od intencji innego
użytkownika;
 zachowanie własnej prywatność adresowanych do nas listów - e-mail;
 działalność innego użytkownika na „naszym” komputerze może czasami
naruszać regulamin pracowni lub tzw. ,,dobre obyczaje'' -- więc jeśli już musi,
to niech lepiej to robi na własny a nie cudzy rachunek (w 99% takich
przypadków da się ustalić z czyjego konta korzystano, trudniej jest ustalić jaka
to osoba fizycznie siedziała przy terminalu);

Hasło chroni nie tylko system komputerowy, ale również interes samego użytkownika. We
własnym interesie należy, więc unikać udostępniania hasła konta osobom postronnym, jak
również stosowania haseł, które łatwo odgadnąć (np. komuś kto wie jak się nazywa mój pies
czy jak ma na imię moja dziewczyna/żona/narzeczony itd.).
Jakie więc reguły należy stosować przy ustalaniu hasła, aby było ono ,,bezpieczne''?
Po pierwsze, długość hasła ograniczona jest do ośmiu znaków. Długie hasła są akceptowane
przez system bez sprzeciwu, ale dalszy ciąg jest ignorowany (tj. nie podlega sprawdzaniu). Po
drugie, nie ma metody efektywnego ,,odszyfrowania'' haseł. Istnieje jednak metoda ,,prób i
błędów'' za pomocą, której można próbować hasło ,,złamać'', czasami z powodzeniem.
Metoda ta jest dość skuteczna po pierwsze dzięki temu, że realizuje się ją oczywiście za
pomocą odpowiedniego programu komputerowego, a komputery to obecnie dość szybkie
bestie; a po drugie, dzięki naturalnej skłonności użytkowników do wybierania haseł ,,łatwych
do zapamiętania''. Nieco upraszczając i nie wnikając w szczegóły techniczne: nieodporne na
atak są hasła będące po prostu wyrazami występującymi w słownikach języka polskiego,
angielskiego czy innych w miarę pospolitych. Niebezpieczne jest hasło identyczne z nazwą
konta (loginem), czy będące np. tym samym loginem ale zapisanym wielkimi literami.
Prosta reguła mówi że hasło jest tym ,,lepsze'', im bardziej przypomina czysto losowy ciąg
znaków. W osiągnięciu tego efektu pomaga np. mieszanie małych i wielkich liter, cyfr, czy
wtrącenie znaków przestankowych.

8
Hasła n-znakowe, które wykorzystują 26 liter (małe i wielkie litery nie są rozróżniane)
prawdopodobieństwo odgadnięcia hasła wynosi 26‫־‬ⁿ. Gdy małe litery odróżniane są od swych
„wielkich” odpowiedników, prawdopodobieństwo odgadnięcia hasła gwałtownie spada do
wartości 52‫־‬ⁿ.
Bezpieczeństwo określonego hasła maleje systematycznie wraz z jego kolejnym
użyciem, w związku z czym często ogranicza się jego ważność do określonego przedziału
czasowego, typowo wahającego się między 3 tygodniami a 3 miesiącami. W przypadku
ekstremalnym ważność hasła ograniczona jest tylko do jednokrotnego użycia (ang. one-time
password). Implementacja systemu haseł jednokrotnych polega najczęściej na wygenerowaniu
(oddzielnie dla każdego użytkownika) listy haseł i określeniu kolejności, w jakiej
poszczególne pozycje tej listy muszą być używane przy kolejnych próbach logowania.
Rozwiązanie to jest jednak uciążliwe dla użytkownika, który zmuszony jest dokładnie
zapamiętać wiele haseł jednocześnie. Można tę uciążliwość zmniejszyć, wybierając zestaw
n+1 haseł powiązanych jednokierunkową funkcją f zgodnie z regułą pi = f (pii) dla i = 1, …, n

Rozdział 4 Protokoły typu wyzwanie—odpowiedz


(challenge-response):

9
4.1 Hasła jednorazowe

Operowanie hasłami może stać się niebezpieczne, kiedy stają się jawne dla obcych
użytkowników. Poznać hasło można poprzez podłączenie się do połączenia między
przeprowadzającym dowód a weryfikującym. Dlatego stworzono system haseł
jednorazowych, których zastosowanie-żywot kończy się po jednorazowym użyciu. Przy
kolejnej identyfikacji używamy zupełnie innego hasła jednorazowego.
Hasła jednorazowe zaimplementować można w następujący sposób. Weryfikujący
posiada listę f (w1), f(w2),….. f(wⁿ) wartość haseł w1….., wⁿ. Przeprowadzający dowód
posiada wiedze na temat listy haseł i używa jej elementów do identyfikacji. Ponieważ
przeprowadzający dowód musi zapamiętać wcześniej wszystkie hasła, przeciwnik mógł
poznać niektóre z nich lub nawet wszystkie.
W przypadku, jeżeli dwie osoby posiadają tajną funkcję „f” i słowo początkowe „w”
podczas przeprowadzania dowodu i weryfikacji, wtedy hasła jednorazowe wyglądają
następująco wi=fi(w) dla i >=0.
Przykładem haseł jednorazowych mogą być obecnie stosowane Tokeny tzw. generator kodów
jednorazowych, urządzenie elektroniczne służące do uwierzytelniania transakcji
internetowych, najczęściej bankowych. Działanie opiera się na generowaniu ciągów cyfr za
pomocą funkcji jednokierunkowej stosującej dwa parametry - jeden stały dla konkretnego
egzemplarza urządzenia, drugi zmienny - wprowadzany za pomocą klawiatury, wczytywany z
ekranu monitora, lub generowany na podstawie czasu. Niektóre tokeny są zabezpieczone
przed użyciem za pomocą systemu haseł.
Ze względu na stosunkowo wysoką cenę tokena pojawia się tendencja do
zastępowania go kartą kodów jednorazowych lub hasłami SMS.
Termin token (ang.) znaczy dosłownie „znacznik”, „symbol”, przez dociekliwych
bywa tłumaczony jako żeton.
Oprócz generatora kodów jednorazowych słowo token ma kilka innych znaczeń. Przyjmuje
się, że zanim wynalezione zostało liczenie, poprzedzało je prymitywne odwzorowywanie
danych obiektów na kamyki trzymane w jakimś zasobniku (czyli: człowiek prymitywny nie
wiedział, że ma 21 kóz, ale wiedział, że ma tyle kóz, ile kamyków w dzbanie na półce). Te
kamyki zwane są właśnie tokenami (znacznikami).
Ciekawostką jest, że we wczesnej fazie rozwoju komputerów domowych słowem
token określano(zrozumiały dla człowieka) zapis instrukcji np. języka Basic, w odróżnieniu

10
od postaci binarnej, która zapisywana była na jednym bajcie. Przykład wyglądu
standardowego Token’a widoczny na rysunku 1.

Rys. Token

4.2 Klucz publiczny i jego zastosowanie

Klucze publiczne będące swobodnie rozpowszechniane i publikowane, umożliwiają


bezpieczną komunikacje użytkownikom z daną organizacją . Idea ta jest rozszerzona o różne
certyfikaty cyfrowe, wiążące klucze publiczne z osobą lub organizacją i potwierdzane
podpisem zaufanych wydawców certyfikatów (CA - Certification Authority).
Klucz publiczny PKC (Public Key Cryptography), system ten zakłada użycie dwóch
asymetrycznych kluczy do szyfrowania i deszyfrowania informacji: jednego o statusie
prywatnym, czyli deszyfrowanie informacji i drugiego dostępnego publicznie, jeżeli chodzi o
szyfrowanie informacji. Wymiana kluczami publicznymi zachodząca pomiędzy dwoma
stronami (użytkownikami), mogą wymieniać się informacjami poufnymi bez konieczności
przekazywania klucza do deszyfrowania informacji, co jednocześnie eliminuje ryzyko

11
przechwycenia tego klucza drogą podsłuchu kanału komunikacyjnego. Cały proces pozwala
obu stronom na dynamiczne ustanawianie bezpiecznej komunikacji bez potrzeby
wcześniejszych kontaktów.
Klucze publiczne stosowane są w popularnych protokołach takich jak : SSL (Secure
Socket Layer), S/MIME (Secure MIME), SET (Secure Electronic Transaction), i w
podpisywaniu apletów Javy czy ActiveX, co wystawia jednocześnie na pierwszy plan
problem zarządzania tymi kluczami, zarówno i ich certyfikatami. Zarządzanie kluczami oraz
certyfikatami stanowiącymi niezbędnymi dla tych protokołów zapewnia PKI (Public Key
Infrastructure)-infrastruktura klucza publicznego.

Schemat działania kluczem publicznym:


 Strony generują parę kluczy (publiczny +prywatny)
 Każda ze stron publikuje swój klucz publiczny w sieci (jest on dostępny dla
wszystkich)
 Jeżeli A chce przesłać wiadomość do B to szyfruje ją kluczem publicznym B. Z
własności algorytmu wynika, że tylko używając klucza prywatnego B można ją
odtworzyć (to jest typowy schemat wymiany danych).
 Jeżeli B chce mieć pewność, że wymienia informacje rzeczywiście z A, to może np.
poprosić A o zaszyfrowanie pewnego tekstu jego kluczem prywatnym. Jeżeli B będzie
w stanie odtworzyć tekst używając klucza publicznego A to znaczy, że rozmawia
rzeczywiście z właściwym partnerem (to jest typowy schemat identyfikacji partnera).
 Jeżeli B po odebraniu wiadomości od A chce zabezpieczyć się przed sytuacją, w
której A zaprzeczy, że wysłał wiadomość, może poprosić A o zaszyfrowanie jej
dodatkowo swoim kluczem prywatnym (a następnie kluczem publicznym B). B będzie
w stanie ją odszyfrować (najpierw używając swojego klucza prywatnego, a następnie
publicznego klucza A) i A nie będzie mógł zaprzeczyć, że wiadomość wysłał -
wiadomość która dała się odszyfrować kluczem publicznym A musiała być
zaszyfrowana jego kluczem prywatnym. (to jest typowy schemat podpisu cyfrowego)

12
Rys. przedst. szyfrowanie kluczem publicznym (zaczerpnięte ze strony
http://www.networld.pl/artykuly/9930.html )

Rozwój kryptografii kluczy publicznych doprowadził do możliwości używania samej


idei kluczy publicznych i prywatnych w innych obszarach ochrony informacji. Jedną z
pierwszych takich implementacji jest system RSA (od nazwisk twórców: Rivest, Shamir i
Adelman), pozwalający nie tylko na wymianę informacji tajnych, ale również na tworzenie
podpisów cyfrowych, czyli metody uwierzytelniania nadawcy informacji, czy też samej
informacji. W dalszej części pracy przedstawię generacje kluczy w najpopularniejszych
systemach.
Wyróżniamy dwa systemy szyfrowania kluczem: symetryczne i asymetryczne.

4.2.1 Szyfry asymetryczne

13
W szyfrowaniu asymetrycznym uczestniczą 2 klucze takie jak: klucz publiczny, który
szyfruje, oraz klucz prywatny, który deszyfruje. Nie mając potrzeby rozpowszechniania
klucza prywatnego, istnieją znikome szanse, że wpadnie on w niepowołane ręce. Szyfry
asymetryczne opierają się na istnieniu trudnych do odwrócenia problemów, np: łatwiej jest
pomnożyć przez siebie 2 duże liczby, niż rozłożyć dużą liczbę na czynniki (opiera się na tym
system RSA). Typowe rozmiary kluczy są wielkości 1024-2048 bitów dla np. RSA lub ok
512 bitów dla kryptografii na krzywych eliptycznych. W przypadku RSA złamane zostały
klucze rozmiarów do ok. 500 bitów.

4.2.1.1 RSA

Do generowania pary kluczy - publicznego i prywatnego używamy polecenia:


pgp -kg
PGP umożliwia wybieranie jednego z trzech zalecanych rozmiarów kluczy (niski poziom
komercyjny, wysoki komercyjny) i zgłasza prośbę o podanie wybranego numeru, albo
podanie własnej wielkości klucza (w bitach), która w wersji 2.6.2i może być dowolną liczbą
do 2048. Odporność klucza na krypto-analizę rośnie wraz z jego rozmiarem, jednak traci na
tym prędkość jego przetwarzania.
Następnym krokiem „w przód” jest podanie identyfikatora użytkownika klucza, czyli
imienia i nazwiska. Standardem stało się umieszczanie nazwiska w adresie sieciowym w
<nawiasach>. Dopuszczalne są spacje i znaki przestankowe:

Jakub Danowski <danow@onet.pl>

Jeśli użytkownik nie posiada adresu sieciowego, może umieścić numer telefonu lub inne
przydatne informacje o sobie, które dodatkowo zapewnią unikalność identyfikatora.
Następne pytanie PGP dotyczy hasła, które chroni klucz prywatny użytkownika w
przypadku, gdyby dostał się w niepowołane ręce. Hasło nie musi składać się z jednego słowa,
zawierać może całe zdanie z zawartością spacji, znaków przestankowych, cyfr itp. Nie ma
metody odzyskania hasła, więc staraj się go nie zapomnieć. Zobowiązująca powinna być

14
przestroga do nie używania krótkiego i prostego do zgadnięcia hasła, ani do zapisywania go w
miejscu, w którym mogłoby być przez kogoś znalezione. Jeśli użytkownik nie chce
zabezpieczać klucza hasłem, może wcisnąć ENTER (używanie bezpiecznego hasła jest
szczególnie ważne w systemach multipersonalnych, gdzie praktycznie każdy ma dostęp do
konta; bezpieczne, znaczy długie, różnorodne pod względem znakowym i z niczym się nie
kojarzące potencjalnemu hackerowi; z drugiej strony, nie bardzo ma chyba sens używania
hasła w domu -PK)
Para kluczy - publiczny i prywatny - jest generowana na podstawie losowych liczb.
Aby zapewnić maksymalną przypadkowość wyboru liczb, program poprosi o wprowadzenie
przypadkowego ciągu znaków, przypadkowego najlepiej zarówno pod względem
częstotliwości uderzeń, jak i zawartości. Losowość wynika tutaj w pewnym stopniu z
nieprzewidywalności wprowadzanych przez Ciebie znaków, więc nie przyciskaj w kółko tych
samych klawiszy.
Generowanie klucza RSA jest procesem skomplikowanym i wymagającym dużej
mocy obliczeniowej, więc analogicznie może trwać stosunkowo długo - od kilkunastu sekund
dla małego klucza na szybkim procesorze, do kilku minut dla dużego klucza na PC/XT. PGP
wyświetla postęp generowania.
Gotowa para kluczy jest umieszczana w bazach - odpowiednio publicznej i prywatnej.
Używając komendy -kx możesz później zrzucić swój klucz publiczny do pliku, na przykład w
celu rozesłania go znajomym. Klucza prywatnego oczywiście nie należy nikomu dawać.
Każdy klucz prywatny jest dodatkowo chroniony własnym hasłem (jeśli zostało założone).
Klucz prywatny powinien być zawsze umieszczony w miejscu do którego nikt poza
Tobą nie ma dostępu. Każdy użytkownik powinien mieć własny klucz prywatny, osobiście
wygenerowany.

4.2.2 Szyfry symetryczne

Szyfry symetryczne wykorzystują ten sam klucz w operacjach szyfrowania i deszyfrowania.


Do najpopularniejszych szyfrów symetrycznych zaliczamy: AES, Blowfish, DES, 3DES,
DESX, IDEA. Warunek jaki musi być spełniony, aby doszło do bezpiecznej komunikacji przy

15
użyciu szyfru symetrycznego jest dostęp do klucza szyfrującego jedynie przez osoby
bezpośrednio zainteresowane – występuje problem dystrybucji klucza, który nie może dostać
się do osób trzecich. Dzielimy je na: symetryczne szyfry blokowe i symetryczne szyfry
strumieniowe.

 szyfry blokowe – procedury szyfrujące nieduże bloki danych, najczęściej 128 bitów
(AES), choć do niedawna przeważały 64-bitowe bloki (DES, 3DES, Blowfish, IDEA).
Rozmiar kluczy jest znacznie mniejszy (od 128 do 256 bitów), przy czym wartości
mniejsze od 80 (DES – 56) są uważane za niewystarczające. Szyfr blokowy zawiera
składnie kilkunastu prostych rund przekształcających blok. Operacje używane w
szyfrach są zazwyczaj proste, ale pochodzą z "różnych światów", np. używa się
dodawania-XOR, przesunięć cyklicznych, różnego typu S-BOXów, mnożenia modulo
liczb pierwszych itd.

 szyfry strumieniowe - szyfrują natomiast, każdy znak tekstu jawnego osobno,


generując przy tym znak strumienia szyfrującego i przekształcając go np. z użyciem
funkcji XOR ze znakiem danych (nie jest konieczne oczekiwanie na cały blok danych,
jak jest w szyfrach blokowych). Najpopularniejszym do dziś jest szyfr RC4. Do
innych popularnych szyfrów strumieniowych zaliczamy to A5/1 i A5/2, stosowane w
telefonii komórkowej, a także historyczne szyfry monoalfabetyczne i polialfabetyczne.

4.2.2.1 Szyfry blokowe na podstawie DES

DES (Data Encryption Standard) znany również jako DEA (Data Encryption Algorithm) jest
szyfrem blokowym, w którym dane szyfrowane są blokami o długości 64 bity - przy wejściu
algorytmu dajemy 64 bitowy ciąg jak i przy wyjściu otrzymujemy zaszyfrowany ciąg 64
bitowy.
Zarówno podczas szyfrowania jak i deszyfrowania używamy ten sam algorytm.

16
Kluczem w DES jest ciąg 64 bitów, gdzie co 8 bit traktuje się jako bit kontroli parzystości,
więc rzeczywista długość klucza wynosi 56 bitów-na nieznajomości klucza opiera się całe
bezpieczeństwo klucza.
Algorytm stosuje standardowe operacje logiczne i arytmetyczne na danych
długościach co najwyżej 64 bity, co daje bardzo łatwą możliwość realizacji na różnych
komputerach jak i maszynach. DES był zaprojektowany pod realizacje sprzętowe.

Rys. Algorytm szyfrowania DES

DES działa w następujący sposób:


1. Szyfrowany jest blok wejściowy o długości 64 bity
2. Blok wejściowy jest poddawany permutacji początkowej
3. Blok wejściowy jest dzielony na lewą i prawą stronę o długości po 32 bity każda.
4. Wykonuje się 16 cykli jednakowych operacji nazywanych funkcjami f, w których dane są
łączone z kluczem.
5. Po wykonaniu tych 16 cykli prawa i lewa strona są łączone i wykonuje się permutację

17
odwrotną do początkowej, tworząca wynikowy szyfrogram.
6. W każdym z 16 cykli wyznacza się nowy klucz do łączenia z danymi ten sposób, że bity
klucza są przesuwane w lewo i za pomocą pewnych permutacji wybierane jest 48 bitów z
56 ogólnie dostępnych.
7. Prawa połowa bloku danych szyfrowanych jest rozszerzana z 32 do 48 bitów za pomocą
permutacji z rozszerzeniem.
8. Rozszerzona prawa połowa danych jest łączona modulo 2 z 48 bitami przesuniętego i
spermutowanego klucza.
9. Dla tak otrzymanego rezultatu wykonuje się tzw. postawienie w S-Blokach (S-Box),
które skraca ciąg 48 bitów do długości 32 bitów. Tak otrzymany ciąg 32 bitowy poddaje
się permutacji w tzw. P-blokach.

18
Rozdział 5 Protokół SSL

Firma Netscape opracowała protokół zabezpieczający informacje SSL. Głównym powodem


powstania protokołu był problem związany z zapewnieniem bezpieczeństwa podczas
przesyłania danych w Internecie. W swej podstawowej wersji zabezpiecza on protokół HTTP,
jednak z użyciem dodatkowych narzędzi można z jego pomocą obudować również usługi
FTP, news i poczty elektronicznej.
Ważnym problemem, który pojawił się przy implementacji bezpiecznych połączeń
sieci WWW była sprawa autentyfikacji kluczy publicznych. To, że nie muszą one być tajne
nie oznacza wcale, że mogą być zupełnie nie zabezpieczone przed atakami - powinna istnieć
jakaś metoda zabezpieczania integralności kluczy publicznych.

W większości rozwiązań z tym problemem poradzono sobie wprowadzając pewne


"zaufane" instytucje przechowujące klucze publiczne. Przykładowo w systemie PGP istnieje
w sieci centralna baza kluczy publicznych, w której dostępne są klucze wielu znanych osób.
Również integralną częścią protokołu SSL jest mechanizm obsługi certyfikatów.

5.1 Certyfikaty w protokole SSL

Certyfikat jest to zbiór danych identyfikujących jednostki (na przykład osobę, lub
komputer) oraz pozwalający na identyfikacje, czy osoba, za którą się podaje jest rzeczywiście
nią.
Potwierdzony przez zaufaną organizację, zwaną w protokole SSL Certificate
Authority (CA), zawiera:
 Nazwę certyfikowanego obiektu
 Identyfikator obiektu
 Klucz publiczny obiektu
 Czas ważności
 Nazwę wystawcy certyfikatu
 Identyfikator wystawcy

19
 Podpis wystawcy (To pole zawiera jednoznaczny skrót całego certyfikatu
zaszyfrowany przy pomocy klucza prywatnego wystawcy.)

Szczególnym przypadkiem jest certyfikat poświadczający tożsamość CA -


identyfikator wystawcy jest w nim równy identyfikatorowi obiektu, a skrót certyfikatu jest
szyfrowany kluczem publicznym obiektu! Jest to logiczna konsekwencja przyjętego
założenia, że CA jest instytucją zaufaną i jej tożsamości nie trzeba sprawdzać (a właściwie nie
można, bo kto ją miałby potwierdzić?).
W ogólnym przypadku mamy tak zwany łańcuch certyfikatów. Nie musimy (a nawet
nie powinniśmy) bowiem dla każdego obiektu w danym systemie wystawiać certyfikatu
potwierdzonego przez CA, gdyż spowodowałoby to przeciążenie tych instytucji i
niepotrzebny rozrost bazy danych. Możemy na własne potrzeby ustanowić lokalny urząd
certyfikacyjny który będzie poświadczał lokalne certyfikaty, a sam będzie legitymował się
certyfikatem poświadczonym przez CA.
W takim przypadku przy autentyfikacji certyfikatu możliwe są dwie sytuacje:
Jeżeli możemy sobie na to pozwolić, to ustalamy, że wewnątrz naszej sieci ufamy wszystkim
certyfikatom potwierdzonym przez lokalny CA - wtedy w zasadzie możemy zrezygnować z
usług zewnętrznej instytucji certyfikującej.
Jeżeli jednak chcemy sprawdzić, czy instytucja potwierdzająca certyfikat, który
właśnie otrzymaliśmy jest faktycznie tym, za kogo się podaje, zawsze możemy w analogiczny
sposób zweryfikować jej certyfikat. W ten sposób w końcu dojdziemy do kogoś komu ufamy
(w najgorszym razie będzie to któryś z międzynarodowych CA - ale komuś ufać musimy :).
Wielkim problemem dotyczącym certyfikatów jest ich unieważnianie. Łatwo jest
stwierdzić, czy certyfikat nie jest już za stary - zawiera on odpowiednie pole, to jednocześnie
może się okazać, że należy certyfikat unieważnić przed jego terminem wygaśnięcia.
Przykładem może być, pracownik, który odchodzi z pracy i posiada dostęp do ważnych
danych firmy. Analogicznie powinno się odebrać mu uprawnienia niezależnie od terminu
ważności jego certyfikatu.
Rozwiązaniem problemu (nie idealnym) to listy unieważnień (certificate revocation
lists) przechowywane w serwerach wystawiających certyfikaty. Ich działanie polega na tym,
że klient przy sprawdzaniu autentyczności dowolnego certyfikatu musi zgłosić się do jego
wystawcy i poprosić o sprawdzenie, czy przypadkiem nie został on unieważniony przed
czasem.

20
Nie jest to niestety rozwiązanie idealne, gdyż generuje dodatkowy ruch w sieci i jest
dość "sztuczne", jak do tej pory nie wymyślono nic lepszego i nie stosuje się żadnych metod
unieważniania certyfikatów.

5.2 Schemat działania

SSL - protokół typu klient-serwer, pozwala na nawiązanie połączenia (bezpiecznego) przy


użyciu certyfikatów. Jest on zorientowany głównie na autentyfikację serwera (np. sklepu
internetowego, do którego klient wysyła numer karty kredytowej i chce mieć pewność co do
odbiorcy), ale przewiduje również możliwość autoryzacji klienta.
Poniżej przedstawiony został schemat działania protokołu, jako K oznaczamy klienta, a
jako S – serwer:

 K -> S ClientHello
Klient wysyła do serwera zgłoszenie zawierające m.in. obsługiwaną wersję protokołu SSL,
dozwolone sposoby szyfrowania i kompresji danych oraz identyfikator sesji. Komunikat ten
zawiera liczbę losową, która posłuży przy generowaniu kluczy.

 K <- S ServerHello
Serwer odpowiada klientowi, zwracając wybrane parametry połączenia: wersję protokołu
SSL, rodzaj szyfrowania i kompresji, oraz podobną liczbę losową.

 K <- S Certificate
Serwer wysyła klientowi swój certyfikat umożliwiający sprawdzenie swojej tożsamości.

 K <- S ServerKeyExchange
Serwer wysyła do klienta informację o swoim kluczu publicznym. Rodzaj i długość tego
klucza jest określony przez typ algorytmu przesłany w poprzednim komunikacie.

 K <- S ServerHelloDone
Serwer informuje klienta o możliwości przejścia do następnej fazy zestawiania połączenia.

21
 K -> S ClientKeyExchange
Klient na podstawie ustalonych w poprzednich komunikatach dwóch liczb losowych (swojej i
serwera) generuje klucz sesji używany do faktycznej wymiany danych. Następnie wysyła go
serwerowi używając jego klucza publicznego.
Uwaga: wygenerowany klucz jest kluczem algorytmu symetrycznego (typowo DES)! Jest on
jednak ustalony w sposób bezpieczny i znany jest tylko komunikującym się stronom.

 K -> S ChangeCipherSpec
Klient informuje serwer o możliwości przełączenia się na komunikację szyfrowaną

 K -> S Finished
... i że jest gotów do odbierania danych zakodowanych.

 K <- S ChangeCipherSpec
Serwer powiadamia klienta, że polecenie zostało wykonane - od tej pory wysyłał będzie tylko
zaszyfrowane informacje

 K <- S Finished
... i od razu wypróbowuje mechanizm (komunikat jest wysyłany bezpiecznym kanałem)

SSL przewiduje także kontrolowane zakończenie połączenia. Bardzo istotne


stwierdzenie, gdyż nie można dopuścić do sytuacji, w której potencjalny intruz jest w stanie
przerwać fizyczny kanał komunikacyjny i tym samym zniekształcić treść przesyłanej

wiadomości. Do kontrolowania zakończenia połączenia służy komunikat ClosureAlert.

22
Rozdział 6 Dowody o wiedzy zerowej

W protokołach takich jak zapytanie-odpowiedź lub jak użyje się symetrycznego systemu
kryptograficznego, przeprowadzający dowód dowodzi, że zna pewną tajemnicę. Natomiast w
pojęciu „wiedzy zerowej” oznacza niemożliwość poznania sekretu skrywanego przez
udowadniającego. Podczas wykonywania protokołu weryfikujący nie wie nic, po za tym, że
dowodzący posiada tajemnice.

6.1 Protokół identyfikacyjny Fiata-Shamira

Bezpieczeństwo protokołu identyfikacyjnego Fiata-Shamira (z ang. zero-knowledge proof of


identity )zasadza się na trudności obliczania pierwiastków kwadratowych modulo N pod
warunkiem nieznajomości czynników pierwszych liczby „n”. Obliczanie modularnych
pierwiastków kwadratowych nie jest bowiem łatwiejsze obliczeniowo od rozkładu na
czynniki pierwsze (faktoryzacji).
Bezpieczeństwo protokołu identyfikacyjnego oparte jest na trudności obliczeniowej
pierwiastków kwadratowych modulo „n”, które jest iloczynem dwóch liczb pierwszych.
Protokół wymaga podczas procesu identyfikacji udziału strony trzeciej, tzw. Trusted
Authority (TA)-w tłumaczeniu zaufane centrum autoryzacji.
TA przechowuje informację identyfikacyjną dotyczącą wszystkich zarejestrowanych
użytkowników (warunek jaki musi być spełniony, aby można było uruchomić opisany
protokół jest wcześniejsze zarejestrowanie się udowadniającego). Rejestracja zostanie
przeprowadzona w postaci wzajemnego uwierzytelnienia TA i udowodniającego poprzez
okazanie stosownych dokumentów ( paszportu, karty identyfikacyjnej ze zdjęciem itp.)
Bezpieczeństwo protokołu identyfikacyjnego Fiata-Shamira zasadza się na trudności
obliczania pierwiastków kwadratowych modulo N pod warunkiem nieznajomości czynników
pierwszych liczby N. Obliczanie modularnych pierwiastków kwadratowych nie jest bowiem
łatwiejsze obliczeniowo od rozkładu na czynniki pierwsze (faktoryzacji).

23
6.2 Protokół identyfikacyjny Fiata-Shamira (FS)
Obliczenia wstępne wykonywane przez TA: TA utrzymuje w sekrecie dwie liczby pierwsze p i
q, publikując jedynie ich iloczyn N = p*q.
Rejestracja: P wybiera w sekrecie losową wartość s eR Z*N, po czym rejestruje w TA wartość
σ = s2 (mod N) jako swą publiczną informację identyfikacyjną.

Sekwencja komunikatów: P demonstruje wobec V znajomość wartości s, wykonując t-krotnie


następującą sekwencję:

(1) P — V : u = r2 mod N gdzie r eR Z*N .


(2) V — P:b e {0,l}.
(3) P -> V :v = r*sb mod N . Weryfikacja: V sprawdza, czy v 2 = u* ab mod N.

Jeśli nie, to V zatrzymuje protokół w stanie odrzucenia; w przeciwnym razie wykonywana


jest następna runda. Po wykonaniu t rund protokół zatrzymuje się w stanie akceptacji.
Zaufane centrum autoryzacji TA przechowuje informację identyfikacyjną wszystkich zareje-
strowanych użytkowników; warunkiem uruchomienia opisanego protokołu jest uprzednie
zarejestrowanie się udowadniającego P. Rejestracja ta przeprowadzona zostanie w postaci
wzajemnego uwierzytelnienia TA i P poprzez okazanie stosownych dokumentów (paszportu,
karty identyfikacyjnej ze zdjęciem itp.) — jest to czynność krytyczna z punktu widzenia
bezpieczeństwa.
Na wstępie weryfikator V musi upewnić się, że P jest tym samym podmiotem (osobą),
którego publiczna (opublikowana przez TA) informacja identyfikacyjna równa jest a ;
zadaniem udowadniającego P jest przekonanie weryfikatora V, że jest tak istotnie. Proces
przekonywania V przebiega w t iteracjach; każda runda jest niezależna od pozostałych w tym
sensie, że rozpoczyna się od wybrania przez P losowej wartości r, którą następnie podnosi on
do kwadratu modulo N i wysyła wynik do V. V komunikuje następnie swe binarne wyzwanie
b, w odpowiedzi na co P odsyła wartość
v = r*sh modN. Ostatecznie V podnosi otrzymaną wartość do kwadratu i porównuje z
wartością
u * σb; jeżeli obydwie wartości równe są modulo N, wykonywana jest następna runda
protokołu, w przeciwnym razie V zatrzymuje protokół w stanie odrzucenia. Po wykonaniu t

24
rund weryfikator V uznaje się za przekonanego — protokół zatrzymuje się w stanie
akceptacji.
Oszust Oskar może oszukać Wiktora (czyli weryfikator V), jeśli będzie w stanie zgadnąć wy-
braną przez V wartość b. Niech g eR {0,1} będzie domniemywaną przez Oskara wartością b;
Oskar wybiera losowo wartość r i wysyła Wiktorowi swe zobowiązanie

u ≡ r2σ-g mod N ,

otrzymując w odpowiedzi (od Wiktora) losową wartość binarną b. I teraz Oskar staje przed
problemem obliczenia wartości

v ≡ r * sb-g mod N,

by pozytywnie przejść test porównania

v2 ≡ u*σb modN.

Porównanie to równoważne jest porównaniu

v2 = r 2σb-g ≡ u * σ b-g .

Jeśli g ≠ b, to b - g równe jest 1 albo -1 i w celu obliczenia poprawnej wartości


v = r * sb-gmod N Oskar musiałby znać wartość s albo s-1; wartość s jest jednak utrzymywana
w tajemnicy
przez P. Ponieważ w każdej iteracji prawdopodobieństwo tego, że g = b, wynosi ½, z takim
właśnie prawdopodobieństwem oszustwo Oskara nie zostanie wykryte. Gdy wykonywanych
jest t iteracji, prawdopodobieństwo niewykrycia oszustwa (czyli prawdopodobieństwo
fałszywej akceptacji) wynosi 2t.
Zilustrujmy opisane obliczenia konkretnym przykładem. Niech p = 4787 i q = 9643, wtedy
publikowana przez TA wartość N = pq równa jest 46161041. P wybiera w tajemnicy wartość
s = 21883917 i rejestruje swą publiczną identyfikację równą σ = s2 = 25226214 (mod
46161041). Niech w pierwszej rundzie protokołu losowo wybrana wartość r równa będzie
41435437. P wysyła swe zobowiązanie:

25
P — V : u = r2 = 6360246 (mod 46161041).
V odpowiada losowym wyzwaniem binarnym b = 1, w odpowiedzi na co P wysyła wartość

P V : v = rs = 39085596 (mod 46161041).

Ostatecznie V dokonuje porównania dwóch wartości:

v2 = 42178320 (mod 46161041)

oraz

σa = 42178320 (mod 46161041).

Ponieważ obydwie te wielkości mają tę samą wartość, protokół przechodzi do następnej


rundy.

26
27

You might also like