Kryptografia na co dzień


Dzisiaj w caluśkiej Equestrii celebrujemy Dzień Bezpiecznego Internetu. Pomyślałem by zrobić jakiś event z tej okazji. Śledźcie tego bloga, bo nadchodzi fala niebezpieczeństw, która nas zaleje i zniszczy. Na szczęście For Glorius Equestria najęła do obrony paru strażników i jednego asasyna.


Kryptografia

W dzisiejszym świecie korzystamy z technologii, o których istnieniu nie zdajemy sobie sprawy. Wydają nam się zbyt oczywiste, często nie zauważamy, zapominamy o nich, nie zawracamy sobie nimi głowy. Gdybym zaczął wam opowiadać o liczbach pierwszych, funkcjach skrótu, kryptografii, z pewnością nie chcielibyście dalej czytać, bo to samo macie w szkole, na blogu powinno być więcej kucyków, a nie matematyki. A gdybym wam powiedział, że wasze komputery korzystają z protokołów kryptograficznych do połączenia z bankiem, też nie chcielibyście słuchać, a może zaciekawiłbym was technologiami, o których istnieniu nie zdawaliście sobie sprawy?

Techniki szyfrowania wiadomości są tak stare, jak pismo. Wraz z rozpowszechnieniem umiejętności czytania zaistniała potrzeba ukrywania wiadomości przed wrogiem, który mógł czytać nasze wiadomości. Zawarte tam informacje, przykładowo o ruchu wojsk, często przesądzały o wyniku wojny. Wróg miał tę przewagę nad nami, że znał naszą strategię, nasze działania, potrzebne mu informacje i był zawsze o krok przed nami. Pierwsi dowódcy musieli się przed nimi bronić, nie mogli dopuścić, żeby przechwycona wiadomość została odczytana przez wroga, bo wtedy zawsze wykorzystywał to przeciwko nam, rozplanowując swoją strategię i przechylając szalę zwycięstwa na swoją stronę. W dniu pierwszych prób ukrywania przekazu powstawała kryptografia. Początkowo były to przestawienia kolejności liter w wiadomości, potem podstawienia liter innymi literami. Wróg nie mógł odczytać naszej wiadomości, ponieważ została zaszyfrowana. Musiał ją rozszyfrować, co zajmowało mu trochę czasu i minimum wysiłku intelektualnego, dzięki temu zyskiwaliśmy na czasie, co często miało decydujący wpływ o wyniku toczonej bitwy. Wraz z rozwojem technik szyfrowania wiadomości oraz technik ich deszyfrowania, powstawały coraz bardziej skomplikowane szyfry. Szyfr Cezara rozwiąże każde dziecko uczące się alfabetu, ale do złamania szyfru enigmy byli potrzebni polscy matematycy: Henryk Zygalski, Marian Rejewski, Jerzy Różycki. Łamanie szyfrów nieprzyjaciela miały decydujący wpływ o wynikach wojen, kryptolodzy byli "groźną bronią", a do pozyskiwania informacji z zaszyfrowanych depeszy wykorzystywali nie siłę, a swój intelekt i to była ich najlepsza broń. 

W dzisiejszym świecie, techniki kryptograficzne wykorzystywane dawniej w wojsku, znalazły zastosowanie w naszym codziennym życiu. Co prawda, nie wysyłamy do siebie maili zaszyfrowanych przy użyciu enigmy, istnieją jednak narzędzia szyfrujące takie jak PGP (ang. Pretty Good Privacy), są one dostępne w Internecie do legalnego pobrania za darmo. W dawnych czasach byłyby świetnym narzędziem do ukrywania przekazu przed wrogiem i nie miałby nad nami takiej przewagi, nie wiedziałby, co się dzieje. 


"Wejdź do banku"

Logując się do jakiejkolwiek strony, przeglądając internet, wykorzystujemy szyfrowaną wersji http, zwaną https. Co oznacza ta literka "s"? Oznacza, że przesyłane przez nas dane są zaszyfrowane. Zapobiega to przechwytywaniu i modyfikacji danych. 

