Kryptografia - 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?

NAWIGACJA

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

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 komunikacji. Przy okazji chciałem wyjaśnić kilka innych rzeczy, no i tak wyszło...

Uwaga: to co czytasz to tekst, który napisałem ponad 10 lat temu (2005) głównie na podstawie en.wiki. Obecnie jest na etapie rewitalizacji, tj na podstawie tamtego najpierw przeglądam po kolei, rozdział po rozdziale i wywalam co większe błędy i babole. Potem zrobię update do aktualnej sytuacji, potem - zobaczę jakie są potrzeby.

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łą, taką 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 informacji przed dostępem osób niepowołanych. W zaszyfrowanej postaci mogą być bezpiecznie przechowywane i przekazywane (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) (English: encription, enciphering vs. decryption, deciphering).

Jawna (oryginalna, pierwotna) postać informacji przed zaszyfrowaniem to tekst jawny a tajna, już 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 używał w swoich pracach określeń kler na tekst jawny i krypt na tekst tajny (English: plaintext vs. ciphertext, cyphertext, cryptogram).

Metoda użyta do tej zamiany to oczywiście szyfr, czyli procedura (algorytm) takiego przekształcania wiadomości, żeby po zaszyfrowaniu była ona niemożliwa, lub bardzo trudna do odczytania przez każdego, kto nie posiada odpowiedniego klucza oraz znajomości tego algorytmu, oraz przez odszyfrowanie umożliwiała odtworzenie pierwotnej postaci informacji z szyfrogramu. (English:: 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ę, także 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 definitywnie, w unikalny dla danego klucza sposób, określają sposób przetworzenia danych. 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. Obie czasem są grupowane razem jako kryptologia, chociaż w praktyce również i kryptografia jest używana w tym znaczeniu.

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

Kryptologia jest interdyscyplinarnym przedmiotem łączącym wiele dziedzin. Przed epoką komputeryzacji była związana z lingwistyką, ale obecnie jest to głównie matematyka, szczególnie tzw. matematyka dyskretna: teoria liczb, teoria informacji, złożoność obliczeniowa, 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 to:

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ę; nastę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... (istnieje pogłoska, iż imiona te zostały zaczerpnięte z filmu "Bob & Carol & Ted & Alice", ale nie jest to prawda).

Najważniejsze z mich to:

Inne:

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 współczesna kryptografia zaczyna się dopiero po WWII wraz z pracami Shannona i użyciem komputerów.

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ł być 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ć często zmieniane.
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:

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 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 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 analizy.
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. Inaczej mówiąc 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 szyfró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:

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 (NSA: kryptografia na krzywych eliptycznych nie ma przyszłości. Narodowy Szyfrator może trafić do lamusa.

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:

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:

Funkcja haszująca spełniając te kryteria nadal może mieć niepożądane 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.

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 jak dowiedli Merkle i Damgard funkcja kompresji jest odporna na kolizję (collision-resistant), a funkcja mieszająca przejmuje tą właściwość. Niestety ta konstrukcja ma również kilka niepożądanych właściwości/słabości:

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

W potocznym rozumieniu (tajny) kod jest tym samym co szyfr, jednakże są to dwie zupełnie odmienne rzeczy.
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, czyli lista 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). 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).

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ę. Współcześnie kody 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, pierwotnie 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ęściej 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 (to samo stosuje się 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 trudna do złamania, 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): stosuje się 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łędó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:

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 wymiany 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:

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:

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:

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:

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:

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

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).

Plotki 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 szerokim 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. Latem 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.

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

2. Zastosowanie kryptografii asymetrycznej

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:

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 (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.

3. 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:

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.

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

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

Składanie podpisu

Weryfikacja

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: 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ń: Funkcje haszujące używane w kryptografii: 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.
HTTPS HTTPS
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: 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 HOWTO Keysigning_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: 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:
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): 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: 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: 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:
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:
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 PGP Web_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.
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:
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_network Poptop - 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. 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ść)
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:
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.
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: 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:
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) 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łania Inż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:
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

Przy pisaniu powyższych objaśnień korzystałem także z książek:

Wszystkie wydane przez Helion, najbardziej polecaną z dziedziny kryptografii książką jest: "Kryptografia w praktyce" Niels Ferguson, Bruce Schneier.


[ HOME ] [ na górę strony ]


XHTML 1.1
©2002-2005 homepage