Kryptologia - praktycznie [2005]

dygresje.info | Turystyka | Priv

Kryptologia - praktycznie

UWAGA! tekst ten musi zostać uaktualniony - jako taki powstał w sierpniu 2005, więc część dotycząca teorii, historia, definicje itd mogą zostać napisane lepiej, dokładniej, obszerniej. Ale przykłady zastosowań są z definicji passé. Opisy architektury, wzmianki o statusie prawnym mogą być lub są nieaktualne. Tą cześć usunąłem, ale gdzieś mogły pozostać jakieś "dobre rady", więc - po prostu nie zwracaj na to uwagi. OK?

Zaktualizuję, kiedy/jeśli będę miał czas.

TREŚĆ

  1. Kryptologia - wstęp
  2. Kryptoanaliza
  3. Steganografia
  4. Historia kryptologii
  5. Zastosowanie kryptografii asymetrycznej
  6. PGP (Pretty Good Privacy) i OpenPGP
  7. GPG (GNU Privacy Guard)
  8. Podpis cyfrowy
  9. Dodatek
    1. Słownik pojęć
    2. Algorytmy
    3. Ataki
    4. Biografie
  10. Materiały
    1. Książki

Wstęp

  • Autor nie ponosi odpowiedzialności za jakiekolwiek problemy wynikłe z zastosowania podanych tu informacji.
  • Niniejszy tekst ma charakter wylącznie edukacyjny.
  • Wszelkie prawa zastrzeżone.

Dokument ten powstał pierwotnie jako poradnik szyfrowania PGP (w praktyce: GPG) do prywatnego użytku na konkretnych przykładach, takich jak tworzenie i zarządzanie kluczami oraz zastosowaniu w kliencie poczty (Thunderbird) i IM (Jabber/Psi). Przy okazji chciałem wyjaśnić kilka innych rzeczy, no i tak wyszło...
W tej chwili jest nieco chaotyczny, jest tu trochę niezręczności, chaosu i prawdopodobnie błędów, będzie rozwijany w miarę potrzeb.
Wiem, że pisanie "wszystkie prawa zastrzeżone" odnośnie tekstu, który w dużej cześci składa się z cytatów (w tym z tekstów opublikowanych na otwartej licencji) nie jest fair, ale jest to tymczasowe. Obiecuję, że najpóźniej do wersji 1.0 wszystko co pożyczyłem od społeczności oddam, w najlepszej formie jaką będę mógł zrobić. Nie chcę publikować na otwartej licencji tekstu niepełnego, w którym prawdopodobnie są błędy.
Myślę, że rzucając się na taki temat padłem ofiarą entuzjazmu, no ale taka jest kryptografia: just for fun.

Fragment wywiadu z Michałem Zalewskim:

Pytanie:
HTTP does not use crypto, while HTTPS does. Do you think that in the future we'll use crypto for every single connection?

Odpowiedź:
Well, because of the shortcomings of TCP (and the increasing ease of blindly tampering with the data as bandwidth increases and new attacks are discussed), almost all communications, even nominally of little relevance, should be either encrypted or cryptographically tamper-proofed by now.
Unfortunately, this is a complex and costly process, and implementing advanced cryptography may introduce new flaws elsewhere. Furthermore, unless carefully engineered, it may remain susceptible to disruptions on underlying layers, replay attacks, etc. Last but not least, end users simply don't understand encryption and PKI, and hence can be easily tricked to ignore or bypass our sophisticated protections.
In other words, "perfect world" solutions may be not really that desirable or easy to implement, and we might have to stick with simpler short-term options and strategies for now.

Kryptologia - wstęp

Podstawowe pojęcia

Kryptografia to dziedzina wiedzy poświęcona metodom utajniania informacji. Dokonuje się to poprzez zmianę jej postaci - z otwartej, czytelnej i dostępnej dla wszystkich w niezrozumiałą, którą można odczytać tylko posiadając dodatkowe dane (które w założeniu są dostępne tylko dla docelowego odbiorcy).
Celem tej zmiany jest ukrycie danych przed dostępem osób niepowołanych. W zaszyfrowanej postaci mogą być bezpiecznie przechowywane i transmitowane.

Proces ukrywania informacji w celu uczynienia jej nieczytelnej bez specjalnej wiedzy to szyfrowanie - zamienia jawną postać (tekst jawny) w nieczytelną (szyfrogram, kryptogram). Odwrotny proces, odtwarzania jawnej postaci z szyfrogramu to deszyfrowanie).
W języku angielskim: encription, enciphering vs. decryption, deciphering.

Jawna (oryginalna, pierwotna) postać informacji przed zaszyfrowaniem to tekst jawny a tajna, po zaszyfrowaniu to szyfrogram. Za wyjątkiem szyfrów jednostronnych szyfrogram powinien zawierać wszystkie informacje z jawnego tekstu ale w postaci nieodróżnialnej od szumu.
Marian Rejewski uzywał w swoich pracach okresleń kler na tekst jawny i krypt na tekst tajny.
Po angielsku: plaintext vs. ciphertext, cyphertext, cryptogram.

Metoda użyta do tej zamiany to oczywiście szyfr, czyli procedura (algorytm) takiego przekształcania wiadomości, żeby (szyfrowanie) była ona niemożliwa, lub bardzo trudna do odczytania przez każdego, kto nie posiada odpowiedniego klucza oraz znajomości tego algorytmu, oraz (odszyfrowanie) umożliwiała odtworzenie piewotnej postaci informacji z szyfrogramu.
Po angielsku: cipher, cypher, encipherment

Kryptosystem to zestaw opisanych przez protokoły kryptograficzne szczegółów działania systemu, zawierający szyfry (algorytmy kryptograficzne), zarządzanie kluczami i sposób postępowania użytkownika i inne procedury, a także całą dokumentację, materiały treningowe. W całości tworzy kompletne narzędzie, z którym ma do czynienia końcowy użytkownik.
Jednym z najpopularniejszych obecnie kryptosystemów jest PGP.

Najczęściej szyfr używa dodatkowych parametrów, które zawiera tzw. klucz. Te parametry ostatecznie, w unikalny dla danego klucza sposób określają sposób przetworzenia danych. Bez klucza szyfr nie może zostać użyty ani do szyfrowania, ani do rozszyfrowania.
Zwykle będziemy mieli do czynienia z sytuacją, kiedy szyfr (czyli sam algorytm przekształcenia) jest jawny i opublikowany, natomiast unikalny klucz deszyfrujący jest tajny.

Szukaniem słabości rozwiązań kryptograficznych zajmuje się kryptoanaliza.
Sztuka łamania tych zabezpieczeń to kryptoanaliza. Obie czasem są gupowane razem jako kryptologia, chociaż w praktyce również i kryptografia jest używana w tym znaczeniu, nieformalny skrót "krypto".

Kryptologia jest ogólniejszym pojęciem i dzieli się na:

  • kryptografia - ochrona danych przez szyfrowanie
  • kryptoanaliza - badanie słabości kryptografii
  • steganografia - ochrona tajnych danych przez ukrycie ich isnienia
  • analiza ruchu (traffic analysis) - zajmuje się wzorcami komunikacji w celu odczytania tajnych danych.

Kryptologia jest interdyscyplinarnym przedmiotem łączącym wiele dziedzin. Przed komputeryzacją była ściśle związana z lingwistyką, ale obecnie jest to głównie matematyka, szczególnie tzw. matematyka dyskretna: teoria liczb, teoria informacji, złożoność obliczeniowa (computational complexity[?]), statystyka i kombinatoryka.

Wynalezienie kryptografii asymetrycznej (1976) umożliwiło nowe zastosowania. Obecnie metody kryptograficzne są stosowane nie tylko do utajnienia informacji - cztery najważniejsze zastosowania:

  • poufność (tajność) - tylko autoryzowany odbiorca jest w stanie odczytać wiadomość z szyfrogamu, również niemożliwe jest uzyskanie żadnej znaczącej informacji o treści szyfrogramu
  • integralność - odbiorca może stwierdzić czy wiadomość nie została naruszona/zmieniona w czasie transmisji
  • uwierzytelnienie - odbiorca jest w stanie potwierdzić tożsamość nadawcy i zweryfikować czy to domniemany nadawca rzeczywiście wysłał wiadomość
  • niezaprzeczalność (ang. non-repudiation) - nadawca nie będzie w stanie zaprzeczyć, że wysłał wiadomość (niezaprzeczalność nadania), odebrał (niezaprzeczalność odbioru) itd...

Zwykle używa się kilku na raz, np. w podpisie elektronicznym czy tworzeniu bezpiecznych kanałów komunikacji.

Znaczenie kryptografii w internecie wynika z samej natury przesyłanych nim informacji, które w łatwy sposób mogą być powielane, fałszowane tym bardziej, że nie są dostępne żadne zabezpieczenia natury fizycznej, a zapewnienie wiarygodności i poufności danych wciąż rośnie, wraz z rozwojem komercyjnej roli sieci.

Konwencja: Alice i Bob

W pracach kryptograficznych przyjęło się stosować pewną konwencję opisu sytuacji, dzięki której nie trzeba stosować trudnych do zrozumienia sformułowań w rodzaju "osoba A chce wysłać wiadomość do osoby B".
Uczestnicy komunikacji to najczęściej Alicja i Bob. Przykład z Alice i Bob przyjął się ze względu na podobieństwo (Alice to 'osoba A', Bob to 'osoba B') i wygodę; natępne postacie biorące udział w komunikacji dobierane są według zasady: kolejna litera alfabetu/zmiana płci; czyli po Alice i Bob będzie Carol, Dave... (Schneier sugeruje, że nazwy tych postaci wzięte zostały z filmu "Bob & Carol & Ted & Alice", IMDB).

Najważniejsze:

  • Alicja i Bob - Alicja zazwyczaj chce wysłać wiadomość do Boba
  • Carol, Dave... - ewentualni następni uczestnicy komunikacji
  • Eve - podsłuchiwacz (ang. eavesdropper); pasywny napastnik, może podsłuchiwać wiadomości pomiędzy Alice i Bobem, ale nie może ich modyfikować
  • Mallory (czasem Mallet; prawdopodobnie od malefactor) - aktywny napastnik, w przeciwieństwie do Eve, Mallory może modyfikować wiadomości, zamieniać swoimi, jeszcze raz wysyłać stare itp.; stanowi dużo większy problem niż Eve
  • Trent - (trusted Trent) zaufany rozjemca/arbitrator, neutralna trzecia strona, której rola różni się zależnie od kontekstu

Inne:

  • Isaac - ISP
  • Ivan - wystawca (ang. an issuer); w kryptografii finansowej
  • Justin - prawnik (z ang. the justice system)
  • Matilda - handlowiec; w kryptografii finansowej
  • Peggy (czasem Pat, Vanna - asystent z Koła Fortuny - lub Victor [$]) - osoba sprawdzająca (imię na P: ang. a prover) lub weryfikująca (imię na V: ang. a verifier), często musi zareagować w jakiś sposób by pokazać, że zamierzona transakcja rzeczywiście miała miejsce; postacie czesto spotykane w tzw. dowodach bez przekazywania informacji (ang. zero-knowledge proofs)
  • Plod - oficer policji (czasem urzędnik celny lub pracownik wywiadu)
  • Oscar - przeciwnik, zwykle odpowiednik Mallory'ego
  • Trudy - napastnik, bardziej niebezpieczny niż Eve, ponieważ może modyfikować wiadomości w czasie transmisji; Alice i Bob powinni być w stanie wykryć taką modyfikację i zignorować ją lub odzyskać oryginalną wiadomość pomimo zniekształceń, jeśli nie mogą tego zrobić Trudy może spowodować poważne szkody
  • Walter - strażnik (z ang. warden), może być czasem potrzebny do ochrony Alice i Boba
  • Arthur i Merlin - w IPS (Interactive_proof_system), osoba sprawdzająca (ang. prover) ma nieograniczoną moc obliczeniową i stąd nawiązanie do Merlina potęznego czarownika, orzeka on o prawdzie stanowiska/twierdzenia, a Arthur, mądry król, zadaje mu pytania. Te dwie postacie zapoczątkowały dwie bardziej złożone klasy, nazwane MA i AM (Arthur-Merlin_protocol).

Rodzaje szyfrów

Klasyfikacja

Używane dawniej szyfry określane są jako klasyczne i ze względu na postęp technologiczny są całkowicie odmienne od współczesnych. Wszystkie z dzisiejszego punktu widzenia są proste i łatwe do złamania. W XX wieku weszły w użycie trochę bardziej skomplikowane maszyny walcowe, ale wspołczesna kryptografia zaczyna się dopiero po WWII wraz z pracami Shannona i użyciem komputerów.

  • klasyczne:
    • zastąpienie (substitution)
    • przestawienie (transposition)
  • maszyny walcowe (rotor machines)
  • współczesne:
    • symetryczne (DES i AES)
      • blokowe
      • strumieniowe
    • asymetryczne
    • jednostronne

Osobnym szyfrem w swojej klasie jest one time pad (OTP).

Szyfr symetryczny

Używa tego samego klucza do szyfrowania i odszyfrowania treści (lub dokładniej: klucz deszyfrujący jest łatwy do odtworzenia z klucza szyfrującego). Jego zalety to prostota i szybkość.
Słabą stroną tej metody jest konieczność przesłania klucza - umożliwiającego dostęp do zawartości - od nadawcy do odbiorcy. Klucz musiał byc ich wspólną tajemnicą.
Od utrzymania klucza w sekrecie i jego bezpiecznej i niezakłóconej dystrybucji zależało sprawne funkcjonowanie systemu. Zapewnienie sprawnego funkcjonowania kanału dystrybucji było zawsze trudnym zadaniem szczególnie jeśli ilość uczestników komunikacji rosła ponad pewną niewielką liczbę a klucze musiały być zmieniane w małych odcinkach czasu.
Inne określenia: szyfr klucza prywatnego/jednego/pojedynczego (private-key, one-key, single-key)

Schemat:


tekst jawny >--[klucz tajny]--> szyfrogram >--[klucz tajny]--> tekst jawny

Założenia:

  • klucz jest znany tylko nadawcy i odbiorcy
  • istnieje bezpieczna - poza normalnym trybem komunikacji - droga wymiany kluczy

Szyfry symetryczne dzieli się na dwa rodzaje:

blokowe (DES, IDEA, AES)
Procedury, które w jednym przejściu operują na blokach znaków zwykle o określonej wielkości, szyfrując niewielkie bloki danych - współcześnie jest to najczęściej 128 bitów (AES), choć do niedawna przeważały 64-bitowe bloki (DES, 3DES, Blowfish, IDEA).
Klucze są znacznie mniejsze, mają zwykle od 128 do 256 bitów, przy czym wartości mniejsze od 80 (DES - 56) są uważane za niewystarczające. Typowy szyfr blokowy składa się z kilkunastu dość prostych rund przekształcających blok. Operacje używane w tych szyfrach są zwykle proste, ale są mocno zróżnicowane, np. używa się dodawania, XOR, przesunięć cyklicznych, różnego typu S-BOX-ów, mnożenia modulo liczb pierwszych itd. Już kilka rund takich operacji zupełnie zaburza jakikolwiek porządek i jest bardzo trudne do analizowania.
Ponieważ szyfr blokowy szyfruje jedynie niewielką ilość informacji, używane są różne tryby szyfrowania, które umożliwiają szyfrowanie większych wiadomości.
Niektóre z trybów szyfrów blokowych - CFB, OFB, CTR - działają jako szyfry strumieniowe, generując strumień szyfrujący i XOR-ując dane.
Zależnie od trybu działania mogą być zaimplementowane jako samosynchronizujące się szyfry strumieniowe (tryb CFB)
strumieniowe (RC4)
Szyfry strumieniowe szyfrują każdy znak tekstu jawnego osobno, generując znak strumienia szyfrującego i przekształcając go na przykład z użyciem funkcji XOR go ze znakiem danych, w związku z czym nie jest konieczne oczekiwanie na cały blok danych, jak w przypadku szyfrów blokowych.
Przekształcają ciągły strumień znaków szyfrując znak po znaku.
Popularne szyfry strumieniowe to A5/1 i A5/2 stosowane w telefonii komórkowej. Do szyfrów strumieniowych należą też historyczne szyfry polialfabetyczne i monoalfabetyczne.
Mogą również być zastosowane do przetwarzania pojedynczych bloków jawnego tekstu na raz.

Jak widać jest to dość ogólny podział, raczej określający domyślny tryb pracy.

Szyfr asymetryczny

W przeciwieństwie do szfrów symetrycznych używa się innych kluczy do szyfrowania, a innych do odszyfrowania. W najczęściej spotykanych zastosowaniach jest to para razem generowanych i powiązanych ze sobą matematycznie kluczy: jeden szyfruje, a drugi odszyfrowuje informacje - klucz, którym zaszyfrowano daną wiadomość nie umożliwia odczytania szyfrogramu, konieczny jest klucz drugi z pary.
Dzięki temu, treść zaszyfrowana jednym z tych kluczy może zostać rozszyfrowana tylko drugim z nich - nie ma więc potrzeby przesyłania tajnych kluczy - po prostu nadawca szyfruje wiadomość kluczem publicznym odbiorcy i tak zaszyfrowana wiadomość nie może zostać odszyfrowana żadnym innym jak tylko kluczem prywatnym odbiorcy, który - takie jest założenie - jest w jego wyłącznym posiadaniu.

Schemat:


tekst jawny >--[klucz publiczny]--> szyfrogram >--[klucz prywatny]--> tekst jawny

Założenia:

  • zaszyfrowaną kluczem publicznym informację można odszyfrować tylko kluczem prywatnym (a nie publicznym) i odwrotnie: jeśli do zaszyfrowania użyje się klucza prywatnego tylko używając klucza publicznego (a nie prywatnego) będzie można odszyfrować informację
  • z klucza publicznego nie da się wyprowadzić klucza prywatnego (lub jest to trudniejsze niż atak brute force) i na odwrót: znajomość klucza prywatnego nie pozwala odtworzyć klucza publicznego (z tym samym zastrzeżeniem)
  • jeden z kluczy (domyślnie: prywatny) jest w wyłącznej dyspozycji właściciela, dla większego bezpieczeństwa chroniony jest hasłem; drugi klucz (domyślnie: publiczny) jest dostępny dla wszystkich chcących wysyłać do właściciela kluczy zaszyfrowane informacje

Szyfry asymetryczne opierają się na istnieniu pewnych trudnych do odwrócenia problemów matematycznych. Np. o wiele łatwiej jest pomnożyć przez siebie dwie duże liczby, niż rozłożyć dużą liczbę na czynniki (opiera się na tym system RSA). Jednak ta trudność faktoryzacji wynika z braku znajomości odpowiedniej metody, nie zostało udowodnione, że jest to rzeczywiście trudne.
Drugim popularnym systemem jest ElGamal, opierający się na trudności logarytmu dyskretnego.
Typowe rozmiary kluczy są rzędu 1024-2048 bitów dla np. RSA lub ok 512 bitów dla kryptografii na krzywych eliptycznych. W przypadku RSA złamane zostały klucze rozmiarów do ok. 500 bitów.

Kryptografia asymetryczna umożliwiła mechanizmy cyfrowych podpisów, dzięki którym można zapewnić z dużą pewnością (przy założeniu, że odpowiedni prywatny klucz nie został w żaden sposób "skompromitowany"), że wiadomość została wysłana przez nadawcę, który się pod nią podpisał. Właściwie użyte mechanizmy pozwalają uzyskać stopień pewności porównywalny lub większy niż podpis fizyczny. Przykładami protokołów podpisów cyfrowych są DSA i ElGamal.
Podpisy cyfrowe używane są głównie w PKI i mechanizmach bezpieczeństwa sieci.

Ze względu na wydajność najczęściej stosowane są metody hybrydowe. Samej kryptografii asymetrycznej używa się do utworzenia i wymiany kluczy symetrycznych, używanych do szyfrowania samej komunikacji w czasie danej sesji. Podobnie w podpisie cyfrowym - podpisywana jest nie sama wiadomość ale jej skrót.

Kryptografia krzywej eliptycznej może przełamać ten schemat. Uważa się jednak, że nie jest dość przetestowana.

Szyfr jednostronny

Szyfr nieodwracalnie zamieniający tekst jawny w szyfrogram, odzyskanie jawnego tekstu z szyfrogramu jest niemożliwe. Musi być wydajny i deterministyczy.
Wbrew pozorom bardzo pożyteczny i znajdujący wiele zastosowań, najczęściej spotykany w fukcjach haszujących, które tworzą skrót (tzw. hasz).
najczęściej używany w uwierzytelnianiu i przy sprawdzaniu integralności danych.
Popularne: MD5 i SHA-1.

Schemat:


tekst jawny >--[funkcja haszująca]--> szyfrogram

Założenia:

  • z dowolnej długości ciągu znaków tworzy zawsze tej samej długości hasz - nazywany też skrótem wiadomości (message digest) lub cyfrowym odciskiem palca (digital fingerprint)
  • chociaż jest łatwy do wyliczenia nie da się wykonać odwrotnej operacji, czyli mając skrót nie można odtworzyć informacji
  • każda informacja daje ten sam skrót unikalny tylko dla niej, czyli nie da się (lub jest to nieopłacalnie trudne) odnaleźć dwóch informacji dających identyczny skrót - taka sytuacja kiedy dwie wiadomości mają ten sam skrót (czyli tzw. kolizja) dyskwalifikuje szyfr, w praktyce oczywiście chodzi o łatwość znalezienia kolizji
  • nawet odnalezienie dwóch informacji dajacych podobne skróty nie powinno być wykonalne, atakujący nie może się dowiedzieć ze skrótu niczego; inaczej mówiąc najmniejsza nawet zmiana tekstu jawnego powinna dać zupełnie odmienny skrót

Jeśli atakujący odtworzyłby pierwotną wiadomość lub mógł odnaleźć taką o identycznym skrócie, byłby w stanie zastępować autoryzowane wiadomości swoimi.

MAC (Message Authentication Code) - podobny ale używa klucza do wyliczenia skrótu; jak sama nazwa wskazuje są najczęściej używane do uwierzytelnienia wiadomości; często są złożone z elementów takich jak szyfry blokowe, strumieniowe lub funkcje haszy bez klucza.
Z wiadomości i tajnego klucza generuje znacznik MAC (tzw. "MAC tag") taki, że trudne dla atakującego jest utworzenie poprawnej pary wiadomość-znacznik różnej od poprzednich [?]; używane są m.in. do ochrony przed fałszowaniem wiadomości.
Ma inne właściwości niż zwykły hasz, np. nie jest uważane za słabość, że jeśli ktoś znając klucz MAC może utworzyć dwie różne wiadomości o tym samym MAC.

CRC (Checksums and Cyclic redundancy checks) są całkiem różne od funkcji haszujących i używane są do innych zastosowań, jeśli są użyte do bezpieczeństwa są podatne na atak. Np. CRC był używany do integralności danych w WEP, ale został odkryty atak, który wykorzystywał linearność sumy kontrolnej.

Nie ma formalnych definicji które uchwyciłyby wszystkie pożądane właściwości funkcji haszujących; podstawowe:

  • Preimage resistant (jednostronny[?] - powiązany ale trochę inny): dla danego h powinno być trudne znalezienie takiego m, że h = hash(m).
  • Second preimage resistant: dla danego m1, powinno być trudne znaleźć m2 (inne niż m1) takie, że hasz(m1) = hasz(m2).
  • Collision-resistant: powinno być trudne znaleźć dwie różne wiadomości m1 i m2 takie, że hash(m1) = hash(m2). Z powodu paradoksu urodzin funkcja haszująca musi mieć większy obraz niż jest wymagany dla preimage-resistance.

Funkcja haszująca spełniając te kryteria nadal może mieć niepożadane właściwości, np. większość popularnych funkcji jest podatna na atak zwiększonej długości (length-extension attack): dla danego h(m) i len(m) ale nie m, przez wybranie odpowiedniego m' atakujący może wyliczyć h(m || m') gdzie || oznacza konkatenację, co może złamać prostsze mechanizmy uwierzytelnienia używające funkcji haszujących. Ten problem rozwiązuje HMAC.

Idealna funkcja haszująca powinna być maksymalnie "nudna": nie powinna mieć żadnych interesujących właściwości takich jak długość rozszerzenia (length extension) i jedyną różnicą od funkcji przypadkowej powinno być to, że jest deterministyczna i łatwa do wyliczenia. To kryterium jest trudne do formalnego wyrażenia. Najbliższy mu jest model przypadkowej wyroczni (random oracle model) - jest on idealizacją jakiej nie może zrealizować żadna prawdziwa funkcja haszująca.

Zastosowania funkcji haszujących.

  • mechanizm zaangażowania (commitment scheme): Alice tworzy skrót rozwiązania (np. problemu, zadania) i przesyła go Bobowi, jeśli Bob wpadnie na nie póżniej będzie mógł potwierdzić, że Alice była pierwsza.
  • integralność danych (message integrity): ciągła kontrola jak Tripwire lub przed i po transmisji
  • wiarygodna identyfikacja pliku, weryfikacja hasła: przykładem jest sytuacja kiedy hasła zwykle są przechowywane w postaci skrótów, wpisywane hasło jest przeliczane na skrót i oba skróty są porównywane; zabezpiecza to przed sytuacją kiedy baza danych z wzorcami haseł zostanie przejęta przez napastnika, jeśli były przechowywane w postaci jawnego tekstu natychmiast narażone są wszystkie konta, jeśli były to skróty sytuacja jest o wiele lepsza
  • ze względu na wydajność większość algorytmów podpisu cyfrowego polega na tym, że to skrót wiadomości jest podpisywany
  • tworzenie pseudoprzypadkowych bitów
  • skróty są też używane do identyfikacji plików np. w sieciach P2P; w ed2k używa się nazwy i wielkości pliku zapewniając dostateczną ilość danych do zlokalizowania, pobrania i weryfikacji zawartości pliku.

W 2005 najpopularniejsze algorytmy skrótów to SHA-1, MD5, RIPEMD-160.
W sierpniu 2004 znaleziono słabości w m.in. MD5, SHA-0 i RIPEMD. To poddaje pod znak zapytania długoterminowe bezpieczeństwo innych algorytmów, które z nich powstały: SHA-1, RIPEND-128, RIPEMD-160. Ani SHA-0 ani RIPEMD nie zostały szerzej zastosowane zanim nie zastąpiono je silniejszymi wersjami.
W styczniu 2005 zgłoszono atak na SHA-1.

Funkcja haszująca musi być w stanie przetworzyć dowolnej długości wiadomość w skrót o ustalonej długości, jest to osiągane przez dzielenie wejścia na jednakowej długości bloki i ich sekwencyjne przetwarzanie przy użyciu kompresji, ostatni przetwarzany blok zawiera również długość całej wiadomości. Jest to kluczowe dla bezpieczeństwa całego rozwiązania, znanego jako struktura Merkle-Damgard, używanje w najpowszechniejszych funkcjach (SHA-1, MD5).


            [message ]   [message ]           [message ]
            [block 1 ]   [block 2 ]           [block n ]
                |           |                      |
                V           V                      V

