background image

2014-05-13 

Bezpieczeństwo i ochrona 

danych 

 
 

Uwierzytelnianie 

Grzegorz Kołaczek, Ph.D., Eng. 

Agenda 

• Zarządzanie kluczami 
• Cel uwierzytelniania 
• Hasła 
• Metoda „challenge-response” 

Zarządzanie kluczami 

• Dla sieci z algorytmem symetrycznym: 

 

 
 
 
 
 
 
 

• Alicja, Bob, Carol oraz Dave chcą się komunikować z zachowaniem 

poufności 

• Aby to osiągnąć, jeżeli jest n osób (podmiotów), potrzeba 
 

 

 

 

   n 

   n(n-1) 

 

 

 

 

   2 

       2 

 

• Zarządzanie i przesyłanie kluczy staje się wyzwaniem. 

Alicja 

Carol 

Bob 

Dave 

k

ab

 

k

ac

 

k

bd

 

k

cd

 

k

ad

 

k

bc

 

(  ) 

=  

 

różnych kluczy 

Definicje 

• Ustanowienie klucza  

jest to proces, którego celem jest udostępnienie pewnego sekretu, 
niezbędnego dla poprawnej realizacji określonego protokołu 
kryptograficznego, dwóm lub więcej podmiotom 
 

• Zarządzanie kluczem  

jest to zbiór działań i mechanizmów, które wspierają proces 
ustanowienia klucza kryptograficznego oraz utrzymanie 
istniejących relacji pomiędzy stronami, w skład których wchodzi 
m.in. Konieczność odnowienia kluczy, bezpiecznego  przekazania 
kluczy, itp. 

Centrum dystrybucji kluczy 

• Podejście naiwne 

 
 
 
 
 
 
 

• Protokół: 

 

(1)   Alicja → KDC 

: “chce rozmawiać z Bobem” 

(2)   KDC → Alicja 

: KDC wybiera losowo k

ab

, wysyła Ek

a

[k

ab

], Ek

b

[k

ab

, “bilet a-b”] 

(3)   Alicja → Bob 

: Alicja deszyfruje Ek

a

[k

ab

], przesyła bilet do Boba 

(4)   Bob   

: Bob deszyfruje bilet 

 

• Alicja i Bob współdzielą klucz k

ab

Alicja 

Carol 

Bob 

Dave 

KDC 

k

a

  k

b

 

k

c

 

k

d

 

Wszystkie strony  
współdzielą klucze z KDC 

Problemy podejścia naiwnego 

• Podejście naiwne: 

 
 
 
 
 
 

 

 

• Problemy: 

– Pojedynczy punkt awarii - KDC (lub cel ataku) 
– Brak uwierzytelniania 
– Mała skalowalność 
– Powolność 

 

Alicja 

Carol 

Bob 

Dave 

KDC 

k

a

  k

b

 

k

c

 

k

d

 

Wszystkie strony  
współdzielą klucze z KDC 

background image

2014-05-13 

Puzzle Merklego 

• Ralph Merkle (Stanford, 1974) 
• Puzzle Merklego pozwalają wymienić klucze Alicji i Bobowi bez 

udziału KDC 

• Protokół: 

 

 

(1) 

Alicja generuje puzzle P

i

 = E

pi