Wyobraźcie sobie sytuację logowania do banku bez https, niemożliwe. Każdy haker przechwyciłby nasze dane i miałby dostęp do naszego konta bankowego, do naszych pieniędzy, do naszego życia. Zwracajcie na to uwagę przy każdym logowaniu. Jak się przed takimi włamywaczami bronić? Dane są szyfrowane. Jest wiele zabezpieczeń wykorzystujące nowoczesne techniki szyfrowania. Dawniej protokoły SSL, obecnie TLS, szyfrowania asymetryczne, certyfikaty klucza publicznego. To wszystko "narzędzia" zabezpieczające nasze dane przed atakiem z zewnątrz. 

RSA


Jednym z pierwszych, a obecnie najpopularniejszym asymetrycznym algorytmem kryptograficznym z kluczem publicznym jest RSA. Został on zaprojektowany w 1977 roku przez trzech ludzi, od których algorytm zawdzięcza swoją nazwę, nazywali się kolejno Ron Rivest, Adi Szamir i Leonard Adleman. Jest to pierwszy algorytm, jaki może być stosowany zarówno do szyfrowania wiadomości, jak i do oznaczania dokumentów podpisem cyfrowym. Stopień bezpieczeństwa opiera się na trudności rozkładu na czynniki pierwsze dużych liczb złożonych. Liczba złożona jest to liczba posiadająca co najmniej jeden naturalny dzielnik różny od jedynki i niej samej np: 9 = 3 * 3, 8 = 2 * 4. Natomiast liczba 7 nie jest liczbą złożoną, a liczbą pierwszą, czyli podzielną przez jedynkę i samą siebie, 7 = 7 * 1. Istnieje nieskończenie wiele liczb pierwszych. A rozkład dużych liczb pierwszych na czynniki jest zadaniem trudnym, co oznacza, że nawet komputer potrzebuje wiele czasu na jego rozwiązanie. Łatwiej jest pomnożyć liczby ze sobą, ale trudniej je rozłożyć na czynniki, czyli sfaktoryzować. Łatwiej w jedną stronę, ale trudniej w drugą, nazywamy to funkcja jednokierunkową. RSA opiera się właśnie o stopień trudności rozkładu dużych liczb pierwszych na czynniki i w tym tkwi cały sekret. Nasze komputery mają zbyt małą moc obliczeniową, a faktoryzacja RSA, czyli szukaniu liczb pierwszych zajmie im... setki, a nawet tysiące lat. Pojawiały się challange polegające na rozkładach liczb złożonych na czynniki pierwsze. Pierwsza udana próba została zakończona 2 grudnia 1999 roku, w ramach konkursu The RSA Factoring Challenge. A największa rozłożona liczba na czynniki pierwsze miała rozmiar 768 bitów. Największym zagrożeniem dla RSA są komputery kwantowe, których moc obliczeniowa jest nieporównywalna do naszych biurkowych laptopów. 


Zasada działania jest bardzo prosta.

Najpierw są generowane dwie duże liczby pierwsze podobnej wielkości, po czym są one ze sobą mnożone. 

n = p * q

Potem jest obliczana wartość funkcji Eulera liczby złożonej, ze wzoru:



Następnie jest wybierana liczba e, przy czym musi to być liczba nieparzysta, niemająca wspólnego dzielnika z φ(n).



W następnym kroku jest obliczona wartość d, gdzie jej różnica z odwrotnością liczby e jest podzielna przez φ(n).

Para liczb n i e jest definiowana jako klucz publiczny, a para liczb n i d jako klucz prywatny.

Klucz publiczny jest wysyłany nadawcy, żeby zaszyfrował swoją wiadomość podzieloną na m bloków nie większych od n.


Otrzymany szyfrogram c jest wysyłany odbiorcy, który odszyfrowuje wiadomość.


Haker nasłuchujący pasmo transmisyjne, przez które przechodzi nasza korespondencja, nie będzie w stanie jej rozszyfrować bez naszego klucza prywatnego (dn), który zachowujemy dla siebie.   