|_ IV _|  -> |_ f _|  -> |_ f _|  ...   ...  -> |_ f _|  ->   |_ Hasz _|

Funkcja kompresji - f - przetwarza stałej długości wejście w wyjście tego samego rozmiaru. Algorytm startuje z wartością początkową, wektorem inicjalizacji (initialisation vector - IV). Dla każdego następnego bloku wiadomości, kompresja bierze poprzedni rezultat, łączy go z blokiem i wylicza rezultat pośredni. Bity reprezentujące długość całej wiadomości są dołączone do wiadomości jako część ostatniego bloku. Wartość ostatniego bloku jest skrótem całej wiadomości.
Popularność tego rozwiązania wynika z faktu, że Merkle i Damgard dowiedli, że funkcja kompresji jest odporna na kolizję (collision-resistant), a funkcja mieszająca przejmuję tą właściwość. Niestety ta konstrukcja ma również kilka niepożądanych właściwości/słabości:

  • ataki na rozszerzenie długości (length-extension attacks) zawsze są możliwe
  • second-preimage attacks przeciwko długim wiadomościom są zawsze dużo bardziej wydajne niż BF

Lista kryptograficznych funkcji haszujących (niektóre z nich są znane jako niebezpieczne): HAVAL, MD2, MD4, MD5, N-Hash, RIPEMD-160, SHA (seria funkcji rozwijana przez NSA: SHA znany jest także jako SHA-0, SHA-1 i cztery smaki funkcji znanej jako SHA-2.), Snefru, Tiger, Whirlpool

Kodowanie nie jest szyfrowaniem: szyfr vs kod

Kody są metodą klasycznej kryptografii. Zastępują większe jednostki tekstu, najczęściej słowa lub wyrażenia (np. jabłecznik - atak o świcie), a szyfry modyfikują pojedyncze znaki. Tajna informacja w kodach to książka kodowa, która zawiera listę zamienników.

Kod jest metodą utajniania informacji przy użyciu książki kodowej z listą powszechnie używanych wyrażeń i słów powiązanych ze słowem kodowym, zakodowane wiadomości to codetekst (tekst zakodowany).
Długo uważano kody za bezpieczniejsze od szyfrów ponieważ, jeśli twórcy książki kodowej dobrze wywiązali się ze swojego zadania, nie było wzorca transformacji, który mógłby być odkryty, ale z pojawieniem się automatycznego przetwarzania danych - komputerów - szyfry zdominowały kryptografię.

W potocznym rozumieniu (tajny) kod jest tym samym co szyfr, jednakże są to dwie zupełnie odmienne rzeczy.
Kody pracują na poziomie znaczenia, tzn. słowa lub frazy są konwertowane w coś innego - natomiast szyfry pracują na niższym poziomie: pojedynczych liter, znaków, małych grup liter lub współcześnie na pojedynczych bitach. Niektóre systemy używają zarówno kodu i szyfru (superszyfrowanie) dla zwiększenia bezpieczeństwa.
Kody mają własną terminologię analogiczną do szyfrów (encoding, codetext, decoding). Współcześnie są przestarzałe, wszystkie są podatne na kryptoanalizę, a korzystanie z książki kodów jest trudne i niewygodne.
Z tych powodów kody przestały być używane w kryptografii.

Kody jedno i dwu częściowe:
Książki kodowe - słowniki słów kodowych wyliczonych z ich odpowiednim jawnym tekstem, orginalnie kody miały słowa kodowe wyliczone w "porządku jawnego tekstu" np. w kodzie używającym liczbowych kodów jawny tekst zaczynający się od "a" miałby niskiej wartości grupę a zaczynający się od "z" wysokiej wartości - ta sama książka kodowa była używana do kodowania i dekodowania.
Ale ten mechanizm był podatny na złamanie bo cechował się pewną przewidywalnością, dzięki której można było zauważyć wzór i ujawnić jawny tekst lub jego część.
Żeby utrudnić takie działanie twórcy kodów wprowadzili brak powiązań pomiędzy słowami kodowymi a porządkiem pasującego tekstu, co oznaczało, że są potrzebne dwie książki kodowe: jedna [jawny tekst -> kod] a druga [kod -> jawny tekst], było to trudniejsze w realizacji i zapewnieniu bezpieczeństwa, ale też cięższe do złamania.

Kryptonaliza kodów
Złamanie prostego szyfru monoalfabetycznego jest łatwe, a nawet prosty kod jest trudny, rozszyfrowanie zakodowanej wiadomości przypomina tłumaczenie dokumentu z obcego języka z jednoczesnym tworzeniem słownika.
Ważną wskazówką może być to, że niektóre słowa pojawiają się częsciej niż inne. Pomaga to określić strukturę wiadomości w zdaniach jeśli nie w znaczeniu. Dalszy postęp w kryptoanalizie może zostać dokonany poprzez zbieranie wielu wiadomości zaszyfrowanych tym samym kodem i użyciu informacji z innych źródeł: szpiegów, gazet, rozmów na przyjęciach dyplomatycznych, miejsca lub czasu wysyłania wiadomości, adresata (analiza ruchu), wydarzeń mających miejsce przed i po wysłaniu wiadomości, zwykłego zachowania się ludzi wysyłających zakodowane wiadomości, itd.
Np. jeśli jakieś słowo kodowe znajduje się tylko w informacjach z konkretnej armii może oznaczać dowódcę. Słowo kodowe pojawiające się w wiadomościach o ataku na określone miejsce może oznaczać to miejsce.
Oczywiście można także użyć cribs i takie metody jak plant i sow[?], np. dokonując rajdu o określonym czasie i miejscu a potem analizując wiadomości.
Oczywiście można to zastosować i do szyfrów.
Najbardziej oczywistym i w zasadzie ostatnim najprostszym sposobem złamania kodu jest kradzież książki kodowej przez łapówkę, kradzież lub wypad - procedura gloryfikowana czasem jako "praktyczna kryptologia" i jest to słabość zarówno kodów jak i szyfrów, chociaż książki kodowe są generalnie większe i dłużej używane niż klucze szyfrów. Chociaż dobra książka kodowa jest trudniejsza do złamania niż szyfr, napisanie jej i dystrybucji jest bardzo kłopotliwa.
Konstruowanie nowego kodu jest jak pisanie nowego języka, jeśli zostanie złamany musi zostać napisany od nowa. W praktyce jeśli zostanie już rozpowszechniony jest ciągle modyfikowany, żeby utrudnić złamanie.
W miarę dystrybucji książki kodowej rosły szanse na jej przechwycenie, jeśli używały jej całe armie utrzymanie w tajemnicy było trudne.
Dla kontrastu: bezpieczeństwo szyfrów jest oparte na kluczu, jeśli zostanie ukradziony lub zdradzony dużo łatwiej go zmienić i rozprowadzić.

Superszyfrowanie (superencipherment)
Dość częste jest szyfrowanie zakodowanych wiadomości dla zapewnienia większego bezpieczeństwa, łatwo można to zrobić jeśli jest to kod numeryczny.
Dobry kod kompresuje wiadomość i zapewnia pewnego rodzaju automatyczną korektę błedów.

Książka kodowa
W kryptografii jest to dokument implementujący kod, zawiera tabelę kodowania i dekodowania, każde słowo, lub wyrażenie ma jeden lub więcej ciągów do zamiany., żeby można było rozszyfrować wiadomość zapisaną w kodzie identyczna kopia książki kodowej musi być na drugim końcu łączności. Dystrybucja i zapewnienie bezpieczeństwa jest szczególnie trudne w porównaniu z szyframi.
W dokumentach NSA czasem "codebook" = 'block cipher'; oraz "combiner-type algorithm" = 'stream cipher'.

Klucz

Klucz (ang. key) - w kryptografii informacja umożliwiająca wykonywanie pewnej czynności kryptograficznej - szyfrowania, deszyfrowania, podpisywania, weryfikacji podpisu itp.

Część informacji, która kontroluje działanie algorytmu kryptograficznego. W szyfrowaniu klucz jest parametrem określającym konkretną transformację jawnego tekstu w szyfrogram, a w deszyfrowaniu na odwrót. Klucze są także używane w innych kryptograficznych algorytmach np. cyfrowych podpisach i MAC. Można o nich myśleć jak o swego rodzaju argumentach funkcji.
Dla dobrze zaprojektowanego algorytmu szyfrowanie tego samego tekstu z innym kluczem powinno spowodować powstanie całkowicie odmiennego szyfrogramu i podobnie odszyfrowanie przy pomocy nieprawidłowego klucza powinno wygenerować szum. Jeśli klucz deszyfrujący jest utracony zaszyfrowane dane powinne pozostać nie do odzyskania, przynajmniej dla dobrej jakości algorytmów i dostatecznie dużej wielkości kluczy.

Kryptografia symetryczna
W kryptografii symetrycznej klucz służy do szyfrowania i deszyfrowania wiadomości. Do obu tych czynności używa się tego samego klucza, dlatego powinien być znany tylko uczestnikom komunikacji. Taki klucz jest przypisany do danej komunikacji, nie do posiadacza, dlatego zwykle do każdego połączenia jest generowany nowy klucz. Może do tego służyć np. (oparty na kryptografii asymetrycznej) protokół Diffiego-Hellmana.

Kryptografia asymetryczna
W kryptosystemach asymetrycznych wyróżniamy klucz publiczny oraz prywatny. Ten pierwszy może być zupełnie jawny, drugi powiniem znać tylko właściciel. Matematyczna konstrukcja kluczy powinna być taka, żeby wygenerowanie prywatnego na podstawie publicznego było jak najtrudniejsze obliczeniowo. Zależnie od kryptosystemu, wygenerowanie klucza publicznego na podstawie prywatnego również może być trudne (RSA), lub trywialne (ElGamal).
Dwie najważniejsze funkcje kryptografii asymetrycznej to:

  • szyfrowanie - wtedy klucz publiczny służy do szyfrowania, a prywatny do deszyfrowania
  • podpisy cyfrowe - klucz prywatny służy do generacji podpisów, klucz publiczny do ich weryfikacji

Klucze asymetryczne są zwykle przypisane do uczestnika (osoby, programu itp.), nie do kanału komunikacji.
Dwa najpopularniejsze systemy kryptografii asymetrycznej to RSA i ElGamal. Inne to m.in. DSA i ECC.

Tajemnica
Projektując systemy bezpieczeństwa mądrze jest założyć, że szczegóły algorytmu są już znane atakującemu, zasadą znaną jako prawo Kerckhoffsa - "only secrecy of the key provides security", lub "the enemy knows the system". Historia kryptografi wielokrotnie dowiodła, że trudno jest utrzymać w tajemnicy szczegóły szeroko używanego algorytmu. Klucz jest dużo łatwiejszy do ochrony (jest to zwykle niewielka ilość danych) niż algorytm szyfrowania i łatwiejszy do zmiany jeśli zostanie przechwycony, tak więc bezpieczeństwo jest majczęsciej zależne od utrzymania w tajemnicy klucza.
I to zadanie (key management) jest jednym z najtrudniejszych problemów w praktycznej kryptografii, atakujący który przechwyci klucz (ukradnie, wymusi, znajdzie w śmieciach, zastosuje socjotechnikę lub znajdzie na karteczce Post-it) może odzyskać orginalne dane z szyfrogramu.

Rozmiar klucza
Dla OTP klucz musi być przynajmniej tak samo długi jak wiadomość. W innych systemach wiadomość może być dużo dłuższa niż klucz, który jednak musi być dość długi by atakujący nie mógł wypróbować wszystkich możliwych kombinacji.
Dla algorytmu symetrycznego minimum to 80 bitów a 128 uważany jest za bardzo silny.
W kryptografii asymetrycznej klucze mają pewną matematyczną strukturę, np. w RSA jest produktem dwóch liczb pierwszych. Wymagają większej długości klucza niż systemy symetryczne dla zapewnienia takiego samego stopnia bezpieczeństwa. Sugerowana długość klucza dla systemów bazujących na faktoringu to 3072 bity co daje porównywalną siłę z 128 bitowym kluczem symetrycznym.
Kryptografia krzywej eliptycznej może pozwolić na zmiejszenie tej wielkości, ale te algorytmy są znane krótko i obecne oceny trudności wyszukania takiego klucza mogą się zmienić. Ostatnio wiadomość zaszyfrowana 109-bitowym kluczem krzywej aliptycznej została złamana BF, obecna reguła kciuka nakazuje ECC klucz 2x długi jak klucz symetryczny dla tego samego stopnia bezpieczeństwa.
Poza przypadkowym OTP bezpieczeństwo tych systemów nie zostało dowiedzione matematycznie, więc przełom matematyczny może zamienić wszystko co jest zaszyfrowane w otwartą książkę. Jest to jeszcze jeden powód do wybierania dłuższych kluczy.

Wybór klucza
Żeby ochronić przed odgadnięciem klucza, klucze muszą być generowane przypadkowo i zawierać dostateczną entropię. Generowanie bezpiecznych kluczy jest dużym problemem.
RFC 1750, Randomness Recommendations for Security.
Czasem używa się rozwiązań które pobierają entropię z otoczenia, z takich nieprzewidywalnych operacji jak ruch głowicy HDD, do wygenerowania mniejszych kluczy zwykła kostka może zapewnić dostateczne źródło przypadkowości.
Dobrze zaprojektowane kryptosystemy najpierw używają KDA, który dodaje soli i zmniejsza lub zwiększa to do pożądanej długości klucza, np. zmniejszając długą frazę hasła do 128 bitowej wartości właściwej do użycia w szyfrze blokowym.

Szyfr klasyczny

Kryptografia ma długą i barwną historię od szyfru Cezara do XXI w. Są dwie główne zasady w kryptografii klasycznej, pierwszą jest przestawienie, czyli zmiana pozycji liter w wiadomości jak w tym przykładzie:


    jawny tekst: THE PANEL IN THE WALL MOVES
    zaszyfrowany: EHT LENAP NI EHT LLAW SEVOM
  

lub w bardziej złożonym przestawieniu:


    THEPAN
    ELINTH
    EWALLM
    OVESAA

weźmy kolumny:


    TEEO HLMV EIAE PNLS ATLA NHMA

dodatkowe litery są nazwane wypełniaczami spacji. Ideą przestawienia nie jest przypadkowość, ale zamiana tego w coś, co jest rozpoznawalne przy użyciu odwracalnego algorytmu (algorytm jest tylko procedurą odwracalną więc korespondent może czytać wiadomości).

Drugą zasadą jest zastąpienie, znaku, słowa lub nawet całego zdania. Slang jest taką formą szyfru. W czasie WWII Navaho CodeTalkers, język Navaho był prawie nieznany i wtedy niespisanym językiem, więc Japończycy nie mogli go rozszyfrować.
Klasycznym przykładem zastąpienia jest szyfr przesuniętego alfabetu


   alfabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ
     szyfr1: BCDEFGHIJKLMNOPQRSTUVWXYZA
    szyfr2: CDEFGHIJKLMNOPQRSTUVWXYZAB
        itd...

Przykład (używając szyfru2)


jawny tekst: THE PANEL IN THE WALL MOVES
zaszyfrowany: VJG RCPGN KP VJG YCNN OQXGU

Jeśli widzisz go pierwszy raz może wydawać się bezpieczny ale w rzeczywistości taki nie jest. W XVI i XVII wieku był najbezpieczniejszy (głównie dlatego, że było dużo analfabetów), ale w XVIII (X) wieku odkryto sposób na złamanie tego szyfru przy pomocy analizy częstotliwościowej.

analiza częstotliwościowa (Frequency Analysis)
W szyfrze przesuwanego alfabetu lub prostym przypadkowym, każda litera po prostu zastępuje inną. Słabość tego rozwiązania jest w tym, że w każdym języku jedne litery występują częsciej niż inne i po prostu licząc częstość występowania można odkryć wzór zastąpienia.


      zaszyfrowane: VJG TCKP KP URCKP

Załóżmy, że wiemy iż jest to tekst w języku anglielskim. Najpierw spójrz na krótkie słowa z ograniczonym wyborem słów: np. "KP" może być at, by to, in etc. Dokonajmy wyboru i zamieńmy K na I a P na N


      zaszyfrowane: VJG TCIN IN URCIN

Następnie wybierzemy VJG które najprawdopodobniej jest "the"..


      zaszyfrowane: THE TCIN IN URCIN

Jest to dużo łatwiejsze w dłuższych tekstach, tutaj jawnym tekstem jest "THE RAIN IN SPAIN"

Bezpieczniejsze są szyfry używające przestawienia i zastąpienia (transposed substition cipher).
Weźmy powyższe


       Encrypted:VJG RCPGN KP VJG YCNN OQXGU

teraz przestawmy to w spiralę


          VJGRC
          NNOQP
          CAAXG
          YUNGN
          GJVPK

wiadomość zaczyna się w górnym prawym rogu i zawija do środka, znowu AA jest wypełniaczem, teraz weźmy kolumny:


       VNCYG JNAUJ GOANV RQXGP CPGNK

Teraz jest to bardziej odporne na analizę częstotliwościową

