101030318

Page 1


Zrozumieć kryptografię

Wprowadzenie

W tym rozdziale wprowadzimy w podstawową terminologię oraz koncepcje kryptografii. Wprowadzenie to będzie miało nieformalny charakter i będzie stanowić zarys tak ogólny, jak to tylko możliwe.

Podstawowe koncepcje

Idea systemu szyfrowania polega na tym, by ukryć poufną informację w taki sposób, aby jej znaczenie pozostało niezrozumiałe dla niepowołanych osób. Dwa najpowszechniejsze sposoby wykorzystania systemu szyfrowania to bezpieczne przechowywanie danych w pliku komputerowym oraz ich transmisja poprzez niezabezpieczone kanały takie jak Internet. W obu tych scenariuszach fakt, że dokument jest zaszyfrowany, nie uniemożliwia niepowołanym osobom uzyskania do niego dostępu, ale raczej gwarantuje, że nie będą one mogły zrozumieć tego, co widzą.

Informacja, która ma zostać ukryta, często jest nazywana tekstem jawnym, a operacja ukrywania nazywana jest szyfrowaniem. Zaszyfrowany tekst jawny to szyfrogram lub kryptogram, a zbiór zasad wykorzystanych do zaszyfrowania informacji w postaci tekstu jawnego to algorytm szyfrujący. Działanie tego algorytmu

zależy zwykle od klucza szyfrującego, stanowiącego wraz z wiadomością dane wejściowe algorytmu. Aby odbiorca mógł dotrzeć do wiadomości, musi istnieć algorytm deszyfrujący, który wraz z odpowiednim kluczem deszyfrującym pozwoli odtworzyć tekst jawny na podstawie szyfrogramu.

Ogólnie rzecz biorąc, zbiór zasad składających się na jeden z tych algorytmów kryptograficznych prawdopodobnie będzie bardzo skomplikowany i wymagać będzie starannego zaprojektowania. Dla celów tej książki czytelnik może je jednak uważać za „magiczne formuły”, które za pomocą kluczy przekształcają informacje, nadając im niemożliwą do odczytania postać.

Poniższy rysunek obrazuje wykorzystanie systemu szyfrowania w celu ochrony przesyłanej wiadomości.

Algorytm szyfrujący

Wiadomość

Klucz szyfrujący

NADAWCA

Algorytm deszyfrujący

Kryptogram

Wiadomość

Klucz deszyfrujący

ODBIORCA

Każdy, kto przechwyci wiadomość w trakcie transmisji, nazywany jest przechwytującym. Inni autorzy stosują odmienne terminy, w tym takie jak „podsłuchiwacz”, „wróg”, „przeciwnik” czy nawet „ten zły”. Trzeba jednak przyznać, że od czasu do czasu przechwytujący mogą być „tymi dobrymi” – więcej dowiemy się o nich nieco później. Nawet jeśli znają algorytm deszyfrujący, ogólnie rzecz biorąc, przechwytujący nie znają klucza deszyfrującego. To na tę lukę w ich wiedzy liczą ci, którzy chcą im uniemożliwić poznanie tekstu jawnego. Kryptografia jest dziedziną nauki zajmującą się projektowaniem systemów szyfrowania, podczas gdy kryptoanaliza to nazwa określająca proces dedukowania informacji o tekście jawnym na podstawie szyfrogramu, bez znajomości odpowiedniego

Rozdział 2. zrozumieć kryptografię

klucza. Kryptologia to zbiorczy termin, którym określa się zarówno kryptografię, jak i kryptoanalizę.

To bardzo ważne, by uzmysłowić sobie, że kryptoanaliza może nie być jedynym środkiem, za pomocą którego atakujący może uzyskać dostęp do tekstu jawnego.

