Strona główna

Jest to szereg kroków, obejmujących dwie lub więcej stron, podejmowanych w celu realizacji zadania. Jest to inaczej mówiąc sekwencja działań, każde z nich musi być kolejno wykonane i żadne nie może być podjęte


Pobieranie 343.43 Kb.
Strona3/10
Data19.06.2016
Rozmiar343.43 Kb.
1   2   3   4   5   6   7   8   9   10

ROZPOWSZECHNIANIE WIADOMOŚCI I KLUCZA



Realizowane jest podobnie jak powyżej, przy czym w kroku 2) użytkownik A pobiera klucze jawne osób, do których chce przesłać wiadomość, a w kroku 4) przesyła zainteresowanym odpowiednio zaszyfrowany klucz i wiadomość.

WYMIANA KLUCZY WRAZ Z UWIERZYTELNIENIEM



Protokół Wide-Mouth Frog
Wymaga istnienia niezależnego zaufanego komputera (oznaczonego dalej w opisie literą T), do komunikacji z którym każdy uprawniony użytkownik posiada unikalny klucz.
Opis protokołu:

  1. użytkownik A łączy ze sobą następujące elementy:

    • znacznik czasu TA,

    • nazwę użytkownika B,

    • losowy klucz sesyjny K;

szyfruje całość przy użyciu klucza wspólnego do komunikacji z T, wysyła wszystko do T wraz ze swoim identyfikatorem,

A, EA(TA, B, K)


  1. T łączy znacznik czasu TT, nazwę A i losowy klucz sesyjny, szyfrując całą wiadomość przy użyciu klucza wspólnego z B, a następnie wysyła wszystko do B,

EB(TT, A, K).

Protokół Yahaloma
Opis protokołu:

  1. użytkownik A łączy swoją nazwę i losową liczbę RA i wysyła to do B

  2. użytkownik B łączy nazwę A, liczbę losową od A i inną liczbę losową RB, szyfruje wszystko przy użyciu klucza tajnego dzielonego z T, przesyła te wiadomości do T wraz ze swoją nazwą,

B, EB(A, RA, RB),


  1. T generuje dwie wiadomości: pierwsza zawiera nazwę B, losowy klucz sesyjny K dla użytkownika A i B, losową liczbę użytkownika B, wszystko szyfruje przy użyciu klucza współdzielonego z A, druga wiadomość składa się z nawy A i losowego klucza sesyjnego, zaszyfrowuje całość kluczem współdzielonym z B, T wysyła obie wiadomości do A,


EA(B, K, RA, RB), EB(A, K),


  1. Użytkownik A deszyfruje wiadomość zaszyfrowaną swoim kluczem, wydobywa K i potwierdza, że RA ma tę samą wartość, jaką wysłał, A wysyła do B dwie wiadomości: pierwszą jest wiadomość uzyskana od T zaszyfrowana kluczem współdzielonym T z B, a drugą jest RB, zaszyfrowana przy użyciu klucza sesyjnego,


EB(A, K), EK(RB),


  1. Użytkownik B deszyfruje wiadomość zaszyfrowaną przy użyciu jego klucza wydobywa K i potwierdza RB.

Protokół Needhama i Schroedera
Opis protokołu:

  1. użytkownik A przesyła do T wiadomość składającą się z jego nazwy A, nazwy B i pewnej losowej wartości RA,

  2. T generuje losowy klucz sesyjny K, szyfruje wiadomość składającą się z K i nazwy A przy użyciu klucza tajnego współdzielonego z B, szyfruje losową liczbę A , nazwę B, klucz i zaszyfrowaną wiadomość przy użyciu klucza tajnego współdzielonego z A, przesyła całą wiadomość do A,


EA(RA, B, K, EB(K, A)),


  1. Użytkownik A deszyfruje wiadomość i wydobywa klucz K, potwierdza RA, następnie przesyła do B wiadomość zaszyfrowaną przez T za pomocą klucz B,


EB(K, A),


  1. Użytkownik B deszyfruje wiadomość i wydobywa K, następnie generuje inną liczbę losową RB, szyfruje wiadomość przy użyciu klucza K i przesyła do A,


EK(RB),


  1. Użytkownik A deszyfruje wiadomość przy użyciu klucza K, generuje liczbę RB – 1 i szyfruje ją przy użyciu klucza K, przesyła wiadomość z powrotem do B,


EK(RB – 1),


  1. Użytkownik B deszyfruje wiadomość za pomocą klucza K i sprawdza, że jest to RB – 1 (zabezpieczenie przed atakiem powtórzeniowym).