Prawo Kerckhoffsa (Kerckhoffs' law)

Auguste Kerckhoffs w XIX wieku wprowadził do kryptografii tzw. prawo Kerckhoffsa (określane również jako założenie, aksjomat lub zasada): "kryptosystem powinien byc bezpieczny nawet jeśli wszystko na jego temat (oprócz klucza) jest publicznie znane".
Przeformułował je później - prawdopodobnie niezależnie - Claude Shannon jako the enemy knows the system (wróg zna system - jest to tzw. maksyma Shannona).
Jest szeroko uznawana w kryptografii w przeciwieństwie do security through obscurity (bezpieczeństwo przez ukrywanie).

Zgodnie z tym większość cywilnej kryptografii używa publicznie znanych algorytmów. Dla kontrastu: szyfry używane do ochrony tajemnic rządowych i wojskowych czasem są trzymane w tajemnicy.
Prawo to jest jedną z sześciu zasad projektowych wyłożonych przez Kerckhoffsa dla szyfrów wojskowych:

  1. System musi być praktycznie - jeśli nie matematycznie - nierozszyfrowywalny (indecipherable).
  2. Nie można wymagać trzymania go w tajemnicy, a poznanie go przez nieprzyjaciela nie może spowodować kłopotów.
  3. Jego klucz musi być przekazywalny (communicable) i zachowywalny (retainable) bez pomocy pisanych zapisków oraz możliwy do zmiany (changeable or modifiable) kiedy zechcą tego korespondenci.
  4. Musi być możliwy do zastosowania (applicable) w korespondencji telegraficznej
  5. Musi być przenośny (portable), a jego używanie nie może wymagać uczestnictwa kilku ludzi
  6. Na koniec, koniecznie, biorąc pod uwagę okoliczności w jakich musi być stosowany, system musi być łatwy w użyciu, nie wymagający ani umysłowego wysiłku, ani znajomości długiej serii reguł, które trzeba przestrzegać.

Bruce Schneier powiązał je z przekonaniem, że wszystkie systemy bezpieczeństwa muszą być projektowane tak by zawodzić z jak najmniejszymi stratami (to fail as gracefully as possible). Zasady Kerckhoffsa stosują się nie tylko do kodów i szyfrów, ale do systemów bezpieczeństwa w ogólności, każda tajemnica tworzy potencjalne źródło porażki (failure point). Inaczej mówiąc tajemnica jest podstawowym powodem łamliwości - i dlatego może spowodować załamanie się systemu i odwrotnie, otwartość zapewnia giętkość.
Warto przybliżyć co Schneier rozumie jako łamliwość: w końcu każdy system bezpieczeństwa zależy w kluczowy sposób od trzymania pewnych rzeczy w tajemnicy.
Schneier uważa, że w tajemnicy należy trzymać te elementy systemu, które łatwiej jest zmienić.
Załóżmy, że algorytm kryptograficzny jest zaimplementowany w sprzęcie i oprogramowaniu, które jest szeroko dystrybuowane wśród użytkowników - jeśli bezpieczeństwo zależy od trzymania go w tajemnicy, wtedy ujawnienie spowoduje potrzebę utworzenia, przetestowania i wdrożenia nowego implementacji nowego algorytmu, a co za tym idzie wynmiany oprogramowania lub nawet sprzętu. Natomiast jeśli ważne jest utrzymanie w tajemnicy nie algorytmu, a tylko kluczy, wtedy ujawnienie kluczy będzie wymagało o wiele prostszej procedury utworzenia i dystrybucji nowych kluczy.
Inaczej mówiąc im mniej rzeczy trzeba utrzymać w tajemnicy by zapewnić bezpieczeństwo tego systemu, tym łatwiej je zapewnić.
Eric Raymond rozszerza tą zasadę na wsparcie oprogramowania open source, mówiąc, że tworzenie oprogramowania, bez założenia, że nieprzyjaciel posiada kod źródłowy jest z zasady nie warte zaufania, tak więc "nigdy nie ufaj zamkniętemu oprogramowaniu" (never trust closed source).
Idea, że oprogramowanie Open Source jest z zasady bardziej bezpieczne niż zamknięte jest promowane jako koncepcja "bezpieczeństwo przez jawność" (security through transparency).

Kryptoanaliza

Kryptoanaliza (Cryptanalysis z greckiego kryptós, "ukryty", i analyein, "rozwiązać") jest badaniem metod otrzymania znaczenia treści zaszyfrowanej wiadomości, bez dostępu do tajnej informacji, która normalnie jest do tego wymagana. Najczęściej chodzi o znalezienie tajnego klucza. Mówiąc nietechnicznie: jest to praktyka łamania kodu (codebreaking lub cracking the code) chociaż te wyrażenia mają również specjalistyczne znaczenie.

Oznacza także nie tylko próby ujawnienia treści zaszyfrowanych wiadomości, ale również złamanie bezpieczeństwa algorytmów i protokołów kryptograficznych. Zwykle jednak wyklucza ataki, które nie są skierowane na rzeczywiste słabości kryptografii: metody takie jak przekupstwo, fizyczne wymuszenie, kradzież, keylogging itp.
Chociaż te typy ataków są ważne w bezpieczeństwie informacji i obecnie są bardziej efektywne niż tradycyjna kryptoanaliza.

Wprawdzie cel jest ten sam, metody i techniki zmieniły się drastycznie, zwiększając złożoność od metod wymagających pióra i papieru poprzez maszyny takie jak Enigma, aż po współczesne metody komputerowe. Nawet rezultaty kryptografii się zmieniły - nie jest już możliwy nieograniczony sukces w łamaniu szyfrów. Istnieje hierarchiczna klasyfikacja określająca co składa się na atak.
W połowie lat 70-tych pojawiła się nowa klasa kryptografii - asymetryczna, metody jej łamania są całkowicie odmienne i zwykle polegają na rozwiązywaniu czysto matematycznych problemów. Najbardziej znanym jest faktoryzacja liczb całkowitych.

Może wyglądać na naturalnego przeciwnika kryptologii i do pewnego stopnia tak jest. Można widzieć ich rywalizację w historii kryptografii. Jednak bardziej precyzyjne będzie interpretowanie ich ról jako uzupełniających się - gruntowne zrozumienie kryptoanalizy jest konieczne do stworzenia bezpiecznej kryptografii.

Ze względu na różnorodność ataków kryptoanalitycznych wygodnie jest je sklasyfikować.
Rozważa się co atakujący może wiedzieć i zrobić, by dowiedzieć się jaka jest tajna wiadomość, np. czy ma dostęp tylko do szyfrogramów, czy może dowiedzieć się, lub odgadnąć jakieś korespondujące z nim jawne teksty; lub czy może wybrać jakiś arbitralny jawny tekst do zaszyfrowania (ciphertext only, znany jawny tekst, wybrany jawny tekst). Te scenariusze traktuja wszystkie szyfry jako abstrakcyjne czarne skrzynki.
Inne ataki są bazowane na implementacji szyfru, jeśli jest dostęp np. do timingu[?] lub zużycia mocy można złamać szyfry nie do złamania innymi metodami.
Jeśli kryptosystem używa klucza lub hasła jest narażony na BF, najczęściej jest to najsłabszy punkt takiego systemu, liniowa lub różnicowa analiza dotyczy kryptografii symetrycznej. Jeśli kryptografia polega na trudnych problemach matematycznych, algorytmy zadań takich jak faktoring stają się potencjalnymi narzędziami kryptoanalizy.

Ataki

Charakterystyka ataków:
Różnią się w możliwościach i jakim są zagrożeniem dla kryptosystemów, certificational weakness jest teoretycznym atakiem, który prawdopodobnie nie znajdzie zastosowania w realnym świecie, większość rezultatów obecnej kryptoanalizy jest tego typu.
Praktyczne znaczenie ataku jest zależne od odpowiedzi na poniższe trzy pytania:

  • Jaka wiedza i możliwości są potrzebne jako warunek wstępny? (co jest potrzebne do ataku?)
  • Ile dodatkowej tajnej wiedzy można wywnioskować? (czego można się dowiedzieć?)
  • Jaki wysiłek jest wymagany? (jaka jest złożoność obliczeniowa?)

Uprzednia wiedza - scenariusze dla kryptoanalizy
Kryptoanaliza może zostać przeprowadzona pod pewną ilością założeń, co do tego, ile może zostać zaobserwowane lub odkryte o atakowanym systemie. Podstawowym punktem startowym jest założenie, że ogólny algorytm jest znany. Jest to zasada Shannona "wróg zna system". Jest to praktyczne i uzasadnione przypuszczenie, ponieważ z historii znana jest olbrzymia ilość tajnych algorytmów, które zostały szerzej poznane (szpiegostwo, zdrada lub odwrotna inżynieria) - czasem na skutek prostej dedukcji np. szyfr Lorenza i japoński kod purpurowy i wiele klasycznych mechanizmów.

Inne założenia:

  • Znany szyfrogram (Ciphertext-only): atakujący ma dostęp do zbioru szyfrogramów lub kodowanych tekstów.
  • Znany jawny tekst (Known-plaintext): ma zestaw szyfrogramów i korespondujących z nimi jawnych tekstów.
  • Wybrany jawny tekst (wybrany szyfrogram) (Chosen-plaintext (chosen-ciphertext)): atakujący może otrzymać szyfrogram (jawny tekst) odpowiadający wybranemu przez niego jawnemu tekstowi (szyfrogramowi).
  • (Adaptive chosen-plaintext): jak w powyższym, z tym, że atakujący może wybrać następny jawny tekst na podstawie informacji z poprzednich szyfrowań (analogicznie Adaptive chosen ciphertext attack).
  • (Related-key attack): jak w chosen-plaintext attack, poza tym, że atakujący może otrzymać szyfrogramy z dwóch różnych kluczy; klucze są nieznane ale związek pomiędzy nimi jest znany, np. różnią się jednym bitem.

Te rodzaje ataków różnią się łatwością zastosowania, ale pomimo tego kryptografowie przyjmują najbardziej ostrożne stanowisko i zakładają najgorszy przypadek w czasie projektowania algorytmów, uzasadniając to tym, że jeśli mechanizm będzie bezpieczny nawet wobec nieralnych zagrożeń to powinien być odporny również na prawdziwą kryptoanalizę.
To założenie często jest bardziej realistyczne niż mogłoby to na pierwszy rzut oka wyglądać. W przykładzie ataku ze znanym jawnym tekstem: kryptoanalityk może się dowiedzieć lub domyślić najbardziej prawdopodobnej części jawnego tekstu (np. zaszyfrowany list zaczynający się od słów "Dear Sir", lub sesja komputerowa zaczynająca się od "LOGIN:").
Atak z wybranym jawnym tekstem jest mniej prawdopodobny, ale czasem możliwy: można zmusić do przekazania znanej wiadomości w zaszyfrowanej formie.
Related key atak jest głównie teoretyczny, ale może wystąpić w niektórych sytuacjach, np. kiedy używa się szyfrów blokowych do tworzenia funkcji haszujących.

Klasyfikacja sukcesu:
Rezultat kryptografii może się różnić także przydatnością, np kryptograf Lars Knudsen (1998) dokonał klasyfikacji różnych typów ataków na szyfry blokowe według ilości i jakości odkrytych tajnych wiadomości:

  • całkowite złamanie (Total break) - atakujący wywnioskował tajny klucz.
  • ogólne poznanie (Global deduction) - atakujący ujawnia funkcjonalny odpowiednik algorytmu (functionally equivalent algorithm) szyfrującego i rozszyfrującego, ale nie poznaje klucza.
  • lokalne poznanie (Instance (local) deduction) - atakujący odkrywa dodatkowe jawne teksty (lub szyfrogramy) uprzednio nieznane.
  • wywnioskowanie informacji (Information deduction) - atakujący pozyskuje trochę informacji Shannona o jawnych tekstach (lub szyfrogramach) uprzednio nieznanych.
  • rozpoznanie algorytmu (Distinguishing algorithm) - atakujący jest w stanie odróżnić szyfr od przypadkowych permutacji.

Podobne rozważania stosują się do ataków na inne typy algorytmów kryptograficznych

Złożoność:
Ataki mogą być także scharakteryzowane przez ilość wymaganych zasobów:

  • Czas - ilość "podstawowych operacji" jakie muszą być wykonane (podstawowe instrukcje komputerowe takie jak dodanie, XOR, przesunięcie itp lub całe metody szyfrujące).
  • Pamięć - ilość pamięci wymagana do przeprowadzenia ataku.
  • Dane - wymagana ilość/wielkość jawnych tekstów i szyfrogramów.

W akademickiej kryptografii słabość lub złamanie mechanizmu jest zdefiniowane bardzo ostro. Bruce Schneier podsumowuje to tak: "Złamanie szyfru oznacza po prostu znalezienie słabości w szyfrze, która może zostać wykorzystana ze złożonością mniejszą niż BF, nieważne, że BF może wymagać 2128 operacji, atak wymagający 2110 opercji może być uważany za złamanie... mówiąc inaczej złamaniem może być nawet certyfikacyjna słabość, dowód, że szyfr nie działa z reklamowaną sprawnością" (Schneier, 2000).

Kryptoanaliza kryptografi asymetrycznej:
Bezpieczeństwo tych szyfrów zależy od czysto matematycznych problemów, więc oczywiste jest rozwijanie metod rozwiazania tych problemów.
Mechanizmy asymetryczne są zaprojektowane na - przypuszczalnej - trudności rozwiązania problemów matematycznych, jeśli zostanie odnaleziony jakiś udoskonalony algorytm i rozwiąże problem, narażony jest cały mechanizm.
Np. bezpieczeństwo mechanizmu wymiany kluczy Diffie-Hellman zależało od trudności wyliczenia dyskretnego algorytmu. W 1983 Don Coppersmith znalazł obliczeniowo wykonalny sposób odnalezienia dyskretnych logarytmów i w ten sposób dał kryptoanalizie narzędzie do złamania kryptosystemu Diffie-Hellmana.
Inny mechanizm popularny algorytm RSA pozostaje niezłamany, jego bezpieczeństwo zależy (częściowo) od trudności faktoryzacji liczb całkowitych - przełom w tej dziedzinie będzie miał wpływ na bezpieczeństwo RSA.
W 1980 do złamania był 50 cyfrowy numer w 1012 krokach, do 1984 można było złamać 75-cyfrowy numer w 1012 krokach, postęp w technice komputerowej oznaczał także, że operacje te mogły zostać przeprowadzone dużo szybciej, prawo Moore'a przewiduje dwukrotne przyśpieszenie procesora w ciągu trzech lat.
Techniki faktoryzacji również są udoskonalane, złamana została 150-cyfrowa liczba w rodzaju tych używanych w RSA. Z początkiem XXI wieku 150 cyfrowe liczby nie są już uważane za dostatecznie długie klucze dla RSA, natomiast mające klikaset cyfr tak, ale metody faktoryzacji są ulepszane, więc albo klucze będą musiały być coraz większe, albo wprowadzi się nowe algorytmy.
Inną różnicą wobec ataków na szyfry symetryczne jest to, że kryptoanaliza ma możliwość zrobienia użytku z wiedzy pozyskanej z klucza publicznego.

Kryptoanaliza kwantowa:
Komputery kwantowe są potencjalnym narzędziem w kryptoanalizie, ponieważ stany kwantowe mogą istnieć w superpozycji (np. splątanie) możliwy jest nowy paradygmat obliczeniowy i jeśli taki komputer zostanie zbudowany wiele spraw się zmieni, równoległe obliczenia staną się normą i zmienią się pewne aspekty kryptografii.
W szczególności ponieważ komputer kwantowy będzie mógł przeprowadzić bardzo szybkie przeszukiwania BF, długości klucza będą musiały być dużo większe - a niektórzy twierdzą, że żadne szyfrowanie nie przetrwa tej próby.
Drugą możliwością jest to, że zwiększona moc obliczeniowa umożliwi ataki inne niż BF przeciwko obecnie odpornym szyfrom lub klasom algorytmów, np. nie cały postęp w faktoryzacji wynika z rozwoju algorytmów, cześć była możliwa dzięki rozwojowi mocy obliczeniowej a komputery kwantowe mogą znacząco zwiększyć możliwości faktoryzacji.
To czego nie można przewidzieć to przełom teoretyczny wymagający komputerów kwantowych, który umożliwiłby obecnie niepraktyczne (lub nawet nieznane) ataki.
Nie wiadomo czy istnieje polynomial time encryption algorithm[?] którego rozszyfrowanie wymaga wykładnikowego czasu, nawet dla komputera kwantowego.

Steganografia

Wiadomość może zostać ukryta na dwa sposoby:

  • kryptograficzny - przetworzenie w taki sposób, aby stał się nieczytelny;
  • steganograficzny - ukrycie faktu istnienia komunikatu.

Steganografia jest sztuką i nauką pisania ukrytych wiadomości w taki sposób, że nikt oprócz odbiorcy nie wie o istnieniu wiadomości, jest to kontrast wobec kryptografii, gdzie istnienie wiadomości jest oczywiste ale jej znaczenie jest ukryte, nazwa pochodzi z traktatu, którego autrem był Johannes Trithemius: "Steganographia: a treatise on cryptography and steganography disguised as a book on black magic". Po grecku oznacza "ukryte pismo" (ang. hidden writing)
Ogólnie wiadomość steganograficzna pojawi się jako coś innego, np. lista z zakupami, artykuł, obraz lub inna "zasłaniająca" wiadomość.
Steganografię stosuje się zazwyczaj gdy chce się ukryć sam fakt porozumiewania się stron.
Techniki steganograficzne są bardzo popularne i szeroko wykorzystywane we współczesnym świecie z uwagi na trudność w wykryciu ich zastosowania.

Pierwsze wzmianki o użyciu technik steganograficznych można odnaleźć w pismach Herodota z V wieku p.n.e. Opisuje on przesłanie informacji na tabliczce do pisania (drewnianej desce pokrytej woskiem) zapisanej nie w sposób tradycyjny, poprzez wykonanie liter w wosku, lecz umieszczenie przekazu bezpośrednio na desce. Inna wzmianka opisuje wytatuowanie listu na ogolonej głowie posłańca i wysłanie go w drogę po odrośnięciu włosów.
Wiadomości steganograficzne są często najpierw zaszyfrowane w tradycyjny sposób a potem tekst zakrywający (covertext) jest modyfikowany tak by zawrzeć zaszyfrowaną wiadomość - w ten sposób powstaje stegotext, np. rozmiar liter, spacing, typeface lub inne cechy tekstu zakrywającego mogą być zmieniane by umieścić ukrytą wiadomość. Tylko odbiorca (który musi znać użytą technikę) może odkryć wiadomość i rozszyfrować ją.
Wiadomo, że Francis Bacon sugerował by użyć takiej techniki do ukrywania wiadomości.

Techniki steganograficzne są bardzo różnorodne, wiele z nich było używanych w dawnych czasach zanim sie rozwinęły kryptosystemy

  • ukryte wiadomości w tablicach woskowych, w starożytnej Grecji pisano wiadomość na desce i pokrywano ją woskiem tak, że wyglądała na zwykłą, nieużywaną tablicę woskową.
  • na ciele posłańca: Herodot opisuje tatuowanie wiadomości na głowie niewolnika, i wysłanie go kiedy włosy odrosły (wiadomość zawierała ostrzeżenie dla Grecji przed perską inwazją).
  • stosowanie niewidzialnego atramentu w pustych partiach innej wiadomości.
  • nakłuwanie literek większego komunikatu szpilką (widoczne tylko pod światło);
  • takie formułowanie komunikatu, aby sekwencja kolejnych liter, sylab bądź wyrazów tworzyła ukrytą wiadomość (ang. null cipher); układ liter bądź słów w jakimś komunikacie stanowi ukryty komunikat. Przykładem może być sekwencja pierwszych liter słów w zdaniu "To Anna jest naszą egzaminatorką" - ukryty komunikat: "tajne".
  • podczas i po WWII głównie agenci niemieccy używali mikrokropek (microdots) do wysyłania wiadomości; ponieważ były bardzo małego rozmiaru kropki w maszynie do pisania (jak w foncie, który mieści 10-12 znaków na cal) lub nawet mniejsze stegotekstem było to co zawierało kropkę - w liście lub adresie były to znaki, a jeśli były pod znaczkiem był to wygląd znaczka.
  • w czasie WWII japoński szpieg w Baltimore, Velvalee Dickinson, wysyłała informacje na różne adresy w neutralnej Europie lub Ameryce Południowej, była sprzedawcą lalek i jej listy omawiały ile i jakich lalek wysłać, stegotekstem były zamówienia lalek, a ukryty jawny tekst był kodetekstem zawierającym informacje o ruchu okrętów itp; jej przypadek stał się sławny, przeszła do historii jako "Doll Woman".
  • OTP (one-time pad) jest teoretycznie niełamliwym szyfrem który tworzy wygladające na przypadkowy szum szyfrogramy i tylko ten kto posiada klucz prywatny może odróżnić szyfrogram od przypadkowych danych, tak więc każde doskonale przypadkowe dane mogą zostać użyte jako covertekst dla teoretycznie niełamliwej steganografii.
  • w komputerowym zapisie obrazu w formacie RGB jeden bądź dwa najmłodsze bity każdego piksela można wykorzystać do przenoszenia informacji bez zauważalnej straty jakości obrazu.
  • chaffing and winnowing[?]
  • null ciphers[?]
  • ukryte wiadomości w zmodyfikowanych plikach wykonywalnych, wykorzystujące redundancję w zestawie poleceń i386.

Im większa jest wiadomość zasłaniająca (w znaczeniu ilości danych - liczby bitów) względem ukrytej wiadomości tym łatwiej jest ją ukryć. Z tego powodu najczęściej pliki graficzne (które zawierają duże ilości danych) są używane do ukrywania wiadomości w interencie. Nie wiadomo jak jest to powszechne.
Dla przykładu 24 bitowa bitmapa będzie miała 8 bitów reprezentujących każdą z trzech wartości kolorów (RGB) na każdy piksel. Jeśli rozważymy tylko niebieski jest 28 różnych wartości, a różnica powiedzmy pomiędzy 11111111 a 11111110 w intensywności jest niewykrywalna dla ludzkiego oka, tak więc najmniej znaczący bit może zostać użyty (w sposób bardziej lub mniej niewykrywalny) dla czegoś innego niż informacja o kolorze. Jeśli zrobimy to z zielonym i czerwonym będziemy mogli przesłać jedną literę tekstu ASCII na 3 piksele.
Mówiąc bardziej formalnie, kodowanie steganograficzne jest trudne do wykrycia jeśli zmiana nośnika (oryginalnego sygnału) z powodu umieszczenia ładunku (ang. payload) (czyli tajnej wiadomości) jest wizualnie (i w idealnej sytuacji także statystycznie) bez znaczenia, tj. zmiany są nieodróżnialne od poziomu szumu nośnika.
Z punktu widzenia teorii informacji oznacza to, że kanał musi mieć pojemność większą niż wymaga tego zasłaniająca transmisja np. istnieje redundancja. Dla obrazu cyfrowego może to być szum z (imaging element)[?], w audio może to być szum będący skutkiem technik nagrywania lub sprzętu wzmacniającego. Każdy system zawierający etap analogowego wzmocnienia wprowadza również tzw. cieplny lub "1/f" szum, który może zostać wykorzystany do przykrycia, na dodatek mechanizmy stratnej kompresji (np. JPEG) wprowadzają trochę błędów w dekompresowanych danych, które również mogą zostać wykorzystane to celów steganograficznych.
Steganografia może zostać użyta do cyfrowych podpisów wodnych gdzie wiadomość (będąca po prostu identyfikatorem) jest ukryta w w obrazie, więc jego źródło może zostać wyśledzone i potwierdzone. W Japonii "...Content ID Forum i Digital Content Association of Japan zaczęły testy systemu cyfrowych podpisów by 'walczyć z piractwem'" (The Japan Times Online 26-08-2001)."

Dodatkowa terminologia:
Ogólnie jest to terminologia analogiczna (i zgodna z) bardziej konwencjonalną technologią radiową i komunikacyjną, ale warto krótko przedstawić opis niektórych terminów używanych w oprogramowaniu, bo są mylone. Odnoszą się najbardziej do systemów steganografii cyfrowej.

Ładunek (payload) to dane przeznaczone do przesłania (a więc ukrycia).
Nośnik to sygnał, strumień, lub plik z danymi w których payload jest ukryty, przeciwieństwo "kanał" [channel] (najczęściej używany do odniesienia typu wejścia, np. "obraz JPEG").
Efekt w postaci sygnału, strumienia lub pliku danych w których zakodowany jest payload jest czasem określany jako pakiet [package].
Stosunek procentowy bajtów, sampli, lub innych sygnałów, które zostały zmodyfikowane by zakodować payload jest określany jako gęstość kodowania (encoding density) i jest najczęściej wyrażony w postaci liczby zmiennoprzecinkowej pomiędzy 0 a 1.
W zestawie plików te które uważane są za zawierające payload są nazywane podejrzane (suspects).
Jeśli podejrzany został zidentyfikowany przez pewien typ analizy statystycznej nazywa się go kandydatem (candidate).

Pogłoski o użyciu w terroryźmie:
X 2001 NYT opublikował artykuł, w którym stwierdzano, że Al Kaida użyła technik steganograficznych, by zakodować wiadomości w obrazach i przesłała je przez mail (lub usenet), żeby przygotować i wykonać 911. Historia ta wciąż jest powtarzana chociaż juz dawno eksperci wyjaśnili, że pojawiła się z ogłoszeniem prasowym dostawcy oprogramowania steganograficznego i nie są znane inne żadne dowody.
Ponadto przechwycony podręcznik treningowy Al Kaidy czyni żadnej wzmianki na temat steganografii. Rozdział o komunikacji potwierdza przewagę techniczną USA i generalnie zaleca technologie niskiego poziomu ukrywania danych.
Rozdział o kodach i szyfrach kładzie nacisk na używanie niewidzialnego atramentu w tradycyjnych papierowych listach i proste szyfry zastąpieniowe z [nulls][?], steganografia komputerowa w obrazach nie jest wspomniana.
Pomimo to są prowadzone wysiłki by wykryć obecność informacji steganograficznej w obrazach w internecie (szczególnie w Ebayu, wspomnianym w tym artykule). Do chwili obecnej przeskanowano miliony obrazów bez wykrycia żadnej steganograficznej zawartości innej niż testowa i instrukcyjne obrazy na stronach www o steganografii.

Wykrycie steganograficznie zakodowanych pakietów to stegoanaliza, najprostszy sposób to porównanie z oryginałem., żeby wykryć zmodyfikowane pliki wystarczy porównać je ze znanymi oryginałami, o których wiadomo, że są czyste, różnica (zakładając, że nośnik jest ten sam) ujawni/utworzy payload.
Ogólnie używając bardzo wysokiego stopnia kompresji czyni się steganografię trudną, ale nie niemożliwą, podczas kiedy błędy kompresji zapewniają dobre miejsce do ukrycia danych, wysoka kompresja zmniejsza ilość danych jaką można zakodować zwiększając gęstość kodowania i ułatwiając wykrycie (w ekstremalnych przypadkach nawet gołym okiem).

Historia kryptologii

Kryptoanaliza ewoluowała razem z kryptografią i ich wyścig może być śledzony przez historię - nowe szyfry były zaprojektowane by zastąpić stare pokonane metody. Nowe techniki kryptograficzne były wynajdywane by łamać coraz to lepsze mechanizmy. Praktycznie są widziane jako dwie strony tej samej monety -, żeby stworzyć bezpieczną kryptografię trzeba zaprojektować ją przeciwko możliwej kryptoanalizie.

Proste szyfry
Szyfry historyczne musiały umożliwiać szyfrowanie i deszyfrowanie przez człowieka, a więc opierać się na bardzo prostych operacjach. Współczesne komputery są o kilkanaście rzędów wielkości szybsze w obliczeniach od ludzi, i potrafią złamać praktycznie każdy tego typu szyfr. Istnieją jednak przykłady szyfrów, które są możliwe do zastosowania przez człowieka bez użycia komputerów i zapewniaja pewien sensowny poziom bezpieczeństwa. Warto zwrócić uwage na fakt, że zwykle siatka szpiegowska w obcym kraju może mieć utrudniony dostęp do sprzętu komputerowego, nadal jednak musi być w stanie przesyłać bezpiecznie zaszyfrowane wiadomości. Przykład szyfru o omawianych własnościach stanowi np. OTP, szyfry podstawieniowe dla krótkich wiadomości a nawet szyfr Solitare opisany w książce "Cryptonomicon" Neala Stephensona.
Wszystkie wymienione niżej szyfry nie mają obecnie żadnego praktycznego znaczenia.

W przeszłości kryptografia pomagała utrzymać tajemnicę łączności w dyplomacji wojnie i szpiegostwie i była domeną rządów, ale ostatnio (po połowie lat 70-tych: wynalazek kryptografii asymetrycznej i DES standard publiczney szyfrowania) jej znaczenie znacznie wzrosło i to na dwa sposoby.
Po pierwsze zwiększył się zakres zastosowań, głównie dzięki kryptografii asymetrycznej zapewnia mechanizmy nie tylko do utrzymywania tajemnicy danych ale też np. cyfrowy podpis i cyfrowy pieniądz.
Po drugie stała się powszechnie używana przez cywilów, którzy nie mają jakichś szczególnych powodów do tajemnicy, jest po prostu wbudowana w infrastrukturę informatyczną i telekomunikacyjną, a użytkownicy nie są najczęściej nawet świadomi, że używają technik kryptograficznych.
Szyfrowanie jest używane nie tylko do zapewnienia tajemnicy, ale również do zapewnienia bezpieczeństwa komunikacji, szczególnie weryfikacji integralności i autentyczności wiadomości, np. MAC i cyfrowe podpisy. Ważna jest także ochrona przed analizą ruchu (traffic analysis). Internet e-commerce, sieci telefonów komórkowych i bankomatów.
Szyfrowanie jest zajęciem bardzo starym, aczkolwiek nowoczesna kryptografia narodziła się dopiero w epoce komputerów i starsze szyfry są z dzisiejszego punktu widzenia zupełnie bezużytecznie.

Historia kryptografii od starożytności była historią klasycznej kryptografii, którą można było stosować używając pióra i papieru. Na początku XX wynalazek złożonych mechanicznych i elektromechanicznych maszyn takich jak Enigma pozwolił na użycie zaawansowanych i wydajnych metod szyfrowania. Po wprowadzeniu komputerów złożoność kryptosystemów znacznie wzrosła.
Istnieje równoległa historia kryptoanalizy, czyli łamania kodów i szyfrów, od wczesnej analizy częstotliwościowej skutki jej są znaczne: np. Telegram Zimmermanna i złamanie szyfrów Osi.

Starożytność i średniowiecze

Najstarsze znane zastosowanie kryptografi to niestandardowe hieroglify wyryte na monumentach egipskiego Starego Państwa (ok 4.5K lat temu). Nie była to jak się uważa poważna próba tajnej komunikacji, ale raczej próba stworzenia atmosfery tajemniczości, intrygi lub nawet rozbawienia umiejących czytać widzów.

Szyfry znane były u starożytnych Greków, np. szyfr przestawieniowy scytali przypisywany spartańskiej armii.
Herodot opowiada o tajnych wiadomościach ukrytych pod woskiem na drewnianych tablicach i tatuażu na głowie niewolnika ukrytym przez odrastające włosy, ale nie są to przypadki kryptografii w dzisiejszym tego słowa znaczeniu, jest to steganografia.
Rzymianie z pewnością znali kryptografię (np. szyfr Cezara i jego odmiany), jest wzmianka o książce o rzymskich szyfrach wojskowych, ale niestety zaginęła.

Żydowscy uczeni używali prostych szyfrów monoalfabetycznych zastąpieniowych (np. szyfr Atbash) od ok. 500 do 600 pne.

Kryptografia ma długą tradycję w religijnych pismach, które mogły obrazić dominującą kulturę lub władze polityczne. Może najbardziej znanym jest Numer Bestii z NT. "666" może być zaszyfrowanym odniesieniem do Imperium Rzymskiego lub samego Nerona, które mogło być zrozumiane tylko przez poddanych incjacji (którzy mieli klucz do zrozumienia) i dlatego bezpiecznym lub łatwym do zaprzeczenia jeśli dowiedziałyby się o nim władze.

Kryptografia była też dobrze znana w Indiach. W Kamasutrze zalecano ją jako metodę porozumiewania się kochanków potajemnie, oznacza to najprawdpodobniej, że techniki kryptoanalityczne były słabo rozwinięte ok 500 ne.

Najpewniej motywacja religijna była przyczyną wynalezienia analizy częstotliwościowej dla łamania, monoalfabetycznych szyfrów zastąpieniowych ok 1000 ne.. Był to najważniejszy postęp w kryptoanalizie do czasów WWII.
Zasadniczo wszystkie szyfry pozostały podatne na tą technikę kryptoanalityczną aż do wynalazku szyfru polialfabetycznego przez Albertiego (ok 1465).

Chociaż słowo kryptoanaliza jest raczej nowe (wymyślił je William Friedman w 1920), metody są dużo starsze. Najstarsze znane wyjaśnienie kryptoanalizy pochodzi z IX wieku - Abu Yusuf Yaqub ibn Ishaq al-Sabbah Al-Kindi w manuskrypcie "O rozszyfrowaniu tajnych wiadomości" (Manuscript on Deciphering Cryptographic Messages) - ten traktat zawiera także wyjaśnienie analizy częstotliwościowej.
Jest to podstawowe narzędzie do łamania klasycznych szyfrów: w językach naturalnych pewne litery alfabetu pojawają się częściej niż inne, np. w angielskim prawdopodobnie "e" będzie najczęstszą literą w każdym przykładzie tekstu, a "th" najczęstszą parą liter itd. Jest to tym bardziej prawdopodobne i tym silniejsza jest ta regularność im dłuższy jest to tekst. W ten sposób można złamać każdy szyfr, który nie ukryje tych statystyk, np. w prostym szyfrze zastąpieniowym (gdzie każda litera jest zastąpiona przez inną) najczęściej występująca litera w szyfrgramie będzie prawdopodobnie "e".
Jednak kiedy szyfry stały się bardziej złożone matematyka stopniowo stała się najważniejsza. Ta zmiana stała się najbardziej widoczna w czasie WWII kiedy to złamanie szyfrów używanych przez państwa Osi wymagało nowych metod matematycznych. Ponadto pierwszy raz zastosowano mechanizmy takie jak bomba i Colossus - jeden z najstarszych komputerów.

Czasy nowożytne do WWII

Kryptografia stała się jeszcze ważniejsza jako skutek politycznej rywalizacji i religijnej rewolucji, np. w Europie w czasie i po renesansie obywatele różnych włoskich państw, także państwa koscielnego byli odpowiedzialni za gwałtowny rozwój technik kryptograficznych. Kilka z nich odzwierciedla rozumienie (lub nawet znajomość) wynalazku Albertiego.
Zaawansowane szyfry nawet po Albertim nie były tak zaawansowane jak twierdzili (i wierzyli) ich wynalazcy i użytkownicy. Ten nadmierny optymizm był charakterystyczny wtedy i dzisiaj i jest przeszkodą w zrozumieniu jak słabe są kryptosystemy. Z braku wiedzy liczą się - jak można tego oczekiwać - domysły i nadzieje.

Voynich Manuscript - słynne fałszerstwo

Kryptografia, kryptoanaliza i zdrada tajnego agenta/kuriera pojawiła się w spisku Babingtona w czasie panowania królowej Elżbiety I. Doprowadziło do egzekucji Marii, królowej Szkotów.
Zaszyfrowana wiadomość z czasów Człowieka W, żelaznej Masce (rozszyfrowana tuż przed 1900 przez Étienne Bazeries) rzuciła trochę światła na tożsamość tego więźnia.
Kryptografia i jej niewłaściwe użycie było wmieszane w spisek, który doprowadził do egzekucji Maty Hari oraz aresztowanie Dreyfusa. Na szczęście w tym drugim przypadku kryptografowie przyczynili się także do wyjaśnienia manipulacji, które spowodowały jego problemy.

Poza Bliskim Wschodem i Europą kryptografia pozostała nierozwinięta. Nie była używana w Japoni do 1510 a zaawansowane techniki nie były znane aż do otwarcia na świat po 1860.

Choć kryptografia miała długą i złożoną historię do XIX wieku nie nastąpił żaden rozwój ponad przypadkowo dokonane odkrycia w kryptografii i kryptoanalizie.
Przykłady tego drugiego to prace Babbage'a w epoce wojny krymskiej nad matematyczną kryptoanalizą szyfrów polialfabetycznych, odkryte i opublikowane później przez Prusaka Friedricha Kasiskiego.
Rozumienie kryptografii tamtych czasów polegało głównie na regułach kciuka, np. prace kryptograficzne Auguste Kerckhoffs.

Edgar Alan Poe rozwijał systematyczne metody rozwiązywania szyfrów w latach 40-tych. Umieścił informację o swoich umiejętnościach w filadelfijskim Alexander's Weekly (Express) Messenger zapraszając do nadsyłania szyfrów, które rozwiązywał, jego sukces przyciągnął uwagę na kilka miesięcy. Później napisał esej o metodach kryptografii, który okazał się użyteczny w rozszyfrowaniu niemieckich szyfrów używanych w czasie WWI.

WWII

W czasie WWII mechaniczne i elektromechaniczne urządzenia szyfrujące były w powszechnym użyciu, ale tam gdzie były niepraktyczne nadal używano ręcznych technik. Nastąpił wielki postęp w praktycznej i matematycznej kryptografii. Ale wszystko to trzymano w tajemnicy. Informacje o tym okresie zaczęły się pojawiać dopiero kiedy skończył oficjalny niemiecki 50-letni okres tajemnicy i otwierały się powoli odpowiednie archiwa USA i zaczęto publikować utajnione dotąd pamiętniki i artykuły.

Niemcy używali głównie (w kilku wariantach) elektromechanicznego systemu opartego na rotorach znanego jako Enigma. Złamany przez Rejewskiego. Był to największy przełom w kryptoanalizie od ponad tysiąca lat - narodziny kryptologii matematycznej. W sierpniu 1939 Polacy przekazali swoją wiedzę i maszyny Brytyjczykom i Francuzom.
Matematyczna kryptografia rozwinęła się gwałtownie - choć w tajemnicy - dopiero po WWI, Marian Rejewski zaatakował i złamał wczesne systemy Enigmy używane przez niemiecką armię używając matematyki teoretycznej w 1932 i osiągał sukcesy aż do 39. Potem jego pracę kontynuowali Alan Turing, Gordon Welchman i inni w Bletchley Park łamiąc następne wersje Enigmy.

Algorytm Enigmy używany jest w poleceniu crypt.

Niemiecka armia podjęła próby zastosowania OTP, w Bletchley Park nazywano je szyframi Fish, a Max Newman i jego współpracownicy zaprojektowali i stworzyli pierwszy programowalny cyfrowy elektroniczny komputer - Colossus.
Niemieckie MSZ zaczęło używać OTP w 1919, część ruchu została przeczytana w WWII jako rezultat odtworzenia pewnego klucza, który z niedostateczną dbałością został wyrzucony przez niemieckiego kuriera.

Sprawa Enigmy i udział Polaków w jej złamaniu jest najbardziej medialnym rozdziałem historii kryptologii. Zamieszanie jakie w tej kwestii panuje częściowo ma przyczyny polityczne, otóż dopiero w latach '70 Brytyjczycy odtajnili historię Bletchley Park i maszyn Coolossus. Do tego czasu wszystko było kwestią spekulacji i popularnej literatury. Z drugiej strony Żelaznej Kurtyny również na Enigmie spoczywało piętno milczenia, bo - również do lat '70 - Armia Radziecka a za nią cały Układ Warszawski używała maszyn szyfrujących, które wprost wywodziły się z Enigmy.

Polacy przygotowali się do wojny budując urządzenie szyfrujące LCD Lacida , które było trzymane w tajemnicy nawet przed Rejewskim. Kiedy w lipcu 1941 sprawdził je złamanie zabrało mu zaledwie kilka godzin, więc procedury operacyjne maszyny były zmieniane w pośpiechu.

Kryptografowie USNavy (po 1940 w kooperacji z duńskimi i brytyjskimi) złamali kilka kryptosystemów japońskiej floty. Złamanie jednego z nich JN-25 doprowadziło m.in. do zwycięstwa pod Midway.
SIS (USArmy) złamało najwyższego bezpieczeństwa japoński szyfr dyplomatyczny (elektromechaniczna maszyna nazywana przez Amerykanów "stepping switch" - Purple) jeszcze zanim zaczęła się WWII. Amerykanie nazywali wyniki wywiadu z kryptoanalizy "Magic", natomiast Brytyjczycy początkowo "Boniface" a potem "Ultra" (dotyczyło to głównie Enigmy).
Japońskie MSZ używało systemu Purple i kilku maszyn w attachatach w japońskich ambasadach, jedna z nich została nazwana "M-machine" a druga "Red", wszystkie w jakimś stopniu zostały złamane.

Inne maszyny używane w czasie WWII to brytyjski TypeX i amerykańska SIGABA, oba były podobne do Enigmy, nie wiadomo, żeby zostały złamane.
Wojska w polu używały maszyn M-209 i mniej bezpiecznych M-94. Brytyjscy agenci SOE początkowo używali szyfrów poetyckich (poem ciphers - kluczem były zapamiętane poematy), ale później przerzucili się na OTP.

Sukcesy kryptoanalizy mają wielkie znaczenie w historii - możliwość czytania tajnych wiadomości zawierających plany jest szczególnie ważna w czasie wojny, np. w czasie WWI złamanie telegramu Zimmermanna spowodowało przystąpienie USA do wojny, w czasie WWII kryptoanaliza niemieckich szyfrów (Enigma i szyfr Lorenza) przyczyniła się do skrócenia wojny a według niektórych nawet zadecydowała o rezultacie, na Pacyfiku duże znaczenie miało złamanie japońskiego kodu purpurowego.

Kryptologia współczesna

Najważniejszy postęp w tych czasach został dokonany przez Williama F. Friedmana. Zastosowanie technik statystycznych do kryptoanalizy i tworzenia szyfrów i złamanie systemu Enigmy przez Rejewskiego. Kryptologia stała się jeszcze bardziej matematyczna po WWII, ale dopiero internet i powszechne używanie komputerów sprawiło, że szyfry zaczęły być używane przez kogokolwiek innego niż przez rządy lub wielkie organizacje.

Użycie komputerów nie tylko spowodowało wielkie sukcesy w WWII ale umożliwiło zastosowanie nowych metod w kryptografii dzięki czemu stała się się bardziej złożona i odporna na ataki. W rezultacie wygląda na to, że zwyciężyła w pojedynku z czystą kryptoanalizą. Jeśli nawet atak z wybranym jawnym tekstem nie ujawni klucza do innych wiadomości można uważać kryptoanalizę za skończoną, ale są jeszcze inne możliwości - podsłuch, pluskwy, side channel attack i komputery kwantowe.
Nadal istnieją słabe szyfry, także nowe implementacje czasem ujawniają słabości: pochodzący z 1984 Madryga okazał się w 1998 podatny na atak samego szyfrogramu; FEAL-4 proponowany jako zastępstwo DES został zniszczony w serii ataków społeczności akademickiej, wiele z nich w całości praktycznych. Również zastosowane w przemyśle szyfry nie są wolne od błędów: np. algorytmy A5/1, A5/2 i CMEA używane w telefonach komórkowych mogą być złamane w krótkim czasie przy użyciu powszechnie dostępnego sprzętu. W 2001 został złamany WEP przez related key atak.

Dla szyfrów symetrycznych żaden atak nie został przeprowadzony przez lata mimo intensywnych analiz, dla szyfrów asymetrycznych bezpieczeństwo zależy od trudności zwiazanego z nim matematycznego problemu.
Jak dotąd dowiedziono bezpieczeństwo tylko jednego szyfru: OTP (one-time pad) jednakże potrzebuje on kluczy przynajmniej tak długich jak jawny tekst, co sprawia, że jest niepraktyczny.
Rzadko kiedy bezpieczeństwo systemu zawodzi na skutek słabości algorytmu, cześciej jest to błąd w implementacji, użytym protokole lub inny ludzki błąd. Kryptografia może być użyta do implementacji pewnych godnych uwagi protokołów, np: zero-knowledge proof, secure multiparty computation i secret sharing.

Znaczenie kryptoanalizy jest doceniane przez rządy dla wywiadu (wojskowego i dyplomatycznego), powstały organizacje do łamania szyfrów innych państw, np GCHQ i NSA są wciąż aktywne. Np. w 2004 ogłoszono, że USA złamały szyfr irański (chociaż nie jest jasne czy stało się to na skutek kryptoanalizy czy też były w to zaangażowane jakieś inne czynniki).

Obecnie

Historię współczesnej kryptografii rozpoczął Claude Shannon, który zapoczątkował kryptografię matematyczną, najpierw dokumentem Communication Theory of Secrecy Systems (1949) a potem książką Mathematical Theory of Communication. Na nich i innych jego pracach na temat informacji i teorii komunikacji opiera się rozwój kryptografii i kryptoanalizy. Dość szybko kryptografia stała się narzędziem agencji rządowych mającym strategiczne znaczenie, jej rozwój odbywał się w tajemnicy i aż do lat 70-tych - kiedy wszystko się zmieniło - bardzo niewiele działo się jawnie.

Połowa lat 70-tych odznaczyła się dwoma ważnymi wydarzeniami: wprowadzenie DES i wynalezienie kryptografii asymetrycznej.

17 marca 1975 został opublikowany szkic Data Encryption Standard w U.S. Federal Register. Proponowany DES został opracowany w IBM na zlecenie National Bureau of Standards (teraz NIST) w celu rozwoju bezpiecznej komunikacji dla organizacji takich jak banki i inne instytucje finansowe. Po modyfikacjach NSA został opublikowany jako FIPS Publication (Federal Information Processing Standard) w 1977 (obecnie w FIPS 46-3). DES był pierwszym publicznie dostępnym szyfrem mającym akceptację narodowej agencji takiej jak NSA. Publikacja specyfikacji przez NBS spowodowała wzrost zainteresowania kryptografią w opinii publicznej i środowiskach akademickich.
Ponieważ był również zalecany przez agencje państwowe szybko został przyswojony przez banki i instytucje finansowe. Pomimo wykazywanych słabości był w powszechnym użyciu do niedawna. Dopiero w 2001 został zastąpiony przez AES (Rijandel) kiedy NIST ogłosił FIPS 197. W otwartej konkurencji NIST wybrało Rijandel.
DES i jego bardziej bezpieczne wersje (takie jak 3DES lub TDES; zobacz FIPS 46-3) są nadal używane, ale udowodniono, że 56-bitowy klucz jest niewystarczającym zabezpieczeniem przed BF (jeden z takich ataków przeprowadzonych przez EFF zakończył się w 56 godzin). Wiadomości wysłane czystym DES i w rzeczywistości wszystkie wiadomości wysłane po 1976 są zagrożone. Niezależnie od jakości szyfru taka długość klucza była uważana za zbyt małą nawet w 1976.
Było podejrzenie, że nawet wtedy rządowe organizacje miały dość mocy by złamać DES i brak przypadkowości w "s" boxes mógł być celowym błędem.

Publikacja New Directions in Cryptography. Autorzy Whitfield Diffie i Martin Hellman - kryptografia asymetryczną w fundamentalny sposób zmieniła sposób w jaki funkcjonuje kryptografia, która do tej pory w całości opierała się na algorytmach symetrycznych.
Wprowadzili nową metodę dystrybucji kluczy, która rozwiązała jeden z największych problemów dotychczasowej kryptografii jakm było utworzenie bezpiecznego i niezależnego kaanału dystrybucji kluczy, które musiały być w tajemnicy przesyłane i przechowywane.
W przeciwieństwie do powyższego wynalazek Diffiego-Hellmana (znany jako Diffie-Hellman key exchange) umożliwiał bezpieczną i jawną wymianę kluczy niezbędnych do wymiany tajnych danych. Zakładał utworzenie pary matematycznie powiązanych ze sobą kluczy, jednego używanego do szyfrowania, drugiego do odszyfrowania wiadomości, dzięki temu można publicznie i jawnie wymieniac się kluczami publicznymi.
Kryptografia asymetryczna sprawiła, że zaawansowane szyfrowanie stało się publicznie dostępne, przełamany został prawie całkowity monopol wielkich organizacji i urzędów państwowych. Od tego czasu datuje się konflikt interesów pomiędzy agencjami rządowymi chcącymi kontrolować i regulować używanie kryptografii a obywatelami, którzy chcą zachować niezależność w tej sprawie.

Prawdopodobnie całkowicie niezależnie kryptografia asymetryczna została wynaleziona przez brytyjski wywiad.
GCHQ opublikował dokumenty, które tego dowodzą, różne tajne prace zostały napisane w GCHQ w latach 60 i 70-tych, które ostatecznie doprowadziły do mechanizmów identycznych z RSA i DF key exchange w 1973 i 74.
Niektóre zostały opublikowane a wynalazcy (James Ellis, Clifford Cocks i Malcolm Williamson) udostępnili część z nich publicznie.

Upowszechnienie się komputerów i rozwój internetu stworzyły naturalną przestrzeń dla stosowania kryptografii.

History_of_cryptography

Pierwszy raz obywatele mają dostęp do kryptografii, która nie może być w prosty sposób złamana. Wywołało to kontrowersje.
Do 1996 eksport technologii używających kluczy dłuższych niż 40 bitów był zakazany w USA, były FBI Director Louis Freeh zeznając przed komisją 911 wezwał do nowego prawa przeciwko użyciu kryptografii.
Najważniejszym obrońcą silnego szyfrowania w publicznym użytku był Phil Zimmermann ze swoim PGP (1991), długa walka z restrykcjami i ostatecznie RFC 2440 (OpenPGP).

Pomimo, że współczesne szyfry takie jak AES są uważane za nie do złamania, nadal istnieją słabe projekty: najsłynniejsze to WEP i CSS oraz A5/1 and A5/2 używane w GSM. Na dodatek, co do żadnej z matematycznych idei leżących u podstaw kryptografii asymetrycznej nie została udowodnione, że jest nie do złamania i przyszłe badania mogą uczynić te systemy niebezpiecznymi (umożliwiając odtworzenie klucza prywatnego z publicznego). Taki przełom jest nie do przewidzenia, niektóre mechanizmy zostały już złamane.
Długość klucza rośnie stosownie do postępu mocy obliczeniowej i postępu w dziedzinie faktoryzacji, zbyt mała zawsze umożliwia BF (dotyczy to wszystkich algorytmów, symetrycznych i niesymetrycznych)
Jest to przykład podstawowego problemu w kryptografii, trzeba wybrać konkretny kryptosystem (algorytm + protokół + mechanizm) który zabezpiecza przed każdym atakiem, ale nie można przewidzieć, ani kto dokona tego ataku, ani jakimi zasobami będzie dysponował, ani też jaka kryptoanaliza będzie możliwa. W tej sytuacji rozróżnienie co jest śmieciem a co wartościowym rozwiązaniem jest trudne nawet dla specjalistów.

Timeline

  • 3500s [BC]- Sumeryjczycy stsowali pismo klinowe a Egipcjanie hieroglificzne.
  • 1500s [BC] - Fenicjanie wymyślili alfabet
  • 600-500 [BC] - Hebrajscy uczeni stosowali proste szyfry zastąpieniowe, monoalfabetyczne (np szyfr Atbash)
  • 100-0 [BC] - Znane rzymskie szyfry, np. Szyfr Cezara.
  • 1000 - Analiza częstotliwościowa prowadzi do technik łamania monoalfabetycznych szyfrów zastąpieniowych, było to prawdopodobnie motywowane tekstową analizą koranu.
  • 1450 - Chińczycy stosowali druk (movable type) używając drewnianych blokach
  • 1450-1520 - The Voynich manuscript, przykład zaszyfrowanej ilustrowanej książki (fałszerstwo).
  • 1586 - kryptoanaliza użyta przez Sir Francisa Walsinghama wykazała, że Maria królowa Szkotów była uwikłana w spisek Babingtona mający na celu zamordowanie Królowej Elżbiety I. Maria została ostatecznie stracona.
  • 1614 - Szkot John Napier (1550-1617) opublikował dokument zarysowujący odkrycie logarytmu, wynalazł także pomysłowy system ruchomych prętów (nazwanych pałkami lub kostkami Napiera: Napier's Rods lub Napier's bones). Były oparte na logarytmach i pozwoliły operatorowi mnożyć, dzielić i obliczać kwadraty i sześciany przez przesuwanie pałek i umieszczanie ich na specjalnie skonstruowanej tablicy.
  • 1793 - Claude Chappe zbudował pierwszą długodystansową semaforową linię telegraficzną
  • 1831 - Joseph Henry proponuje budowę telegrafu elektrycznego
  • 1835 - Samuel Morse wymyślił alfabet Morsa
  • 1855 - Dla angielskiej strony wojny krymskiej Charles Babbage złamał szyfr autokey Vigenere'a ("niełamliwy szyfr" tamtych czasów) podobnie jak znacznie słabszy szyfr, który dzisiaj znany jest jako szyfr Vigenere. Z powodu tajemnicy wojskowej zostało to także odkryte później przez Prusaka Friedricha Kasiskiego.
  • 1894 - Afera Dreyfusa we Francji - zastosowanie kryptografii i jej nieprawidłowe użycie w celu fałszowania dokumentów.
  • 1918 Arthur Scherbius patent na maszynę szyfrującą, od 1923 Enigma, złamana 1932 Marian Rejewski
  • 1924 Edward Hugh Hebern patent na maszynę szyfrującą z rotorem - Hebern rotor machine
  • kwiecień 1943 - Max Newman, Wynn-Williams, i ich ekipa (także Alan Turing) w tajnym Government Code and Cypher School ('Station X'), Bletchley Park, Bletchley, England, tworzą "Heath Robinson". Jest to specjalizowana maszyna do łamania szyfrów, a nie ogólnego przeznaczenia kalkulator lub komputer.
  • grudzień 1943 - zbudowany został Colossus przez Dr Thomasa Flowersa w The Post Office Research Laboratories w Londynie, do złamania szyfru Lorenz (SZ42). Colossus został użyty w Bletchley Park w WWII - jako następca April's 'Robinson's. Chociaż ostatecznie zbudowano 10 zostały zniszczone natychmiast po zakończeniu pracy - były tak zaawansowane, że nie mogły wpaść w ręce wroga.
  • 1948 - Claude Shannon pisze dokument, który ustanawia matematyczne podstawy teori informacji
  • 1969 - pierwsze hosty ARPANET, są połączone.
  • 1974 DES
  • 1976 - Cray-1, pierwszy komercyjny superkomputer konstrukcji Seymoura Craya, który opuścił Control Data w 1972, żeby stworzyć nową kompanię. Ta maszyna znana była także ze względu na specyficzny design jak i ze względu na to, że była pierwszym praktycznym zastosowaniem przetwarzania wektorowego. Zostało sprzedanych 85 sztuk po $5M każda.
  • 1981 - Richard Feynman zaproponował komputer kwantowy. Głownym zastosowaniem które miał na myśli byłą symulacja kwantowych systemów, ale także wspomniał o możliwości rozwiązania innych problemów.
  • 1986 - W obliczu rosnącej liczby włamań na rządowe i korporacyjne systemy Kongres USA wprowadził Computer Fraud and Abuse Act, który stanowi przestepstwo z włamania się do systemu komputerowego, prawo to jednakże nie dotyczy nieletnich.
  • 1988 - pierwszy optyczny chip został zaprojektowany używa światła zamiast elektryczności co przyspiesza szybkość przetwarzania.
  • 1989 - Tim Berners-Lee i Robert Cailliau zbudowali w CERN prototyp systemu który stał się późniejszym WWW
  • 1991 - Phil Zimmermann opublikował program szyfrowania kluczem publicznym PGP razem z kodem źródłowym, który szybko pojawił się w internecie.
  • 1992 - Wypuszczenie filmu "Sneakers" w którym eksperci bezpieczeństwa są szantażowani, żeby ukraść uniwersalny dekoder systemów szyfrujacych.
  • 1994
    • Peter Shor wymyślił algorytm, który pozwala komputerom kwantowym określić szybko faktoryzację dużych liczb całkowitych. Jest to pierwszy interesujący problem dla którego komputery kwantowe obiecują znaczące przyspieszenie i dlatego powodują duże zainteresowanie tą tematyką.
    • koncepcja DNA computing
    • rosyjscy krakerzy kradną $10M z Citibank i transferują pieniądze na konta bankowe na całym świecie. Wladimir Lewin, 30-letni szef bandy używa służbowego laptopa po godzinach do transferowania pieniędzy na konta w Finlandii i Izraelu. W USA został skazany na 3 lata a służby odzyskują wszystkie oprócz $400K.
    • SSL 2.0 (Netscape Communications)
  • 1995 - SSH 1 (Tatu Ylönen), SHA-1 (National Security Agency)
  • 1996 - SSL 3.0 (Netscape Communications)
  • 1997 - powstaje OpenPGP (standard IETF)
  • 1999 -
    • GPG 1.0 - GNU Privacy Guard (wolna implementacja OpenPGP; Werner Koch)
    • TLS 1.0 (kontynuacja SSL 3.0; standard IETF)
    • powstaje OpenSSH (wolna implementacja SSH-2; projekt OpenBSD)
  • 14 styczeń, 2000 - rząd USA zapowiada, że restrykcje na eksport kryptografii zostaną rozluźnione (chociaż nie usunięte). Pozwala to na zakończenie absurdalnej polityki rozwijania oddzielnych wersji programów dla USA i reszty świata.
  • marzec 2000 - President Clinton przyznaje, że nie używa e-maila do komunikacji z córką, Chelsea Clinton, ponieważ nie uważa tego medium za bezpieczne.
  • 6 wrzesień, 2000 - RSA Security Inc. publikuje algorytm RSA (public domain), uprzedzając zakończenie obowiązywania patentu (US Patent #4,405,829) 20 września. Po rozluźnieniu restrykcji rządowych na początku tego roku (14 styczeń) usunęło to ostatnie bariery do światowej dystrybucji większości oprogramowania opartego na systemach kryptograficznych. Należy zauważyć, że algorytm IDEA jest wciąż pod patentem i restrykcje rządowe nadal obowiązują w niektórych miejscach.
  • listopad 2001 - Microsoft i jego sojusznicy nawołują do zakończenia polityki pełnego ujawniania błedów bezpieczeństwa przez zastąpienie tego przez "odpowiedzialne" wytyczne ujawnienia.

Kryptografia asymetryczna

Zasada działania

Kryptografię asymetryczną wynaleźli w 1976 Martin Hellman i Whitfield Diffie (do tego czasu znane były wyłącznie szyfry symetryczne).
Polega na użyciu pary uzupełniających się kluczy: publicznego i prywatnego. Wykorzystuje się operacje matematyczne, które bardzo łatwo przeprowadzić w jedną stronę, ale trudno w drugą.
Metoda zakłada, że każdy może zaszyfrować wiadomość przy użyciu klucza publicznego, ale by odrócić ten proces konieczny jest pasujący klucz prywatny.

Założenia:

  • kluczem użytym do zaszyfrowania wiadomości nie można jej oszyfrować; w przeciwnym przypadku znając klucz publiczny i szyfrogram możliwe byłoby uzyskanie tekstu jawny, algorytm uznany za dobry to uniemożliwia
  • nie jest możliwe odtworzenie klucza prywatnego na podstawie publicznego (lub jest to nieopłacalne)
  • szyfr jest odporny na atak polegający na porównaniu jawnego tekstu z szyfrogramem

Zastosowania

Istotną innowacją jaką wprowadziło szyfrowanie asymetryczne są zaawansowane funkcje kryptografii takie jak podpisy cyfrowe i uwierzytelnianie. Umożliwiło to całkiem nowe zastosowania kryptografii.

Szyfrowanie:

tekst jawny >--[klucz publiczny]--> szyfrogram >--[klucz prywatny]--> tekst jawny
  1. Bob chce, żeby Alice (i inni ludzie) mogli mu wysyłac zaszyfrowane wiadomości.
    W tym celu generuje parę powiązanych ze sobą kluczy: trzymany w ukryciu i dostępny tylko jemu klucz prywatny oraz klucz publiczny, który udostępnia (na swojej stronie internetowej, serwerze kluczy lub za pośrednictwem key signing party).
  2. Alice pobiera klucz publiczny Boba i używając go szyfruje wiadomość, ponieważ odszyfrować ją można tylko kluczem prywatnym Boba, może przesłać ją otwartym kanałem łączności i tylko Bob po otrzymaniu szyfrogramu używając swojego klucza prywatnego (utrzymywany w sekrecie od czasu utworzenia i znany tylko mu) może odszyfrować i przeczytać wiadomość.
    Dzięki temu wiadomość jest strzeżona przed nieautoryzowanymi osobami, a Bob i Alice nie potrzebują bezpiecznego tunelu do wymiany współdzielonego klucza.

Ponieważ szyfrowanie asymetryczne jest dużo wolniejsze od symetrycznego prawie nigdy nie stosuje się go do przesyłania dłuższych wiadomości, natomiast dość często do przesyłania kluczy jakiegoś szyfru symetrycznego.
Obecnie kryptografia asymetryczna jest szeroko stosowana do wymiany informacji poprzez kanały o niskiej poufności jak np. Internet. Stosowana jest także w systemach elektronicznego uwierzytelniania, obsługi podpisów cyfrowych, do szyfrowania poczty (OpenPGP), mechanizmów bezpieczeństwa sieci (Kerberos, VPN itp.) itd.

Podpis cyfrowy

Podpis cyfrowy to dodatkowa informacja dołączona do wiadomości służąca do weryfikacji jej źródła.
Podpisy cyfrowe korzystają z kryptografii asymetrycznej - tworzona jest para kluczy, klucz prywatny i klucz publiczny - klucz prywatny służy do podpisywania wiadomości, klucz publiczny natomiast do weryfikowania podpisu.
Najważniejszymi kryptosystemami umożliwiającymi podpisywanie cyfrowe są RSA, ElGamal i DSA.
Najpopularniejsze standardy pozwalające na złożenie podpisu elektronicznego to X.509 oraz PGP

Wykorzystuje się tu tą samą właściwość, tylko, że w inny sposób. Wiadomość zaszyfrowana kluczem publicznym może zostać odszyfrowana tylko kluczem prywatnym, ale też na odwrót - jeżeli zostanie zaszyfrowana kluczem prywatnym tylko używając klucza publicznego będzie można ją odszyfrować. Jaka wyniknie korzyść z zastosowania szyfru, który każdy będzie mógł odczytać?
Będzie można określić, którym kluczem prywatnym została zaszyfrowana wiadomość, a ściśle rzecz biorąc czy została zaszyfrowana konkretnym kluczem. Szyfrowanie kluczem prywatnym (a więc normalnie przezanczonym do odszyfrowania) staje się podpisem elektronicznym.


tekst jawny >-[klucz prywatny]-> szyfrogram >-[klucz publiczny]-> tekst jawny |
                                                                              |-porównanie
tekst jawny >-                 [kanał łączności]               -> tekst jawny |
 
  1. Bob chce wysłać wiadomość do Alice, tak, żeby zagwarantować, że wiadomość pochodzi od niego (ale nie przejmuje się czy ktoś inny będzie mógł ją przeczytać). Wysyła więc do Alice niezaszyfrowaną wiadomość razem z tą samą wiadomością zaszyfrowaną swoim kluczem prywatnym.
  2. Dzięki temu Alice (lub ktokolwiek inny) będzie w stanie dowieść pochodzenia wiadomości, po prostu rozszyfrowując wiadomość kluczem publicznym i porównując ją z wiadomością niezaszyfrowaną. Jeśli obie będą identyczne oznacza to, że wiadomość rzeczywiście pochodzi od Boba, ponieważ do utworzenia tego podpisu był potrzebny prywatny klucz Boba a tylko on ma do niego dostęp.
    Zaszyfrowana wersja wiadomości jest cyfrowym podpisem Boba dom wiadomości ponieważ każdy może użyć klucza publicznego by potwierdzić, że rzeczywiście Bob jest jej autorem.

Zazwyczaj jednak Bob po prostu stosuje funkcję haszującą do wiadomości i aby ją uwierzytelnić szyfruje otrzymany w ten sposób skrót używając klucza prywatnego, dzięki temu podpis jest dużo krótszy co oszczędza i czas (ponieważ haszowanie jest dużo szybsze niż szyfrowanie kluczem publicznym) i miejsce (ponieważ zaszyfrowany skrót wiadomości jest dużo mniejszy niż szyfrogram powstały z całej wiadomości).
Potem jako swój podpis elektroniczny dołącza do oryginalnej wiadomości - dowolna osoba posiadająca klucz publiczny może sprawdzić autentyczność podpisu, poprzez odszyfrowanie hasza za pomoca klucza publicznego nadawcy, oraz porównanie go z osobiście wyliczonym na podstawie wiadomości.
W tym przykładzie Alice odszyfrowuje skrót kluczem publicznym Boba i porównuje wynik z haszem odebranego jawnego tekstu.
Digital_signature

Własności kluczy
publiczny:
mniej złożony; dostępny dla wszystkich; szyfrujący i weryfikujący podpis, skonstruowany tak, że stosunkowo łatwo wykryć jego podmianę
prywatny:
bardziej złożony; dostępny tylko dla właściciela; deszyfrujący i podpisujący; nie da się go odtworzyć na podstawie klucza publicznego

Autentyczność klucza

Certyfikat tożsamości

Problem: Alice udostępniła swój klucz publiczny i każdy używając go może jej wysłać tajne wiadomości. Niestety Mallory również może udostępnić swój klucz publiczny (posiadając powiązany z nim klucz prywatny) twierdząc, że nalezy do Alice i jeśli wprowadzi kogoś w błąd będzie mógł odczytać część tajnych wiadomości wysłanych do niej. Ale jeśli Alice wbuduje swój klucz publiczny w certyfikat i jest tam podpis cyfrowy złożony przez zaufanego Trenta, każdy kto ufa Trentowi, będzie mógł w prosty sposób sprawdzić ten certyfikat, i zobaczyć czy Trent potwierdza, że ten wbudowany klucz należy do Alice.

Certyfikat klucza publicznego (inaczej nazwany certyfikatem tożsamości) jest blokiem bitów w określonym formacie, zawierającym publiczną połowę algorytmu klucza asymetrycznego (klucza publicznego) razem z informacją o tożsamości (dane personalne, adres mailowy, tytuł, numer telefonu itp.), podpisane cyfrowo przez pewną osobę lub instytucję - przypisując/wiążąc w ten sposób klucz publiczny do osoby (lub instytucji) opisanej atrybutami.
Certfikat zwykle zawiera: podpisany klucz publiczny, nazwa, określająca osobę, komputer lub organizację, termin ważności, lokację (URL) centrum odwołań (ang. revocation center).

Istnieją dwa podstawowe mechanizmy uwierzytelniania kluczy: zcentralizowany PKI i zdecentralizowana sieć zaufania.
W obu przypadkach autor podpisu zapewnia, że informacja o tożsamości i klucz publiczny odpowiadają sobie.
Public_key_certificate

  • PKI: podpis będzie pochodził od instytucji certyfikującej
  • sieć zaufania: podpis będzie pochodził od samego użytkownika (samopodpisany certyfikat) albo innych użytkowników (tzw. "wyrazy poparcia"; ang. endorsements),
PKI (Public Key Infrastructure)

Zcentralizowana, hierarchiczna infrastruktura niezbędna do świadczenia usług związanych z zarządzaniem certyfikatami kluczy publicznych. Jest konieczna w zastosowaniach biznesowych, gdzie nie ma czasu na niezależne potwierdzanie własnych kluczy. Wtedy muszą być potwierdzone przez niezależną instytucję, której ufają obie strony komunikacji.
Konieczne stało się ujednolicenie wymagań i przepisów dotyczących certyfikatów, dostawców usług certyfikacyjnych oraz urządzeń służących do generowania i weryfikacji podpisu elektronicznego.
Istnieje kilka standardów certyfikatów ale najpopularniejszy to X.509. Wszystkie zawierają takie pola jak: wersja, numer seryjny, nazwa wydawcy certyfikatu, data ważności, nazwa podmiotu, dla którego wystawiono certyfikat, jego klucz publiczny, oraz podpis cyfrowy organu wydającego certyfikat (CA - Certification Authority).
Prawdziwość podpisu można zweryfikować, mając klucz publiczny urzędu certyfikującego, który znajduje się w kolei w certyfikacie wystawionym dla tego urzędu przez organ wyższej instacji. Weryfikacja certyfikatu polega na prześledzeniu ścieżki zaufania, na końcu której znajduje się główny organ nadrzędny (root CA). Certyfikat wystawia on sam dla siebie, a wszyscy powinni mieć swobodny dostęp do jego klucza publicznego.
Duże firmy, chcące handlować i zawierać umowy poprzez sieć, potrzebują bardziej wiarygodnego potwierdzenia autentyczności używanych kluczy kryptograficznych. Odpowiedzią na te potrzeby jest infrastruktura klucza publicznego. Pozwala ona na zarządzanie certyfikatami przez ich generowanie, dystrybucję, aktualizację i unieważnianie oraz rejestrację wielu użytkowników dla różnych potrzeb. PKI opiera się na strukturze drzewa, głównym urzędom certyfikacji (Root CA) mogą podlegać inne CA, stworzone specjalnie dla różnych zastosowań (np. handel elektroniczny, bankowość, administracja publiczna). W drzewie danego Root CA może się znajdować dowolna liczba podległych urzędów oraz użytkowników.
Większość najważniejszych standardów takich jak SSL/TLS, SSH, S/MIME, SET (Secure Electronic Transactions) czy IPSec została zaprojektowana z myślą o współdziałaniu w strukturach PKI.

W typowym PKI Trent będzie CA (Certificate Authority), który jest zaufanym z konieczności przez wszystkich uczestników.
W rozwiązaniach na większą skalę Alice może nie znać CA Boba, więc certyfikat Boba może zawierać także także certyfikat klucza publicznego jego CA podpisany przez CA2 "wyższego poziomu", który jest znany dla Alice. Taki proces prowadzi do hierarchi certyfikatów i jeszcze bardziej skomplikowanych zwiazków zaufania.
PKI używa oprogramowania, które zarządza certyfikatami na wielką skalę, np. w systemie X.509 PKI hierarchia certyfikatów jest zawsze odwróconym drzewem z korzeniem certyfikacji na samej górze reprezentującym CA , który jest tak centralny dla całego systemu, że nie potrzebuje być uwierzytelniany przez kogoś trzeciego.

Certyfikat może zostać odwołany jeśli okaże się, że powiązany prywatny klucz został skompromitowany, lub jeśli relacja (pomiędzy tożsamością a kluczem publicznym) wbudowana w certyfikat zostanie uznana za nieprawidłowa, lub zmieniona. Może to nastąpić jeśli np. osoba zmienia pracę lub dane personalne. Odwołanie (revocation) będzie najprawdopodobniej rzadko stosowane, ale oznacza, że użytkownik zawsze będzie mógł sprawdzić jego poprawność. Można to zrobić porównując z listą odwołań certfikatów (CRL: certificate revocation list) - listą odwołanych lub skasowanych certyfikatów. Podstawową funkcją scentralizowanego PKI jest zapewnienie, że ta lista jest aktualna i dokładna.
Innym sposobem jest zapytanie przy użyciu (OCSP: Online Certificate Status Protocol) co pozwala poznać status danego certyfikatu.

Rozwiązanie to pierwszy raz było zastosowane w PEM (Privacy Enhanced Mail), wcześniejszym od PGP systemie kryptograficznym dla poczty elektronicznej, który jednak nie zdobył większej popularności.

Sieć zaufania (web of trust)

Wszystkie zgodne z OpenPGP implementacje, zawierają mechanizm sprawdzający nazwany siecią zaufania. Służy do ustanowienia i sprawdzenia autentyczności powązania pomiędzy publicznym kluczem a użytkownikiem, jest to w pewnym sensie odpowiednik scentralizowanego PKI opierającego się wyłącznie na autorytecie certyfikującym (lub na hierarchii takich).

W sieci komputerowej może istnieć wiele niezależnych sieci zaufania i każdy użytkownik (przez swój certyfikat tożsamości) może być częścią takiej sieci lub powiązaniem pomiędzy sieciami. W sieci zaufania Trent może być każdym użytkownikiem i to czy warto zaufać jego potwierdzeniu zależy od osoby chcącej wysłać wiadomość do Alice.
Certyfikaty tożsamości (zawierające publiczne klucze i informacje o tożsamości użytkowników) mogą zostać cyfrowo podpisane przez innych użytkowników, którzy w ten sposób gwarantują powiązanie klucza publicznego i osoby wymienionej w certyfikacie. Służą do tego keysigning parties.

Istnieje również mechanizm liczenia głosów powalający określić, które powiązanie klucz publiczny - właściciel będzie uważane za zaufane: np. jeśli trzech częsciowo zaufanych gwarantów uwierzytelnia certyfikat (a więc i powiązanie osoby z kluczem) lub zrobi to jeden w pełni zaufany gwarant to powiązanie osoby i klucza w tym certyfikacie zostanie uznane za poprawne.
Mechanizm ten może zostać modyfikowany stosownie do potrzeb użytkowników, może też zostać wyłączony. Jest elastyczny i pozostawia decyzję o zaufaniu w rękach indywidalnego użytkownika, co wymaga zarówno uważności jak i inteligentnego nadzoru.

Problemem w sieci zaufania jest sytuacja w której klucz prywatny został utracony, ponieważ nie może zostać odwołany wciąż jest traktowany jako prawidłowy, a wiadomości zaszyfrowane odpowiadającym mu kluczem publicznym nie mogą być odczytane (rozszyfrowane). Użytkownik powinien przygotować podpisany certyfikat odwołania na wypadek sytuacji utraty lub kompromitacji klucza prywatnego. Można również do tego celu zastosować datę wygaśnięcia.

Web_of_trust

Wady

Zagrożeniem dla klucza prywatnego są wirusy (głównie mailowe), trojany, spyware itd, które mogą spowodować wykradzenie, skopiowanie lub zniszczenie klucza prywatnego.
Najbardziej prawdopodobny scenariusz takiego ataku polega na zdalnej instalacji trojana i keyloggera (może to być jeden wyspecjalizowany program), który kopiuje plik z kluczem prywatnym i wysyła go atakującemu, a dzięki możliwości rejestrowania zdarzeń systemowych (uruchomienie klienta PGP i naciskanie klawiszy) ujawnia również hasło.
Podpis elektroniczny, w którym zostanie zastosowany słaby algorytm haszujący, albo zbyt krótki skrót, jest wrażliwy na atak (szczególnie urodzinowy).

Podatność na atak MITM: chociaż wydawało się, że kryptografia asymetryczna jest rozwiązaniem problemu dystrybucji kluczy, szybko okazało się, że ktoś może się podszyć się pod tożsamość i wysłać podłożony klucz publiczny, wtedy oszust będzie mógł otrzymać informacje, odszyfrować je i czytać, potem zaszyfrować poprawnym kluczem publicznym i wysłać go do poprawnego celu. Oznacza to, że można spenetrować tajne dane bez łamania szyfru i właściwie nie angażując mocy obliczeniowej. Jest to poważne zagrożenie bo oznacza, że nawet użycie "niełamliwych" szyfrów nie wystarczy do zagwarantowania prywatności.
Tego typu atak jest możliwy tylko w szyfrach asymetrycznych. By się przed tym ochronić klucze muszą być uwierzytelniane (poprzez sprawdzanie poprawności lub certyfikację) czy reprezentują tego kto twierdzi, że go reprezentują (PKI). Niestety może to być prawie tak trudne jak problem wymiany konwencjonalnych kluczy i wymaga złożonych protokołów. Błąd w tych protokołach może narazić nawet system, który używa "niełamliwych" szyfrów, dla kontrastu zwykłe użycie "niełamliwego" klucza szyfru symetrycznego (z ręcznie dostarczanymi kluczami) jest wystarczające do zapewnienia bezpieczeństwa.
Złożone procedury uwierzytelniania kluczy publicznych, komplikują stosowanie kryptografii asymetrycznej i powodują dodatkowe problemy bezpieczeństwa.

Z tego powodu zarówno przy weryfikacji podpisu jak i przy szyfrowaniu wiadomości bardzo istotne jest upewnienie się czy dany klucz publiczny rzeczywiście należy do adresata. PGP umożliwia umieszczenie w dystrybuowanych kluczach użytkowników 'certyfikatów tożsamości' tak skonstruowanych, że podmiana lub przypadkowe zniekształcenie jest łatwo wykrywalna. Ale samo fakt, że każde zniekształcenie certyfikatu jest ławe do wykrycia nie jest wystarczającym zabezpieczeniem, ponieważ zapobiega "kompromitacji" dopiero po utworzeniu certyfikatu a nie przedtem. Użytkownicy powinni użyć także innych metod by potwierdzić prawidłowość klucza, mechanizmem, który to umożliwia jest tzw. "sieć zaufania". PGP posiada również możliwość odwołania certyfikatu tożsamości, który stał się nieprawidłowy jak również daty wygaśnięcia.

Siła obecnie używanych szyfrów asymetrycznych (np. RSA) polega na trudności przeprowadzenia faktoryzacji (czyli odnalezienia składników: dużych liczb pierwszych, których użyto do utworzenia klucza). Jak na razie nikt nie udowodnił, że faktoryzacja jest rzeczywiście trudna, po prostu nie są znane szybkie metody na jej przeprowadzenie.
Możliwe, że ktoś takie metody wymyśli i wtedy wszystkie metody używające takich szyfrów będą zagrożone, a sam szyfr bezużyteczny. Możliwe również, że trudność przeprowadzenia faktoryzacji zostanie udowodniona i wtedy metoda uzyskałaby gwarancję bezpieczeństwa.

Znaczenie

Istnienie tylko kryptografii symetrycznej - z jednym kluczem, który szyfruje i odszyfrowuje - ogranicza w istotny sposób możliwość stosowania tego rodzaju szyfrów do osób lub instytucji, które się nawzajem znają i posiadają niezależny, bezpieczny kanał wymiany kluczy. A nawet i w tym wypadku, przy większej ilości uczestników komunikacji i konieczności regularnej wymiany kluczy (np. systemy bankowe) dystrybucja kluczy staje się olbrzymim problemem logistycznym.
Kryptografia asymetryczna pozwala na rozwiązanie tych problemów, nawiazanie szyfrowanej komunikacji między nieznającymi się uprzednio osobami oraz stworzenie całego systemu publicznie dostępnych rozwiązań kryptograficznych dodając do tego niemożliwe uprzednio zastosowania takie jak podpis cyfrowy czy niezaprzeczalność. Jest obecnie podstawą technik zabezpieczania zarówno kanałów wymiany danych jak i samych informacji.
Inaczej mówiąc: bez kryptografii asymetrycznej nie byłoby większości współczesnych zastosowań technik kryptograficznych, bez których internet nie mógłby być miejscem wymiany poufnych informacji. Nawet jeśli sami nie używamy takich technik jak PGP, SSL czy SSH, to tak czy inaczej korzystamy z internetu gdzie te techniki mają fundamentalne znaczenie przy zastosowaniach biznesowych, w e-commerce i samym zarządzaniu serwerami.
Czyli gdyby nie kryptografia asymetryczna nie byłoby internetu takim jakim go znamy.

PGP (Pretty Good Privacy) i OpenPGP

Historia PGP

W 1991 Phil Zimmermann, stworzył PGP (nazwa oznacza "całkiem niezła prywatność"), program komputerowy umożliwiający łatwe szyfrowanie danych. Miało to na celu umożliwienie użytkownikom BBS-ów bezpiecznego przechowywania tam osobistych danych. Ponieważ do programu dołączony był kod źródłowy oraz dla niekomercyjnych zastosowań był dostępny za darmo PGP szybko zdobył sobie popularność w internecie.
Od samego początku historia PGP jest bardzo skomplikowana, z jednej strony uwikłana w przepisy eksportowe USA (uznające zaawansowane techniki kryptograficzne za broń), z drugiej zaś w spory licencyjne związane z używanymi szyframi (część z nich jest opatentowana). Doprowadziło to do powstania dwóch wersji PGP: amerykańskiej (US version), która może być używana na terenie USA i Kanady i międzynarodowej (PGPi - i znaczy international) wolnej od kłopotów licencyjnych.
Sam PGP z czasem stał się komercyjnym programem, używającym własnościowych technologii, który można używać zarówno w linii poleceń jak i w postaci GUI.

Obecnie jest to najpopularniejsze narzędzie do szyfrowania i deszyfrowania przesyłanych wiadomości, podpisu cyfrowego i weryfikacji autentyczności nadawcy (opartej o sieć zaufania), oraz zarządzania kluczami. Istnieje wiele nakładek na program ułatwiających jego używanie oraz wtyczek pozwalających skonfigurować niemal każdy program pocztowy do współpracy z PGP (należy pamiętać, że używanie ich nie gwarantuje tego samego stopnia bezpieczeństwa).

Powstanie OpenPGP

Ze względu na znaczenie PGP dla społeczności internetowej, ważne było powstanie niezależnego, otwartego standardu, który umożliwiałby tworzenie współpracującego z nim oprogramowania. W lipcu 1997 PGP Inc. zaproponowało IETF utworzenie standardu nazwanego OpenPGP, co dało początek pracy OpenPGP Working Group.
OpenPGP stał się standardem internetowym określonym w RFC 2440 i 3156.

Znaczenie

Najlepsze nawet rozwiązanie bez implementacji jest tylko teorią. PGP Philla Zimmermanna był pierwszym publicznie dostępnym programem, który umożliwił korzystanie z kryptografi asymetrycznej użytkownikom internetu. Jednocześnie uświadomił znaczenie technik kryptograficznych dla przeciętnego użytkownika i ujawnił opór jaki stawiają instytucję rządowe, kiedy są zmuszane do rezygnacji z choćby potencjalnej możliwości kontrolowania obywateli.
Skomplikowane losy programu, zawiłości patentowe, licencyjne a w końcu problemy z niezgodnością pomiędzy różnymi jego wersjami oraz wtyczkami wykazały znaczenie otwartego, opublikowanego standardu PGP, który jest ważniejszy niż najlepszy nawet program. Takim właśnie standardem jest OpenPGP i dzięki niemu kryptografia asymetryczna i architektura klucza publicznego jest dostępna dla każdego kto zechce z niej skorzystać, niezależnie od tego jakiego oprogramowania (jeśli tylko jest zgodne z OpenPGP), czy systemu używa.
Ze względu na jakość i siłę algorytmów szyfrujących zastosowanych w OpenPGP określenie "całkiem niezła prywatność" jest (jeśli technika te zastosowana jest prawidłowo) dość ironiczne - wobec każdego kto chciałby tę prywatność naruszyć.

GPG (GNU Privacy Guard)

Opis

GPG [www.gnupg.org] jest kompletnym i darmowym zamiennikiem programu PGP. Rozwijany jest z inicjatywy Free Software Foundation przez Wernera Kocha i wspierany przez rząd niemiecki. Udostępniany jest na wolnej licencji GNU/GPL.
Ponieważ GPG można dowolnie rozprowadzać, nie mogą być w nim używane opatentowanę lub w inny sposób ograniczonę algorytmy lub oprogramowanie. Dotyczy to np. algorytmu IDEA, obecnego w PGP niemal od początku. Zamiast tego używane są inne, nieopatentowane algorytmy, takie jak 3DES. Współcześnie wszystkie te programy przechodzą na uważany za znacznie silniejszy (i pozbawiony problemów patentowych) algorytm AES.
GPG jest programem do szyfrowania hybrydowego, gdyż używa kombinacji tradycyjnych szyfrów symetrycznych (szybszych) i kryptografii klucza publicznego (łatwa i bezpieczna wymiana kluczy - na przykład przez użycie klucza publicznego odbiorcy do zaszyfrowania klucza sesji, używanego tylko raz). Ten tryb pracy jest częścią OpenPGP i był zawarty w PGP od jego pierwszej wersji.

Podpis cyfrowy

Podpis cyfrowy to dodatkowa informacja dołączona do wiadomości służąca do weryfikacji jej źródła.
Służy uwierzytelnieniu cyfrowej informacji analogicznie do podpisu na zwyczajnym papierze, ale przy użyciu technik kryptograficznych.
Podpisy cyfrowe korzystają z kryptografii asymetrycznej - tworzona jest para kluczy, klucz prywatny i klucz publiczny - klucz prywatny służy do podpisywania wiadomości, klucz publiczny natomiast do weryfikowania podpisu.
Najważniejszymi kryptosystemami umożliwiającymi podpisywanie cyfrowe są RSA, ElGamal i DSA, ECDSA.
Najpopularniejsze standardy pozwalające na złożenie podpisu elektronicznego to X.509 oraz PGP

Ponieważ są możliwe kolizje w haszu można sfałszować podpis cyfrowy, który go stosuje.

Mechanizm podpisu cyfrowego zawiera trzy algorytmy:

  • algorytm generacji klucza
  • algorytm podpisywania
  • algorytm weryfikacji

Jest szeroko stosowany w e-commerce

Obecny status - prawny i praktyczny
Mechanizmy podpisu cyfrowego mają kilka uprzednich warunków, bez których taki podpis nic nie znaczy ani w sensie prawnym ani kryptograficznym.

  • Dobrej jakości algorytm, niektóre algorytmy asymetryczne są znane jako niebezpieczne, są możliwe ataki na nie.
  • Dobrej jakości implementacja, implementacja dobrego algorytmu (lub protokołu) z błędami nie działa (przeciętnie występuje jeden błąd na 1K linii kodu).
  • Klucz prywatny musi pozostać rzeczywiście tajny - każdy kto ma do niego dostęp może tworzyć tak samo autentyczne podpisy cyfrowe.
  • Dystrybucja kluczy publicznych musi się dokonywać tak, że klucz publiczny przypisany dla Boba rzeczywiście do niego należy i na odwrót. Jest to zapewniane przez PKI (operator to CA).
  • Użytkownicy (i ich oprogramowanie) musi używać protokołu prawidłowo.

Dopiero jeśli wszystkie powyższe warunki są spełnione podpis cyfrowy jest dowodem na to kto wysłał wiadomość.

Do prawidłowego działania całej infrastruktury podpisu cyfrowego konieczne jest również ustawodawstwo, dzięki któremu może mieć skutki prawne.

Status dowodowy
Wiele aktów prawnych dotyczących podpisów cyfrowych zajmuje się dopuszczalnością podpisu cyfrowego jako dowodu, jest to kontrowersyjne. W przeciwieństwie do zwykłego podpisu podpis cyfrowy może zostać wygenerowany automatycznie bez wiedzy właściciela, jest tworzony przez złożone oprogramowanie, którego działania użytkownik nie ma możliwości sprawdzić. Więc chociaż może służyć jako potwierdzenie, że ustanowiono niezakłóconą łączność to nie może być dowodem, że to konkretny uczestnik bierze w niej udział. Biorąc to pod uwagę termin podpis jest mylący. Ustawodawstwo, które deklaruje, że podpis cyfrowy jest prawidłowym podpisem różni się w ocenie jego możliwości z kryptografią.
Jednakże jeśli dobre oprogramowanie jest używane w prawidłowy sposób (np. prywatne klucze nie wyciekają) wtedy cyfrowe podpisy mogą być dokonywane tylko przez ich właścicieli..

Digital Signature Algorithm (DSA) jest amerykańskim narodowym standardem dla podpisów cyfrowych. DSA to algorytm asymetryczny. Podobnie jak ElGamal może też zostać użyty do przesyłania informacji podprogowej.
DSA (Digital Signature Algorithm) jest obowiącującym w USA federalnym standardem podpisu cyfrowego, został zaproponowany przez NIST (National Institute of Standards and Technology) w sierpniu 1991 do użycia w DSS (Digital Signature Standard zdefiniowanym w FIPS 186 przyswojonym w 1993), mniejsze uaktualnienie nastąpiło w 1996 jako FIPS 186-1 a standard został później rozwinięty w 2000 jako FIPS 186-2.
DSA jest chroniony U.S. Patent 5,231,668, którego właścicielem jest David W. Kravitz, dawny pracownika NSA.

Algorytm DSA do podpisu dokumentu wykorzystuje wartość jednokierunkowej funkcji skrótu SHA-1. Długość kluczy używanych w tym algorytmie jest zmienna w zakresie 512 - 1024 bitów. Są one adekwatne do aktualnych mocy obliczeniowych. Za wystarczające do większości cywilnych zastosowań uważane są klucze o długości przynajmniej 768 bitów.
DSA jest używany w OpenSSL, OpenSSH i GnuPG.

Tworzenie klucza

  • wybierz liczbę pierwszą p o długości L-bit gdzie 512 ≤ L ≤ 1024, i L jest podzielne przez 64
  • wybierz 160-bitową liczbę pierwszą q, taką, że p - 1 = qz, gdzie z jest dowolną liczbą naturalną
  • wybierz h, gdzie 1 < h < p - 1 taką, żeg = hz mod p > 1
  • wybierz x w sposób przypadkowy tak, że 0 < x < q
  • oblicz y = gx mod p
  • klucz publiczny to (p, q, g, y) a prywatny x

zauważ, że (p, q, g) mogą być współdzielone pomiędzy różnymi użytkownikami systemu jeśli jest to potrzebne

Składanie podpisu

  • wybierz dla danej wiadomości przypadkową wartość s (called a nonce), gdzie 1 < s < q
  • oblicz s1 = (gs mod p) mod q
  • oblicz s2 = (H(m) + s1*x)s-1 mod q, gdzie H(m) jest funkcją haszującą SHA-1 zastosowaną do wiadomości m
  • podpis to (s1,s2)

Weryfikacja

  • oblicz w = (s2)-1 (mod q)
  • oblicz u1 = H(m)*w (mod q)
  • oblicz u2 = s1*w (mod q)
  • oblicz v = [gu1*yu2 mod p] mod q
  • podpis jest prawidłowy jeśli v = s1

DSA jest podobny jak kryptosystem dyskretnego logarytmu Elgamal

Dodatek: słownik pojęć; protokoły; ataki

Słownik pojęć

algorytm kryptograficzny
Jednoznacznie opisana procedura szyfrująca lub rozszyfrowująca dane; najczęściej używana w znaczeniu konkretnego, udokumentowanego rozwiązania.
atak
Próba złamania szyfru, odczytania szyfrogramu bez uprzedniej znajomości przekształceń jakim został poddany.
Sformułowanie "zgłoszono atak" oznacza, że zakończył się przynajmniej częściowym powodzeniem.
CA (Certyficate Authority)
Instytucja, która wystawia podpisy cyfrowe i gwarantuje związek pomiędzy danymi w certyfikacie.
CRL (Certificate Revocation List)
Lista odwołanych certyfikatów - jest podpisywana przez CA i udostępniana publicznie. Każdy unieważniony certyfikat jest identyfikowany w CRL na podstawie swojego numeru seryjnego. Każdy wpis zawiera informację o dacie wystawienia, wystawcy oraz przyczynie odwołania.
System wykorzystujący certyfikaty nie tylko sprawdza podpis certyfikatu oraz jego ważność, ale także sprawdza, czy numer seryjny certyfikatu znajduje się na aktualnej (najnowszej) CRL. Listy wydawane są regularnie w określonych interwałach czasowych i zwykle zawierają informację o spodziewanej dacie publikacji następnej listy. Możliwe jest także wydanie nadzwyczajne w celu przyspieszenia zawiadomienia o fakcie ujawnienia klucza prywatnego.
Zaletą metody unieważniania za pomocą CRL jest możliwość rozprowadzania jej w dokładnie taki sam sposób, jak samych certyfikatów: poprzez dowolne systemy komunikacyjne i serwery. Wadą tej metody jest ograniczenie dokładności czasowej unieważnienia do częstotliwości wydawania CRL.
Inną metodą służącą do tego samego celu jest Online Certificate Status Protocol (OCSP), która ma tą przewagę, że sprawdza status certyfikatu w czasie rzeczywistym.
diceware
Metoda wybierania frazy hasła: za pomocą kości do gry losowo wybiera się słowa ze specjalnej listy (nazywanej Listą Słów Diceware - Diceware Word List)
The Diceware Passphrase Home Page, Piotr (DrFugazi): Diceware
dowód bez przekazywania informacji, dowód wiedzy zerowej (ang. zero knowledge proof)
W kryptografii oznacza metodę dowodzenia prawdziwości pewnego stwierdzenia drugiej stronie, tak, że nie zostaje ujawnione nic oprócz dowodzonego twierdzenia.
Przyjęło się określać stronę dowodzącą jako Peggy (z ang. prover) a drugą jako Victor (z ang. veifier), czasem P i V to Pat i Vanna.
Muszą zostać spełnione trzy warunki:
  • całkowitość (ang. completeness): jeśli twierdzenie jest prawdziwe uczciwy sprawdzający zostanie przekonany przez uczciwego dowodzącego
  • wiarygodność (ang. soundness): jeśli twierdzenie jest fałszywe, żaden oszukujący dowodzący nie może przekonać uczciwego sprawdzającego, że jest prawdziwe, lub jest to mało prawdopodobne
  • dyskrecja (ang. zero-knowledgeness): jeśli twierdzenie jest prawdziwe żaden oszukujący sprawdzający nie dowie się niczego poza tym faktem
Powszechnie stosowany w mechanizmach uwierzytelnienia, gdzie jedna strona chce dowieść swojej tożsamości poprzez przekazanie pewnej pufnej wiadomości (np. hasła) ale nie chce, żeby ktoś uzyskał dostęp do tej wiadomości.
Nie jest to dowód w sensie matematycznym, ponieważ istnieje pewne małe prawdopodobieństwo (zwany błędem wiarygodności), że oszukujący dowodzący będzie w stanie przekonać sprawdzającego do fałszywego stwierdzenia, istnieją jednakże standardowe techniki zmniejszające ten błąd do pewnej określonej, małej wartości.
Zero_knowledge_proof
E-Commerce
Komercyjna sfera internetu, różnego rodzaju instytucje finansowe, sklepy i banki internetowe.
FreeS/WAN
Najbardziej znana implementacja IPsec, już nie rozwijana.
Kontynuacją są projekty Openswan [www.openswan.org] i Strongswan [www.strongswan.org]
funkcja haszująca (ang. hash function)
Funkcja, która przyporządkowuje obiektom - zwykle łańcuchom znaków dowolnej długości - jakąś liczbę ze skończonego przedziału (tzw. hasz lub skrót).
Funkcja haszująca jest definiowana przez swoją dziedzinę (ciąg bajtów o dowolnej długości), swój przedział (sekwencja bitów o określonej długości) oraz funkcje definiującą (H); generalnie rzecz biorąc pożądana charakterystyka funkcji haszującej jest, że
H (x) =! H (y) więc x =! y oraz, że H (x) = H (y) prawdopodobnie implikuje, że x = y.
Niestety nie można mieć pewności co do tego, ponieważ skoro wartości H (x) jest dużo mniejsza od możliwych wartości x, co oznacza, że są takie x i y, które x ! = y, dla których H (x) = H (y) - sytuacja taka nazywana jest kolizją.
Najważniejszym wymaganiem wobec funkcji haszującej jest brak prostych zależności między obiektem a wartością jego hasha (nieodwracalność).
Dobra funkcja haszująca przy najdrobniejszej zmianie danych wejściowych zmienia około połowę bitów. Dzięki temu rzeczą niemal niemożliwą jest stworzenie dwóch różnych bloków danych dających taki sam rezultat - więc odnalezienie kolizji będzie wymagało ataku BF (co jest wymaganiem wobec każdego dobrego szyfru)
Funkcje haszujące mają wiele zastosowań:
  • buduje się za ich pomocą efektywne struktury danych (ułatwia wyszukiwanie takich samych plików - "hash tables")
  • używa się ich do weryfikacji poprawności przesyłu danych (wykrywanie zmian w pliku)
  • stosuje się je w kryptografii
Funkcje haszujące używane w kryptografii:
  • historyczne: MD2, MD4, SHA
  • współczesne: MD5, SHA1, RIPEMD
Wyraz "hash" w znaczeniu używanym w informatyce wywodzi się prawdopodobnie ze standardowego znaczenia "mieszanka pociętych kawałków"; Knuth zauważa, że H.P. Luhn pierwszy raz użył tego pojęcia w notatce ze stycznia 1953; termin "hash" wszedł w użycie jakieś 10 lat później.
Funkcja_haszująca, Hash_function
generator liczb pseudolosowych (ang. pseudo random number generator - PRNG)
Procedura generująca sekwencję wartości numerycznych wyglądającą na przypadkową, prawie nie do przewidzenia; najczęściej używa się to do tego tzw. ziarna (ang. seed), czyli czysto losowej wartości (np. pochodzącej ze zdarzeń systemowych), która następnie jest przetwarzana.
GPG (GNU Privacy Guard) [www.gnupg.org]
Darmowy i kompletny zamiennik PGP; program Free Software Foundation zgodny ze standardem OpenPGP opublikowany na licencji GPL, wspierany przez niemiecki rząd, częśc projektu GNU.
GnuPG wspiera następujące algorytmy: ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160, TIGER.
hasło (ang. password)
Tajny element używany do potwierdzenia tożsamości, najczęściej słowa, które łatwo jest zapamiętać. Z założenia znane jest tylko osobom, których tożsamośc ma potwierdzić. Klucz w postaci słowa.
hasło jednorazowe (ang. one time password - OTP)
Hasło, które może zostać użyte tylko raz, zwykle generowane przez sprzętowy token.
HTTPS (HyperText Transfer Protocol Secure)
Zaszyfrowana, bezpieczniejsza wersja protokołu HTTP - wynalazek firmy Netscape Communications używany powszechnie w E-Commerce.
Zamiast użycia w komunikacji klient-serwer czystego, niezaszyfrowanego tekstu stosuje się szyfrowanie SSL lub TLS. Dzięki uwierzytelnieniu i szyfrowaniu informacji zapobiega przechwytywaniu i zmienianiu przesyłanej informacji.
HTTPS działa na porcie nr 443.
Wywołania tego protokołu zaczynają się od https:, a zwykłego połączenia HTTP od http:.
Poziom zabezpieczenia zależy od poprawnosci implementacji w przegladarce i oprogramowaniu serwera oraz konkretnego zastosowanego algorytmu kryptograficznego.
Sam HTTPS nie zabezpiecza w pełni danych, które są przesyłane podczas transakcji - tylko szyfruje informacje pomiędzy klientem a serwerem, gdzie dane te są przechowywane w bazie danych - najczęściej właśnie ten serwer jest atakowany.
HTTPSHTTPS
IETF (Internet Engineering Task Force)
Powstałe w 1986 roku międzynarodowe stowarzyszenie osób zajmujące się tworzeniem standardów sieciowych. Chociaż nie posiada żadnej formalnej władzy publikowane przez nie dokumenty (o nazwie RFC) specyfikują stosowane w internecie standardy.
Dzieli się na wyspecjalizowane grupy robocze.
IETF
IETF (pl.), Internet_Engineering_Task_Force
IKE (Internet key exchange)
Protokół używany do ustanowienia bezpiecznych połączeń w zestawie protokołów IPsec. Jest obligatoryjną częscią standardu IPv6, oraz opcjonalną (tak samo jak cały IPsec) IPv4.
IKE jest zdefiniowany w RFC 2409. Używa mechanizmu wymiany kluczy Diffie-Hellmana do ustanowienia wspłdzielonego sekretu na czas sesji, z niego są tworzone klucze.
IPsec
Zbiór powiązanych ze sobą protokołów - opisanych w RFC 2401-2409 - które służą implementacji bezpiecznych połączeń oraz wymiany kluczy kodowych pomiędzy komputerami. Protokoły tej grupy mogą być wykorzystywane do tworzenia VPN (Virtual Private Network).
VPN oparta na IPsec składa się z dwóch kanałów komunikacyjnych pomiędzy połączonymi komputerami:
  • kanał wymiany kluczy za pośrednictwem którego przekazywane są dane związane z autentykacją oraz kodowaniem (klucze) - dawniej używano ESP i AH a obecnie jest zdefiniowany tylko jeden protokół wymiany kluczy (IKE)
  • kanału (jednego lub więcej), który niesie pakiety transmitowane poprzeć sieć prywatną - protokoły zabezpieczające przepływ pakietów
IPsec jest obligatoryjnym standardem IPv6 i opcjonalny dla IPv4, więc stanie się bardziej popularny po rozpowszechnieniu IPv6.
Protokoły IPsec operują na trzecim poziomie modelu OSI dzięki czemu mogą chronić protokoły oparte zarówno na zarówno TCP i UDP.
Implementacje:
IPsec (pl.), IPsec (eng.), www.ipsec.pl
KDF (Key Derivation Function)
Tworzy klucz na podstawie hasła wymyślonego przez użytkownika, poddając je wielokrotnym przekształceniom w celu utrudnienia ataku BF.
Key_derivation_function
Kerberos (Kerberos: The Network Authentication Protocol) [web.mit.edu/kerberos/www/]
Powstały w MIT (Massachusetts Institute of Technology) w celu ochrony usług sieciowych projektu Athena protokół uwierzytelniania obiektów w sieci komputerowej.
Pozwala na komunikację przez niezabezpieczoną sieć i potwierdzenia swojej tożsamości w bezpieczny sposób, zapobiega podsłuchiwaniu lub atakom przez powtórzenie (ang. replay attacks) i zapewnia integralność danych; zaprojektowany pierwotnie dla sieci klient-serwer i zapewnia wzajemne uwierzytelnienie - dotyczące zarówno użytkownik jak i usługi z której korzysta.
Korzysta z kryptografii asymetrycznej (oparty jest na protokole Needham-Schroeder) i wymaga zaufanej trzeciej strony, tzw. Key Distribution Center (KDC), który składa się z dwóch logicznie oddzielnych części Authentication Server (AS) i Ticket Granting Server (TGS). Tożsamość użytkowników potwierdzona jest za pomocą tzw. biletów (ang. tickets).
Kerberos używa bazy danych zawierających tajne klucze, każdy obiekt sieci - zarówno klient jak i serwer - współdzieli tajny klucz znany tylko sobie i serwerowi Kerberos, znajomość tego klucza używana jest do potwierdzenie tożsamości, dla komunikacji między obiektami Kerberos generuje klucz sesyjny używany do zabezpieczenia komunikacji
Kerberos_(protocol)
Key-agreement protocol
Protokół uzgodnienia wspólnego tajnego klucza używanego do zabezpieczenia komunikacji, użyty prawidłowo zabezpiecza przed wymuszeniem wyboru klucza przez trzecią stronę lub ujawnieniem go.
Pierwszym znanym publicznie mechanizmem tego typu był Diffie-Hellman key exchange, w którym dwóch ludzi wspólnie exponentiate generator przypadkowych liczb w taki sposób, że podsłuchiwacz nie miał możliwości odgadnięcia jaki klucz został wybrany.
Diffie-Hellman był rozwijany przez badaczy GCHQ, UK odpowiednika NSA. James Ellis udowodnił, że elementy tej techniki były znane w latach 60-tych a cała wymiana kluczy (Malcolm Williamson) we wczesnych latach 70. GCHQ nie zezwoliło na publikację, więc to Diffie and Hellman byli pierwszymi, którzy to opublikowali.
keysigning party
Metoda tworzenia i umacniania sieci zaufania PGP.
Spotkanie, którego uczestnicy wymieniają się odciskami palców (fingerprints) swoich podpisów PGP zapisanymi na papierze w czasie weyfikacji swojej tożsamości., żeby zmniejszyć możliwość podstępu, nie używa się ani komputerów, ani cyfrowych nośników pamięci.
Po keysigning party uczestnicy podpisują swoje klucze PGP, sprawdzając przedtem czy zgadzają się z otrzymanymi wcześniej skrótami.
GnuPG Keysigning Party HOWTOKeysigning_party
klucz (ang. key)
Informacja sprawiająca, że szyfr szyfruje informację w jednoznacznie określony sposób, konkretne klucze są zwykle związane z konkretną tożsamością.
Parametry określajace sposób działania algorytmu szyfrującego (np. para liczb w RSA, ciąg bitów w DES).
Im większa przestrzeń klucza tym trudniejszy jest atak BF.
klucz prywatny (ang. secret key)
W kryptografii asymetrycznej klucz służący do wykonywania zastrzeżonej czynności, którego rozpowszechnienie zagraża bezpieczeństwu systemu. Czynności te to najczęściej:
  • odszyfrowywanie (klucz publiczny szyfruje)
  • podpisywanie (klucz publiczny weryfikuje podpisy)
Nazwa ta jest też czasem używana dla klucza w kryptografii symetrycznej.
klucz publiczny (ang. public key)
W kryptografii asymetrycznej klucz umożliwiający wykonywanie czynności, dostępu do których nie chcemy ograniczać, i który z tego powodu może być dowolnie rozpowszechniany. Czynności te to w szczególności:
  • szyfrowanie (klucz prywatny służy do odszyfrowywania)
  • weryfikacja podpisu (klucz prywatny służy do podpisywania)
kolizja
Kolizja funkcji haszującej H to taka para różnych wiadomości m1, m2, że mają one taką samą wartość hasza, tj. H(m1) = H(m2).
Ponieważ funkcja haszująca zwraca skończenie wiele wartości, a przestrzeń argumentów jest nieskończona (w przypadku funkcji akceptujących dowolnie długie argumenty), lub przynajmniej znacznie większa od przestrzeni wyników, dla każdej funkcji haszującej jakieś kolizje istnieją.
W wielu zastosowaniach zależy nam na tym, żeby nie znana była żadna kolizja funkcji haszującej. Jest to jednak bardzo silne wymaganie i często zależy nam na słabszej właściwości funkcji (od silniejszych do słabszych właściwości):
  • niemożliwość łatwego generowania nowych kolizji
  • niemożliwość znalezienia, dla danego m1 takiego m2, że H(m1) = H(m2), czyli second preimage resistance
  • niemożliwość znalezienia, dla danego h takiego m, że H(m) = h, czyli preimage resistance
Kolizja(kryptografia), Hash_collision
kryptoanaliza (ang. cryptanalysis)
Dziedzina kryptologii zajmująca się łamaniem szyfrów i słabościami systemów kryptograficznych, badane są możliwości naruszenia wszystkich zakładanych cech bezpieczeństwa - ataki na protokoły, łamanie szyfrów, fałszowanie podpisów, naruszanie integralności wiadomości itd.; jest bardzo szybko rozwijającą się nauką i z zasady długość życia systemu kryptograficznego jest o wiele krótsza niż oczekiwali to jego autorzy.
Ważniejsze metody: brute force, kryptoanaliza liniowa, kryptoanaliza różnicowa, kryptoanaliza statystyczna.
kryptografia (ang. cryptography;z greckiego kryptós, "ukryty" i gráphein "pisać")
Dziedzina wiedzy zajmująca się zamianą (szyfrowaniem) informacji (w formie tekstu jawnego) w nieczytelną postać (szyfrogram).
Pierwsze znane użycie słowa kryptografia jest Sir Thomas Browne's Discourse z 1658 zatytułowane The Garden of Cyrus... "the strange Cryptography of Gaffarel in his Starrie Booke of Heaven".
kryptologia (ang. cryptology)
Dziedzina wiedzy o utajnianiu informacji; generalnie rzecz biorąc składa się ze steganografii kryptografii i kryptoanalizy.
kryptosystem
Konkretny szyfr.
kodowanie (ang. coding)
Zamiana jednego ciągu znaków na drugi.
LAN (Local Area Network)
Lokalna sieć komputerowa.
łamanie haseł (ang. password cracking)
Proces odzyskiwania haseł, może służyć użytkownikowi do odzyskania zapomnianego hasła, włamywaczowi do przejęcia kontroli nad zasobami oraz administratorowi do prewencyjnego testowania siły haseł wybieranych przez użytkowników. Stosowane techniki: SE, podsłuchiwanie, keyloggery, fałszywe terminale logowania itp.
Popularne programy (uwaga: nieostrożne używanie technik lub programów służących do łamania haseł może spowodować problemy prawne):
Password_cracking
MAC (Message Authentication Codes)
Podobny do funkcji haszujących, ale do wyliczenia haszu używany jest klucz. Jak sama nazwa wskazuje jest powszechnie stosowany do uwierzytelniania wiadomości.
Algorytm MAC (keyed hash function) przyjmuje tajny klucz i wiadomość a potem wytwarza MAC (tzw. znacznik - tag). MAC:
  • chroni integralność wiadomości poprzez zapewnienie, że jeśli wiadomość zostanie zmieniona zmieni się MAC
  • zapewnia uwierzytelnienie, bo tylko ktoś kto zna tajny klucz może wygenerować poprawny MAC
Allgorytmy MAC stworzone są z innych krypograficznych składników, takich jak funkcje mieszające (w przypadku HMAC) lub algorytmów szyfrów blokowych (OMAC i PMAC).
model OSI
Model komunikacji sieciowej.
Składa się z warstw:
  • górnych:
    • aplikacji: użytkownik odbiera i wysyła dane
    • prezentacji: w ruchu w dół przetwarza dane do postaci kanonicznej wymaganej, w górę usuwa niepotrzebne dane związane z protokołami sieciowymi
    • sesji: łaczy procesy użytkownika
  • dolnych
    • transportowa: szereguje dane i dba o poprawność przesyłu
    • sieciowa: jest odpowiedzialna tylko za drogę przesyłania danych
    • łącza danych: zarządza parametrami warstwy fizycznej by zapewnić najlepszą jakość transmisji
    • fizyczna: sprzęt
Model_OSI (pl.), OSI_model (ang.)
niezaprzeczalność (ang. non-repudiation)
Jedno z zadań kryptografii asymetrycznej - zapewnienie dowodu, że nastąpiło pewne działanie (np. odebranie lub wysłanie wiadomości).
odcisk palca (ang. fingerprint)
Skrót podpisu PGP, efekt działania funkcji haszującej.
OpenPGP
Opublikowany standard (RFC 2440) programu kryptograficznego powstały by zapewnić interoperacyjność pomiędzy programami i wtyczkami.
Używany przez PGP, GNU Privacy Guard (GnuPG), Hushmail, Veridis i innych; powstał z powodu szerokiego użycia PGP aby standard kryptograficzny stał się własnością wspólnoty.
OpenSSH [openssh.com]
Zintegrowany zestaw aplikacji powstały w ramach projektu OpenBSD - udostępniana na wolnej licencji implementacja SSH.
OTP (One Time Pad)
Szyfr, w którym jeden bit nowego, czysto przypadkowego klucza jest używany dla każdego bitu zaszyfrowanych danych.
Teoretycznie nie do złamania, ale bardzo trudny w implementacji.
One-time_pad
paradoks dnia urodzin
Paradoks - w sensie niezgodności intuicją - polegający na tym, że np. dla przypadkowego zbioru 23 osób prawdopodobieństwo, że dwie z nich mają urodziny w tym samym dniu wynosi trochę ponad 50%, a dla 60 aż 99%.
Jest to jeden z klasycznych problemów rachunku prawdopodobieństwa i ma duże znaczenie w kryptografii: np. jeśli funkcje haszujące zwracają 2k możliwych odpowiedzi, to znalezienie kolizji czyli takiego m1 i m2, że H(m1) = H(m2) wymaga sprawdzenia jedynie 2k/2 możliwości.
Birthday_paradox, Paradoks_dnia_urodzin
PGP (Pretty Good Privacy)
Program autorstwa Phil Zimmermanna zapewniający kryptograficzną prywatnośc i uwierzytelnienie, w różnych swoich wersjach najczęściej używany system kryptograficzny na świecie, najbardziej zaawansowane z popularnych rozwiązań.
Powstał w 1991; nazwa nawiązuje do znanego z programu radiowego sklepu spożywczego (artykuły kolonialne - grocery) o nazwie Ralph's Pretty Good Grocery, którego sloganem było, "jeśli nie znalazłeś tego u Ralfa, najpewniej możesz się bez tego obyć".
Wpływ PGP był tak duży, że stał się podstawą dla stworzenia standardu IETF - OpenPGP.
PKC (Public Key Certificate)
Cyfrowy certyfikat jednoznacznie wiążący tożsamość elementu systemu z wartością klucza publicznego i - najczęściej - dodatkowymi informacjami. Podpisana cyfrowo struktura danych poświadczająca kto jest właścicielem klucza publicznego.
PKCS (Public Key Cryptography Standards)
Specyfikacje pochodzące z współpracy RSA Laboratories i specjalistów z całego świata mające na celu popularyzację kryptografii asymetrycznej. Opublikowane po raz pierwszy w 1991 dokumenty PKCS mają wiele referencji i implementacji.
Z prac nad PKCS wyłoniło się wiele standardów (formalnych jak i de facto), najbardziej znane to S/MIME i SSL.
RSA Security - PKCS
PKI (Public Key Infrastructure)
Infrastruktura Klucza Publicznego - system składający się z jednostek (pełniących różną rolę serwerów, agentów), które używają podpisów cyfrowych; zestaw sprzętu, oprogramowania, ludzi, polityk i procedur potrzebnych do tworzenia, zarządzania, przechowywania, dystrybucji i odwoływania podpisów cyfrowych opartych na kryptografii asymetrycznej.
Najwazniejsze funkcje PKI to:
  • rejestracja użytkowników i wystawianie podpisów cyfrowych
  • odwoływanie podpisów
  • archiwizacja danych nezbędnych do sprawdzenia poprawności podpisów
podpis cyfrowy (ang. digital signature)
Dodatkowa informacja dołączona do wiadomości służąca do weryfikacji jej źródła i (lub) integralności.
Podpisy cyfrowe korzystają z kryptografii asymetrycznej - tworzona jest para kluczy, klucz prywatny i klucz publiczny - klucz prywatny służy do podpisywania wiadomości, klucz publiczny natomiast do weryfikowania podpisu.
Zwykle rezultat haszu kryptograficznego; wartość danych wygenerowana przez algorytm klucza publicznego oparta na zawartości skrótu bloku danych.
Najważniejszymi kryptosystemami umożliwiającymi podpisywanie cyfrowe są RSA, ElGamal i DSA.
Najpopularniejsze standardy pozwalające na złożenie podpisu elektronicznego to X.509 oraz PGP
protokół kryptograficzny (ang. cryptographic protocol)
Opis lub konkretny protokół realizujący funkcje związane z bezpieczeństwem i stosuje metody kryptograficzne, najbardziej rozpowszechnione protokoły kryptograficzne zabezpieczają transport danych na poziomie aplikacji i zwykle posiadają następujące możliwości:
  • uwierzytelnienie uczestnika
  • symetryczne szyfrowanie i uwierzytelnienie wiadomości
  • zabezpieczone przesyłania danych na poziomie aplikacji
  • mechanizmy niezaprzeczalności
Na przykład: TLS jest protokołem zabezpieczającym połączenia HTTP, ma mechanizmy uwierzytelnienia jednostki, oparte na systemie X.509, fazę ustanowienia klucza, gdzie szyfrowanie symetryczne jest zapoczątkowane przy pomocy kryptografii asymetrycznej i funkcje transportu danych na poziomie aplikacji; wszystkie te trzy aspekty są połączone. Standard TLS nie wspiera niezaprzeczalności.
Cryptographic_protocol
przestrzeń klucza (ang. keyspace)
Zbiór wszystkich możliwych kombinacji dla danego rodzaju klucza. Im większa tym trudniejszy atak BF.
RFC (Requests for Comments)
Numerowane dokumenty powstałe w wyniku prac IETF, chociaż nie mają mocy prawnej wiele z nich jest oficjalnym opisem obowiązujących standardów.
RFC (pl.), Request_for_Comments
russian copulation - jak to przetłumaczyć ;-)
Przygotowanie jawnego tekstu przed zaszyfrowaniem, takie, żeby utrudnić odnalezienie regularności w kryptogramach.
SASL (Simple Authentication and Security Layer)
Protokół uwierzytelnienia użytkownika, najczęściej używany w połączeniach SMTP.
sieć zaufania (ang. web of trust)
Mechanizm potwierdzania poprawności kluczy PGP, zdecentralizowany - w przeciwieństwie do scentralizowanego PKI - i elastyczny, decyzje o zaufaniu do konkretnego podpisu pozostawia w rękach użytkownika. Polega na systemie wzajemnie potwierdających poprawność swoich podpisów użytkowników, np. jeśli trzech częściowo zaufanych lub jeden w pełni zaufany użytkownik potwierdzi poprawność (przynależność klucza do osoby) klucz uznany jest za poprawny.
Ważną metodą tworzenia sieci zaufania są keysigning parties.
Explanation of the web of trust of PGPWeb_of_trust
S/MIME (Secure / Multipurpose Internet Mail Extensions)
Standard szyfrowania kluczem publicznym i podpisywania e-maili kapsulkowanych w MIME; jest podobny choć niekompatybilny z OpenPGP i starszym PGP/MIME.
Zapewnia podpis cyfrowy, sprawdzanie integralności i niezaprzeczalność z dowodem pochodzenia oraz szyfrowanie. Umożliwia także zastosowanie kompresji.
S/MIME
snifer (ang. sniffer)
Program służący do analizy ruchu sieciowego, przez przechwytywanie, rejestrowanie i analizowanie pakietów przepływających w sieci. Narzędzie diagnostyczne używane przez administratorów sieci jak i również przez włamywaczy; może służyć również zwykłym użytkownikom do sprawdzenia czy i w jaki sposób działa szyfrowany kanał komunikacji.
Nazwa po polsku oznacza węszyciel i prawdopodobnie pochodzi od komercyjnego programu Sniffer (produkcji Network Associates, Inc.).
Packet_sniffer (eng.), Sniffer (pl.)
.:[ packet storm ]:., insecure.org: Top 75 Security Tools
Przykładowe sniffery (uwaga: nieostrożne użycie może spowodować problemy prawne):
sól (ang. salt)
Arbitralna wartość składająca się z przypadkowych bitów (najczęściej 12 lub więcej), unikalna dla konkretnego użytkownika, dołączona do hasła przed uwierzytelnieniem hasza, oznacza to, że to samo hasło da inny rezultat haszu co utrudni atak słownikowy; osłabia to siłę działania polegającego na uprzednim przygotowaniu i przechowaniu haszy z popularnych haseł, sól ukrywa także używanie tego samego hasła na różnych systemach.
Salt_(cryptography)
SSH (Secure Shell)
Protokół służący do utworzenia tunelu między dwoma obiektami w niezabezpieczonej sieci; najczęściej używany do przeprowadzenia operacji na zdalnym komputerze.
SSL (Secure Sockets Layer) i TLS (Transport Layer Security)
Protokoły zapewniające szyfrowaną łączność, uwierzytelnienie uczestników komunikacji i weryfikację integralności wiadomości działające na poziomie TCP dzięki czemu są przezroczyste dla warstwy aplikacji. Mogą być użyte do zabezpieczenia dowolnych protokołów warstwy aplikacyjnej, najczęściej służą do tworzenia bezpiecznego kanału WWW (HTTPS) lub ochrony przesyłanych haseł (email).
suma kontrolna (ang. checksum)
Wczesna i prosta forma wykrywania błedów w kodzie. najczęściej podsumowanie wartości danych w rejestrze o pewnej uzasadnionej wielkości, np. 16 bitów, niestety powiększanie tej wielkości nie polepsza metody.
Bardziej zaawansowane formy sum kontrolnych używają zarówno wartości danych jak i ich pozycji.
szyfr (ang. cipher)
Składająca się z pewnej liczby przekształceń procedura zamieniająca jawny tekst w szyfrogram (i na odwrót); algorytm kryptograficzny.
  • każdy system używający szyfrowania - system szyfrowy
  • w ogólności wybrana kluczem tajna transformacja pomiędzy jawnym tekstem a szyfrogramem
  • w szczególności tajny mechanizm lub proces który operuje na pojedynczych znakach lub bitach niezależnie od ich znaczenia (w przeciwieństwie do tajnego kodu - który operuje na słowach wyrażeniach lub sformułowaniach, które przenoszą częśc znaczenia).
szyfr asymetryczny (ang. asymmetric cryptography)
Szyfr klucza publicznego - szyfr używający innych kluczy do szyfrowania i innych do odszyfrowania danych; najczęściej jest to uzupełniająca się para kluczy: publiczny do szyfrowania i prywatny do odszyfrowania (chociaż każdy z nich może zostać użyty do szyfrowania i odszyfrowania)
Niestety szyfr klucza publicznego jest bardzo powolny, dlatego większość tzw. "szyfrów klucza publicznego" jest systemami hybrydowymi mającymi zarówno składniki szyfru asymetrycznego jak i symetrycznego, w systemach hybrydowych część asymetryczna jest używana tylko do zapewnienia klucza wiadomości sesyjnego dla szyfru symetrycznego, który tak naprawdę jest używany do ochrony danych
Rzeczywista przestrzeń klucza publicznego takiego jak RSA jest dużo mniejsza niż mogłoby się to wydawać, 1000-bitowy komponent klucza publicznego ma siłę porównywalną z 80-bitowym kluczem tajnym, ta olbrzymie obniżenie słabości wynika z wymagania szyfrów asymetrycznych by ich klucze były w szczególnej i rzadkiej formie, większość możliwych wartości wielkości klucza publicznego nie jest akceptowalna jako klucze
Popularne szyfry asymetryczne to RSA i ElGamal.
szyfr jednostronny (ang. one-way cryptography)
Używający funkcji haszującej szyfr nieodwracalnie przekształcający jawny tekst w szyfrogram (skrót).
szyfr oparty na krzywej eliptycznej (ECC - Elliptic Curve Cryptography)
Wynaleziona w 1985 niezależnie przez Neala Koblitza i Victora Millera metoda tworzenia szyfrów oparta na matematyce krzywych eliptycznych, zwolennicy tego rozwiązania twierdzą, że może tworzyć szybsze i mniejsze klucze zapewniające takie samo bezpieczeństwo jak starsze metody (jak np. RSA).
The Basics of ECC, Elliptic_curve_cryptography, Primer on elliptical curve cryptography
szyfr symetryczny (ang. symmetric cryptography)
Szyfr tajnego klucza - szyfr uzywjący tego samego klucza do szyfrowania i odszyfrowania danych; czasem też nazywany szyfrem klucza prywatnego, jednego klucza lub pojedynczego klucza.
Szyfry symetryczne dzielą się na:
  • blokowe - szyfrują dane podzielone na grupy bitów (tzw. bloki) o określonej długości w jednym przebiegu (DES, IDEA i AES)
  • strumieniowe - szyfrują na raz jeden bit (RC4)
Popularne szyfry symetryczne to m.in.: AES, Blowfish, DES i jego odmiany 3DES, DESX, IDEA
szyfrogram (kryptogram) (ang. ciphertext)
Informacja po przekształceniu za pomocą szyfru, co ma na celu zabezpieczenie oryginalnej informacji przed odczytaniem w czasie transportu lub przechowywania.
Kryptografia ukrywa informację zmieniając jawną postać w jeden z licznych możliwych szyfrogramów wybrany kluczem. Efekt działania szyfru (szyfrogram) może być także widziany jako kod, który ma wiele możliwych postaci jawnego tekstu. Celem kryptografii jest było niewykonalne wiedzieć którą wersję jawnego tektu reprezentuje szyfrogram bez znajomości klucza.
tekst jawny (ang. plaintext)
Informacja w oryginalnej postaci, przed zaszyfrowaniem; najczęściej oznacza czytelną formę danych, ale mogą to być również np. dane w postaci binarnej.
token (ang. token)
Urządzenie lub program generujące jednorazowe hasła w celu potwierdzające tożsamość użytkownika.
uwierzytelnienie (ang. authentication)
Jeden z celów kryptografii. Najczęściej: zapewnienie, że wiadomość została wysłana przez konkretnego autora, jest to uwierzytelnienie wiadomości, czasem dotyczy też zapewnienia integralności wiadomości.
Inną formą są uwierzytelnienie indywidualnych bloków (dla transmisji danych) lub kluczy publicznych.
VPN (Virtual Private Network)
Tworzona przy pomocy tuneli sieć zabezpieczonej komunikacji pomiędzy obiektami w niezabezpieczonej sieci.
Testowanie sieci SSL VPNVirtual Private Network, Virtual_private_networkPoptop - The PPTP Server for Linux MPPE/MPPC kernel module for Linux Cryptanalysis of Microsoft's Point-to-Point Tunneling Protocol (PPTP) Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2) OpenVPN(TM)
WAN (Wide Area Network)
Rozległa sieć komputerowa.
X.509
Format podpisu cyfrowego, pełniący kluczową rolę w PKI. Zgodnie z nim sa zbudowane certyfikaty SSL.
ziarno (ang. seed)
Losowa wartość uzyskana najczęściej ze zdarzeń systemowych (lub ze sprzętowego generatora) używana przez generator liczb pseudolosowych.

Algorytmy

symetryczne
Blowfish
Blowfish to szyfr blokowy stworzony przez Bruce'a Schneier'a w 1993 roku jako szybka i bezpłatna alternatywa dla istniejących ówcześnie algorytmów. Algorytm operuje na 64-bitowych blokach i używa kluczy od 32 do 448 bitów.
Algorytm ma postać szyfru Feistela z 16 rundami z SBOXami zależnymi od klucza. Każda zmiana klucza wymaga dość sporej ilości wstępnych obliczeń, żeby ustalić SBOXy. Z tego powodu atak BF trwa znacznie dłużej niż możnaby się spodziewać.
Blowfish_(cipher), Blowfish_(kryptografia)
DES (Data Encryption Standard)
Opracowany przez IBM w latach 1976-2001 standardowy algorytm szyfrujący używany przez rząd amerykański DES (ang. Data Encryption Standard - Standard Szyfrowania Danych) - szeroko używany algorytm kryptograficzny. Stworzony przez IBM na podstawie szyfru Lucifer, został zmodyfikowany przez amerykańską NSA. Zaakceptowany jako amerykański standard w roku 1977.
64-bitowy blok szyfru z 56-bitowym kluczem 16 razy przetwarzany.
Obecnie uznawany za zbyt słaby szyfr, głównie ze względu na zbyt mały rozmiar klucza, który był już łamany w czasie poniżej 24 godzin
DES (.ang)DES (.pl)
3DES (Triple DES)
ulepszony DES 3DES to algorytm polegający na zakodowaniu wiadomości DESem trzy razy: kodujemy pierwszym kluczem, dekodujemy drugim kluczem, kodujemy trzecim kluczem (użycie dekodowania jako drugiej fazy nie wpływa na siłę algorytmu (dekodowanie w DESie jest identyczne jak kodowanie, tylko ma odwróconą kolejność rund), ale umożliwia używania 3DESa w trybie kompatybilności z DESem - za klucz pierwszy i drugi, lub drugi i trzeci przyjmujemy dowolny taki sam klucz, a za ostatni zwykły klucz DESowski; 3DES używa takich samych rozmiarów bloków oraz trybów jak zwykły DES. Siła 3DESa jest tylko dwukrotnie, nie trzykrotnie większa od siły zwykłego DESa, ze względu na atak MITM
AES (Advanced Encryption Standard - Rijandel)
symetryczny szyfr blokowy przyjęty przez NIST w wyniku konkursu ogłoszonego w roku 1997. Bezpośrednią przyczyną rozpisania konkursu była niewystarczająca siła algorytmu DES. Konkurs wygrał algorytm Rijndael. Możliwe jest w nim użycie kluczy o długościach 128, 192 i 256 bitów, i operuje on na blokach danych o długości 128 bitów (oryginalna specyfikacja Rijndael dopuszczała również bloki 192 i 256 bitowe).
AES wykonuje 10, 12 lub 14 (w zależnosci od długości klucza) rund szyfrujących podstawienie-permutacja, składających się z substytucji wstępnej, permutacji macierzowej (mieszanie wierszy, mieszanie kolumn), modyfikacji za pomocą klucza, przy czym funkcja substytucyjna ma bardzo oryginalną konstrukcję uodparniającą na znane ataki kryptoanalizy różnicowej i liniowej.
Autorami są dwaj belgijscy kryptografowie Joan Daemen i Vincent Rijmen (stad nazwa Rijndael)
Jest szybki i łatwy w implementacji, wymaga niewiele pamięci i jest wolny od problemów licencyjnych - dlatego obecnie jest powszechnie stosowany.
AES (.ang)
IDEA (International Data Encryption Algorithm)
Symetryczny szyfr blokowy operujący na 64-bitowych blokach wiadomości i mający 128-bitowy klucz opracowany w ETH w Zurychu).
IDEA jest objęta patentem w USA i Europie, jest dostępna do darmowego użytku tylko w celach niekomercyjnych.
Ze względów patentowych oraz ze względu na powstanie lepszych algorytmów (AES) i postępy w kryptoanalizie IDEA znacznie straciła na popularności, choć nie została nigdy złamana. Obecnie nie ma już powodów do stosowania tego szyfru, są lepsze i pozbawione komplikacji patentowych.
IDEA (.ang)
RC5
Bardzo szybki i prosty algorytm autorstwa Ronalda Rivesta (MIT) - powstał w 1994.
Rozmiar bloku, ilość rund i długość klucza może być dostosowywana do potrzeb.
asymetryczne
Diffie-Hellman
Protokół uzgadniania kluczy Diffie'ego-Hellmana to protokół kryptograficzny, w którym dwie strony mogą wylosować pewną liczbę (tajny klucz), taką, że obie strony po wykonaniu protokołu będą ją znały, za to nie będzie jej znał nikt z podsłuchujących wymianę wiadomości. Liczba ta może być potem używana jako klucz symetryczny do szyfrowania komunikacji.
Protokół nie zabezpiecza przed ingerencjami w komunikację (atak MITM, jedynie przed pasywnym podsłuchem. Dlatego należy go uzupełnić o zabezpieczenia przed atakiem aktywnym.
Była to pierwsza praktyczna metoda ustanowienia wspólnej tajemnicy przez niechroniony kanał komunikacji.
Szyfr złamany w 1980. Patent wygasł.
Diffie-Hellman (.ang)
ElGamal
ElGamal to jeden z dwóch najważniejszych systemów kryptografii asymetrycznej (drugim jest RSA).
ElGamal zapewnia szyfrowanie oraz podpisy cyfrowe. Wiele modyfikacji ElGamala (podobnie jak z modyfikacjami RSA) zapewnia różne inne usługi.
Autor: Taher ElGamal
Używany w GPG, obecnych wersjach PGP i innych kryptosystemach;
ElGamal_encryption (.ang)
RSA
RSA to pierwszy i obecnie jeden z dwóch najpopularniejszych (obok ElGamal) systemów kryptografii asymetrycznej. Stworzony w roku 1978 przez zespół: Ronald Rivest, Adi Shamir, Leonard Adelman (wówczas pracowników MIT). RSA jest akronimem utworzonym z pierwszych liter nazwisk jego twórców. Pierwszy główny system klucza publicznego.
Trudność RSA opiera się na trudności faktoryzacji dużych liczb - znalezienie szybkiej metody faktoryzacji doprowadziłoby do złamania RSA, aczkolwiek nie ma dowodu, że nie da się złamać RSA w inny sposób. Klucz RSA musi być około 10 razy większy od klucza tajnego by zapewnić podobne bezpieczeństwo.
Patent MIT w USA (1983) wygasł we wrześniu 2000, gdzie indziej nie jest możliwe jego opatentowanie.
Dużo wolniejszy od DES i innych szyfrów symetrycznych, więc najczęściej Bob szyfruje tajną wiadomość algorytmem symetrycznym, tajny klucz (relatywnie krótki) szyfruje RSA i przesyła zarówno zaszyfrowany RSA klucz symetryczny jak i zaszyfrowaną nim wiadomość do Alice. Ta procedura wymaga użycia silnego generatora liczb przypadkowych dla klucza symetrycznego, ponieważ w przeciwnym wypadku Eve będzie mogła ominąć RSA zgadując klucz symetryczny.
Podatny na MITM
Zasada działania: dwie liczby pierwsze (p i q) są podstawą dla wyznaczenia wartości n i e.
  • n to iloczyn p i q (n=pq)
  • e to liczba względnie pierwsza (czyli nie mająca wspólnych podzielników oprócz 1) do iloczynu (p-1)(q-1) mniejsza od n
  • klucz publiczny to wartości(n, d) a prywatny (n, d)
RSA jest trudny do złamania pod warunkiem użycia dużych liczb pierwszych, w praktyce wybierane są liczby prawdopodobnie pierwsze (duże losowe, nieparzyste liczby na których przeprowadza sie testy mające wykluczyć parzystość)
  • szyfrowanie - uzyskanie wiadomości c z tekstu m - c=memod n (mod - dzielenie modulo)
  • odszyfrowanie - m=cd mod n
  • sygnatura s na wiadomości m - s=md mod n
  • sprawdzenie autentyczności podpisu s - obliczenie wartości se mod n (jeśli wynikiem jest wiadomość m podpis jest prawidłowy)
RSA (.ang), RSA_(kryptografia)
DSA
DSA chociaż jest tylko mechanizmem uwierzytelnienia i nie zapewnia szyfrowania jest bardzo podobny do ElGamal
jednostronne
MD5 (Message-Digest algorithm 5)
Popularny algorytm haszujący, który z dowolnego ciągu danych generuje 128-bitowy skrót; opracowany przez Ronalda Rivesta w 1991 roku. W roku 2004 stwierdzono istotne braki w poziomie bezpieczeństwa, co prawdopodobnie może spowodować rezygnację z tego algorytmu na korzyść silniejszych (np. SHA-1 lub RIPEMD-160)
Obliczany jest kolejno hasz z każdego bloku w łańcuchu (z dodaniem początkowego initial seed dla pierwszego), wartość ziarna z ostatniego bloku jest haszem całego łańcucha. Poprzednikiem był algorytm - MD4 -, który w wyniku analizy przeprowadzonej przez Hansa Dobbertina okazał się zbyt mało bezpieczny.
Ataki na MD5:
  • w 1996 roku Dobbertin zaprezentował analizę kolizji funkcji haszującej algorytmu MD5 - nie był to jeszcze pełny atak na funkcję haszującą to jednak wystarczył, aby specjaliści w dziedzinie kryptografii zaczęli stosować silniejsze odpowiedniki
  • w marcu 2004 roku powstał rozproszony projekt nazywany MD5CRK - twórcą projektu był Jean-Luc Cooke i jego współpracownicy - miał on na celu wykazanie, że możliwe jest takie spreparowanie drugiej wiadomości na podstawie wiadomości wyjściowej aby obie dały ten sam skrót; używając internetu wykazano, że dysponując bardzo dużą mocą obliczeniową możliwe jest podrabianie generowanych podpisów.
  • 17 sierpnia 2004 chińscy naukowcy (Xiaoyun Wang, Dengguo Fen, Xuejia Lai i Hongbo Yu) opublikowali analityczny algorytm ataku, dzięki któremu do podrobienia podpisu wystarczyła godznia działania klastrowego komputera IBM P690; [1] PDF, [2] PDF. [note that Wang et al's attack is a collision attack and not a preimage attack]
128 bitów jest uważane za zbyt mało, żeby zabezpieczyć przed kolizjami, dlatego do większości zastosowań lepiej jest używać funkcji zwracającej co najmniej 160 bitów.
Sprawdzanie integralności: skrót MD5 jest często stosowany przy dystrybucji oprogramowania dla zapewnienia, że sprowadzony z internetu plik nie został zmieniony - dzięki porównaniu opublikowanego skrótu z sumą kontrolną sprowadzonego pliku można było upewnić się, że jest to ten sam plik, który opublikowali programiści; chroniło to nie tylko przed podmianą ale także przez zwykłym popsuciem pliku w czasie transferu lub niekompletnym transferem., żeby zweryfikować integralność plików należy sprowadzić plik MD5SUM do tego samego katalogu co sprawdzany plik i użyć programu MD5 (w systemach uniksowych polecenie md5sum).
SHA (Secure Hash Algorithm)
Rodzina powiązanych ze sobą funkcji haszujących zaprojektowanych przez NSA (National Security Agency) i publikowanych przez NIST (National Institute of Standards and Technology).
Pierwszy z nich opublikowany w 1993 oficjalnie nazwany SHA (nieoficjalnie, żeby nie pomylić z następcami określany jako SHA-0).
SHA-1 opublikowany został w 1995 i całkowicie zastąpił wycofanego (ze względu na nieujawnione oficjalnie wady) z użytku SHA-0. Potem od 2001 powstały cztery następne warianty określane jako SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512).
W 2004 zgłoszono udane ataki na funkcje haszujące mające strukturę podobną do SHA-1 co podniosło kwestię długotrwałego bezpieczeństwa SHA-1. NIST ogłosił, że do 2010 zaprzestanie stosować SHA-1 na rzecz róźnych wariantów SHA-2.
SHA-0 i SHA-1 tworzą 160-bitowy skrót z wiadomości o maksymalnym rozmiarze 264 bity i jest oparty o podobne zasady co MD5.
Podstawowym celem publikacji SHA był Standard Podpisu Cyfrowego (Digital Signature Standard), którego SHA był częścią.
SHA jest podstawą szyfru blokowego SHACAL.
Cały mechanizm ochrony przed nielegalnym kopiowaniem microsoftowego Xboksa zależy od bezpieczeństwa SHA-1 jeśli zostanie przeprowadzony skuteczny atak wykorzystujący przeciwobraz (Image_(mathematics)) będzie możliwe dowolne kopiowanie gier bez pomocy modchipa.
SHA

Ataki

brute force BF
(atak siłowy; atak pełnego przeglądu) najprostsza forma ataku polegająca na wypróbowaniu wszystkich dających się przewidzieć możliwości aż do osiągnięcia sukcesu, czyli odzyskania jawnego tekstu, z którego powstał szyfrogram; przeszukanie całej przestrzeni klucza ("keyspace"). W większości przypadków odzyskanie jawnego tekstu nie jest równoważne ze złamaniem szyfru (czyli nie jest metodą odzyskania jawnych tekstów wszystkich szyfrogramów), zakończony sukcesem atak BF po prostu dostarcza jawne teksty zaszyfrowane konkretnym kluczem, chociaż może zapewnić wskazówki do dalszej kryptoanalizy.
Generalnie rzecz biorąc szyfr uważany jest za bezpieczny jeśli nie ma mniej kosztownych (w czasie , mocy obliczeniowej itp.) metod niż BF; Claude Shannon określił to terminem "work factor". Chociaż nie zostało to dowiedzione matematycznie dla żadnego innego szyfru niż one time pad, możliwe iż szyfr uznany dzisiaj za dobry, w przyszłości, może się kazać niebezpieczny w przyszłosci.
Jeśli klucze były wybrane naprawdę losowo, lub są przeszukiwane losowo, jawny tekst będzie dostępny przeciętnie po połowie wszystkich wypróbowanych kluczy. Założeniem leżącym u podstaw BF jest oczywiście, że algorytm szyfru jest znany.
Auguste Kerckhoffs wyraził to po raz pierwszy - podstawową zasadą kryptografii jest, że bezpieczeństwo w całości musi być zawarte w kluczu ("security must reside only in the key"), w czasach WWII Shannon wyraził to w stwierdzeniu "wróg zna system" ('the enemy knows the system'). Ze względu na dużą ilość dobrze rozpoznanych szyfrów, których szczegóły projektowe stały się z różnych powodów znane, była to doskonała rada dla kryptografów. Jednakże tylko kilka krajów opublikowało algorytmy, używane do ochrony tajemnic państwowych.
  • Algorytmy symetryczne
    Od 2002 szyfry symetryczne uzywające kluczy o długości poniżej 64 bitów były bardziej lub mniej podatne na atak BF; np. DES powszechnie używany szyfr używający 56-bitowego klucza został złamany przez EFF w 1998, a później został złamany RC5 (używający klucza 64-bitowego). Powszechnie się uważa, że mające duże środki organizacje takie jak NSA mogą bez przeszkód atakować 64-bitowe klucze brute forcem. Dla aplikacji wymagajacych długotrwałego bezpieczeństwa uważa się, że rozsądne minimum długości klucza jest 128-bitów, a dla istniejących systemów przynajmniej 90-bitowe klucze uważane są za nadal bezpieczne. NIST rekomenduje wycofanie do 2015 roku 80-bitowych projektów.
    Ale nawet jeśli używane są 128-bitowe lub dłuższe klucze dobrze zaprojektowanych szyfrów (jak AES), możliwy jest atak BF jeśli klucze nie zostały wygenerowane we właściwy sposób. Wiele programów komercyjnych (lub na licencji shareware) dumnie reklamuje "128-bitowe bezpieczeństwo" kluczy wygenerowanych przy pomocy wymyślonych przez użytkownika haseł. Ponieważ użytkownicy rzadko używają kluczy choćby zbliżonych do 128 bitowej entropii te systemy są w praktyce całkiem łatwe do złamania. Niektóre produkty nawet ograniczają maksymalną liczbę znaków jaką użytkownik może wprowadzić do długości poniżej właściwej frazy hasła. Oto przykłady haseł lub frazy haseł, które moga zapewnić 128-bitowe bezpieczeństwo jeśli są wytworzone przypadkowo i trzymane w tajemnicy:
    • litery jednakowej wielkości (potrzebne 28 znaków): sqrnf oikas ocmpe vflte krbqa jwf
    • litery różnych wielkości, numery i znaki specjalne (potrzebne 20 znaków): iTb.\ /&/-} it/P; ^+22q
    • fraza hasła wygenerowana przy pomocy diceware (potrzebne 10 słów): serf bare gd jab weld hum jf sheet gallop neve
    Prawie nikt nie używa haseł tej złożoności, jednym rozwiazaniem jest zaakceptowanie mniejszej siły, 16 literowe lub 6 słów diceware zapewnia 75-bitowe bezpieczeństwo, wystarczające do ochrony przed najpotężniejszymi agencjami kryptoanalitycznymi.
    Częściowym rozwiązaniem jest użycie KDF (Key Derivation Function), które przetwarza hasło w klucz za pomocą serii przekształceń matematycznych, co znacznie utrudnia atak BF. W praktyce ta technika dodaje 10 do 20 bitów siły do hasła, dostatecznie by można było używać łatwych do zrozumienia haseł, ale zbyt mało by zapezpieczyć krótkie hasła jakie używa większość ludzi. Niestety niewiele produktów bezpieczeństwa używa tej technologii.
    Być może najlepszym rozwiązaniem jest przechowywanie losowo generowanych haseł o pełnej mocy w zabezpieczonym przed sfałszowaniem tokenie, chronionym wewnętrznie przez hasło lub PIN.
  • Algorytmy asymetryczne
    Jeśli chodzi o algorytmy asymetryczne sytuacja jest bardziej skomplikowana i zależy od konkretnego algorytmu szyfrowania. Np. obecnie łamliwa długość klucza RSA jest do 512 bitów a rozwój badań sugeruje, że 1024 bitowy może być łamliwy w bliższym lub średnim okresie. Dla większości szyfrów opartych o eliptyczną krzywą (ECC) największa łamliwa długość klucza jest raczej krótsza, może aż 128 bitów.
    Obecnie (2004) za bezpieczne uznawane są 128 bitowe klucze szyfrów opartych o eliptyczną krzywą i 1024 bitów dla takich asymetrycznych szyfrów jak RSA.
Brute_force_attack
atak słownikowy Dictionary_attack
W kryptoanalizie oznacza odkrycie hasła poprzez wyprobowywanie listy prawdopodobnych możliwości, często listy słów ze słownika. To odróżnia go od ataku brute force, gdzie wyprobówywane są wszystkie możliwości. Np. można próbować odgadnąć hasło w komputerze w kraju anglojęzycznym szyfrując każde z listy angielskich słów i porównując każde zaszyfrowanie z przechowywanymi zaszyfrowanymi wersjami haseł użytkowników. Ponieważ użytkownicy często wybierają niewłaściwe hasło (łatwe do odgadnięcia lub złamania) taki atak może się powieść jeśli użyta jest dostatecznie długa lista. Ponieważ słowniki większości ludzkich języków (nawet tych już nie używanych) są teraz łatwo dostępne w internecie, użycie mało znanych języków obcych (np. słów maoryjskich) już nie chroni przed atakiem słownikowym.
Metodą pozwalająca na znaczne zwiększenie skuteczności takiego ataku jest zaszyfrowanie i przechowywanie listy zaszyfrowanych haseł posortowanych według zaszyfrowanej "wartości". Wymaga to dużo pamięci i często jest czasochłonne, ale dzięki temu atak jest właściwie natychmiastowy, co jest szczególnie efektywne jeśli na raz łamie się dużą listę haseł. Solenie jest techniką, która może zmusić zaszyfrowany słownik do osobnego przeliczania przy każdym znalezionym haśle.
Przykład ataku słownikowego wydarzył się w WWII kiedy brytyjscy łamacze kodów pracujący nad niemieckimi wiadomościami szyfrowanymi Enigmą używali niemieckiego słowa "eins" jako części słownikowego ataku, słowo to pojawiało się w 90% wszystkich wiadomości szyfrowanych Enigmą, a klawiatura enigmy nie miała cyfr (więc niektórzy mogliby to zakwalifikować jako atak ze znanym jawnym tekstem).
Książka Clifforda Stolla "The Cuckoo's Egg", zawiera interesującą i czytelną relację z ataku słownikowego na zaszyfrowane hasła przechowywane w pliku passwd w systemie uniksowym i reakcji na zakończony sukcesem atak człowieka (Roberta Morrisa, Sr.), który wynalazł jednokierunkowy system szyfrowania haseł użytkowników.
MITM (man in the middle)
Atak polegający na podszywaniu się pod jedną ze stron komunikacji; wygląda to tak:
Alice chce połaczyć się z Bobem, Mallory śledzi kanał łączności i podaje się za Boba (np. modyfikując dane DNS, lub wysyłając swój adres w odpowiednim momencie) przekazuje swój klucz publiczny jako klucz Boba i jednocześnie nawiązuje połączenie z Bobem a otrzymane od niego dane przekazuje Alicji; uczestniczy więc w transmisji jako niewidzialny element przechwytując hasła i inne tajne dane. Metoda ta nie wymaga ani znajomości hasła, ani łamania szyfru.

Alice <-[klucz Alicji]- -[klucz Mallory'ego 1]-> Mallory <-[klucz Mallory'ego 2]- -[klucz Boba]-> Bob
Zabezpieczenia: procedury certyfikacyjne, śledzenie opóźnień, używanie równocześbie kilku kanałów łaczności.
atak przez powtórzenie (ang. replay attack)
Pewna poprawna informacja - np. przechwycona podsłuchem - jest w złych intencjach powtórnie wysyłana przez napastnika w celu uzyskania dostępu; najczęściej dotyczy to haseł.
Replay_attack
ze znanym szyfrogramem (ang. known ciphertext attack)
Sytuacja gdzie atakujący dysponuje tylko szyfrogramem.
Atak jest udany jeśli związany z nim jawny tekst jest odczytany lub jeszcze lepiej jeśli odkryty jest klucz. Możliwość uzyskania jakiejkolwiek informacji z szyfrogramu jest także uważana za sukces, np. jeśli utrzymywany jest ciągły ruch danych jest bardzo użyteczne jeśli można odróżnić prawdziwe wiadomości od fałszywych. Nawet sama informacja, że pozorny szum zawiera szyfrogramy może być pomocą dla napastnika.
W historii kryptografii wczesne szyfry były systematycznie łamane przy użyciu wyłącznie szyfrogramu.
Istnieje wiele technik analizy statystycznej - np. analiza częstotliwościowa frequency analysis. Mechaniczne szyfrowanie urządzeniami podobnymi do Enigmy uczyniło takie ataki dużo trudniejszymi. Jednakże wady Enigmy (konstrukcyjne i błedy w użyciu), pozwoliło polskim kryptografom na przeprowadzenie skutecznego ataku ze znanym szyfrogramem.
Wprowadzenie elektroniki i komputerów do kryptografii uczyniło z ataków ze znanym szyfrogramem przeszłość, ponieważ wszystkie współczesne szyfry są przed nimi chronione już na etapie projektowania - testowanie nowego szyfru zajmuje wiele lat i składa się także z wyczerpujących testów dużych ilości szyfrogramu poddanych próbom czy czymkolwiek się różnią pod względem statystycznym od przypadkowego szumu.
Niestety nieprawidłowe użycie szyfrów lub zastosowanie niepewnej wartości algorytmów, które nie były przedmiotem skrupulatnych badań zaowocowały wieloma systemami, które nadal mogą być obiektem takiego ataku:
  • wczesne wersje Microsoft PPTP virtual private network używały tego samego klucza dla nadawcy i odbiorcy (a późniejsze miały inne problemy)
  • szyfry mające za małą przestrzeń klucza są przedmiotem ataku BF ograniczonego tylko do szyfrogramu polegającego po prostu na wypróbowaniu wszystkich możliwych kluczy. Wszystko co jest potrzebne to możliwość odróżnienia prawidłowego jawnego tekstu od przypadkowego szumu, co nie jest problemem w przypadku języków naturalnych. Szyfry dodatkowo osłabia fakt, że użytkownicy rzadko używają haseł choćby zbliżonych do entropii przestrzeni klucza.
Ciphertext-only_attack
ze znanym tekstem jawnym (ang. known plaintext attack)
Atak na bezpieczeństwo szyfru, w którym znane jest jedna lub więcej par tekstu jawnego i odpowiadającego mu szyfrogramu; jedyną brakującą rzeczą jest klucz.
W Bletchley Park WWII, usiłowano zmusić Niemców do wyprodukowania wiadomości ze znanym jawnym tekstem. Znane jawne teksty nazywano ściągami (ang. cribs) a mechanizmy zmuszania Niemców do wyprodukowania ich nazywano "ogrodnictwem" (ang. "gardening").
Known-plaintext_attack
atak urodzinowy (ang. birthday attack)
typ ataku wykorzystujący paradoks urodzin.
Podpisy cyfrowe mogą być podatne na taki atak: wiadomość m jest zwykle podpisana przez pierwsze przetworzenie f(m) gdzie f jest kryptograficzną funkcją haszującą i wtedy używa się pewnego klucza prywatnego, żeby podpisać f(m). Załóżmy,że Bob chce oszukać Alice, żeby podpisała oszukańczą umowę. Bob przygotowuje poprawny kontrakt m i oszukańczy m' Odnajduje pewną ilość miejsc, które mogą zostać zmienione bez zmiany znaczenia (umieszcza przecinki, spacje, puste wiersze itp.). Próbując tych miejsc tworzy dużą ilość wariacji m, które wszystkie są poprawnymi umowami, w ten sam sposób tworzy dużą liczbę wariacji oszukańczej umowy m'. Wtedy stosuje funkcie haszującą do wszystkich tych umów, tak aby odnaleźć wersje m i m', które mają tą samą wartość haszu f(m) = f(m' ). Kiedy już taką znajdzie daje Alice poprawną wersję umowy m do podpisu. Wtedy może ten podpis dołączyć go do oszukańczej umowy. Poprawny podpis zaświadcza, że Alice podpisała oszukańczą umowę.
Atak urodzinowy może zostać również zastosowany do przeliczenia dyskretnych logarytmów. Załóżmy, że x i y są elementami pewnej grupy i y jest potęgą od x. Chcemy znaleźć wykładnik x, który daje y. Atak urodzinowy przelicza xr dla wielu losowo wybranych liczb całkowitych r i przelicza yx-s dla wielu losowo wybranych liczb całkowitych s. Po jakimś czasie można znależć trafienie xr = yx-s które oznacza y = xr+s.
Jesli grupa ma n elementów, wtedy najprostsza metoda wypróbowywania wszystkich wykładników zabiera przeciętnie około n/2 kroków, atak urodzinowy jest znacząco szybszy i zabiera przeciętnie niewiele ponad 2√n.
Birthday_attack
z wybranym tekstem jawnym (ang. chosen plaintext attack)
Zakłada, że atakujący ma możliwość wybrania dowolnego tekstu jawnego do zaszyfrowania i otrzymania odpowiadającego mu szyfrogramu, celem takiego ataku jest pozyskanie dalszych informacji, najczęściej tajnego klucza.
Z pozoru wygląda na zupełnie nierealistyczny model, jest nieprawdopodobne, żeby atakujący zmusił człowieka do zaszyfrowania dużych ilości jawnego tekstu, który jest wybrany przez atakującego. Jednakże współczesna kryptografia jest zaimplementowana w oprogramowaniu i sprzęcie, ma wiele zastosowań, w których tego typu atak jest łatwy do przeprowadzenia.
Można wyróżnić dwie formy ataku:
  • seryjny (ang. batch chosen-plaintext attack) - atakujący wybiera wszystkie jawne teksty przed zaszyfrowaniem
  • adaptacyjny (ang. adaptive chosen-plaintext attack) - analiza szyfrogramów z kolejno wybieranych jawnych tekstów, wybierane są na podstawie informacji uzyskiwanych z analizy poprzednich szyfrogramów
