Krótki przewodnik po nowoczesnej kryptografii

Kryptografia stoi za nowoczesną infrastrukturą bezpieczeństwa internetowego, od podpisów cyfrowych i zabezpieczeń warstwy transportowej do blockchainów i Bitcoina.

Krótki przewodnik po nowoczesnej kryptografii

Thinkstock

Wzrasta znaczenie kryptografii w naszym życiu. Za każdym logowaniem do aplikacji lub wysłanym e-mailem tak naprawdę skrywa się pomysłowa infrastruktura kryptograficzna, która w dużej mierze wywodzi się z przełomowych odkryć z lat 70-tych.

Poza programistami, nawet nieprogramujący ogół społeczeństwa może skorzystać na zrozumieniu, jak działa kryptografia, zwłaszcza w dobie kryptowalut i kryptoinwestycji.

Zobacz również:

  • Indywidualna kryptografia na dobre uniemożliwi współdzielenie kont na Netflixie?

Wszyscy używamy kryptografii w naszym codziennym życiu, czy o tym wiemy, czy nie.

Czym jest kryptografia?

Kryptografia to praktyka zabezpieczania komunikacji za pomocą różnych technik, które sprowadzają się do wdrażania protokołów uniemożliwiających niepożądanym stronom przeglądanie lub zmienianie danych.

Dyscyplina kryptografii ma cztery aspekty:

• Poufność: Dane nie są narażone na kontakt z niepowołanymi osobami.

• Integralność: Dane nie są manipulowane ani niszczone.

• Uwierzytelnianie: Strony są w stanie wiarygodnie zweryfikować wzajemną tożsamość.

• Niezaprzeczalność: Komunikacja może być potwierdzona, a nie później zaprzeczona przez uczestników.

Szyfry symetryczne

Przed pojawieniem się komputerów kryptografia opierała się na wykorzystaniu szyfrów. Szyfr to odwzorowanie tekstu czytelnego na bełkot i z powrotem. Na przykład, prosty szyfr polegałby na dodaniu czterech do każdej litery w tekście (więc A staje się E). Odkodowanie polega na odjęciu czterech od każdej litery. Procesy te nazywane są szyfrowaniem i deszyfrowaniem.

Przesunięcie o cztery miejsca w alfabecie jest bardzo oczywiste i nie jest bezpieczne. Bezpieczniejsze jest tworzenie złożonych odwzorowań, które wymagają klucza do translacji. Taki klucz musi być rozprowadzony wśród wszystkich uczestniczących stron. Konieczność ta pociąga za sobą wszelkiego rodzaju słabości logistyczne.

Słynnym przykładem szyfru symetrycznego jest maszyna Enigma używana w czasie II wojny światowej.

Funkcje jednokierunkowe

Wraz z pojawieniem się komputerów i związanym z tym postępem w matematyce, możliwości szyfrowania stały się bardziej złożone. Powstało wiele nowych technik, ale jedną z najbardziej podstawowych jest tak zwana funkcja jednokierunkowa (do której zalicza się również jednokierunkowe hashe, służące do generowania danych wyjściowych o stałej długości). Funkcje jednokierunkowe są uważane za prymityw kryptograficzny. Jak sama nazwa wskazuje, funkcja jednokierunkowa działa tylko w jednym kierunku.

Powszechnym zastosowaniem funkcji jednokierunkowych, i dobrym sposobem na ich zrozumienie, jest haszowanie haseł, gdy są one przechowywane w bazie danych (na przykład w Javie i JavaScript). Hasło jest pobierane z czystego tekstu („puszysty123”), a algorytm jednokierunkowy zamienia je w losowo wyglądający ciąg znaków („XFcbe2d3bh0sa”). Nawet jeśli napastnik uzyska dostęp do bazy danych, hasła są bezpieczne. Nie jest znana metoda (przy użyciu obecnych systemów komputerowych), aby skutecznie odwrócić ten proces.

Ciekawostką jest fakt, że nawet jeśli atakujący mają pełny dostęp do logiki algorytmu (na przykład, tutaj jest źródło dla BCrypt), to generalnie nie są w stanie odwrócić funkcji. To powiedziawszy, jednokierunkowe haszowanie nie jest doskonałe i wprowadzono wiele technik ich łamania (np. tablice Rainbow).

