Od czasu powstania Internetu przenieśliśmy do niego ogromną część naszej komunikacji. Ponieważ Internet jako medium komunikacyjne opiera się na milionach komputerów, które obsługują transfer wymienianych przez nas fragmentów informacji, pozostawiamy po drodze ślady komunikacji i nas samych.
Informacje z pojedynczej wymiany mogą nie dostarczać zbyt wielu informacji osobom postronnym - ale ponieważ korzystamy tak intensywnie z Internetu, sama ilość pozostawionych informacji, nawet fragmentarycznych, może i będzie mogła zostać nieuchronnie połączona w celu zidentyfikowania Cię. Ekspozycja danych może również oznaczać ujawnienie Twoich danych osobowych w Internecie.
Zachowanie prywatności w komunikacji jest niezbędne, aby ograniczyć ilość informacji, które pozostawiasz za sobą. Zabezpieczając swoją komunikację, zasadniczo ukrywasz informacje przed publicznie dostępnymi źródłami. Większość sposobów zachowania prywatności w komunikacji opiera się na szyfrowaniu. Szyfrowanie zasadniczo ukrywa Twoją komunikację przed wszystkimi innymi komputerami, przez które ta informacja przechodzi. Algorytm szyfrowania określa stopień bezpieczeństwa szyfrowania, ale ponieważ dane są przetwarzane przez komputery, których nie darzymy zaufaniem (pamiętaj, że każdy może utworzyć węzeł w Internecie), także sposób wymiany kluczy szyfrowania może okazać się słabością.
Krótkie wprowadzenie do kryptografii (cryptography)
Nie musisz rozumieć wszystkich szczegółów szyfrowania, ale przedstawiamy tutaj krótki przewodnik po prostych metodach szyfrowania - te informacje zazwyczaj są interesujące dla wielu osób. W końcu niektóre formy kryptografii są używane od tysięcy lat. Być może pierwszymi ludźmi, którzy stosowali szyfrowanie, byli Egipcjanie, choć proste zastępowanie treści wiadomości w celu ukrycia oryginalnej wiadomości mogło być używane jeszcze wcześniej.
Przypomnij sobie pierwszy rozdział, w którym opisaliśmy triadę CIA. Szyfrowanie jest powszechnym sposobem na zapewnienie, że aspekt Poufności triady został odpowiednio uwzględniony.
Szyfr Cezara
Rzymianie używali szyfrowania dość często. Wiadomo, że Juliusz Cezar używał pewnej formy szyfru podstawieniowego, znanego obecnie jako szyfr Cezara. Szyfr to termin opisujący algorytm używany do szyfrowania i odszyfrowywania danych. Szyfr podstawieniowy to szyfr, w którym jeden znak jest zastępowany przez inny w pewien określony sposób. Na przykład Cezar używał szyfru, w którym każda litera była zapisana w taki sposób, że zastępowała znak literą trzecią od niego w kolejności alfabetycznej, tj. A stawało się D, B było E itd.
Jak widać na rysunku, kluczem do tego "szyfrowania" jest "przesunięcie się o trzy kroki do przodu w alfabecie". Możesz być również w stanie uzyskać tego rodzaju szyfry w zależności od tego, jak tajny system jesteś w stanie zapewnić zamiast klucza. W przykładzie szyfru Cezara kluczem może być cokolwiek i byłbyś/byłabyś w stanie odgadnąć go dość łatwo, po prostu próbując wszystkich kombinacji (brute forcing) lub używając częstotliwości występowania liter w danym języku. Na przykład jeśli litera P jest najczęstszą literą w zakodowanej wiadomości i wiadomo, że język jest angielski, to można się domyślić, że P w tajnej wiadomości jest literą E w jawnej wiadomości tekstowej, ponieważ E jest najczęstszą literą w języku angielskim. Różne odmiany szyfrów podstawieniowych były używane przez co najmniej tysiąc lat, dopóki matematyka nie dostarczyła lepszych sposobów szyfrowania.
Innym znanym szyfrem podstawieniowym, o którym często się wspomina, jest tak zwany "szyfr Kamasutry". Szyfr ten został po raz pierwszy wspomniany w Kamasutrze jako sztuka ukrywania wiadomości, zwłaszcza przez kobiety. Szyfr Kamasutry polegał na dzieleniu alfabetu na dwie części i łączeniu ich w pary. Para liter stanowiłaby substytut w szyfrze, a nie tylko przesunięcie o pewną wartość.
Warto zauważyć, że szyfrowanie nie musi być doskonałe. W przypadku konfliktów takich jak wojna wystarczy upewnić się, że wiadomość nie zostanie odczytana w ciągu kilku minut lub godzin. Jednak w przypadkach, gdy zaszyfrowane dane są poufne i mogą spowodować szkody również później, należy upewnić się, że metoda, której używasz, nie będzie zbyt łatwa do rozszyfrowania.
Szyfr Vigenère'a
W XVI wieku opracowano nowy i lepszy sposób szyfrowania, który chronił przed złamaniem metodą częstotliwościową. Szyfr Vigenère'a wykorzystuje powtarzający się klucz, pokonując proste zastosowanie analizy częstotliwościowej, ponieważ litera P nie pasuje już do E w większości zaszyfrowanych tekstów.
Szyfr Vigenère'a wykorzystuje zmienny klucz, który sprawia, że prosty szyfr podstawieniowy jest bardziej wytrzymały. Klucz ten jest powtarzany w taki sposób, aby obejmował całą długość wiadomości. Długość klucza jest najważniejszą częścią szyfru Vigenère'a, ponieważ przy długości klucza wynoszącej 1 szyfr jest w zasadzie szyfrem Cezara. Spójrzmy na przykład.
Przykład diagramu Vigenère'a. Można zauważyć, że ta wersja szyfru Vigenère'a jest w zasadzie cyklicznie przesuwanym szyfrem Cezara.
Jak wynika z powyższej tabeli, przy użyciu klucza składającego się tylko ze znaku "D" szyfr jest identyczny z szyfrem, którego Cezar używał w swoich wiadomościach. Korzystając z tabeli, spójrz na wiersz D i w kolumnie A znajdziesz literę A zaszyfrowaną jako literę D, tak jak w szyfrze Cezara.
Aby zrozumieć moc szyfru Vigenère'a, przejdźmy przez bardziej kompleksowy przykład z dłuższym kluczem. Używając powyższego diagramu Vigenère'a (zwanego również tablicą Vigenère'a) możemy zaszyfrować wiadomość "CYBERSECURITY" za pomocą klucza "SECRET" w następujący sposób.
Wiadomość: CYBERSECURITY
Klucz: SECRETSECRETS
Zaszyfrowane:
Po pierwsze, musimy znaleźć kolumnę pasującą do litery C w wierszu S tabeli. Korzystając z tabeli stwierdzamy, że uzyskany wynik to litera U. Wstawiamy ją jako pierwszą literę zaszyfrowanego tekstu.
Wiadomość: CYBERSECURITY
Klucz: SECRETSECRETS
Zaszyfrowane: U
Następną literą wiadomości jest Y w wierszu E (druga litera klucza szyfrującego). Wynikiem jest litera C. Dodając to do szyfrogramu otrzymujemy dwie pierwsze litery zaszyfrowanego tekstu (szyfrogramu): UC
Wiadomość: CYBERSECURITY
Klucz: SECRETSECRETS
Zaszyfrowane: UC
Postępując według tego samego schematu, otrzymujemy końcowy zaszyfrowany tekst:
Wiadomość: CYBERSECURITY
Klucz: SECRETSECRETS
Zaszyfrowane: UCDVVLWGWIMMQ
Gratulacje, udało Ci się zaszyfrować swoją pierwszą wiadomość szyfrem Vigenère'a! Szyfr ten był używany z powodzeniem przez około trzy stulecia, dopóki nie odkryto ogólnej metody deszyfrowania. Jak można się domyślić, niektóre wiadomości zostały najprawdopodobniej odszyfrowane wcześniej, ponieważ tajność wiadomości zależy od tajności i jakości klucza.
Sign up to solve exercises
Szyfr Vigenère'a przez długi czas był bezpieczny, jednak w XIX wieku znaleziono i opublikowano jego ogólne słabości. Wykorzystując te metody, szyfr był z reguły łamany niezależnie od użytego klucza. Złamanie szyfru polega na słabych punktach i powtarzaniu klucza w algorytmie, aby poznać długość klucza (lub możliwe długości klucza), a mając te informacje można przeprowadzić operację eliminacji klucza, aby dowiedzieć się, jaki klucz został użyty. Wiele różnych metod może być wykorzystane do odgadnięcia długości klucza z wysokim prawdopodobieństwem.
Forma szyfru Vigenère’a była również używana przez siły konfederatów podczas amerykańskiej wojny secesyjnej. Już wtedy wojska Unii regularnie odszyfrowywały ich wiadomości, ponieważ w szyfrze znaleziono kilka słabych punktów.
Szyfr Vigenère'a wykorzystujący prawdziwie losowy klucz o tej samej długości, co wiadomość tekstowa, jest ogólnie uważany za niemożliwy do złamania i nazywany jest jednorazową podkładką (one-time pad). Jednorazowa podkładka nie posiada słabości związanych z powtarzającym się kluczem. Ponieważ ataki słownikowe nie mają zastosowania do prawdziwie losowych kluczy, tajność wiadomości zależy od klucza, a nie od szyfru. Jednak użycie jednorazowego szyfru jest trudne, ponieważ słabym punktem będzie sposób wymiany klucza między stronami.
Ciekawą interaktywną stroną z wieloma przykładami różnych historycznych funkcji szyfrowania jest The Black Chamber Simona Singha.
Wraz z wynalezieniem inżynierii mechanicznej w dziedzinie szyfrowania pojawiły się nowe i lepsze metody. Powstały maszyny, w których naciśnięcie klawisza powodowało podświetlenie zaszyfrowanej litery. Te pierwsze mechaniczne maszyny szyfrujące rozszerzały również długość słownictwa poprzez dodanie obracających się obok siebie wirników. Gdy jeden wirnik z 26 znakami obracał się od A do Z, drugi przesuwał się o jeden krok dalej, przesłaniając w ten sposób powtarzający się wzór klucza. Pojedynczy wirnik dawałby w ten sposób klucz o długości 26. Dodanie kolejnego poruszającego się wirnika zwiększyłoby liczbę dostępnych pozycji do 26 x 26 = 676. Aby skonfigurować wspólny klucz wystarczy przekazać stan początkowy obu wirników.
Zakładając, że mamy trzy wirniki i początkowe ustawienie dla wszystkich to A, otrzymamy następujące pozycje dla każdego kolejnego naciśnięcia klawisza:
A A A
B A A
C A A
D A A
…
Z A A
A B A
B B A
…
Y Z Z
Z Z Z
A A A
Rzeczywista konfiguracja, okablowanie i sposób działania maszyn jest bardziej skomplikowany niż w przykładzie, ale pokazuje możliwości automatyzacji generowania rzeczywistego klucza szyfrowania na podstawie wstępnej konfiguracji maszyn mechanicznych.
Najbardziej znaną z tych maszyn wirnikowych była Enigma, która była używana na szeroką skalę przez Niemców w czasie II wojny światowej. Maszyny Enigma w czasie wojny używały od trzech do ośmiu wirników. Jednak sposób, w jaki Niemcy używali tych maszyn, pozwolił polskim i brytyjskim kryptologom na wykorzystanie ich słabych punktów do odszyfrowania niemieckich wiadomości.
Więcej informacji na temat prawdopodobnie najbardziej znanej maszyny szyfrującej, jaka kiedykolwiek istniała, można przeczytać na Wikipedii.
Szyfry, które omówiliśmy, są szyframi symetrycznymi, co oznacza, że ten sam klucz, który został użyty do szyfrowania, może być użyty do odszyfrowania. Na przestrzeni lat opracowano metody, które nie wymagają przekazywania tajnego klucza do odbiorcy wiadomości; są one nazywane szyfrowaniem asymetrycznym. W szyfrowaniu asymetrycznym wiadomość zostaje zaszyfrowana za pomocą klucza publicznego, który jest uzyskiwany z tajnego klucza odbiorcy wiadomości. Na przykład jeśli chcesz, aby Twoi koledzy szyfrowali wiadomości do Ciebie, wysyłasz im swój klucz publiczny, a oni używają tego klucza do szyfrowania swoich wiadomości do Ciebie. Po zaszyfrowaniu wiadomości tylko osoba (miejmy nadzieję, że to ty), która posiada twój tajny klucz, może odszyfrować wiadomość. Nazywa się to szyfrowaniem za pomocą klucza publicznego, ponieważ do szyfrowania używany jest klucz publiczny.
Haszowanie w celu udowodnienia integralności
Funkcje haszujące są szeroko stosowane do weryfikacji integralności wiadomości. Jak być może pamiętasz, integralność jest jednym z aspektów triady CIA (Poufność, Integralność i Dostępność). Funkcja haszująca może być używana do weryfikacji integralności w taki sam sposób, w jaki można chronić hasło. Funkcja haszująca może być użyta do obliczenia wartości dla całej treści wiadomości i przesłana wraz z oryginalną wiadomością. Odbiorca hashowanego hasła może następnie zweryfikować, czy wartość skrótu (tzw. "skrót wiadomości") odpowiada obliczonej wartości na końcu odbiorcy. Niektóre szyfrujące funkcje haszujące zawierają w sobie tożsamość, która może być zweryfikowana przez odbiorcę. Funkcje te tworzą coś, co nazywa się kodem uwierzytelniania wiadomości: Message Authentication Code (MAC).
Nowoczesne szyfrowanie
Nowoczesne szyfrowanie zależy od tajności klucza i wykorzystuje znane oraz dobrze zbadane szyfry. Szyfry te mogą być znane, ponieważ ich tajność zależy od klucza, a nie od sposobu jego użycia. Na przykład gdy odwiedzasz swój bank internetowy, Twoja przeglądarka i serwer internetowy banku bezpiecznie wymieniają jednorazowy symetryczny (i długi) tajny klucz, który jest używany do szyfrowania ruchu między przeglądarką a serwerem bankowym. Dodatkowo szyfrowanie klucza publicznego jest zwykle używane do weryfikacji tożsamości drugiej strony. Każda wiadomość jest również weryfikowana za pomocą kodu uwierzytelniania wiadomości, message authentication code (MAC). Ten proces wymiany kluczy, weryfikacji i uwierzytelniania między przeglądarką a serwerem nazywany jest TLS lub transport layer security i dowiemy się o nim więcej w następnym rozdziale. Poprzednie wersje korzystały z nieaktualnej już metody zwanej SSL, secure socket layer.
Kluczowe wnioski z szyfrowania
Tajność twojej wiadomości powinna zawsze zależeć od tajności klucza, a nie od tajności systemu szyfrowania (jest to tzw. zasada Kerckhoffsa).
Zawsze używaj szyfrów, które zostały publicznie sprawdzone i ustanowione jako standard. Używanie "tajnych szyfrów" lub wymyślanie własnych jest złe, ponieważ tak jak w przypadku szyfru Cezara, gdy system stanie znany i zrozumiały wszystkie wiadomości mogą zostać odszyfrowane.