Każdy szyfr odporny na ten rodzaj ataku jest również odporny na atak ze znanym tekstem jawnym oraz atak ze znanym szyfrogramem.
Konwencjonalne szyfry symetryczne są często wrażliwe na taki atak, np. kryptoanaliza różnicowa szyfrów blokowych.
Pewnym rodzajem tego ataku było "ogrodnictwo" (technika używana przez brytyjskich kryptografów w czasie WWII).
Chosen_plaintext_attack
z wybranym szyfrogramem (ang. chosen ciphertext attack)
Atakujący wybiera szyfrogram i powoduje jego odszyfrowanie nieznanym kluczem. Dla samo-synchronizującego się szyfru strumieniowego, taki atak może być przydatny jeśli klucz użyty do zaszyfrowania każdego bajtu zależy od poprzedniego szyfrogramu (?). Możliwe jest użycie tego ataku, żeby dostać wybraną wiadomość podpisaną RSA jeśli wiadomości są podpisane bez haszowania.
Pewną wersją tego ataku jest wysłanie dużej liczby szyfrogramów do odszyfrowania, użycie tego odszyfrowania do wybrania następnych szyfrogramów i stopniowo ujawnienia informacji o zaszyfrowanej wiadomosci lub samym kluczu szyfrującym. Te ataki mogą zostać przeprowadzone przeciwko różnym mechanizmom klucza publicznego, włączajac w to RSA. Można temu zapobiec stosując właściwe użycie haszowania i sprawdzanie redundancji.
Chosen_ciphertext_attack
SE (Social Engineering)
W dziedzinie bezpieczeństwa komputerowego oznacza sprawianie przez oszustwo by ludzie ujawniali istotne dane o systemie komputerowym. Powszechnie spotykany w internecie.
Inżynieria społeczna to zestaw metod mających na celu uzyskanie niejawnych informacji przez oszusta. Przykładem może być sytuacja, w której cracker podszywa się pod inną osobę. W ten sposób usiłuje przekonać pracownika firmy, żeby podał mu swoje hasła. Dzięki ich znajomości może włamać się do systemu. Skuteczność inżynierii społecznej opiera się na ufności ofiar oraz ich niewystarczającej wiedzy informatycznej, oraz ogólnie dotyczącej procedur dystrybucji danych.
Z powodu dużej ilości źle zabezpieczonych komputerów połaczonych z internetem większość ataków dokonywana jest na znane błędy bezpieczeństwa; jednakże, ataki SE pozostają bardzo powszechne i są sposobem na zaatakowanie systemów odpornych na innne rodzaje ataków - np. na komputery nie połączone z internetem. Powszechny - i uzasadniony - pogląd pośród ekspertów w tej dziedzinie głosi, że "użytkownicy są najsłabszym ogniwem"
Popularnym współcześnie przykładem ataku SE jest użycie załączników e-mail, które zawierają złowrogi ładunek (np. taki, który z komputera ofiary wysyła olbrzymie ilości spamu). Po tym jak producenci programów pocztowych zaczęli wyłaczać automatyczne uruchamianie załączników użytkownicy muszą sami je uruchamiać i wielu tak czyni, bezmyślnie klikając w każdy załącznik jaki dostali.
Być może najprostszym, ale wciąż skutecznym atakiem jest przekonanie użytkownika, że jest się administratorem i prosząc go o hasło w celach administracyjnych. Użytkownicy internetu ciągle dostają wiadomości z żądaniem haseł lub informacji o kartach kredytowych w celu 'ustawienia konta', 'przedłużenia ustawień' lub innych działań nazywanych fiszingiem.
Użytkownicy muszą być regularnie pouczani, żeby nigdy nie ujawniać istotnych informacji ludziom podającym się za administratora. W rzeczywistości administratorzy w ogóle nie potrzebują znać hasła użytkowników do przeprowadzenia zadań administracyjnych. Ale nawet naiwne oszustwo może okazać się zbędne - w badaniu Infosurvey 90% pracowników biurowych dało swoje hasła w zamian za tani długopis.
Każdy system komputerowy dostępny z Internetu, może być celem ataku i dlatego posiada szereg zabezpieczeń. Jednak nawet najlepsze algorytmy kryptografii nie uchronią ludzi przed ich własną niewiedzą. Posługując się inżynierią społeczną, można np. przekonać jednego z użytkowników ebanku, że jest się administratorem. Wystarczy wysłać mu e-mail z linkiem do strony łudząco podobnej do bankowej. Użytkownik wchodzi na nią, wpisuje swoje hasła i można pozbawić go wszystkich pieniędzy.
Mówi się, że tylko wyłączony komputer jest odporny na atak. Jednak wystarczy zadzwonić o 2:00 w nocy do ochroniarzy. Udajemy przez telefon ważnego prezesa firmy przekonujemy ich, żeby włączyli ten komputer. Potem instruujemy ich jak zainstalować naszego trojana i firmowy intranet jest już nasz.
Stosowanie technik inżynierii społecznej jest przestępstwem ściganym przez prawo polskie. Podszywanie się pod inną osobę oraz przejmowanie danych niejawnych jest zagrożone karą pozbawienia wolności. Instytucje publiczne oraz firmy muszą wprowadzać systemy weryfikacji tożsamości. Konieczne jest uczenie zasad bezpieczeństwa nie tylko pracowników działu informatycznego, ale również wszystkich innych.
Warto wiedzieć, że nie zawsze zagrożenie jest tak bezpośrednie - jeden z największych problemów w Windowsach jest spyware, zawierające wykonywalny kod, który obiecuje coś zrobić, jednak w tle wykonuje inne zadania. Często jest to stosowane - udowodniono takie działania Chińczykom - do szpiegostwa przemysłowego.
Najlepszym zabezpieczenem przed SE jest ciągłe pouczanie użytkowników w zakresie polityki bezpieczeństwa.
Jednym z najbardziej znanych praktyków SE współcześnie jest Kevin Mitnick.
Social_engineering(computer_security)
  • władza: większość ludzi ma tendencję do wykonywania poleceń pochodzących od kierownictwa, socjotechnik może wmówić ofierze, że jest szefem lub wykonuje ważne dla niego zadanie, działa na jego polecenie
  • sympatia: ludzie okazują chęć do współpracy/pomocy jeśli spotykają kogoś sympatycznego lub mającego podobne podejście do życia, pozory bliskości (pomocny w przyszłej karierze, dobrze się prezentujący człowiek)
  • wzajemność: socjotechnik może wmówić ofierze, że pomógł jej chroniąc przed kłopotami, wykonał jakąś pożyteczną dla niej pracę (chociaż wcale nie musiał); np. informatyk, który pomaga usunąć nowego wirusa
  • konsekwencja: jeśli wcześniej ogłosiło się poparcie w jakiejś sprawie, wykonało już jeden drobiazg ciężko nagle się wycofać (instruktor polityki bezpieczeństwa)
  • przyzwolenie społeczne - jeśli inni już coś zrobili to my też (ankieter przemycający kilka istotnych pytań w ankiecie)
  • rzadka okazja - np. pierwszych 300 osób które założą konto na jakiejś tam stronie ma szansę wygrać nagrodę i zakładają podając dla wygody taką samą nazwę użytkownika i hasło