Nowoczesne biblioteki haszujące posiadają możliwość zwiększania trudności haszowania (pozwalając w ten sposób na zwiększenie siły haszowania wraz ze wzrostem mocy obliczeniowej) oraz wprowadzania „soli” do algorytmu, zapewniając w ten sposób unikalne hasze identycznych danych Zgodnie z wytycznymi OWASP - Open Web Application Security Project, „sól” jest wartością generowaną przez kryptograficznie bezpieczną funkcję, która jest dodawana do danych wejściowych funkcji haszujących w celu utworzenia unikalnych haszy dla każdego wejścia, niezależnie od tego, że dane wejściowe nie są unikalne. Tak długo, jak sól jest utrzymywana w tajemnicy, hasła hashowane za jej pomocą są w zasadzie nie do złamania.

Zwięzłe podpowiedzi w zakresie teorii stojącej za jednokierunkowym haszowaniem, znajdziemy chociażby na Stack Overflow.

Funkcje pseudolosowe

Wraz z funkcjami jednokierunkowymi, algorytmy generowania liczb losowych są uważane za kryptograficzne „prymitywy”, czyli podstawowe bloki konstrukcyjne niezbędne do zabezpieczania komunikacji. Dlaczego tak jest? Po prostu, każdy tajny system komunikacji zależy od wartości, które są znane stronie zabezpieczającej, a nieznane na zewnątrz. To zależy od generowania liczb losowych. (Często włącza się w to również dane wejściowe dostarczone przez użytkownika, ale ludzie notorycznie zawodzą w dostarczaniu takich danych).

Większość typów losowego „zasiewu” (jak wyciąganie z zegara systemowego) jest tylko „rodzajem” losowości. Jeśli haker wie, jak generowane są liczby, może opracować ataki na liczby losowe. Pomysłowość cyberprzestępców wydaje się dotrzymywać kroku pomysłowości koderów po jasnej stronie mocy.

Bardziej bezpieczne środki generowania liczb losowych zostały opracowane w celu udaremnienia ataków na liczby losowe. Większość bibliotek kryptograficznych zawiera udogodnienia dla tych generatorów.

Klucze asymetryczne

Być może najbardziej pomysłowym i wpływowym osiągnięciem w nowoczesnej kryptografii jest para kluczy asymetrycznych, zwanych również parami kluczy publiczno-prywatnych. Podstawowa idea polega na tym, że generowane są dwa klucze, jeden do szyfrowania, a drugi do deszyfrowania. Klucz szyfrowania jest bezpieczny do rozpowszechniania, klucz deszyfrowania jest utrzymywany w tajemnicy.

Innowacja ta została zapoczątkowana w późnych latach 70-tych XX w. przez dwóch programistów i matematyka, którzy nadali swoje inicjały: RSA, przełomowemu systemowi kryptograficznemu, który wymyślili. nNa marginesie: podobny system został wynaleziony kilka lat wcześniej przez matematyka z brytyjskiego wywiadu, ale wynalazek ten został utrzymany w tajemnicy, a system uznano wówczas za niepraktyczny ze względu na ograniczenia systemów komputerowych.

RSA i inne systemy klucza asymetrycznego posuwają ideę funkcji jednokierunkowej o duży krok naprzód, tworząc dwa klucze, które działają w sposób asymetryczny: Pierwszy klucz jest używany do tworzenia zaszyfrowanych wiadomości (klucz publiczny), a drugi do ich odszyfrowywania (klucz prywatny) (rys. 1)

Krótki przewodnik po nowoczesnej kryptografii

Rys. 1.

Matematyka kryjąca się za tą sztuczką nie jest prosta. W rzeczywistości, przez pewien czas badacze zaangażowani w projekt mieli poważne wątpliwości, czy jest on w ogóle możliwy w teorii. Obecnie kryptografia z kluczem publiczno-prywatnym stanowi podstawę większości nowoczesnej infrastruktury bezpieczeństwa internetowego, w tym bezpieczeństwa „warstwy transportowej” stosowanej przez SSL/TLS, podpisów cyfrowych i kryptowalut takich jak Bitcoin.