Przypuśćmy na przykład, że ktoś przechowuje zaszyfrowane dane na swoim laptopie. Jasne jest, że ten ktoś musi mieć jakiś sposób na odzyskanie klucza deszyfrującego. Jeśli wiąże się to z zapisaniem go na kartce papieru przyklejonej na pokrywie laptopa, wtedy każdy, kto ukradnie laptopa, automatycznie wejdzie w posiadanie klucza deszyfrującego i nie będzie musiał uciekać się do kryptoanalizy. To tylko prosta ilustracja faktu, że zabezpieczenie danych polega na czymś więcej niż użycie dobrego algorytmu szyfrującego. W rzeczywistości, jak wielokrotnie podkreślaliśmy, bezpieczeństwo kluczy jest krytyczne dla bezpieczeństwa systemu kryptograficznego.

W praktyce większość ataków wykorzystujących kryptoanalizę próbuje ustalić klucz deszyfrujący. Jeśli się to powiedzie, wiedza napastnika będzie taka sama, jak wiedza zamierzonego odbiorcy i będzie on w stanie rozszyfrować całość komunikacji tak długo, jak długo klucze pozostaną niezmienione. W niektórych wypadkach napastnikowi może natomiast chodzić jedynie o odczytanie konkretnej wiadomości. Gdy inni autorzy mówią jednak, że jakiś algorytm został złamany, mają zwykle na myśli to, iż w praktyce napastnik znalazł sposób na uzyskanie klucza deszyfrującego4.

Oczywiście napastnicy są w stanie złamać algorytm jedynie, jeśli dysponują wystarczającymi informacjami pozwalającymi na zidentyfikowanie właściwego klucza lub – częściej – zidentyfikowanie

4 W literaturze kryptograficznej algorytm jest uznawany za złamany, jeśli pokazano atak, który zaprzecza założonym przez projektantów właściwościom bezpieczeństwa. Nie musi to być atak praktyczny i nie zawsze chodzi o odzyskanie klucza szyfrującego [przyp. kons. meryt.].

tych niewłaściwych. Ważne, by zdać sobie sprawę z tego, że ta dodatkowa informacja prawdopodobnie jest dla napastników kluczowa.

Przypuśćmy na przykład, że wiedzą, iż tekst jawny jest po angielsku i odszyfrowanie jakiegoś szyfrogramu za pomocą odgadywanego klucza nie daje sensownego angielskojęzycznego tekstu jawnego. W tym wypadku wiadomo, że ten klucz nie może być poprawny.

Ważną kwestią, która po lekturze wprowadzenia powinna być już jasna, jest to, że znajomość klucza użytego do zaszyfrowania nie jest konieczna do odtworzenia wiadomości na bazie kryptogramu. Ta prosta konstatacja stanowi podstawę brzemiennego w skutki artykułu Diffiego i Hellmana. Miał on ogromny wpływ na współczesną kryptologię i zrodził naturalny podział na dwa typy systemów szyfrujących: symetryczne i asymetryczne.

System szyfrowania nazywany jest konwencjonalnym lub symetrycznym, jeśli na bazie klucza szyfrującego łatwo jest wydedukować klucz deszyfrujący. W praktyce w przypadku systemów symetrycznych te dwa klucze są często identyczne. Z tego powodu takie systemy można nazwać systemami z kluczem tajnym lub systemami z jednym kluczem. Jeśli jednak wydedukowanie klucza deszyfrującego na podstawie klucza szyfrującego jest praktycznie niemożliwe, system taki jest nazywany asymetrycznym lub systemem z kluczem publicznym. Pierwszy powód dla rozróżnienia tych dwóch typów systemów powinien być jasny. Jeśli chcemy przeszkodzić przechwytującemu, który zna algorytm, w uzyskaniu tekstu jawnego na podstawie przechwyconego szyfrogramu, niezbędne jest, by klucz deszyfrujący pozostał tajny. W wypadku systemu symetrycznego zmusza to do zachowania tajności również w kwestii klucza szyfrującego. Jeśli jednak system jest asymetryczny, znajomość klucza szyfrującego nie ma żadnego praktycznego znaczenia dla napastnika. W rzeczywistości klucz ten może być publicznie dostępny i zwykle faktycznie taki jest. W konsekwencji nadawca i odbiorca szyfrogramu nie muszą współdzielić żadnych tajemnic. Tak naprawdę nie muszą nawet sobie ufać.