Podstawowym działaniem jest zdobywanie informacji uwierzytelniających, które pozwolą uzyskać fałszywą tożsamość i używając jej zmuszenie ofiary do określonego działaniaInżynieria_społeczna_(informatyka) (pl.)

Biografie

Daniel J. Bernstein
Daniel Julius Bernstein (znany jako djb) jest profesorem University of Illinois w Chicago, matematyk, kryptolog i programista; jest autorem qmail i djbdns. Zwolennik oprogramowania wolnego od licencji.
Bernstein prowadził sprawę Bernstein v. United States i później reprezentował się sam nie mając żadnego treningu jako prawnik. W wyniku tego procesu oprogramowanie zostało ogłoszone jako wypowiedź i jest chronione przez Pierwszą Poprawkę. W efekcie tego restrykcje na oprogramowanie szyfrujące zostały cofnięte.
Zaproponował także Internet Mail 2000, alternatywny system poczty elektronicznej mający zamienić SMTP, POP3 i IMAP.
Bezpieczeństwo oprogramowania.
Jesienią 2004 zaczał uczyć w jednym z pierwszych formalnych kursów uniwersyteckich o bezpieczeństwie oprogramowania, zatytułowanym "UNIX Security Holes", 16 studentów odkryło 91 nowych dziur bezpieczeństwa.
Bernstein od dawna jest promotorem idei, że pełne ujawnienie jest najlepszą metodą zapewnienia bezpieczeństwa komputerowego.
Pomimo, że ogłosił $1K nagrody za znalezienie błędów bezpieczeństwa w swoim oprogramowaniu, chociaż jego programy są używane powszechnie nikt jej nie dostał. Bernstein wierzy, że możliwe jest napisanie bezpiecznego oprogramowania a ponieważ przeważają błedy powstałe w wyniku niedbałości i niekompetencji Bernstein argumentuje: "natychmiastowe ujawnienie i publikacja exploita jest karą dla programisty za zły kod. Panikuje, w pośpiechu naprawia problem, traci użytkowników. Zamiast się uskarżać, że taka kara jest bolesna, lepiej zauważyć, że ma wpływ na przyszłość, zachęca programistów do inwestowania czasu i wysiłków w celu eliminacji problemów bezpieczeństwa".
Daniel_J._Bernstein (eng.)
Phil Zimmermann
Phil Zimmermann (ur. 12 II 1954) jest twórcą PGP - pierwszego programu udostępniającego kryptografię asymetryczną użytkownikom.
Z powodu restrykcji eksportowych trzy lata trwało śledztwo, ale na początku 1996 się zakończyło bez oskarżenia.
Zimmerman założył PGP Inc., które w grudniu 1997 stało się częścią Network Associates (NAI) gdzie przez 3 lata był Senior Fellow. W 2002, PGP został pozyskany od NAI przez nowe przedsiębiorstwo PGP Corporation, gdzie Zimmermann jest specjalnym doradcą i konsultantem. Zimmermann należy także do Stanford Law School's Center for Internet and Society.
Zimmermann dostał wiele nagród za pionierskie prace w kryptografii:
  • 1995 Newsweek - Zimmermann jednym z "Net 50" najbardziej wpływowymi ludżmi w internecie
  • 1995 otrzymał Chrysler Award for Innovation in Design i Pioneer Award (Electronic Frontier Foundation).
  • 1996 otrzymał Norbert Wiener Award for Social and Professional Responsibility za promowanie odpowiedzialnego używania technologii
  • 1998 otrzymał Lifetime Achievement Award (Secure Computing Magazine)
  • 1999 Louis Brandeis Award (Privacy International)
  • 2000 InfoWorld uznał go za jednego z Top 10 Innovators in E-business
  • 2001 został wprowadzony do CRN Industry Hall of Fame