Możliwy atak, gdy nieprzyjaciel uzyska dostęp do starego klucza sesyjnego K, może wtedy wykonać następujące czynności:


  1. atakujący wysyła do użytkownika B wiadomość:


EB(K, A),


  1. użytkownik B wydobywa K, generuje RB i przesyła ją zaszyfrowaną kluczem K do użytkownika A,


EK(RB),


  1. atakujący przechwytuje wiadomość, deszyfruje ją przy użyciu klucza K i przesyła do B


EK(RB – 1),


  1. użytkownik B sprawdza, że wiadomością „od A” jest RB – 1.


Protokół można uodpornić na tego typu atak, jednak należy wprowadzić znaczniki czasu, co jest dość skomplikowane.

Protokół Otwaya-Reesa
Opis protokołu:

  1. użytkownik A generuje wiadomość składającą się z liczby indeksowej I, jego nazwy A, nazwy użytkownika B i pewnej losowej wartości RA, całość szyfruje przy użyciu klucza współdzielonego z T, przesyła tę wiadomość do B wraz z liczbą indeksową, nazwą swoją i użytkownika B,


I, A, B, EA(RA, I, A, B),


  1. użytkownik B generuje wiadomość składającą się z nowej losowej wartości RB, liczby indeksowej, nazwy A i nazwy B, wszystko szyfruje przy użyciu klucza dzielonego z T, przesyła tę wiadomość do T wraz z zaszyfrowaną wiadomością A, liczbą indeksową, nazwą użytkownika A i B,

I, A, B, EA(RA, I, A, B), EB(RB, I, A, B),


  1. T generuje losowy klucz sesyjny K, następnie tworzy dwie wiadomości, jedna składa się z liczby losowej od A i klucza sesyjnego, zaszyfrowanych przy użyciu klucza współdzielonego z A, druga z nich zawiera losową liczbę od B i klucz sesyjny, zaszyfrowane przy użyciu klucza dzielonego z B, T wysyła obie wiadomości do B wraz z liczbą indeksową,

I, EA(RA, K), EB(RB, K),


  1. Użytkownik B wysyła do A wiadomość zaszyfrowaną za pomocą klucza użytkownika A wraz z liczbą indeksową,


I, EA(RA, K).

Protokół Kerberos
Użytkownicy A i B korzystają z różnych kluczy tajnych do komunikacji z T. Użytkownicy A i B chcą wymieniać zaszyfrowane dane.
Opis protokołu:

  1. użytkownik A przesyła do T wiadomość składającą się z jego nazwy i nazwy B

  2. T generuje wiadomość zawierającą znacznik czasu T, okres ważności L, losowy klucz sesyjny K i nazwę A, następnie szyfruje wiadomość przy użyciu klucza tajnego dzielonego z B, potem pobiera znacznik czasu, okres ważności i nazwę B i szyfruje to wszystko przy użyciu klucza tajnego dzielonego z A, przesyła obie zaszyfrowane wiadomości do A,


EA(T, L, K, B), EB(T, L, K, A),


  1. Użytkownik A generuje wiadomość zawierającą jego nazwę i znacznik czasu, szyfruje ją przy użyciu klucza sesyjnego K i wysyła do B, użytkownik A wysyła do B również wiadomość od T zaszyfrowaną przy użyciu klucza współdzielonego B z T,

EK(A, T), EB(T, L, K, A),


  1. użytkownik B tworzy wiadomość składającą się ze znacznika czasu plus jeden, szyfruje ją za pomocą klucza sesyjnego i przesyła do A,

EK(T + 1).
Warunek - wszyscy uczestnicy protokołu muszą mieć zgodne zegary.

Protokoły SPX

Użytkownicy A i B mają odrębne klucze prywatne, natomiast T ma podpisane kopie ich kluczy jawnych.
Opis protokołu:

  1. użytkownik A wysyła do T wiadomość składającą się z nazwy B,

  2. T przesyła do A klucz jawny B KB podpisany kluczem prywatnym T,

ST(KB),

  1. Użytkownik A weryfikuje podpis T w celu potwierdzenia, że otrzymany klucz jest aktualnym kluczem jawnym użytkownika B, następnie generuje losowy klucz tajny K i parę kluczy losowych: klucz publiczny/klucz prywatny KP, szyfruje czas TA przy użyciu klucza K, podpisuje okres ważności klucza L, swój identyfikator A i KP za pomocą swojego klucza prywatnego KA, szyfruje K przy użyciu klucza jawnego użytkownika B i podpisuje za pomocą KP, wysyła wszystko do użytkownika B,