Popularnym programem wykorzystujący algorytm RSA jest wspomniany PGP. Pozwala on na szyfrowanie i deszyfrowanie przesyłanych wiadomości, podpisywanie cyfrowe, weryfikowanie autentyczności nadawcy i zarządzanie kluczami, przy czym nadawca też musi korzystać z PGP. Proces weryfikacji kluczy opiera się o tzw. "sieć zaufania", w której każdy użytkownik jest przekonany o autentyczności zweryfikowanych kluczy posiadacza.

W Internecie można znaleźć wiele darmowych, legalnych do pobrania programów takich jak OpenPGP, czy GnuPG. Wtyczek do popularnych przeglądarek internetowych. Można nawet samemu napisać jakiś kod symulujący działanie algorytmu RSA, są nawet gotowe kody w C++, wystarczy wkleić do dev-cpp. 

Jako ciekawostkę dodam, że algorytm RSA jest najpopularniejszym na świecie używanym algorytmem z kluczem publicznym i najczęściej kopiowane oprogramowanie w historii. Każdy z nas, przeglądając Internet, używa RSA, albo jej wariancji, nawet nie zdając sobie sprawy.

~Wasz kucykowy brat
Assassin Deyras



Na tym poście są linki, które zostały zweryfikowane i zapewniam, że są bezpieczne.

Komentarze

  1. "Największym zagrożeniem dla RSA są komputery kwantowe, których moc obliczeniowa jest nieporównywalna do naszych biurkowych laptopów."

    Aktualnie, wcale nie są. Gdyby tak było, już dawno rozwaliłby nas Skynet.

    OdpowiedzUsuń
    Odpowiedzi
    1. Nawet jeśli obecnie nie są w stanie jeszcze łatwo złamać algorytmu RSA, to wygląda na to, że właśnie jeśli chodzi o zdolność do faktoryzacji te komputery się testuje. Jeszcze kilka lat i możliwe, że trzeba będzie wymyślić coś lepszego (nawet jeśli początkowo będą je posiadać tylko bogate uniwersytety).

      A SI (czy też tak zwany "Skynet") to już swoją drogą. Z dużym prawdopodobieństwem jeszcze w tym stuleciu będziemy w stanie stworzyć maszynę o wiele inteligentniejszą od człowieka i lepiej módlmy się, aby za pierwszym razem się udało to zrobić bez poważnych błędów.

      Usuń
    2. Prawdziwym problem komputerów kwantowych jest kompatybilność i/lub system operacyjny, a raczej jego brak. Dlatego AI testuje się właśnie na komputerach kwantowych, a nie normalnych: że jak coś pójdzie nie tak, to stracimy tylko jeden komputer, a nie od razu całą sieć.

      Usuń
    3. Gdyby super SI naprawdę byłaby super SI, to sama znalazłaby sposób na migrację. Nie ma zmiłuj, z każdej klatki da się potencjalnie uciec, jeśli nie samemu, to z pomocą kogoś innego.

      Usuń
  2. boże... ktoś tu jest ze mną na roku na studiach i ja o czymś nie wiem?

    OdpowiedzUsuń
  3. Ktoś odczyta?
    htptjftkhauynelcbzuhm npxznmemdy

    OdpowiedzUsuń
  4. O k...a ale ściana textu. No nic, czytam...

    OdpowiedzUsuń
  5. Wam to się chyba tematy pokończyły.

    OdpowiedzUsuń
  6. każdy twój post zawierał błędy rzeczowe, czasem spore, a czasem niezauważalne. Kolego, NIE WIADOMO czy istnieje nieskończenie wiele liczb pierwszych bo jeszcze nikt, NIKT nie rozwiązał problemu Riemanna (poczytaj sobie w googlach). Proszę cię, staraj się nie robić takich gaf bo wpędzasz ludzi w błąd mimo dobrych intencji.

    OdpowiedzUsuń

Prześlij komentarz

Tylko pamiętajcie drogie kuce... Miłość, tolerancja i żadnych wojen!

Popularne posty