Spis treści

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:

/posts/figury_chladniego/chladni.svg

(ź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:

  1. 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)
  1. 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).

  2. 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
  3. Wymiana kluczy publicznych. Alicja i Bob wymieniają między sobą klucze A i B przez niezabezpieczony kanał.

  4. 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
  5. 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:

  1. Klient (przeglądarka) inicjuje połączenie.

    • użytkownik otwiera przeglądarkę i wpisuje adres URL, np. https://kamilachyla.com aby wyświetlić zabezpieczoną stronę.
  2. 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
  3. 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)
  4. 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)
  5. 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
  6. 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
  7. 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.

./primes.jpg