Klucze kryptograficzne
Diagram stanów cyklu życia klucza kryptograficznego
Usługi zarządzania kluczami kryptograficznymi (wg normy ISO/ IEC 11770 -1)
Dystrybucja kluczy
Dystrybucja klucza pomiędzy dwoma bezpośrednio komunikującymi się podmiotami
Dystrybucja kluczy wewnątrz jednej domeny z pomocą Centrum Dystrybucji Kluczy
Działanie:
Podmiot A zwraca się do CDK o klucz;
Wobec braku bezpośredniego połączenia pomiędzy CDK a podmiotem B, dystrybucja następuje kanałami 2 i 3.
Dystrybucja kluczy pomiędzy dwiema domenami
Działanie:
Jeśli w wymianie informacji podmioty stosują technikę asymetryczną i nie mają dostępu do wspólnej usługi oferującej certyfikację kluczy, każdy partner powinien skontaktować się (kanał 1) ze swoim autorytetem, aby uzyskać uwierzytelnienie (certyfikat) partnera. Autorytety A i B wymieniają (kanał 2) certyfikaty publicznych kluczy i przekazują je (kanał 3) do A i B. Wskutek tego Podmioty A i B mogą komunikować się (kanał 4) bezpośrednio w sposób bezpieczny.
Dystrybucja kluczy pomiędzy dwiema domenami z pomocą zaufanego autorytetu zewnętrznego
Protokół Diffiego - Hellmana generowania kluczy
A i B uzgadniają ze sobą dwie duże liczby całkowite g i p, takie, że:
1 < g < p;
p jest liczbą pierwszą;
(p-1)/2 jest liczbą pierwszą;
g jest pierwiastkiem pierwotnym mod p.
Algorytm:
A generuje losowo dużą liczbę całkowitą α i oblicza X = gα mod p, A → B:X;
B generuje losowo dużą liczbę całkowitą β i oblicza X = gβ mod p, B → A:Y;
A oblicza k AB = Yα mod p
B oblicza k BA = Xβ mod p
k AB = k BA= gαβ mod p
Wymiana kluczy kryptograficznych
Protokoły wymiany kluczy stosowane w systemach konwencjonalnych wymagają istnienia serwisu uwierzytelniającego wyposażonego w klucz umożliwiający komunikowanie się z każdym użytkownikiem i vice versa oraz generującego klucze sesyjne dla komunikacji pomiędzy użytkownikami. W przypadku systemów publicznych niezbędne jest istnienie centrum uwierzytelniającego (administratora), któremu przypisany jest znany powszechnie klucz publiczny i które generuje klucze publiczne dla każdego użytkownika. Zarówno serwis uwierzytelniający (w przypadku systemów prywatnych), jak i centrum uwierzytelniające (systemy publiczne), muszą mieć zaufanie wszystkich użytkowników, iż będą czyniły właściwy użytek z posiadanych przez siebie danych. W opisie protokołów będziemy przyjmować, że k UV jest kluczem sesyjnym użytkowników U i V (w szczególności jeden z nich może być serwis uwierzytelniający).
Wymiana w systemach prywatnych
Przedmiotem naszego zainteresowania będzie pięć protokołów: Otway'a - Reesa, Needhama - Schroedera, Cerbera (psa Hadesu), szerokogębnej żaby i Yahaloma.
Protokół Otway'a - Reesa
Zastosowanie protokołu Otway'a - Reesa jest możliwe w systemie konwencjonalnym wówczas, gdy istnieje dwóch użytkowników A i B oraz serwis uwierzytelniający S. Oprócz stałych identyfikatorów A i B tych użytkowników (nie rozróżniamy nazw użytkowników od ich identyfikatorów) wykorzystuje się w nim ich pewne przyjęte jednorazowo identyfikatory IA oraz IB, a ponadto identyfikator jednorazowy I. Serwis S produkuje klucz sesyjny kAB.
WEJŚCIE: Identyfikatory stałe użytkowników A i B, ich identyfikatory jednokrotne IA i IB oraz identyfikator jednokrotny I.
METODA:
WYJŚCIE: klucz sesyjny kAB
Protokół ten jest atrakcyjny ze względu na krótki czas wykonywania. Ponadto nie wymaga się tu stosowania zsynchronizowanych zegarów, jak również można go łatwo zaimplementować programowo.
Protokół Needhama - Schroedera
Przy takich samych założeniach jakie przyjęto w protokole Otway'a - Reesa protokół Needhama - Schroedera wymaga wyłącznie użytkownika A z serwisem uwierzytelniającym S.
WEJŚCIE: Identyfikatory stałe użytkowników A i B oraz ich identyfikatory jednokrotne IA i IB
METODA:
1.
2.
3.
4.
5.
WYJŚCIE: Klucz sesyjny k AB.
Kroki 4 i 5 protokołu służą do upewnienia się czy użytkownik A jest aktualnie dostępny. Przesłanie w ostatnim kroku wartości IB-1 jest umowne. Można by tu użyć dowolnej funkcji przekształcającej identyfikator IB, jeśli tylko B mógł rozróżnić swój identyfikator jednokrotny IB.
Protokół Cerbera (psa Hadesu)
Protokół określany jako pies Hadesu jest oparty na protokole Needhama - Schroedera. W charakterze identyfikatorów używa się datowników TS (identyfikator serwisu S: data i czas), TA (identyfikator użytkownika A: data i czas) oraz parametru L oznaczającego czas ważności protokołu.
WEJŚCIE: Identyfikatory stałe użytkownika A i B, datownik TS serwisu uwierzytelniającego, datownik użytkownika A, czas L ważności protokołu.
METODA:
1.
2.
3.
4.
WYJŚCIE: Klucz sesyjny kAB.
Tak jak w przypadku protokołu Needhama - Schroedera przesłanie w krokach 3 i 4 zaszyfrowanej danej TA i jej modyfikacji jest opcjonalne. Ma to na celu upewnienie użytkownika A, że użytkownik B jest gotowy do odbycia sesji. Głównym założeniem stosowanym przy projektowaniu protokołu Cerbera jest to, że zegary użytkowników są zsynchronizowane z zegarem serwisu uwierzytelniającego. W praktyce efekt synchronizacji uzyskuje się nastawiając zegary z pewną dokładnością i weryfikując odpowiedzi z taką samą dokładnością.
Protokół szerokogębnej żaby
Jest to prawdopodobnie najprostszy protokół realizowany w kryptografii prywatnej. Z jej pomocą przekazuje się klucz od A do B przez serwis uwierzytelniania S w dwu krokach, stosując zsynchronizowane zegary i dopuszczając, aby użytkownik A wybierał klucz sesyjny.
WEJŚCIE: Identyfikatory stałe użytkowników A i B, datowniki TA i TS.
METODA:
1.
2.
WYJŚCIE: Klucz sesyjny kAB.
Protokół Yahaloma
W protokole tym wykorzystuje się jednokrotne identyfikatory transakcji IA i IB przynależne użytkownikom, odpowiednio, A oraz B. Protokół inicjuje, tak jak zawsza, użytkownik chcący nawiązać sesję.
WEJŚCIE: Identyfikatory stałe użytkowników A oraz B, identyfikatory jednokrotne IA i IB.
METODA:
1.
2.
3.
4.
WYJŚCIE: Klucz sesyjny kAB.
Wymiana w systemach publicznych
Pod uwagę zostaną wzięte dwa protokoły wymiany kluczy: Needhama - Schroedera, który został opracowany niezależnie od algorytmu przedstawionego powyżej i CCITT o numerze X.509.
Protokół Needhama - Schroedera
Protokół ten umożliwia dwóm użytkownikom wymienić dwie niezależne tajne liczby. Sytuacja jest taka jak w innych protokołach publicznych. Możliwa jest tutaj wymiana pomiędzy użytkownikami A i B konwencjonalnych kluczy sesyjnych za pośrednictwem centrum uwierzytelniania S. Przyjmiemy, że kA, kB, kS są publicznymi kluczami, odpowiednio, A, B oraz S. Ponadto - kS' jest tajnym kluczem stosowanym przez centrum S oraz, IA, IA są identyfikatorami jednokrotnego stosowania użytkowników, odpowiedni A oraz B.
WEJŚCIE: Identyfikatory stałe A i B, klucze publiczne kA, kB, kS, tajny klucz kS'.
METODA:
1.
2.
3.
4.
5.
6.
7.
WYJŚCIE: Identyfikatory jednokrotne IA i IB użytkowników, odpowiednio A i B.
Protokół składa się z dwóch raczej niezależnych, lecz przenikających się komponentów. Zakłada się, że początkowo A oraz B są w posiadaniu publicznego klucza kS, co umożliwia im uzyskać inne publiczne klucze od S. Osiągnięcie tego celu zapewniają kroki 1, 2, 4 i 5 protokołu. Drugi komponent protokołu - kroki 3, 6, 7 - zapewnia użytkownikom A i B stosowanie otrzymanych kluczy publicznych. Wymieniają oni między sobą tajne identyfikatory IA i IB. Mogą one być stosowane także później do podpisywania wiadomości. Przykładowo, jeżeli A otrzyma wiadomość , może wywnioskować, że B przesłał wiadomość X.
Protokół CCITT X.509)
Projekt CCITT oznaczony symbolem X.509 jest rekomendacją złożoną ze zbioru trzech protokołów. Zaprojektowano je z myślą o wykorzystaniu do bezpiecznej wymiany informacji pomiędzy dwoma użytkownikami zakładając, że każdy z nich zna publiczny klucz drugiego. Wersja najbardziej rozbudowana jest przedstawiona poniżej. Pozostałe dwie uzyskuje się ograniczając protokół do dwu bądź jednego kroku.
WEJŚCIE: Identyfikatory stałe użytkowników A i B, identyfikatory jednokrotne IA i IB, datowniki TA i TB, klucze publiczne kA i kB oraz klucze tajne kA` i kB` użytkowników odpowiednio A i B.
METODA:
1.
2.
3.
WYJŚCIE: Niepodzielne dane XA i XB, tajne dane YA i YB.
W protokole tym wykorzystuje się tajne klucze kA' i kB' użytkowników A i B, ich jednokrotne identyfikatory IA oraz IB, a także datowniki TA i TB. XA, YA, XB i YB są danymi przesyłanymi od odpowiednio A i B. Protokół zapewnia niepodzielność danych XA i XB, upewniające odbiorcę co do ich pochodzenia i gwarantując tajność YA i YB.
Mechanizmy kryptograficzne
1
1