EK(TA), SKA(L, A, KP), SKP(KB(K)),


  1. użytkownik B przesyła do T wiadomość składającą się z nazwy A,

  2. T wysyła do B klucz jawny użytkownika A podpisany przy użyciu swojego klucza prywatnego,

ST(KA),

  1. użytkownik B sprawdza podpis T w celu upewnienia się, że otrzymany klucz jest aktualnym kluczem jawnym użytkownika A, sprawdza podpis użytkownika A i odtwarza KP, sprawdza podpis i używa swego klucza prywatnego do odtworzenia K,

  2. w przypadku wymaganego obustronnego uwierzytelnienia, użytkownik B szyfruje nowy znacznik czasu TB przy użyciu klucza tajnego K i wysyła do A,

EK(TB),

  1. użytkownik A deszyfruje TB przy użyciu klucza tajnego K, aby upewnić się, że jest to bieżąca wiadomość.

UWIERZYTELNIENIE


Identyfikacja użytkowników i systemu wobec użytkownika jest obecnie niezbędna w zaawansowanych rozwiązaniach systemów kryptograficznych. Z jednej strony dostęp do systemu powinni mieć tylko uprawnieni użytkownicy, natomiast z drugiej strony użytkownik powinien mieć pewność, że komunikuje się z wykorzystaniem systemu upoważnionego do tego celu. Zdarzały się przypadki np. podkładania fałszywych bankomatów zbierających dane o kartach użytkowników i ich PIN-ach.


Rozróżniamy identyfikację użytkownika:

IDENTYFIKACJA W KRYPTOGRAFII Z KLUCZEM SYMETRYCZNYM


Podstawowy protokół uwierzytelnienie użytkownika:

      1. użytkownik wprowadza swoje hasło do komputera,

      2. komputer oblicza pewną funkcję jednokierunkową hasła,

      3. komputer porównuje wynik funkcji z wartością przechowywaną w pamięci,

      4. w przypadku zgodności umożliwia pracę użytkownikowi w ramach jego uprawnień.

Protokół Lamporta

Wykorzystuje on funkcję jednokierunkową do identyfikacji użytkownika. Użytkownik musi zapamiętać i zachować w tajemnicy pewną wartość początkową x0. Kolejne wartości xk w kolejnych krokach będą powstawać jako wyniki działania funkcji jednokierunkowej z argumentem xk-1. Użytkownik na początku musi wygenerować n iteracji (n – z ustalonego wcześniej zakresu) funkcji f. Następnie podaje wartość xn systemowi. Przy pierwszym logowaniu wartość ta będzie funkcjonować jako identyfikator użytkownika, natomiast xn-1 jako hasło.
Opis protokołu:

  1. użytkownik przesyła aktualny identyfikator xk,

  2. system sprawdza istnienie użytkownika o otrzymanym identyfikatorze, po czym żąda podania hasła czyli xk-1,

  3. użytkownik podaje hasło xk-1,

  4. system weryfikuje poprawność hasła, sprawdzając, czy
    f(xk-1) = xk, jeśli tak, to zapamiętuje xk-1 jako identyfikator przy następnym logowaniu.



Protokół z współdzielonym kluczem
W protokole tym użytkownik i system współdzielą tajny klucz szyfrowania K.
Opis protokołu:

  1. użytkownik przesyła do systemu swój identyfikator,

  2. system generuje losową liczbę r i przesyła ją użytkownikowi

  3. użytkownik szyfruje r przy użyciu klucza K i szyfrogram wysyła do systemu,

  4. system szyfruje liczbę r przy użyciu klucza K i porównuje z wynikiem otrzymanym od użytkownika, w przypadku uzyskania pozytywnego wyniku zezwala na pracę w ramach przyznanych mu wcześniej uprawnień.


Protokoły identyfikacji z kluczem tajnym
Wykorzystują funkcje skrótu z kluczem. Wyróżniamy tu protokoły SKID2 i SKID3, obydwa pracują przy założeniu, że użytkownicy A i B korzystają wspólnie z tego samego klucza tajnego K.
Protokół SKID2 - użytkownik B może udowodnić użytkownikowi A swoją tożsamość.

Opis protokołu:

  1. użytkownik A wybiera liczbę losową rA i wysyła ją użytkownikowi B,

  2. użytkownik B wybiera liczbę losową rB i wysyła ją do użytkownika A wraz z danymi:

