Chladni, Germain, Diffie-Hellman i TLS

Figury Chladniego
Co to jest?
Dowiedziałam się właśnie o istnieniu figur Chladniego (artykuł na angielskiej Wikipedii). To niezwykle interesujące zjawisko: figury takie pojawiają się wówczas, gdy fala dźwiękowa wprawia w drgania małe drobinki ciała stałeo rozsypane na większej powierzchi (oto filmilk demonstrujący to zjawisko). Pod wpływem drgań drobinki te układają się w takie interesujące wzory:
(źródło: wikipedia)
Przeprowadzenie eksperymentu
Instrukcję do przeprowadzenia odpowiedniego eksperymentu - gdyby ktoś chciał spróbować i ma w swojej szafie generaror akustyczny - znajduje się tutaj: Figury Chladniego na generatorze akustycznym.
Sophie Germain
Okazało się, że naukowego wyjaśnienia tego, skąd takie figury się biorą, dokonała francuska matematyczka Sophie Germain, której biografia - podobnie jak wiele innych biografii kobiet w nauce - nadaje się na scenariusz niezłego biograficznego filmu… Czy znała się z Marią Curie? Raczej nie. Maria przyjechała do Paryża w 1891, 60 lat po śmierci Germain (1831).
Liczba pierwsza Germain
Co ciekawe, istnieją w teorii liczb takie liczby pierwsze, które na cześć Sophie nazwane zostały liczbami pierwszymi Germain. Są to liczby p, dla których liczba 2p + 1
również jest liczbą pierwszą (np. 23, bo 2*23 + 1 = 47
również jest pierwsza).
Mają one zastosowanie w generatorach liczb pseudolosowych.
Bezpieczna liczba pierwsza
Liczby postaci 2*p + 1
gdzie p t liczba pierwszza Germain) to tzw. bezpieczne liczby pierwsze. Wykorzystuje się je w algorytmine Diffiego-Hellmana (patrz: protokół Diffiego-Hellmana).
Diffie-Hellman
A tak w skrócie, co to jest ten algorytm, a raczej protokół? Ta nazwa pojawia się bardzo często w okolicach bezpieczeństwa, kryptografii oraz komunikacji w przetwarzaniu rozproszonym. Sprawdźmy więc szybko, co to takiego.
To protokół, dzięki ktoremu dwoje uczetników komunikacji może - wykorzystując pewne powszechnie znane informacje oraz używając niezaszyfrowanego kanału komunikacji - ustalić między sobą (a raczej: obliczyć) pewien tajny klucz.
Mogą oni to zrobić bez jawnego przekazywania sobie tego klucza. Klucz taki może być później przez nich użyty do szyfrowania i przesyłania między sobą komunikatów.
Jak działa algorytm Diffiego-Hellmana?
Algorytm składa się z kilku kroków:
- Inicjalizacja. Dwie strony, tradycyjnie: Alice i Bob, publicznie uzgadniają dwie liczby, p oraz q:
- p to pewna duża liczba pierwsza
- g to taka liczba, dla której każda liczba całkowita od 1 do p-1 może być przedstawiona nako pewna potęga liczby g (modulo p); innymi słowy: dla każdej liczby a takiej, że a <=1 <=p-1 istnieje taka liczba całkowita z że g^x = a (mod p)
-
Klucze prywatne. ALicja i Bob wybierają sobie klucze prywatne: Alicja wybiera pewną liczbę a, a Bob - liczbę b. Liczby te są sekretem i nikt o nich nie wie (poza wybierającymi je osobami).
-
Klucze publiczne. Oydwoje obliczają swoje klucze publiczne w oparciu o ustalone wcześniej liczby p i g:
- Alicja oblicza A = g^a mod p
- Bob oblicza B = g^b mod p
-
Wymiana kluczy publicznych. Alicja i Bob wymieniają między sobą klucze A i B przez niezabezpieczony kanał.
-
Obliczenie wspólnego sekretu. Alilcja i Bob używają nawzajem swoich kluczy publicznych oraz swojego klucza prywatnego do obliczenia wspólnego sekretu S:
- Alicja oblicza S = B^a mod p
- Bob oblicza S = A^b mod p
-
Obliczony klucz S jest podstawą do wygenerowania klucza symetrycznego. Może być on uzyty do szyfrowania i odszyfrorywania kolejnych komunikatów między Alicją i Bobem przy użyciu algorytmów szyfrowania kluczem symetrycznym.
Cała trudność tego algorytmu polega na matematycznej trudności tzw. “problemu logarytmu dyskretnego” który dotyczy znalezienia x w równaniu g^x mod p = A (przy znanym g, p i A).
Gdy używane są duże liczby pierwsze (np. liczby Germain), problem ten staje się obliczeniowo trudny. Dzięki tej trudności osoba obserwująca wymianę kluczy przez publiczny kanał (np. internet) nie jest w stanie odgadnąć wartości kluczy prywatnych.
TLS
Powróćmy więc do protokołu TLS - służącego do wymiany komunikatów między klientem (np. przeglądarką) a aplikacją serwerową (np. programem Spring Boot). W tym protokole ustalenie klucza symetrycznego używanego do szyfrowania danych może się odbyć właśnie przy użyciu algorytmu Diffiego-Hellmana:
Zobaczmy teraz, jak przebiega (w uproszczeniu) komunikacja między Alicją i Bo… klientem a serwerem:
-
Klient (przeglądarka) inicjuje połączenie.
- użytkownik otwiera przeglądarkę i wpisuje adres URL, np. https://kamilachyla.com aby wyświetlić zabezpieczoną stronę.
-
Rozpoczęcie protokołu TLS Handshake (czy to się jakoś ładnie tłumaczy na język polski? Uścisk dłoni?):
- przeglądarka wysyła żądanie do serwera aby zainicjować proces TLS
- serwer odpowiada inicjalizując proces TLS
-
Wymiana komunikatów podczas “uścisku dłoni”:
- serwer wysyła swój cyfrowy certyfikat do przeglądarki. Ten certyfikat zawiera klucz publiczny serwera i inne informacje pomagające potwierdzić tożsamość serwera
- przeglądarka weryfikuje autetyczność serwera poprzez sprawdzenie, czy certyfikat jest ważny oraz czy został on wystawiony (podpisany) przez godnego zaufania Certificate Authority (CA)
-
Wymiana kluczy oraz negocjacja zestawu szyfrów. Podczas “uścisku dłoni” klient i serwer:
- negocjują sposób szyfrowania (ustalają algorytmy szyfrowania, sposób autoryzacji oraz algorytm wymiany kluczy)
- dokonują wymiany klucza do szyfrowania symetrycznego (na przykład używając protokołu Diffiego-Hellmana wspomnianego wyżej)
-
Ustanowienie bezpiecznego połączenia.
- kiedy wspólny klucz jest ustalony, klient i serwer przechodzą na szyfrowanie komunkacji przy użyciu tego klucza przez cały czas trwania sesji
- cała komunikacja między przeglądarką i serwerem jest szyfrona i odszyfrowywana przy użyciu tego dzielonego sekretnego klucza
-
Bezpieczny przesył danych
- kiedy bezpieczne połączenie jest ustalone, przeglądara może wystłać żądania HTTPS (GET, POST itd) do serwera
- serwer przetwarza te żądania i wysyła zaszyfrowane odpowiedzi do przeglądarki
-
Koniec komunikacji
- kiedy użytkownik zakończy interakcję z przeglądarką (np. zamknie okno przeglądarki), połącznie zostaje zakończone
- w przypadku połączeń HTTPS/2 albo Keep-Alive, połączenie jest używane wielokrotnie do kolejnych interakcji.
Zakończenie
A tak naprawdę to najpierw czytałam o TLS, póżniej sprawdzałam, czym dokładnie jest algorytm Diffie-Hellmana, odkryłam liczby pierwsze Germain i samą Sophie Germain, a dopiero później trafiłam na zjawisko, które Germain wyjaśniła. Zjawisko, które wydaje się być pewnym wzorem, obrazem, rodzajem dziwnej symetrii.
No i jak zwykle - zachwyciłam się tym, że my - ludzie - wszędzie szukamy wzorów, zachwycamy się regularnościami, próbujemy wyjaśniać i interpretować wszystko, co posiada choćby sugestię symetrii, szukamy prawidłowości w chaosie i entropii istnienia, zawsze chętni do wypowiadania hipotez i gotowi do ich dowodzenia (bądź obalania).
Rysunek na początku tego wpisu to artystyczna wizja figur Chladniego w wykonaniu sztucznej inteligencji. “Chladni figures” to takie małe ludziki. Ciekawe, co narysuje AI gdy poproszę o algorytm Diffiego-Hellmana… Całkiem ładnie. Tylko niezbyt trafnie.