[“To jest puzzle  #X

i

”, k

i

 

 

gdzie i = 1 .. 2

20

, |p

i

| = 20 bit (słaby), |k

i

| = 128 bit (mocny) 

 

 

 X

i

, p

i

  oraz k

i

 są wybrane losowo oraz są różne dla różnych wartości i. 

 

 

(2) 

Alicja wysyła wszystkie puzzle P

i

 do Boba. 

 

 

(3) 

Bob wybiera losowo puzzle j є {1 … 2

20

} i łamie siłowo P

j

 

 

 

(n.p. dla klucza p

j

). Pozwala to odczytać X

j

 oraz k

j

 z puzzla. 

 

 

(4) 

Bob wysyła X

j

 do Alicji tekstem jawnym. 

 

 

(5)   Alicja sprawdza dla indeksu j wartość X

j

 (z tablicy) aby otrzymać k

j

 

=>  

Alicja oraz Bob teraz współdzielą klucz k

j

Puzzle Merklego 

Alicja 

Bob 

P

1

 

P

6

 

P

3

 

P

4

 

P

12

 

P

P

9

 

P

2

 

P

P

14

 

P

11

 

P

13

 

 

Generuje 2

20

 puzzli 

 
 
 
 
 

   Alicja sprawdza X

j

 

 
 

Współdzielonym   

               sekretem jest k

j

 

Wybiera losowo puzzle 
P

j

 i łamie je. 

 
 
 
Wysyła X

j

 do Alicji 

 
Sekretem jest k

j

 

 

P

i

 = Ep

i

[“To jest puzzle   #X

i

”, k

i

 

Intruz ??? 

 

Zna jedynie puzzle 
oraz X

Atak na puzzle Merklego 

• Intruz musi złamać około połowę puzzli aby znaleźć 

X

j

 (bo 

k

j

– Potrzebny czas dla puzzli  2

20

  = 2

19

 x 2

19

 = 2

38

 

 

• Jeżeli Alicja i Bob mogą sprawdzić 10 000 kluczy/sekundę 

– realizacja ich kroków zajmie im około minuty  (2

19

 dla Boba) 

– plus dodatkowa minuta aby wymienić puzzle łączem 1.544MB (T1) 

 

• Przy podobnych zasobach Intruzowi złamanie klucza zajmie około 

roku. 

 

• Uwaga:  Puzzle Merkleego „zapychają” łącza komunikacyjne – mało 

praktyczne 

Wymiana Diffiego-Helmana 

• Diffie-Hellman (Stanford, 1976) 
• Ogólnoświatowy standard np. dla smart cards, etc. 
• Protokół: 

 

 

Dla ciała skończonego Z

p

 = <0, … p-1> gdzie p jest l.pierwszą (p około 300 cyfrową) 

 

Niech g є Z

(generator) 

 

(1)   

Alicja 

 

: Alicja wybiera losową dużą wartość a є Z

p

 

(2)   

Bob 

 

: Bob wybiera losową dużą wartość b є Z

p

 

(3)   

Alicja 

 Bob 

: Alicja przesyła do Boba g

a

 (mod p) 

(4)   

Bob 

 Alicja 

: Bob przesyła do Alicji g

b

 (mod p) 

(5)   

Alicja oraz Bob 

: obliczają g

ab 

 

 

 

 

: Alicja oblicza (g

b

)

=

 

g

ab 

(mod p) 

 

 

 

 

: Bob oblicza (g

a

)

=

 

g

ab 

(mod p) 

 
=>   Alicja oraz Bob współdzielą sekret g

ab 

Moc protokołu D-H 

• Moc protokołu Diffie-Hellman oparta na: 

– Znając p, g, g

a

,  trudno obliczyć a (problem lograrytmów dyskretnych) 

– Znając p, g, g

a

, g

b

 trudno Intruzowi obliczyć g

ab 

(problem Diffie-Hellman) 

– Wiadomo że DL 

 DH lecz nie wiadomo czy DH 

 DL.

 

 

• W istocie, moc systemu  zależy od trudności faktoryzacji liczb 

rozmiaru p 
 

• Generator  g może być mały 

 

• Nie należy używać wartości  g

ab 

jako wartości tajnego klucza  

– Lepiej obliczyć skrót lub użyć jako ziarno dla algorytmu PRNG – nie 

wszystkie bity sekretu mają rozkład jednostajny 

Uwierzytelnianie 

Alicja 

Bob 

W jaki sposób Bob może się upewnić, że Alicja jest Alicją? 

Kanał niezabezpieczony 

Intruz 

(

Intruz kontroluje kanał!) 

Cześć! Jestem Alicja 

background image

2014-05-13 

Uwierzytelnianie 

• Uwierzytelnianie  jest sposobem potwierdzenia tożsamości  

podmiotów. 
 

• Umożliwia jednej stronie uzyskać pewność odnoście tożsamości 

drugiej stronny w komunikacji 
 

• Uwierzytelnienie dostarcza środków umożliwiających osiągnięcie 

powyższego celu w sytuacji gdy strony korzystają z 
niezabezpieczonego kanału komunikacyjnego, w obecności możliwych 
ataków oraz gdy strony nie mają współdzielonego sekretu 
 

• Uwaga:  uwierzytelnieniu musi towarzyszyć wymiana kluczy 

kryptograficznych w celu uniknięcia przechwycenia sesji (session 
hijacking) (po uwierzytelnieniu). 
 

Uwierzytelnienie 

• Alicja musi udowodnić swoją tożsamość przed Bobem 

– Alicja oraz Bob mogą być ludźmi lub komputerami 

• Można również wymagać aby Bob udowodnił swoją 

tożsamość (uwierzytelnienie wzajemne) 

• Można również oczekiwać ustalenia klucza sesji 
• Można również definiować inne wymagania: 

– Wykorzystanie tylko kluczy asymetrycznych 
– Wykorzystanie tylko algorytmów symetrycznych  
– Wykorzystanie tylko kryptograficznych funkcji skrótu 
– Zapewnienie anonimowości, niezaprzeczalności, etc., etc. 

Czym jest uwierzytelnienie? 

• Uwierzytelnienie (authentication):   

– powiązanie tożsamości z identyfikatorem 

• Jak to osiągnąć? 

– Wiedza (podmiot coś wie - sekret) 

• ? 

– Posiadanie (podmiot coś ma) 

• ? 

– Stan (podmiot jest czymś) 

• ? 

– Lokalizacja (podmiot przebywa gdzieś) 

• ? 

Czym jest uwierzytelnienie? 

• Uwierzytelnienie (authentication):   

– powiązanie tożsamości z identyfikatorem 

• Jak to osiągnąć? 

– Wiedza (podmiot coś wie - sekret) 

• Hasła, identyfikatory, … 

– Posiadanie (podmiot coś ma) 

• Karty, znaczniki, … 

– Stan (podmiot jest czymś) 

• Odcisk palca, … 

– Lokalizacja (podmiot przebywa gdzieś) 

• IP, GPS, … 

Uwierzytelnianie 

• Uwierzytelnianie na komputerze 

stacjonarnym jest względnie proste 

– “bezpieczna ścieżka” - podstawowe 
– główny problem – ataki na 

oprogramowanie/sprzęt uwierzytelniający  

• Uwierzytelniania przez sieć - trudniejsze 

– Intruz może obserwować komunikację 
– Intruz może powtórzyć przechwycone komunikaty 
– Intruz może aktywnie oddziaływać na 

komunikację (zmieniając, kasując, …) 

Wybór hasła 

• Losowe 

– Zależne od jakości generatora losowego 
– Rozmiar min. 8 znaków: ograniczone możliwości zapamiętania 
– Konieczność zapisu  

• Złożone i nonsensowne 

– 3kstr4m0cn3 
– Łatwiejsze do zapamiętania 

• Zdefiniowana polityka 

– Kontrola dopuszczalności 
– Powinno być dobrze:  

• Co najmnej 1 cyfra, 1 litera, 1 zank interpunkcyjy, 1 znak kontrolny 
• Wierszyki 

– S8mnw;@dwnp@t8t 

background image

2014-05-13 

Zarządzanie hasłami 

• Starzenie się haseł 

– Zmiana hasła po upływie pewnego czasu (na 

podstawie średniego czasu poszukiwania/łamania) 

– Zabezpieczenie przed użyciem historycznych n haseł 

• Problem – ataki przez powtórzenie 

– Można ‚nagrać’ i odtworzyć hasło/sekwencje 

uwierzytelniającą 

– rozwiązanie:  

• Uwierzytelnianie  realizowane w taki sposób, że 

przekazywana informacja za każdym razem jest inna 

Sól publiczna 

• Dodanie t-bitów  soli wzmacnia hasło – utrudnia atak słownikowy 

 

• Sól publiczna (n.p. hasła UNIX) 

 
 

 

 

 

userA 

saltA 

h(passwordA | saltA) 

 

 

 

userB 

saltB 

h(passwordB | saltB) 

 

– Sól wybrana losowo 
– Atakujący musi obliczyć p*2

t

  więcej skrótów aby znaleźć właściwe hasło,  

– Skuteczne gdy liczba użytkowników jest zbliżona do liczby możliwych 

wartości soli 

• np. UNIX korzysta z 4096 możliwych wartości, ale większość systemów nie ma aż 

tylu użytkowników 

– Nie chroni przed podsłuchem czy rootkitami 

Sól ukryta 

 
 

 

           userA       saltA 

h(passwordA | saltA | saltA’) 

 

 

           userB       saltB 

h(passwordB | saltB | saltB’) 

 

• Sól jest mała (~4 bity) 
• W celu weryfikacji system podstawia wszystkie możliwe wartości 

soli + hasło użytkownika 

• Aby znaleźć hasło intruz potrzebuje wykonać 16x obliczeń 

– Możliwe rozwiązanie w przypadku małej liczby użytkowników 

 

Hasła jednorazowe 

• Każde hasło wykorzystane jest tylko jeden raz 

– Zabezpieczenie przed powtórzeniem/odtworzeniem 

 

• Wiele wariantów 

– Współdzielona lista hasel jednorazowych 

• Usuwane po wykorzystaniu 

– Tablica typu „challenge response” 

• System ma listę „pytań”, wybiera jedno w losowy sposób 

– Aktualizowana lista haseł jednorazowych 

• Podczas uwierzytelniania kluczem i, użytkownik generuje i przesyła do systemu 

kolejne hasło (i+1) 

– Sekwencje jednorazowych haseł generowane z wykorzystaniem funkcji 

jednokierunkowych 

• np. schemat Lamporta

 

Schemat Lamporta (s/key) 

Konfiguracja: 
• Alicja wybiera ziarno g a następnie oblicza sekwencję:  

 

 

 

 

w = h

n

(g) = h(h(h(….h(g)))) 

 

• Alicja przesyła w na serwer 
• Alicja  ustawia licznik count← n-1 

 

Uwierzytelnianie: 
• Alicja wysyła x = h

count

(g)  na serwer 

• Alicja ustawia licznik count ← count - 1 
• Serwer weryfikuje h(x) = w 
• Serwer ustawia w ← x 

Schemat Lamporta (s/key) 

 
 
 
 
 

 

• Zalety 

– Zabezpiecza przed podsłuchaniem 
– Sekret nie jest przechowywany na serwerze 

 

• Problemy 

– Ograniczona liczba operacji uwierzytelnienia (konieczność generowania nowej 

sekwencji w)  

– Podatne na atak typu pre-play  gdy niewykorzystane hasło zostało 

skompromitowane 

h() 

h() 

h() 

auth 1 

auth 2 

auth n 

background image

2014-05-13 

Bezpieczne znaczniki 

• Implementacja popularna w inteligentnych kartach 

 
 
 
 
 
 

 

 
 

• Wymagane jest aby serwer przechowywał sekret (źle) 
• Użytkownik wpisuje (słaby) PIN aby aktywować kartę 
• Karta musi być odporna na podrabianie 

– Trudne do osiągnięcia 

• Selekcja klucza może być zależna od czasu 

– e.g. SecureID 

Alicja (U

żytkownik) 

Bob (Server) 

k

0

 

k

1

 

k

0

 

k

1

 

h() 

h() 

h() 

h() 

E

k0

(m) 

E

k1

(m) 

Proste uwierzytelnienie 

Alicja 

Bob 

“jestem  Alicja” 

Dowiedź tego 

Moje hasło to “frank” 

• Proste, wygodne, odpowiednie dla systemu 

„stand-alone” 

• Niebezpieczne dla systemów sieciowych 

– Podatne na atak powtórzenia  
– Bob musi znać hasło Alicji 

Atak na uwierzytelnianie 

Alicja 

Bob 

“jestem Alicja” 

Dowiedź tego 

Moim hasłem jest “frank” 

Intruz 

Atak na uwierzytelnianie 

Bob 

“Jestem Alicja” 

Dowiedź tego 

Moim hasłem jest “frank” 

Intruz 

• Atak przez powtórzenie 
• Jak zabezpieczyć się? 

Proste uwierzytelnianie 

Alicja 

Bob 

Jestem Alicja, 

a moim hasłem jest “frank” 

• Bardziej wydajne… 
• Ale problem pozostaje ten sam 

Lepsze uwierzytelnianie 

Alicja 

Bob 

“Jestem Alicja” 

Dowiedź tego 

h(

hasło Alicji) 

• Lepsze bo ukrywa hasło Alicji 

– Zarówno względem Boba jak i atakującymi 

• Lecz problem pozostaje 

background image

2014-05-13 

Challenge-Response 

• W celu zabezpieczenia przed atakami przez powtórzenie 

stosuje się schemat „challenge-response” 

• Niech Bob chce aby Alicja się uwierzytelniła 

– Przesyła pytanie do Alicji (Challenge) 
– Tylko Alicja może dostarczyć prawidłowej odpowiedzi (response) 
– Pytanie jest wybierane za każdym razem więc nie można go 

powtórzyć 

• Jak to osiągnąć? 

– Hasło jest znane tylko Alicji… 
– “number used once” lub 

nonce 

Challenge-Response 

Bob 

“Jestem Alicja” 

Nonce 

Coś co może przesłać jedynie 

Alicja 

Alicja (oraz Bob 

może to zweryfikować) 

• Jak to osiągnąć? 
• Skrót hasła – dobre, al. Kryptograficzny - 

lepsze 

Challenge-Response 

Bob 

“Jestem Alicja” 

Nonce 

h(

hasło Alicji, Nonce) 

 Nonce jest 

pytaniem (challenge) 

 

skrót jest 

odpowiedzią (response) 

 

Nonce 

zapobiega powtórzeniom 

 

Hasło jest znane tylko przez Alicję 

 uwaga - Bob 

musi znać hasło Alicji 

Alicja 

Notacja klucza symetrycznego 

• Szyfruj tekst jawny P kluczem K 
   

 C = E(P,K) 

• Deszyfruj kryptogram C kluczem K 
   

 P = D(C,K) 

• Rozważamy atak na 

protokół

, a nie na algorytm 

• Zakładamy bezpieczeństwo algorytmu 

Uwierzytelnienie  kluczem 
symetrycznym 

• Alicja oraz Bob współdzielą klucz K

AB

 

• Klucz K

AB

 znany jest tylko przez Alicję 

oraz Boba 

• Uwierzytelnienie poprzez dowód 

znajomości klucza 

• Jak to osiągnąć? 

– Nie wolno ujawniać klucza 
– Nie wolno umożliwić ataku przez 

powtórzenie 

Uwierzytelnienie  kluczem 
symetrycznym 

Alicja, K

AB 

Bob, K

AB 

“Jestem Alicja” 

E(R,K

AB

Bezpieczna metoda uwierzytelnienia Alicji  przez  Boba 

 Alicja nie uwierzytelnia Boba 

Czy można osiągnąć uwierzytelnienie obustronne? 

background image

2014-05-13 

Uwierzytelnienie obustronne 

Alicja 

Bob 

“Jestem Alicja”, R 

E(R,K

AB

E(R,K

AB

• Co jest nie tak? 
• “Alicja” może być Intruzem   

(lub kimkolwiek)! 

Uwierzytelnienie obustronne 

• Ponieważ mamy dobry protokół 

uwierzytelniający jedną stronę… 

• Możemy użyć go dwukrotnie 

– Raz dla Boba aby uwierzytelnić Alicję 
– Raz dla Alicji aby uwierzytelnić Boba 

• To musi działać… 

Uwierzytelnienie obustronne 

Alicja 

Bob 

“Jestem Alicja”, R

A

 

R

B

, E(R

A

,K

AB

E(R

B

,K

AB

• Uwierzytelnienie obustronne… 
• …czy na pewno?  

Atak na uwierzytelnie obustronne 

Bob 

1. 

“Jestem Alicja”, R

A

 

2. 

R

B

, E(R

A

,K

AB

Intruz 

Bob 

3. 

“Jestem Alicja”, 

R

B

 

4. R

C

E(R

B

,K

AB

)

 

Intruz 

Uwierzytelnienie obustronne 

• Protokół jednokierunkowy nie jest skuteczny dla 

uwierzytelnienia w obu kierunkach 

• Protokoły są wrażliwe! 
• „Oczywiste” rozwiązania nie zawsze prowadzą 

do bezpiecznego rezultatu 

• Również gdy zmienią się założenia, środowisko, 

itp. możemy otrzymać rozwiązanie nie 
gwarantujące bezpieczeństwa 

– Częste źródło problemów bezpieczeństwa 
– Np. protokoły w Internecie 

Klucz symetryczny dla 
uwierzytelniania obustronnego 

Alicja 

Bob 

“Jestem Alicja”, R

A

 

R

B

, E(“Bob”,R

A

,K

AB

E

(“Alicja”,R

B

,K

AB

• Czy ta „nieznacząca” zmiana pomoże? 
• Tak! 

background image

2014-05-13 

Notacja klucza publicznego 

• Szyfuj M kluczem publicznym Alicji: {M}

Alicja

 

• Podpisz M kluczem prywatnym Alicji: [M]

Alicja

 

• Wtedy 

–  [{M}

Alicja 

]

Alicja

 = M 

–  {[M]

Alicja 

}

Alicja

 = M 

•  Każdy 

może operować 

kluczem publicznym

 

• Tylko 

Alicja 

może używać 

klucza prywatnego 

(podpisywać)

 

Uwierzytelnienie kluczem 
publicznym 

Alicja 

Bob 

“Jestem Alicja” 

{R}

Alicja

 

• Czy jest to bezpieczne? 
• Intruz może „zmusić” Alicję do 

odszyfrowania wiadomości! 

– Trzeba mieć dwie pary kluczy 

Uwierzytelnianie kluczem 
publicznym 

Alicja 

Bob 

“Jestem Alicja” 

[R]

Alicja

 

• Czy to jest bezpieczne? 
• Intruz może „zmusić” Alicję do podpisania 

każdego dokumentu! 

– Trzeba mieć dwie pary kluczy 

Klucze publiczne 

• Nigdy nie należy używać tej samej pary 

kluczy do szyfrowania i do podpisywania 

• Jedna para dla 

szyfrowania/deszyfrowania 

• Druga para dla 

podpisywania/weryfikowania 

Klucz sesyjny 

• Zazwyczaj korzystamy z odrębnych kluczy 

dla każdej sesji 

– Klucz symetryczny dla sesji 

• Zastosowania: 

– Ochrona poufności 
– Kontrola integralności 

Uwierzytelnianie i klucz sesji 

Alicja 

Bob 

“Jestem Alicja”, R 

{R,K}

Alicja

 

{R +1,K}

Bob

 

• Czy jest bezpieczne? 
• OK dla klucza, lecz nie dla wzajemnego 

uwierzytelniania 

• Uwaga: 

K jest używane jako wartość nonce 

Boba 

background image

2014-05-13 

Uwierzytelnienie kluczem 
publicznym i klucz sesji 

Alicja 

Bob 

“Jestem Alicja”, R 

[R,K]

Bob

 

[R +1,K]

Alicja

 

• Czy bezpieczne? 
• Obustronne uwierzytelnienie, lecz klucz sesji 

nie jest tajny! 

Uwierzytelnienie kluczem 
publicznym i klucz sesji 

Alicja 

Bob 

“Jestem Alicja”, R 

{[R,K]

Bob

}

Alicja

 

{[R +1,K]

Alicja

}

Bob

 

• Jest bezpieczne? 
• Wygląda OK 
• Uwierzytelnienie obustronne i klucz sesji! 

Uwierzytelnienie kluczem 
publicznym i klucz sesji 

Alicja 

Bob 

“Jestem Alicja”, R 

[{R,K}

Alicja

]

Bob

 

[{R +1,K}

Bob

]

Alicja

 

• Czy jest bezpieczne? 
• Wydaje się być OK 

– Każdy może odczytać 

{R,K}

Alicja

 oraz 

{R +1,K}

Bob

  

 
 

Dziękuję za uwagę