Rozdział 2. zrozumieć kryptografię

Zastosowania kryptografii

Wprowadzenie

Do tej pory zakładaliśmy, że nasze algorytmy kryptograficzne są wykorzystywane w celu zapewnienia poufności. Mają one jednak dużo więcej zastosowań. Zawsze gdy wykorzystujemy kryptografię, ważne jest, byśmy sprawdzali, czy pomaga nam ona osiągnąć nasze zamierzone cele. Oto przykład niewłaściwego wykorzystania kryptografii.

W 1983 roku studio MGM wyprodukowało film zatytułowany Gry wojenne. Stał się on kultową produkcją, która zwróciła uwagę na niebezpieczeństwa związane z hakowaniem. Jedno ze streszczeń opisuje go w następujący sposób: „Los ludzkości spoczywa w rękach nastolatka, który przypadkowo dostaje się do taktycznego komputera Departamentu Obrony”. Otwierająca scena pokazuje nastolatka włamującego się do systemu komputerowego swojego uniwersytetu i zmieniającego oceny swojej dziewczyny10 . W tamtym czasie wiele uniwersytetów przechowywało wyniki egzaminów w bazach danych, do których można było uzyskać zdalny dostęp. Nie powinno zaskakiwać, że fakt zagrożenia wyników nieupoważnionymi manipulacjami pokazanymi w filmie był

10 W rzeczywistości główny bohater filmu był jeszcze uczniem szkoły średniej, a  opisana scena nie otwierała filmu, ale następowała nieco później. Bohater nie musiał też w zasadzie włamywać się do szkolnego komputera, bo udało mu się wcześniej podejrzeć potrzebne hasło [przyp. tłum.].

dla nich źródłem obaw i sprawił, iż chciały prowadzić odpowiednie zabezpieczenia.

Jedna z propozycji polegała na zaszyfrowaniu ocen każdego studenta. Nie przybliżało to jednak do osiągnięcia celu, a zrozumienie dlaczego jest zarówno ważne, jak i interesujące. Łatwo dostrzec, co udaje się osiągnąć dzięki zaszyfrowaniu ocen. W rezultacie nikt, kto włamał się do bazy danych, nie zobaczy stopni żadnego pojedynczego studenta. Zamiast tego włamywacz dostrzeże pozbawione znaczenia dane dołączone do każdego nazwiska. Niestety, niekoniecznie powstrzyma to hakerów przed konstruktywną zmianą stopni. Jeśli haker ma słabe oceny, ale wie, że jakiś konkretny student ma dobre stopnie, zmienił po prostu pozbawione znaczenia dane przy swoim nazwisku w taki sposób, by były identyczne z tymi powiązanymi z nazwiskiem prymusa. Oczywiście jeśli nie zna dokładnie stopni tego drugiego studenta, nie będzie też znać swoich własnych. Wie jednak, że teraz ma oceny pozwalające mu zdać. Nie jest to odpowiedź na wszystkie problemy. Zauważmy również, że w tym konkretnym przykładzie algorytm nie został złamany. Nie został nawet przypuszczony na niego atak. Użytkownik po prostu nie przeanalizował poprawnie problemu.

NazwiskoZaszyfrowane stopnie

Dobry

Zły

13AE57B8

2AB4017E

NazwiskoZaszyfrowane stopnie

Dobry

Zły

ALBO NAWET TAK

13AE57B8

13AE57B8

NazwiskoZaszyfrowane stopnie

Dobry

Zły

2AB4017E

13AE57B8

Rozdział 7. zastosowania kryptografii