rb, HK(rA, rB, B),

  1. użytkownik A oblicza HK(rA, rB, B) i porównuje wynik z wartością otrzymaną od B, jeśli wartości są identyczne, to użytkownik A ma pewność, że komunikuje się z użytkownikiem B.


Protokół SKID3 umożliwia obustronne uwierzytelnienie pomiędzy użytkownikami A i B.

Opis protokołu:

  1. użytkownik A wybiera liczbę losową rA i wysyła ją użytkownikowi B,

  2. użytkownik B wybiera liczbę losową rB i wysyła ją do użytkownika A wraz z danymi:

rb, HK(rA, rB, B),

  1. użytkownik A oblicza HK(rA, rB, B) i porównuje wynik z wartością otrzymaną od B, jeśli wartości są identyczne, to użytkownik A ma pewność, że komunikuje się z użytkownikiem B, i wysyła do niego wartość

HK(rB, A),

  1. użytkownik B oblicza HK(rB, A) i porównuje wynik z wartością otrzymaną od A, jeśli wartości są identyczne, użytkownik B ma pewność, że komunikuje się z A.



IDENTYFIKACJA UŻYTKOWNIKA W KRYPTOGRAFII Z KLUCZEM JAWNYM


Identyfikacja jednokierunkowa
Założenia: w komputerze centralnym znajdują się dane kluczy jawnych każdego użytkownika, natomiast wszyscy użytkownicy mają swoje klucze prywatne.
Opis protokołu:

  1. komputer centralny przesyła użytkownikowi losowy ciąg znaków,

  2. użytkownik szyfruje uzyskany ciąg znaków, używając swojego klucza prywatnego i przesyła wynik do komputera centralnego wraz z informacją dotyczącą swojej tożsamości,

  3. komputer przegląda bazę danych i odszukuje klucz jawny danego użytkownika, deszyfruje wiadomość,

  4. w przypadku zgodności ciągu wysłanego z odszyfrowanym zezwala na pracę w ramach jego uprawnień.

Identyfikacja obustronna w kryptografii z kluczem jawnym ma na celu wzajemną identyfikację sytemu i użytkownika.
Założenia: użytkownik posiada swój klucz prywatny i klucz jawny systemu, z którego zasobów chce korzystać, system posiada swój klucz prywatny oraz klucze jawne wszystkich zarejestrowanych w nim użytkowników.
Opis protokołu:

  1. użytkownik generuje losową liczbę ru i przesyła ją wraz ze swoim identyfikatorem systemowi,

  2. system szyfruje liczbę ru przy użyciu swojego klucza prywatnego i wysyła użytkownikowi szyfrogram wraz z wygenerowaną przez siebie losową liczbą rs,

  3. użytkownik deszyfruje otrzymany szyfrogram przy użyciu klucza publicznego systemu i weryfikuje jego tożsamość (musi otrzymać ru), jeśli tak, to szyfruje rs przy użyciu swojego klucza prywatnego i przesyła systemowi,

  4. system deszyfruje otrzymany szyfrogram przy użyciu klucza publicznego użytkownika i sprawdza, czy otrzymał rs, jeśli tak, to zezwala na pracę użytkownika w ramach jego uprawnień.


Wzajemne uwierzytelnienie z wykorzystaniem protokołu blokującego (dla przykładu między dwoma użytkownikami)
Opis protokołu:

  1. użytkownicy A i B wymieniają klucze jawne,

  2. użytkownik A szyfruje wartość PA (np. swoje hasło) przy użyciu klucza jawnego użytkownika B i wysyła do niego połowę wyniku,

  3. użytkownik B szyfruje swoją wartość PB (np. swoje hasło) przy użyciu klucza jawnego użytkownika A i wysyła do niego połowę wyniku,

  4. użytkownik A po otrzymaniu pierwszej połowy od użytkownika B wysyła do niego drugą połowę zaszyfrowanej wartości PA,

  5. użytkownik B otrzymuje całość szyfrogramu i odszyfrowuje wartość PA, sprawdzając czy jest ona poprawna, po uzyskaniu pozytywnego wyniku wysyła do A swoją drugą połowę zaszyfrowanej wartości PB,

  6. użytkownik A otrzymuje całość szyfrogramu od B i deszyfruje wartość PB, sprawdzając jej poprawność.

1   2   3   4   5   6   7   8   9   10


©snauka.pl 2016
wyślij wiadomość