Phil Zimmermann
Bruce Schneier
Bruce Schneier (ur. 15 I 1963) amerykański kryptograf, ekspert bezpieczeństwa komputerowego i pisarz, autor kilku książek o bezpieczeństwie komputerowym i kryptografii; założyciel i główny specjalista technologi Counterpane Internet Security.
Pochodzi z NY, żyje w Minneapolis (Minnesota) z żoną Karen Cooper. Schneier ma Master's z informatyki z American University i stopień Bachelor of Science w fizyce z University of Rochester. Przed Counterpane, pracował w DoD i potem w Bell Labs.
Applied Cryptography jest powszechnie uważana za podstawową pracę o kryptografii.
Zaprojektował lub współzaprojektował kilka algorytmów kryptograficznych (m.in. Blowfish, Twofish i MacGuffin) oraz kryptograficznie bezpieczne generatory liczb pseudolosowych Yarrow i Fortuna. Solitaire jest algorytmem zaprojektowanym dla ludzi nie mających dostępu do komputera (nazwany Pontifex w Cryptonomicon).
Obecnie jest większym sceptykiem, uważa, że nawet bardzo dobrej jakości algorytmy są tylko tak skuteczne jak najsłabsze ogniwo praktycznego zastosowania.
Pisze miesięczny newsletter o bezpieczeństwie komputerowym i innych zagadnienich bezpieczeństwa: Crypto-Gram i security blog, jest często cytowany w prasie.
Bruce_Schneier (eng.)
dr Auguste Kerckhoffs (19 I 1835 - 1903)
Flamandzki lingwista i kryptograf; profesor języków w School of Higher Commercial Studies w Paryżu w późnym XIX wieku.
Kerckhoffs urodził się w Nuth, Holland, i zostałochrzczony jako Jean-Guillaume-Hubert-Victor-Francoise-Alexandere-Auguste-Kerckhoffs von Niuewenhof, chociaż później skrócił swoje imiona; studiował na Uniwersytecie Liege. Po okresie nauczania w szkołach w Holandii i Francji został profesorem niemieckiego w Parisian Ecole des Hautes Etudes Commerciales i Ecole Arago.
Najbardziej znany jest dzisiaj z dwóch esejów, które opublikował w 1883 w Journal des Sciences Militaires ("Journal of Military Science") zatytułowanych La Cryptographie Militaire ("Military Cryptography"). Artykuły te były przeglądem stanu sztuki w kryptografii wojskowej i przyczyniły się do znaczącego udoskonalenia w francuskiej kryptografii. Zawierały także wiele praktycznych rad i reguły, także znane sześć zasad projektowania szyfrów.
Z całego jego dorobku najbardziej znane jest drugie z jego sześciu zasad, znane także jako prawo Kerckhoffsa "bezpieczeństwo kryptosystemu musi zawierać się tylko w kluczu" a nie w tajemnicy jakiejkolwiek innej części systemu.
Na wojnie nieprzyjaciel wieloma metodami może przechwycić i poddać analizie sprzęt lub inne elementy kryptosystemu. W informatyce można poddać oprogramowanie analizie, debuggerowi, lub przetestować sprzęt na różne sposoby. Ponieważ nigdy nie można takich sytuacji wykluczyć, bezpieczeństwo kryptosystemu jest zapewnione dopiero jeśli nie jest zależne od utrzymania w tajemnicy takich szczegółów.
To samo odnosi się do kryptografii - zasada ta mówi, że kryptografia powina być bezpieczna nawet jeśli atakujący zrobił te rzeczy, lub inaczej mówiąc security by obscurity jest w kryptografii nieważna.
Późniejsze prace:
W 1885 Dr. Kerckhoffs zaczął się interesować tworzeniem języka Volapük, i przez wiele lat był przodującym członkiem ruchu Volapük i dyrektorem Academy of Volapük. Opublikował kilka książek na temn temat i wprowadził ruch do Francji, Hiszpani i Skandynawii serią publicznych wykładów.
Auguste_Kerckhoffs (eng.)
major Friedrich Wilhelm Kasiski (29 XI 1805 - 22 V 1881)
Pruski oficer piechoty, kryptograf i archeolog, urodził się w Schlochau, West Prussia (obecnie Człuchów).
Służba wojskowa.
20 marca 1823 w wieku 17 lat zaciągnął się do 33-ego Wschodniopruskiego Regimentu Piechoty (East Prussia's 33rd Infantry Regiment). W maju 1824 został promowany do rangi starszego sierżanta (Master Sergeant), osiem miesięcy później w lutym 1825 został mianowany na stopień Second Lieutenant. Zabrało 14 lat do następnej promocji kiedy w maju 1839 awansował do rangi First Lieutenant, na kapitana w listopadzie 1842. Ostatecznie zwolnił się z aktywnej służby w randze majora 17 lutego 1852.
Pomiędzy 1860 i 1868 był dowódcą batalionu Gwardii Narodowej (National Guard).
Kryptografia:
W 1863 opublikował 95-stronicową książkę o kryptografii, Die Geheimschriften und die Dechiffrierkunst ("Secret writing and the Art of Deciphering"). Było to pierwszy opublikowany przykład procedury ataku na zastąpieniowy szyfr polialbabetyczny, np. słynny szyfr Vigenere'a (chociaż Charles Babbage wymyślił to przed nim, ale trzymano to w tajemnicy). Metoda polegała na analizie przerw między powtarzającymi się fragmentami szyfrogramu, co mogło dać wskazówki co do długości użytego klucza. Jest to znane jako Kasiski examination.
Znaczenie kryptoanalityczne tej pracy nie zostało docenione, więc zajął się archeologią. Późne lata życia spędził w Neustettin (Szczecinek). Historyk David Kahn pisze, "Kasiski umarł 22 maja, 1881, prawie na pewno nie zdając sobie sprawy, że dokonał przełomu w kryptoanalizie" (The Codebreakers).
Friedrich_Kasiski (eng.)

Materiały

Książki

W nawiasie oryginalny tytuł i data pierwszego wydania.

  • Simon Singh "Księga szyfrów", Albatros 2001, s 447; ISBN: 83-7311-714-8 ("The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography", 1999)
  • Bruce Schneier "Kryptografia dla praktyków", WNT 2002, s 900; ISBN: 83-204-2678-2 ("Applied Cryptography. Second Edition", 1996)
  • Niels Ferguson, Bruce Schneier "Kryptografia w praktyce", Helion 2004, s 296; ISBN: 83-7361-211-4 ("Practical Cryptography", 2003)
  • David Kahn "Łamacze kodów. Historia kryptologii", Zysk i S-ka 2019, s 1762; ISBN: 978-83-8116-632-4 ("The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet", 1996)
  • Al Sweigart "Cracking Codes with Python" 2018

Inne:

Odnośniki
Strony
YT
Narzędzia
Enigma
Artykuły