Przypuśćmy teraz, że zamiast szyfrować jedynie stopnie, uniwersytety zaszyfrowały całą bazę danych. Czy to pozwoliłoby osiągnąć cel w postaci powstrzymania hakera przed zmianą stopni? W tym wypadku zaszyfrowanie całej bazy danych znaczyłoby, że cały plik byłby niezrozumiały dla hakera. Jednak nawet wówczas mogłoby to nie wystarczyć do zabezpieczenia przed hakerem usiłującym zmienić stopnie. Przypuśćmy na przykład, że każda linia pliku reprezentuje nazwisko oraz stopnie jakiegoś studenta. Gdyby studenci uczestniczący w zajęciach wyświetlali się w porządku alfabetycznym, atak omawiany w poprzednim akapicie nadal byłby możliwy.

Nim skupimy się na tym, jak kryptografia mogłaby zostać wykorzystana w celu ochrony przechowywanej informacji przed zmanipulowaniem, zatrzymajmy się i rozważmy, czy naprawdę jest takie ważne, czy ktoś mógłby zmienić stopnie przechowywane w jakiejś konkretnej bazie danych. Jasne, że stanowi rzecz absolutnie kluczową, by studenci byli nagradzani właściwymi stopniami. Jeśli baza danych, która uległa zmianie, nie jest jedynym dostępnym rejestrem, wtedy student mógłby nie odnieść żadnych korzyści ze zmiany stopni w tym konkretnym rejestrze. Kluczowe wymaganie jest prawdopodobnie takie, że powinien istnieć jakiś mechanizm ostrzegający wszystkich autoryzowanych użytkowników, iż oceny zostały zmienione. Tak więc może być tak, że zapobieżenie zmianom nie jest kluczowe, jeśli tylko zmiany mogą zostać wykryte. Może to znaczyć, że autoryzowani użytkownicy są ostrzegani przed tym, by nie polegać na tej bazie danych i by zawsze odwoływać się do głównego rejestru. W wielu sytuacjach wymagana jest detekcja nieuprawnionych zmian, a nie zapobieganie zmianom.

Osiągnięcia kryptografii są powszechnie wykorzystywane dla zagwarantowania detekcji nieuprawnionych zmian w dokumentach. Tak naprawdę – przynajmniej w wypadku sektora komercyjnego – nie służy ona już głównie do zapewniania poufności. Poza

tradycyjną ochroną prywatności kryptografia wykorzystywana jest, by zagwarantować:

ochronę integralności danych: zapewnić, że informacje nie zostały zmienione w sposób nieuprawniony lub za pomocą nieznanych środków;

umożliwienie uwierzytelnienia: potwierdzenie tożsamości jakiegoś podmiotu;

uwierzytelnienie pochodzenia danych: potwierdzenie źródła informacji;

niezaprzeczalność: zapobieganie zaprzeczeniu (zwykle przez twórcę) treści informacji i/lub jego tożsamości.

Istnieje rzecz jasna sporo standardowych (niekryptograficznych) sposobów ochrony danych przed przypadkowym zniekształceniem, na przykład przez użycie kontroli parzystości lub bardziej wyrafinowanego kodowania korekcyjnego. Jeśli jednak wymagana jest ochrona przed rozmyślną zmianą, wtedy techniki te mogą nie wystarczyć, ponieważ zależą jedynie od informacji dostępnych publicznie. Każdy kto z premedytacją zmieniałby informację, zaszyfrowałby odpowiednio zmienioną wiadomość, tak by zmiana pozostała niewykryta. Dlatego w celu ochrony przed rozmyślną zmianą trzeba posłużyć się pewnymi wartościami znanymi jedynie nadawcy i (być może) odbiorcy, takimi jak klucz kryptograficzny.

Zastosowanie algorytmów symetrycznych dla zapewnienia poufności

Zidentyfikowaliśmy już pewne potencjalne ryzyka związane z bezpieczeństwem, które pojawiają się, gdy szyfr blokowy wykorzystywany jest do zaszyfrowania danych w trybie ECB. Jest na przykład możliwe, że ktoś, kto zna korespondujące bloki tekstu jawnego i szyfrogramu, może zmanipulować bloki szyfrogramu i skonstruować

7. zastosowania kryptografii

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.