Windows NT używał protokołu punkt-punkt, w którym klient może „bezpiecznie” komunikować się z serwerem za pomocą szyfru strumieniowego do szyfrowania tablicy wiadomości za pomocą klucza . Serwer również szyfruje swoją odpowiedź za pomocą tego samego klucza . Ale skąd ma świadomość tego klucza?k
Bardziej ogólnie: jeśli Alice i Bob używają algorytmu szyfrowania / deszyfrowania, który działa na tym samym kluczu prywatnym , jaki jest bezpieczny sposób wymiany tego klucza? (bez użycia innego klucza kursu)
Jest to coś, o czym zawsze zadawałem sobie pytanie podczas studiowania kryptografii klucza prywatnego.
cryptography
encryption
codd
źródło
źródło
Odpowiedzi:
Większość algorytmów klucza prywatnego opiera się na niemożliwości niektórych obliczeń, takich jak rozkład liczb na czynniki pierwsze, biorąc pod uwagę obecną infrastrukturę obliczeniową.
Jednocześnie większość z nich jest również intensywna obliczeniowo, gdy jest używana do szyfrowania i deszyfrowania, a zatem cały strumień wiadomości nie jest szyfrowany przy użyciu kluczy prywatnych. Wiadomość jest raczej szyfrowana przy użyciu innego (mniej intensywnego) algorytmu, a klucz użyty do tego szyfrowania jest szyfrowany przy użyciu klucza prywatnego.
Oczywiście, jak zauważyłeś, bezpieczna wymiana kluczy pozostaje kwestią, którą można w pewnym stopniu rozwiązać:
źródło
Ilekroć Alice i Bob chcą uzgodnić ten sam klucz prywatny, najpopularniejszą metodą jest użycie Diffie-Hellman . Działa w następujący sposób:
Dwie wartości publicznych pierwszych wybranych powiedzmy, , a . (Są to zwykle bardzo duże liczby pierwsze i są znane wszystkim używającym tego protokołu).g = 17n=13 g=17
Alice wybiera wartość prywatną a Bob wybiera wartość prywatną . Są prywatne dla siebie.b = 7a=3 b=7
Alice oblicza: a Bob oblicza: , w tym przypadku i i wymieniają się wartościami (mogą być przez czat), tzn. Wszyscy wiedzą wartości i .A=gamodn B=gbmodn A=12 B=4 A B
Alice oblicza: a Bob oblicza: , w tym przypadku .K=Bamodn K=Abmodn K=12
Teraz zarówno Alice, jak i Bob uzgodnili wartość jako swój klucz. Należy zauważyć, że ponieważ wartość a i bardzo dużych liczb pierwszych jest to prawie niemożliwe, aby eavesdropper je na czynniki i obliczyć sam klucz.K n g
Problemem w kryptografii klucza prywatnego jest atak typu man-the-the-middle i jest to jeden z głównych powodów wyboru kryptografii klucza publicznego zamiast kryptografii klucza prywatnego.
źródło
Po pierwsze, kwestia terminologii: to, co opisujesz, to szyfrowanie symetryczne , a klucz współdzielony przez uczestników jest zwykle znany jako klucz tajny; „Klucz prywatny” zazwyczaj oznacza tę część klucza w kryptografii klucza publicznego, którą zna tylko jeden uczestnik.
Istnieją dwa sposoby rozpowszechniania tajnego klucza: można go przetransportować w jakiś fizycznie bezpieczny sposób lub można go przetransportować przy użyciu innej formy szyfrowania, zwykle kryptografii klucza publicznego.
Istnieją sposoby wymiany tajnego klucza, które nie wymagają tajnego kanału komunikacji. Najpopularniejszy jest protokół wymiany kluczy Diffie-Hellmana. Zasada Diffie-Hellmana polega na tym, że każdy uczestnik generuje własną parę kluczy, a operacja matematyczna konstruuje dużą liczbę z jednego klucza publicznego i jednego klucza prywatnego. Ta operacja matematyczna ma bardzo interesującą właściwość: dużą liczbę można zbudować z klucza prywatnego Alicji i klucza publicznego Boba lub z klucza prywatnego Boba i klucza publicznego Alicji; i tak otrzymujesz ten sam numer. Więc Alice i Bob wymieniają swoje klucze publiczne, a obie strony znają dużą liczbę, którą można następnie wykorzystać jako tajny klucz. Podsłuchujący może znaleźć oba klucze publiczne, ale niemożliwe jest znalezienie dużej liczby z samych kluczy publicznych.
Wymiana kluczy Diffie-Hellmana pozwala dwóm stronom na wymianę tajemnicy, bez względu na to, kto nasłuchuje. Jednak nie uwierzytelnia Alicji z Bobem i odwrotnie. Dlatego jest podatny na atak człowieka w środku : Mallory dokonuje wymiany klucza z Alice (która uważa, że rozmawia z Bobem) i oddzielnie z Bobem (który wierzy, że rozmawia z Alice), a zatem może zdecydować lub najmniej znam sekret.
Gdy atakujący może przechwytywać i wstrzykiwać wiadomości, potrzeba więcej kryptografii, aby uczestnicy mogli się uwierzytelnić. (Pasywny atakujący skutecznie oznacza, że bazowy protokół transportowy zapewnia uwierzytelnianie.) Każdy uczestnik może łatwo poznać swój klucz publiczny. Jeśli Alice zna klucz publiczny Boba:
Istnieje wiele wariantów, które wykorzystują jedną z tych metod (lub jeszcze inny wariant) w jednym kierunku i tę samą lub inną metodę w drugim kierunku lub które uwierzytelniają się tylko w jednym kierunku. Na przykład SSL / TLS (warstwa kryptograficzna dla wielu protokołów, takich jak HTTPS, SMTPS, IMAPS itp.) Może używać kilku różnych kombinacji szyfrów i zwykle uwierzytelnia serwer na kliencie, ale opcjonalnie może również uwierzytelniać klienta. Diffie-Hellman jest powolny i uciążliwy dla tej aplikacji; najszerszym algorytmem z dystrybucją klucza publicznego jest RSA .
Oczywiście Alice i Bob mogą nie znać wcześniej swojego klucza publicznego. Zamiast tego polegają na łańcuchu zaufania: Bob wysyła Alice swój klucz publiczny wraz z podpisanym oświadczeniem strony trzeciej, które potwierdza, że ten klucz jest tak naprawdę kluczem publicznym Boba. To podpisane oświadczenie nazywa się certyfikatem, a trzecią stroną jest urząd certyfikacji . Strona trzecia może być znana Bobowi lub jej tożsamość może zostać potwierdzona przez stronę czwartą i tak dalej. W końcu ten łańcuch zaufania (… kupony za Dominique kupony za Charliego, który kupuje za Boba) musi dotrzeć do partii Rona, któremu Bob już ufa, co oznacza, że Bob ma klucz publiczny Rona i ufa Ronowi, że podpisuje tylko ważne certyfikaty.
Istnieją protokoły, które nie opierają się na kryptografii klucza publicznego. W szczególności protokół Kerberos jest używany zarówno w sieciach opartych na systemie Unix, jak i Windows, w celu ustanowienia połączeń między klientem a serwerem. Kerberos korzysta z centralnego serwera uwierzytelniania zwanego centrum dystrybucji kluczy (KDC). KDC musi mieć hasło użytkownika przechowywane w bazie danych, a klient zwykle pyta użytkownika o hasło. Aby uniknąć ujawnienia hasła, protokół nie używa hasła bezpośrednio, ale hasłem kryptograficznym lub, bardziej ogólnie , funkcją uzyskiwania klucza .
Dzięki temu wspólnemu kluczowi tajnemu klient i KDC ustanawiają bezpieczny kanał, a KDC wysyła klientowi „bilet”. Bilet zawiera klucz sesji (tj. Nowo wygenerowany tajny klucz), a także kopię klucza, który jest zaszyfrowany innym kluczem symetrycznym współdzielonym między centrum dystrybucji kluczy i serwerem, z którym klient chce się skontaktować. Klient przesyła następnie zaszyfrowaną kopię na serwer. Serwer odszyfrowuje tę wiadomość, aby uzyskać klucz sesji, i generuje kod, który szyfruje za pomocą klucza sesji i odsyła do klienta. Następnie klient inicjuje bezpieczny serwer z serwerem, zaszyfrowany kluczem sesji, i zaczyna od pokazania, że może odszyfrować kod jednorazowy: uwierzytelnia to klienta na serwerze. Ustanowienie sesji Kerberos jest wariantem protokołu Needham-Schroeder .
¹ W tym sensie, że kryptografowie bardzo się starali, ale najlepszy sposób, jaki znaleźli, wymaga niewiarygodnej mocy obliczeniowej.
źródło
Możliwym sposobem jest najpierw użycie kryptografii klucza publicznego do wymiany klucza prywatnego. Jednak gdy nie jest to możliwe, istnieją pewne protokoły wymiany kluczy, prawdopodobnie najbardziej znanym jest protokół Diffie-Hellman .
źródło
Zawsze istnieje trywialne rozwiązanie: użytkownicy spotykają się i wymieniają klucze. W wielu przypadkach nie jest to zbyt praktyczne, ale możliwe.
Oprócz protokołu wymiany kluczy Diffie-Hellmana (DH) istnieją również protokoły dystrybucji klucza kwantowego . Jednym z najbardziej znanych protokołów QKD jest protokół Bennett-Brassard, BB84 .
Przewagą BB84 nad DH jest to, że DH jest bezpieczny tylko wtedy, gdy logarytm dyskretny nie może być skutecznie wykonany (patrz założenie logarytmu dyskretnego , a także powiązane założenie DDH ). BB84 jest jednak teoretycznie bezpieczny. To znaczy, nawet jeśli , BB84 nadal byłby bezpieczny (ale DH nie).P=NP
Z drugiej strony, atak MITM jest również problemem dla BB84, i należy założyć, że użytkownicy używają uwierzytelnionego kanału, aby rozwiązać ten problem (ale zwykle wymaga to uprzedniego udostępnienia klucza uwierzytelniającego, a my wracamy do pierwszego).
źródło