Ważne jest, aby zauważyć, że klucze asymetryczne nie tworzą systemów niemożliwych do złamania. Ale tak długo, jak klucz prywatny jest utrzymywany w tajemnicy, złamanie szyfrowania jest praktycznie niemożliwe. Oprócz licznych prób (w tym ataków na liczby losowe, ataków czasowych i innych), które zostały ujawnione, bezpieczeństwo nawet najbezpieczniejszej pary klucz publiczny-prywatny opiera się na tym, jak długo zajęłoby odwrócenie procesu faktoryzacji danych liczb.

Może się to wydawać niezbyt bezpieczne, ale cytując artykuł Bretta Slatkina na temat matematyki kryptograficznej z kluczem publicznym, „nawet wymyślne rozwiązania na najszybszym komputerze na Ziemi zajęłyby do końca wszechświata”, aby złamać nowoczesne szyfrowanie asymetryczne. Nie licząc wprowadzenia praktycznych obliczeń kwantowych, które uczyniłyby łamanie szyfrowania podobnego do RSA problemem rozwiązywalnym w czasie wielomianowym, nowoczesne algorytmy są uważane za wykonalne dla praktycznych zastosowań.

W obecnych zastosowaniach klucze asymetryczne są często używane jako rodzaj uwierzytelnienia w celu ustanowienia bezpiecznego kanału wymiany kluczy symetrycznych. (Ponieważ klucze symetryczne są w praktyce znacznie szybsze, serwer i klient weryfikują się nawzajem za pomocą kluczy asymetrycznych, a następnie przekazują sobie klucze symetryczne do wykorzystania w dalszej komunikacji. Komunikacja ta jest wtedy bezpieczna przed podsłuchem lub manipulacją nawet na kanałach jawnych.

Infrastruktura klucza publicznego

Innym ważnym zastrzeżeniem kryptografii asymetrycznej jest to, że zazwyczaj wymaga ona zaufanego, scentralizowanego organu. Dzieje się tak dlatego, że problem weryfikacji, czy ktoś jest tym, za kogo się podaje, nie ogranicza się tylko do udowodnienia, że ktoś posiada klucz prywatny (co szyfrowanie asymetryczne potrafi zrobić samo). Zamiast tego, aby zapewnić, że na przykład certyfikat SSL/TLS serwera WWW jest nie tylko technicznie ważny, ale także autentyczny (rzeczywiście reprezentuje organizację, za którą się podaje), należy odwołać się do centralnego organu (na przykład Google).

Stwarza to więcej możliwości dla hakerów, ponieważ każde naruszenie w hierarchii kluczy walidujących naraża na szwank wszystkie klucze znajdujące się poniżej. Mimo że takie naruszenia się zdarzają, duża część Internetu opiera się na tym systemie. System jako całość jest znany jako infrastruktura klucza publicznego (PKI). Zaufana strona, która wydaje certyfikaty to urząd certyfikacji (CA).

Alternatywą dla PKI jest system PGP (pretty good privacy), w którym użytkownicy ufają sobie nawzajem na zasadzie rozproszonego zaufania peer-to-peer, zamiast polegać na scentralizowanym organie (również w tym przypadku klucze asymetryczne są używane do wymiany kluczy symetrycznych). PGP jest powszechnie używany do szyfrowania poczty elektronicznej oraz do sprawdzania, czy pobierane pliki nie zostały naruszone.

Najbardziej zaawansowane zastosowanie kluczy asymetrycznych i kryptografii można znaleźć w systemach blockchain, których przykładem jest Bitcoin. Eliminując potrzebę scentralizowanego organu i przenosząc walidację kryptograficznie podpisanych transakcji do sieci, blockchain otwiera możliwości dla nowych rodzajów systemów zbudowanych na rozproszonej, a jednocześnie bezpiecznej warstwie na szczycie infrastruktury internetowej. Właśnie teraz jesteśmy świadkami ujawniania się tych możliwości.

Blockchainy i zbudowane na nich systemy są podstawowymi strukturami kryptograficznymi. Pary kluczy są wykorzystywane do podpisywania transakcji, a kryptograficzne hasze służą do walidacji ogniw łańcucha.

To była wycieczka po obecnym krajobrazie kryptowalutowym. Mimo że jest to bardzo skomplikowane, zrozumienie tego, jak to wygląda, jest coraz bardziej wartościowe dla nas wszystkich, zarówno programistów, jak i nieprogramistów.

Źródło: Infoworld.com

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200