Kryptografia dla poczty i danych Packchies


Kryptografia
dla poczty i danych
Praktyka
Lars Packschies
stopień trudności
Termin kryptografia pochodzi od greckich słów: kryptós, ukryte,
oraz gráphein, pismo. W ogólnoÅ›ci, wyróżniamy dwa rodzaje
szyfrów kryptograficznych: symetryczne i asymetryczne.
Określenia te związane są ze strukturą klucza. Aby zaszyfrować
dane bądz wiadomość potrzebne są informacje o tym, jak
szyfrować bądz deszyfrować dane (szyfr), a także klucz  tajny
parametr szyfru.
zy umieściłbyś poufne informacje na Szyfry symetryczne
kartce pocztowej i wysłał je w ten i asymetryczne
Csposób do znajomych, współpracow-
ników bądz partnerów biznesowych? Symetryczne klucze kryptograficzne charakte-
Chyba, nie. Dlaczego zatem mielibyśmy ryzują się tym, że klucze: szyfrujący i deszy-
umieszczać poufne informacje w e-mailu i frujący są identyczne. Innymi słowy, nadawca
wysyłać je przez cały świat? Kryptografia nie i odbiorca wymienianej między nimi wiadomo-
tylko bardzo zwiększa bezpieczeństwo ko- ści muszą posiadać ten sam klucz  i muszą
munikacji w Internecie oferując możliwość wymienić ten klucz przed rozpoczęciem trans-
szyfrowania i/lub podpisywania wiadomości, misji wiadomości. Była to od zawsze główna
ale także stanowi gwarancję naszej prywat- wada metod symetrycznych: problem wymia-
ności. Przykładowo, być może jesteś świa- ny klucza.
dom faktu, że Unia Europejska usankcjono- Jeden z pierwszych znanych szyfrów no-
wała przechowywanie przez dostawców In- si nazwę szyfru Cezara. Juliusz Cezar szyfro-
ternetu oraz operatorów sieci komórkowych
informacji o połączeniach przez przynajm-
Z artykułu dowiesz się...
niej 6 miesięcy. W połączeniu z informacja-
mi o kartach kredytowych i premiowych, a
" Jak zainstalować i urzyć klucze GnuPG
także wszystkimi innymi dostępnymi tu i ów-
" Jak szyfrować dane na poziomie systemu pli-
dzie informacjami, pozwala to na wygenero-
ków
wanie kompletnego profilu osobistego nie tyl-
ko z podstawowych danych, ale także z algo-
Powinieneś wiedzieć...
rytmów akwizycji danych. Być może już teraz
zebrały one mnóstwo informacji na temat cie- " Czym są podstawy kryptografii symetrycznej i
asymetrycznej
bie i twoich nawyków, teraz jednak możesz
" Jakie są podstawy algorytmów
zacząć coś z tym robić.
hakin9 Nr 5/2006
2 www.hakin9.org
Kryptografia dla poczty i danych
rą kluczy (często określaną po prostu
jako klucz bÄ…dz klucz asymetryczny).
Po wygenerowaniu pary jeden z klu-
czy trzymany jest w sekrecie, nazy-
wamy go kluczem prywatnym, drugi
zaś udostępnia się publicznie i jest
nazywany kluczem publicznym. Je-
den z kluczy służy do szyfrowania
wiadomości, a dzięki matematycz-
nym podstawom stosowanego roz-
wiÄ…zania do zrekonstruowania ory-
ginalnej wiadomości można wyko-
rzystać tylko drugi klucz. Praktycz-
nie niemożliwe jest wyliczenie klu-
cza prywatnego z klucza publiczne-
go (bądz na odwrót). Ponadto rów-
nie niemożliwe są próby deszyfrowa-
nia wiadomości przez zastosowanie
Rysunek 1. Enigmail dodaje przycisk OpenPGP, pozwalajÄ…cy na
wszystkich możliwych kluczy (pró-
podpisywanie i/lub szyfrowanie poczty
by tego rodzaju określa się mianem
ataków siłowych)  wedle współcze-
wał wiadomości zastępując każdą li- mowano o tym w latach 1970 (na- snej wiedzy zajęłoby to kilka miliar-
terę w oryginalnej wiadomości lite- zwano to ultra sekretem). dów lat.
rą przesuniętą o trzy miejsca w pra- Dzięki wykorzystaniu współcze-
Klucze prywatne
wo w alfabecie: A staje się D, B sta- snym komputerów istnieje obecnie
i publiczne
je się E, a Z staje się C. Algorytmem całkiem spora liczba symetrycz-
jest tu zastąpienie każdej litery jaw- nych szyfrów, które uważa się za Koncepcja kluczy prywatnych i pu-
nego tekstu przez literę z przesunię- bezpieczne  na przykład AES (Ad- blicznych ogólnie rzecz biorąc po-
tego alfabetu, kluczem zaÅ› jest 3: al- vanced Encryption Standard, ina- zwala na wykorzystanie ich na
fabet przesunięty został o 3. czej Rijndael, stworzony przez Jo- dwa sposoby: (1) szyfrowanie/
Oczywiście metody zastępo- ana Daemena i Vincenta Rijmena), deszyfrowanie oraz (2) generacja i
wania i transponowania liter ce- 3DES (potrójny DES, Data Encryp- weryfikacja elektronicznych podpi-
lem stworzenia bardziej zaawan- tion Standard, oparty na pracach sów.
sowanych szyfrów ulegały przez Horsta Feistela) czy też IDEA (In-
lata ewolucji, niektórych przypad- ternational Data Encryption Algo- Szyfrowanie/deszyfrowanie
kach wymagały one zastosowa- rithm), wymieniając zaledwie kil- Wyobrazmy sobie dwie osoby, Ali-
nia urządzeń mechanicznych. Jed- ka. Wszystkie te nowoczesne sy- ce i Boba. Alice generuje parę klu-
nym z ważnych przykładów jest tu metryczne szyfry zaprojektowano czy (robi to tylko raz, potem klu-
ENIGMA, wykorzystywana przez z grubsza pózniej niż w latach 50 cze można wykorzystywać wielo-
niemieckie wojsko podczas dru- ubiegłego wieku. Szyfry stworzone krotnie) i upublicznia swój klucz pu-
giej wojny światowej (bardzo do- wcześniej określa się szerzej jako bliczny, dzięki czemu Bob może po-
bry artykuł na temat tego urządze- klasyczne. brać ten klucz. Teraz Bob może wy-
nia oraz jego kryptoanalizy znalezć Niemniej dopiero w latach sie- korzystać ów klucz do zaszyfrowa-
można w Wikipedii). Wykorzysty- demdziesiątych kryptografowie roz- nia wiadomości przeznaczonej dla
wano ponad 200 000 takich ma- wiÄ…zali problem wymiany klucza Alice, ale tylko prywatny klucz Ali-
szyn, zaś każdy operator musiał (prace Whitfielda Diffiego, Martina ce jest w stanie rozszyfrować wia-
otrzymywać co miesiąc listę kluczy, Hellmana i Ralpha Merkle'a) oraz po- domość od Boba. Tylko właściciel
tak zwaną książkę kodową. Przy wstała oparta na tym pomyśle kon- prywatnego klucza, Alice będzie
okazji: zakończoną powodzeniem cepcja asymetrycznych kluczy, opra- mógł ją przeczytać. Każda oso-
kryptoanalizę ENIGMY (można po- cowana przez Rona Rivesta, Adie- ba mająca dostęp do publicznego
wiedzieć: jej złamanie) przeprowa- go Shamira i Leonarda Adlemana w klucza Alice może wysłać jej wia-
dziła grupa naukowców skupionych 1977 roku. domość, którą tylko ona może od-
wokół polskiego matematyka Ma- Metody czy też algorytmy krypto- czytać. Gdyby Alice chciała wysłać
riana Rajewskiego oraz Alana Tu- grafii asymetrycznej wykorzystują in- tajną wiadomość do Boba, mogła-
ringa, w Bletchley Park, w Milton ne klucze do szyfrowania, a inne do by skorzystać z publicznego klu-
Keynes, w Anglii, już w połowie lat deszyfrowania wiadomości. Oba ta- cza wygenerowanego przez tego
30 ubiegłego wieku. Ogół poinfor- kie klucze nazywane są wspólnie pa- ostatniego.
www.hakin9.org hakin9 Nr 5/2006 3
Praktyka
Podpis to miejsce w przypadku szyfrów sy- Byłoby jednak zbyt prosto, gdyby
Drugi sposób wykorzystuje te sa- metrycznych. istniał tylko jeden standard: istnieje
me dwa klucze Alice, ale w odwrot- Dlatego ze względów praktycz- także S/MIME (Secure MIME, RFC
nej kolejności. Wyobrazmy sobie, nych dla każdej wiadomości genero- 2822). S/MIME wykorzystuje (nie-
że Alice pisze wiadomość i szyfruje wany jest symetryczny klucz sesji, za które) szyfry wykorzystywane także
ją swoim kluczem prywatnym. Te- pomocą którego szyfrowane są da- przez OpenPGP, jednak oba stan-
raz każdy, kto posiada dostęp do ne; dopiero klucz symetryczny szy- dardy posiadają różne formaty klu-
odpowiedniego klucza publicznego frowany jest za pomocą asymetrycz- czy oraz wiadomości i z tego wzglę-
może odczytać tę wiadomość po jej nej pary kluczy. W efekcie dostajemy du są niekompatybilne. Ponadto oba
odszyfrowaniu. W przypadku takim dwa komponenty: symetrycznie za- standardy wykorzystują różne mode-
odbiorca może być pewien, że wia- szyfrowany blok danych oraz asy- le zaufania: podczas gdy OpenPGP
domość zaszyfrowano prywatnym metrycznie zaszyfrowany klucz sy- pozwala na stworzenie dużej sieci
kluczem Alice, a co za tym idzie to metryczny. Następnie odbiorca po zaufania , S/MIME korzysta z silnie
Alice musiała ją napisać  z defi- prostu korzysta z odpowiedniego hierarchicznych certyfikatów opar-
nicji Alice jest jedynÄ… osobÄ… posia- klucza asymetrycznego aby wydo- tych na X.509 v3 (standard X.509
dającą dostęp do tego klucza pry- być klucz symetryczny, za pomocą określa m.in. standardowe formaty
watnego. Nazywamy to podpisem którego to klucza deszyfrowany jest certyfikatów kluczy publicznych oraz
elektronicznym. blok danych. algorytm walidacji ścieżki certyfikacji
Ogólnie rzecz biorąc, istnieją Pierwszą aplikacją implementu-  patrz Wikipedia).
dwie główne metody asymetrycz- jącą ww. algorytmy po tym, jak zo-
ne, z którymi będziemy mieli do stały one upublicznione, była PGP Algorytmy skrótów
czynienia i które uważane są za (Pretty Good Privacy) Phila Zim- Protokoły kryptograficzne wyko-
bezpieczne: RSA (Rivest, Shamir, mermana, opublikowana w 1991 rzystujÄ… algorytmy generujÄ…ce tak
Adleman; opatentowany) i ElGamal w systemie biuletynowym. Zyskała zwane odciski palców, czy też war-
(autorstwa Tahera ElGamala). Ist- ona wysoką popularność, ale także tości skrótu, danych. Tego rodzaju
nieje także Digital Signature Algo- stawała się coraz bardziej komer- skrót jest bardzo krótki, nie można
rithm (DSA). cyjna. Nie każda wersja PGP do- zrekonstruować danych z ich war-
stępna była w postaci kodu zródło- tości skrótu (w przeciwnym wypad-
PGP, OpenPGP,
wego. Ponadto niedozwolone by- ku byłyby to najlepsze znane algo-
S/MIME
ło eksportowanie PGP ze Stanów rytmy kompresji), a wartość skrótu
Zbierają wszystkie powyższe in- Zjednoczonych w postaci programu powinna być definitywna. Ponadto
formacje razem: RSA, ElGamal i komputerowego (istniały specjalne musi być niemożliwe (a przynajm-
DSA to algorytmy bądz szyfry asy- wersje międzynarodowe, 5.0i; były niej niemal niemożliwe) wygenero-
metryczne. AES, 3DES bądz IDEA one drukowane na papierze i legal- wanie dwóch różnych dokumentów
(IDEA również został opatentowany) nie eksportowane w postaci ksią- o tej samej wartości skrótu  tak
są szyframi symetrycznymi. Moż- żek, zaś poza granicami USA kod zwana generacja kolizji.
na ich używać po prostu by szyfro- był skanowany i przetwarzany pro- Możliwe że widziałeś już kiedyś
wać, deszyfrować bądz nawet elek- gramami OCR), a sam program za- skróty, sprawdzając poprawność
tronicznie podpisywać dane  jed- wierał opatentowane algorytmy. Ze pobranych pakietów z oprogramo-
nak aby naprawdę możliwe było wy- względu na to, że nie zawsze moż- waniem (na przykład za pomocą
korzystywanie tych algorytmów w liwe było społeczne zapoznanie md5sum bądz sha1sum). Algoryt-
rzeczywistych zastosowaniach nie- się z kodem zródłowym, wersjom my: MD5 i SHA1 są powszechnie
zbędna jest znaczna wiedza w in- tym nie można było w pełni zaufać stosowane w kryptografii, a zwłasz-
nych dziedzinach, na przykład: jak  mogły one przykładowo posia- cza w podpisach elektronicznych;
przetwarzać dane, jakich algoryt- dać zaimplementowane bez wie- z drugiej strony, badacze odkryli
mów używać do generacji par klu- dzy ogółu tylne drzwi bądz algoryt- sposoby na ograniczenie liczby te-
czy, co zrobić gdy wiadomość ma my klucza głównego. Wykorzysta- stów przy poszukiwaniu kolizji o kil-
być zaszyfrowana bądz odszyfrowa- nie kodu kryptograficznego to spra- ka rzędów wielkości. Dla MD5 ist-
na i tak dalej. wa zaufania. Aby uniknąć proble- nieje przykład, w którym naukowcy
Aby skomplikować zagadnienie mów z patentami i licencjami, roz- wygenerowali dwa różne pliki post-
jeszcze bardziej, w nowoczesnych poczęto prace nad GnuPG (autor- script o takiej samej wartości skró-
aplikacjach do szyfrowania danych stwa Wernera Kocha). GnuPG im- tu MD5. Pierwszy z nich to list reko-
wykorzystuje siÄ™ nie tylko szyfry plementuje tak zwany Standard mendacyjny szefa Alice, drugi zaÅ›
asymetryczne. Zaszyfrowanie du- OpenPGP (RFC 2440, często na-  rozkaz rzymskiego imperatora
żych ilości danych za pomocą szy- zywany także PGP/MIME), oparty Gajusza Juliusza Cezara.
fru asymetrycznego zajmuje mnó- na PGP (tym, co napisał Phil Zim- Z tego względu MD5 należy
stwo czasu, znacznie dłużej niż ma merman). traktować jako niebezpieczny. Po-
www.hakin9.org
4 hakin9 Nr 5/2006
Kryptografia dla poczty i danych
dobnie rzecz dzieje się w przypad- Tabela 1. Lista kodów
ku SHA1. Niemniej, MD5 i SHA1 sÄ…
Kod Algorytm
wciąż w użyciu ze względu na to,
Symetryczne szyfry
iż są one częścią algorytmu DSS.
Tak długo, jak będzie to prawdą, S1 IDEA
MD5 i SHA1 wciąż będą używane
S2 3DES
na przykład w GnuPG. GnuPG im-
S3 CAST5
plementuje wprawdzie lepsze algo-
rytmy, ale np. SHA256 korzysta z
S4 BLOWFISH
kluczy RSA, nie DSS. Niestety wy-
S7 AES128
gląda na to, że trzeba będzie z tym
żyć tak długo, aż oficjalny stan- S8 AES192
dard NIST nie pozwoli na obej-
S9 AES256
ście tego problemu. Jest jednak
S10 TWOFISH
możliwe skonfigurowanie kluczy
GnuPG tak, by unikały one stoso-
Algorytmy skrótów
wania MD5. SHA-1 z kolei jest obo-
H1 MD5
wiÄ…zkowym elementem standardu
OpenPGP, można jednak ograni- H2 SHA1
czyć prawdopodobieństwo użycia
H3 RipeMD160
go poprzez zmianę priorytetów róż-
H8 SHA256
nych algorytmów skrótu. Wrócimy
do tego pózniej.
H9 SHA384
H10 SHA512
Generacja kluczy
Algorytmy kompresji
GnuPG może już być zainstalowa-
ny w twoim linuksowym systemie.
Z1 ZIP
Spróbuj wywołać gpg --version; je-
Z2 ZLIB
żeli GnuPG jest już dostępny, powi-
nieneś zobaczyć jego numer wer- Z3 BZIP2
sji oraz (skróconą) listę zaimple-
mentowanych w obecnej wersji al- (2) DSA (sign only) should be valid.
gorytmów kryptograficznych oraz (5) RSA (sign only) 0 = key does not expire
kompresji: Your selection? = key expires in n days
w = key expires in n weeks
......> gpg (GnuPG) 1.4.2.2 Wybierz tu opcję domyślną. Pa- m = key expires in n months
[..] ra kluczy DSA (wykorzystywana w y = key expires in n years
Home: ~/.gnupg podpisach) będzie miała 1024 bi- Key is valid for? (0)
Supported algorithms: ty długości, można jednak zmie-
Pubkey: RSA, RSA-E, nić rozmiar pary kluczy ElGamal. Na ogół wpisujemy tutaj 0. Jeżeli
RSA-S, ELG-E, DSA Na ogół wystarczającą liczbą jest chcesz zmieniać klucz co roku, mo-
Cipher: 3DES, CAST5, BLOWFISH, 2048. Od pewnego momentu prze- żesz wpisać tutaj coś innego. Je-
AES, AES192, AES256, TWOFISH staje mieć sens dalsze wydłużanie żeli jednak korzystasz z tak zwa-
Hash: MD5, SHA1, RIPEMD160, klucza, łatwiej bowiem wtedy tortu- nych serwerów kluczy do dystry-
SHA256, SHA384, SHA512 rować odpowiednią osobę by zdo- bucji swojego klucza bądz kluczy,
Compression: być klucz prywatny, niż próbować nieważne klucze będą akumulowa-
Uncompressed, ZIP, ZLIB, BZIP2 go złamać. Niestety użytkownik po- ne na serwerach  nie można ich
zostaje najsłabszym ogniwem łań- zeń kasować, można je co najwy-
Jesteśmy teraz gotowi do wygenero- cucha. żej odwołać.
wania naszej pierwszej pary kluczy Następnym krokiem będzie te-
GnuPG. Aby rozpocząć proces ge- DSA keypair will have 1024 bits. raz umieszczenie w kluczu, jeże-
neracji, wpisz ELG-E keys may be li chcemy, trochÄ™ informacji oso-
between 1024 and 4096 bits long. bistych. Jeżeli chcesz brać udział
............> gpg --gen-key What keysize do you want? (2048) w sieci zaufania i pozwolić innym
Please select Dlatego po prostu wciśnij . podpisywać twój klucz publiczny,
what kind of key you want: Requested keysize is 2048 bits sygnalizując w ten sposób że ci
(1) DSA and Elgamal (default) Please specify how long the key ufają, będzie miało sens umiesz-
www.hakin9.org hakin9 Nr 5/2006 5
Praktyka
czenie w nim adresu e-mail oraz = 6DB6 3657 EE80 E74D 164B i podajemy żądane informacje. Na
prawdziwego imienia i nazwiska. C978 6500 F1EF E731 8B79 ogół generuje się certyfikat odwo-
Ogólnie rzecz biorąc, można tutaj uid Alice C łujący klucz bez żadnego szczegól-
wpisać cokolwiek. sub 2048g/2B381D4B 2006-03-17 nego powodu, można zatem pozo-
stawić tutaj the key is not used any-
You need a user ID to identify your Linia zaczynajÄ…ca siÄ™ od pub 1024D more. Po wpisaniu mantry GnuPG
key; informuje nas, że główny klucz ma wyświetli certyfikat na standardo-
the software constructs the user ID długość 1024 bitów (klucze DSA za- wym wyjściu. Najlepszą opcją jest
from the Real Name, wsze są tej długości), że jest to klucz teraz zapisanie go na kawałku pa-
Comment and Email Address DSA (oznaczenie D) oraz że jego pieru i umieszczenie w sejfie. Je-
in this form: key-ID to E7318B79. Numer ten żeli chce się go wydrukować, war-
"Heinrich Heine (Der Dichter) będzie identyfikować twój klucz na to być świadomym faktu, że doku-
" światowych serwerach kluczy. Na- ment ten może przejść przez ser-
Real name: Alice C stępna linijka zawiera odcisk palca wery drukowania, które mogą skła-
mail address: alice@example.com naszego klucza. Kiedy klucz twój dować dane. Możesz także zapisać
Comment: jest podpisywany przez innych użyt- certyfikat na dysku i także umieścić
You selected this USER-ID: kowników, odcisk palca wykorzysty- go w sejfie, ale dyski tracą z wie-
"Alice C < wany jest do identyfikacji (zauważ, kiem dane.
alice@example.com>" że identyfikator klucza przypomi- W sytuacji gdy wystąpiły ja-
Change (N)ame, (C)omment, na cztery ostatnie bajty jego odci- kieś problemy z kluczem (zgubiłeś
(E)mail or (O)kay/(Q)uit? sku palca). Linia zaczynająca się od go, został ukradziony albo po pro-
sub 2048g informuje nas, że pod- stu nie chcesz go już używać), po
Naciśnij (O). Teraz wprowadz swo- klucz jest typu ElGamal (g) i ma dłu- prostu wczytaj ów certyfikat do pę-
je zdanie kodowe, inaczej nazywa- gość 2048 bitów. Całość, zawiera- ku kluczy publicznych i wyślij go na
ne mantrą. Powinno być ono tak jąca potencjalnie dalsze podklucze i serwer kluczy. Więcej o importowa-
długie jak tylko jest to możliwe, po- inne dane tożsamościowe (np. adre- niu i eksportowaniu kluczy powiemy
winieneś być jednak w stanie je za- sy e-mail itd.), zawsze identyfikowa- poniżej. Certyfikat odwołania moż-
pamiętać. 30-40 znaków powinno na będzie jako key-ID E7318B79. na traktować jak dowolny plik z klu-
wystarczyć, w miarę możliwości nie czami publicznymi (jednak póki co
Generacja certyfikatu
stosuj jednak tutaj słów ze słow- nie rób tego).
odwołania klucza
nika bądz zdań z książek. Mantra
to ostatni bastion pomiędzy klu- Jest bardzo ważne, by w następnym > gpg --import
czem prywatnym a zewnętrznym kroku wygenerować tak zwany cer-
światem, niech zatem będzie ona tyfikat odwołania klucza. Pozwala on
dobra. Jeżeli chcesz ją zapisać, nam odwołać nasz klucz, co oznacza Serwery kluczy
umieść odpowiednią kartkę w sej- oznakowanie go jako np. nieważny Nasz klucz jest gotów do użytku. Je-
fie. Może się zdarzyć, że przed roz- bądz więcej nie używać. Jeżeli klucz go publiczna część może być zapi-
poczęciem procesu generacji klu- twój zostanie w jakiś sposób skom- sana do pliku, który następnie roz-
cza trzeba będzie wpisać mantrę promitowany bądz ukradziony, od- przestrzenimy pośród przyjaciół, al-
dwukrotnie. GnuPG informuje cię wołanie jest jedynym sposobem na bo umieszczona na międzynarodo-
potem, że dobrym pomysłem bę- przekazanie światu, że nie należy go wych serwerach kluczy. Wysyłanie
dzie poruszanie trochę myszą, po- więcej używać. Z certyfikatem nale- klucza publicznego na serwer zde-
robienie czegoś na klawiaturze i tak ży być jednak bardzo ostrożnym. Je- cydowanie nie jest jedna zalecane
dalej. Do generacji klucza GnuPG żeli zostanie on ukradziony, złodziej dopóki, dopóty nie zyskasz doświad-
potrzebuje liczb losowych. Jakość może odwołać twój klucz i wysłać go czenia w pracy z nową parą kluczy.
tych liczb jest krytyczna. Współ- na serwer kluczu, czyniąc go w ten Aby wysłać klucz publiczny na ser-
czesne dystrybucje Linuksa stosu- sposób bezużytecznym  a w dodat- wer, wydaj poniższe polecenie:
ją generatory liczb losowych, które ku nie potrzebuje on do tego ani two-
nadajÄ… siÄ™ do takich potrzeb. jego klucza prywatnego, ani twojej > gpg --send-keys
W ten sposób proces generacji mantry. Po wysłaniu i rozprzestrze-
klucza kończy się. GnuPG przed- nieniu certyfikatu nie jest możliwe Zaś do pobrania klucza z serwera
stawia zestawienie właściwości klu- usunięcie go z klucza. posłuży nam:
cza oraz jego dane identyfikacyjne, Celem wygenerowania osobiste-
na przykład: go certyfikatu odwołania wywołuje- > gpg --recv-keys
my następujące polecenie:
pub 1024D/E7318B79 2006-03-17 Może być konieczne podanie adre-
Key fingerprint ...> gpg --gen-revoke su serwera kluczy. Werner Koch za-
www.hakin9.org
6 hakin9 Nr 5/2006
Kryptografia dla poczty i danych
leca korzystanie z tak zwanych ser-
werów kluczy SKS, jako że są one w
stanie poradzić sobie ze wszystki-
mi informacjami, jakie może zawie-
rać plik kluczy. Adres serwera okre-
ślić można za pomocą opcji --keyse-
rver. Przykładowo, w Polsce można
skorzystać z sks.keyserver.pengu-
in.pl, w Niemczech zaÅ› z sks.keyse-
rver.penguin.de. Serwery kluczy wy-
mieniają między sobą informacje, a
zatem nasz klucz automatycznie tra-
Rysunek 2. Zielona linia przedstawia stan podpisu. Wiadomość
fi do dystrybucji.
była zaszyfrowana i podpisana, co pokazują ikony: klucza i pióra po
prawej stronie. Można na nich kliknąć, aby uzyskać więcej informacji o
Pęki kluczy
wykorzystanych do tego kluczach
Zbiory albo pęki publicznych i pry-
watnych kluczy znalezć można w ka- winna uprzednio wyrazić swoje ba, to Mallory mógłby je czytać za-
talogu ~/.gnupg. Warto się upewnić, dlań zaufanie. Do wykonania te- miast Boba. Aby uniknąć tego ro-
że żaden inny użytkownik nie może go GnuPG zapewnia edytor klu- dzaju ataku Alice mogłaby poprosić
czytać plików w tym katalogu. czy, uruchamiany poleceniem gpg Boba o okazanie dokumentu tożsa-
--edit-key . Również i w mości i przekazanie klucza osobi-
Import i eksport kluczy tym przypadku key-ID może zostać ście, mogłaby także sprawdzić od-
Aby wyeksportować swój klucz pu- zastąpiony np. przez imię Bob bądz cisk palca klucza i zapytać Boba,
bliczny do pliku o nazwie mykey.txt, jego adres e-mail. czy jest on poprawny:
wywołaj polecenie: Przegląd poleceń edytora uzy-
skać można wpisując w jego li- > gpg --fingerprint bob
> gpg --export --armor > nii poleceń help. Aby ustawić po- [..]
mykey.txt ziom zaufania dla klucza Boba, Ali- Key fingerprint
ce uruchamia edytor i otwiera ten = 6871 3E47 AEEE 7424 10EF
Opcja --armor powoduje, że klucz klucz. Wyświetlone zostaną in- B544 3EC0 383B 20AC B216
wypisany zostanie w postaci zro- formacje o kluczu, między innymi
zumiałej dla człowieka. Key-ID mo- o nieznanym poziomie zaufania i Kiedy tożsamość Boba i popraw-
że być zastąpiony dowolnymi dany- ważności. ność jego klucza zostały już po-
mi użytkownika zawartymi w kluczu, twierdzone, Alice wydaje polece-
na przykład nazwiskiem bądz adre- pub 1024D/20ACB216 created: nie trust:
sem e-mail. 2006-03-17 expires:
Aby wczytać klucz innego użyt- never usage: CS Please decide how far you trust
kownika, po prostu wez otrzymany trust: this user to correctly verify
plik i dokonaj jego importu do swoje- unknown validity: unknown other users' keys (by looking
go publicznego pęku. Tak wyglądało- sub 2048g/6B99CC08 created: at passports, checking
by to w przypadku klucza, który Ali- 2006-03-17 expires: fingerprints from different
ce otrzymała od Boba (klucz znajdu- never usage: E sources, etc.)
je siÄ™ w pliku bobpublic.txt): [ unknown] (1). 1 = I don't know or won't say
Bob B 2 = I do NOT trust
> gpg --import bobpublic.txt 3 = I trust marginally
gpg: key 20ACB216: Bardzo ważne jest by upewnić się, 4 = I trust fully
public key "Bob B czy klucz ten rzeczywiście należy 5 = I trust ultimately
" do osoby, o której Alice myśli jako m = back to the main menu
imported o Bobie  a na kolejnym etapie, czy
gpg: Total number processed: 1 Bob rzeczywiście jest osobą, za GnuPG oczekuje, że Alice oceni do-
gpg: imported: 1 którą podaje się Alice. Jest możli- świadczenie Boba w zarządzaniu
we, że podszywająca się pod Bo- kluczami oraz na ile jest on według
Edycja, definicja zaufania i ba trzecia osoba, nazwijmy ją tra- niej wiarygodny. Wartość 5 zarezer-
podpisywanie kluczy dycyjnie Mallorym, przekaże Alice wowana jest dla osobistych kluczy,
Istnieje tutaj jeden drobny haczyk: niewłaściwy klucz. Jeżeli teraz Ali- nie może jej mieć żaden klucz inne-
oprócz po prostu rozpoczęcia ko- ce zaufałaby temu kluczowi i szy- go użytkownika. Alice ufa Bobowi w
rzystania z klucza Boba Alice po- frowała nim wiadomości dla Bo- pełni (4):
www.hakin9.org hakin9 Nr 5/2006 7
Praktyka
pub 1024D/20ACB216 created: user: "Alice C " Sieć zaufania opiera się na kilku
2006-03-17 expires: 1024-bit DSA key, prostych zasadach. Można nimi nie-
never usage: CS ID E7318B79, created 2006-03-17 co manipulować, ale w ogólności wy-
trust: Enter passphrase: glądają one następująco. Klucz jest
full validity: unknown ważny, jeżeli:
sub 2048g/6B99CC08 created: Po wprowadzeniu poprawnego zda-
2006-03-17 expires: nia kodowego (mantry) klucz Boba " podpisaliśmy go, lub
never usage: E staje się ważny dla Alice. Może oka- " został podpisany kluczem, do
[ unknown] (1). Bob B zać się, że trzeba zrestartować edy- którego mamy pełne zaufanie,
Please note that the shown key validity tor kluczy (użyj polecenia quit) aby lub
is not necessarily correct zaktualizować wewnętrzną bazę za- " został podpisany trzema klucza-
unless you restart the program. ufania GnuPG. mi, którym ufamy marginalnie
" oraz ścieżka pomiędzy naszym
Mimo wszystko, klucz w ciąż nie pub 1024D/20ACB216 created: kluczem, a kluczem odbiorcy
jest ważny. Aby móc uczynić go 2006-03-17 expires: składa się z nie więcej niż pięciu
ważnym, Alice ma możliwość pod- never usage: CS kroków.
pisania go swoim kluczem prywat- trust:
Edycja
nym. Z poziomu edytora kluczy full validity: full
preferencji klucza
można to uczynić poleceniem sign. sub 2048g/6B99CC08 created:
Klucz może być następnie wyeks- 2006-03-17 expires: Jak wspomnieliśmy powyżej, nasz
portowany do pliku (patrz wyżej) i never usage: E klucz może zostać skonfigurowany
wysłany z powrotem do Boba, któ- [ full ] (1). Bob B tak, by unikać stosowania szcze-
ry może wczytać go do swojego pu- gólnych algorytmów takich jak
blicznego pęku. Podpisywanie klu- Jeżeli Bob wczyta i podpisze klucz SHA-1 czy MD5, a przynajmniej
czy innych użytkowników ma na Alice stosując opisany powyżej dać wyższy priorytet innym algo-
celu tworzenie sieci zaufania. Je- schemat (ewentualnie generując rytmom: możliwe jest także wyłą-
żeli Alice nie chce przekazać pod- nielokalny podpis), mogą oni za- czenie DES i korzystanie z szyfru
pisanego klucza do Boba, a jedynie cząć wysyłać do siebie tajne wia- Blowfish jako preferowanego szy-
chce by był on ważny w jej własnym domości. Ogólnie rzecz biorąc, wy- fru symetrycznego, jeżeli tego so-
pęku, może podpisać go tylko lokal- słanie tajnej wiadomości polega po bie życzymy.
nie za pomocą polecenia lsign. prostu na napisaniu jej i zaszyfro- Również i te ustawienia można
waniu kluczem publicznym odbior- zmieniać za pomocą edytora klu-
> lsign pub 1024D/20ACB216 created: cy. Jeżeli korzysta się z rozumieją- czy. Alice na przykład uruchomiła-
2006-03-17 expires: cego GnuPG programu pocztowe- by edytor za pomocą następujące-
never usage: CS go (jak na przykład Mozilla Thun- go polecenia:
trust: full validity: unknown derbird z wtyczkÄ… Enigmail), robi to
Primary key fingerprint: za nas program. Na poczÄ…tek jed- > gpg --edit-key alice
6871 3E47 AEEE 7424 10EF nak użyjemy interfejsu linii poleceń Secret key is available.
B544 3EC0 383B 20AC B216 GnuPG. pub 1024D/E7318B79 created:
Bob B 2006-03-17 expires:
Are you sure that you want to sign Sieć zaufania never usage: CS
this key with your Podpisywanie i ufanie kluczom in- trust:
key "Alice C " nych użytkowników tworzy sieć za- ultimate validity: ultimate
(E7318B79) ufania. Wyobrazmy sobie, że chce- sub 2048g/2B381D4B created:
The signature will be marked my napisać tajną wiadomość do 2006-03-17 expires:
as non-exportable. pewnego odbiorcy, którego klucz never usage: E
Really sign? (y/N) pobraliśmy z serwera kluczy. Nigdy [ultimate] (1).
nie spotkaliśmy tej osoby osobiście, Alice C
Informacja pod koniec wynika z lo- a chcemy wiedzieć, czy dany klucz
kalności tworzonego podpisu. Alice rzeczywiście do niej należy. My nie Wykorzystywane przez dany klucz
wpisuje y aby móc podpisać klucz, przeszliśmy przez procedurę spraw- algorytmy można wyświetlić za po-
następnie zaś musi wpisać swoją dzania odcisku palca, wysyłanie te- mocą poleceń edytora: showpref i
mantrę  konieczne jest otwarcie jej stowych listów itd., ale mógł to zro- pref. Pierwsze wyświetla parame-
klucza prywatnego. bić ktoś inny. Jeżeli rzeczywiście try klucza w nieco obszerniejszej for-
ufamy tej trzeciej osobie, niezna- mie, drugie zastępuje nazwy algo-
You need a passphrase to unlock the ny klucz automatycznie staje się dla rytmów ich kodami. Klucz Alice jest
secret key for nas ważny. skonfigurowany następująco:
www.hakin9.org
8 hakin9 Nr 5/2006
Kryptografia dla poczty i danych
Command> showpref Compression: ZLIB, BZIP2, ZIP, ściu polecenia edytora help. Aby za-
pub 1024D/E7318B79 created: Uncompressed kończyć bieżącą sesję, wyjdz z edy-
2006-03-17 expires: Features: MDC, Keyserver no-modify tora poleceniem quit.
never usage: CS Really update the preferences? (y/N)
Szyfrowanie
trust: ultimate validity: ultimate Say yes here;
i deszyfrowanie
[ultimate] (1). You need a passphrase to unlock
danych
Alice C the secret key for user:
Cipher: AES256, AES192, "Alice C " Wyobraz sobie, że Alice chce wy-
AES, CAST5, 3DES 1024-bit DSA key, słać do Boba wiadomość zawiera-
Digest: SHA1, RIPEMD160, ID E7318B79, created 2006-03-17 jącą poufne informacje. Może napi-
SHA256, MD5 Enter passphrase: sać ją w pliku (secret.txt), a następ-
Compression: ZLIB, BZIP2, ZIP, nie zaszyfrować go za pomocą po-
Uncompressed Po wprowadzeniu poprawnego zda- lecenia:
Features: MDC, Keyserver no-modify nia kodowego atrybuty klucza sÄ… ak-
tualizowane. Rezultaty tej operacji . > gpg --recipient bob
Jak łatwo zauważyć, SHA1 jest pokazuje polecenie showpref: --encrypt --armor secret.txt
pierwszym algorytmem w linii Di-
gest, nie można jednak ustawiać Command> showpref Wygeneruje ono plik secret.txt.asc.
preferencji stosujÄ…c nazwy algoryt- pub 1024D/E7318B79 created: Teraz nawet Alice nie jest w stanie
mów  trzeba zastąpić je odpowied- 2006-03-17 expires: never rozszyfrować wiadomości, chociaż
nimi kodami. Polecenie pref wyświe- usage: CS oczywiście wciąż posiada ona ory-
tla dokładnie linię kodów danego klu- trust: ultimate validity: ginał. Z drugiej strony, możliwe jest
cza: ultimate wygenerowanie zaszyfrowanego pli-
[ultimate] (1). ku, które będzie mogło rozkodować
Command> pref Alice C dwóch bądz więcej użytkowników.
pub 1024D/E7318B79 created: Cipher: AES256, AES192, W przypadku takim plik musi być za-
2006-03-17 expires: AES, CAST5, 3DES szyfrowany z więcej niż jednym od-
never usage: CS Digest: RIPEMD160, biorcą. Alice mogłaby to zrobić na-
trust: ultimate validity: SHA256, SHA1 stępująco:
ultimate Compression: ZLIB, BZIP2, ZIP,
[ultimate] (1). Uncompressed > gpg --recipient bob
Alice C Features: MDC, Keyserver no-modify --encrypt --recipient alice --armor
S9 S8 S7 S3 S2 H2 H3 secret.txt
H8 H1 Z2 Z3 Z1 Jak widać MD5 został wyłączo- Lub w skróconej postaci,
[mdc] [no-ks-modify] ny, zaś SHA1 trafił na koniec linii > gpg -r bob -r alice -e -a secret.txt
ale nie można go całkowicie wy-
S to kody algorytmów symetrycz- łączyć. Pokazuje to użytkowniko- Co się tutaj dzieje? Oryginalna wia-
nego szyfrowania, H  algorytmów wi klucza Alice, że woli ona korzy- domość jest szyfrowana kluczem
skrótów, Z zaś  algorytmów kom- stać z RIPEMD160 bądz SHA256, sesji, zaś tenże klucz sesji jest na-
presji. niż z SHA1. W większości przypad- stępnie szyfrowany w osobnych ko-
Do ustawienia preferencji słu- ków wystarcza to do uniknięcia ko- piach kluczami publicznymi Alice i
ży polecenie setpref, przyjmujące rzystania z SHA1. Boba. Wszystkie te dane są następ-
na wejściu linię kodów. Jeżeli Alice Konfiguracja preferencji może nie umieszczane razem w pliku se-
chce się pozbyć MD5, ale chce za- być również ważna gdy znajdzie- cret.txt.asc.
chować pozostałe ustawienia niena- my się w potrzebie wczytania klu- Alice może wysłać ten plik do Bo-
ruszone, skopiuje ona i linię kodów cza PGP do GnuPG bądz vice ver- ba, który jest w stanie go odszyfro-
z przedstawionego powyżej wyjścia sa. Aby na przykład wyeksportować wać za pomocą opcji decrypt. Jego
polecenia pref, pomijając jedynie H1 klucz GnuPG tak, by można było go prywatny klucz zostanie wykorzy-
i przesuwając H2 na koniec listy al- użyć w PGP (zauważ przy tym, że w stany automatycznie, ale Bob musi
gorytmów skrótów. przypadku PGP nie można korzy- wprowadzić swoją mantrę, by go od-
stać z kluczy ElGamal), preferencje blokować.
Command> setpref S9 S8 S7 S3 S2 należy ustawić na S9 S8 S7 S3 S2
H3 H8 H2 Z2 Z3 Z1 S10 H2 H3 Z1 Z0. > gpg --decrypt secret.txt.asc
Set preference list to: Uwaga: niektóre wersje GnuPG You need a passphrase to unlock
Cipher: AES256, AES192, używają polecenia updpref do uak- the secret key for
AES, CAST5, 3DES tywnienia ustawień zmienionych za user: "Bob B "
Digest: RIPEMD160, SHA256, SHA1 pomocÄ… setpref. Przyjrzyj siÄ™ wyj- 2048-bit ELG-E key, ID 6B99CC08,
www.hakin9.org hakin9 Nr 5/2006 9
Praktyka
created 2006-03-17 mość podając jednocześnie dodat- Jedną z najpotężniejszych i nie-
(main key ID 20ACB216) kową opcję: tutaj skorzystała ona zawodnych kombinacji jest w tej
Enter passphrase: z opcji --sign. Umieszcza ona pod- dziedzinie Thunderbird (samodziel-
Bob enters his passphrase here. pis i podpisany tekst w jednym pli- ny klient poczty z projektu Mozilla)
gpg: encrypted with 2048-bit ELG-E key, ku, o nazwie secret.txt.asc. Zakła- wspólnie z wtyczką dla GnuPG o
ID 2B381D4B, created 2006-03-17 dając, że Bob zaufał kluczowi Ali- nazwie Enigmail. Enigmail dodaje
"Alice C " ce oraz go podpisał, polecenie gpg do klienta poczty menu OpenPGP;
gpg: encrypted with 2048-bit ELG-E key, --decrypt secret.txt.asc zwróci mu, jest ona dostępna pod Linuksa,
ID 6B99CC08, created 2006-03-17 co następuje: Mac OS X oraz Windows, wyma-
"Bob B " gana jest zainstalowana instancja
Hi Bob, come to the willow tree tonight 2048-bit ELG-E key, GnuPG. GnuPG dla twojej platfor-
at 8. we have to talk, Alice. ID 6B99CC08, my znajdziesz pod adresem http:
created 2006-03-17 //www.gnupg.org/download. Je-
W tym szczególnym przypadku (main key ID 20ACB216) żeli chcesz korzystać z GnuPG
ostatnia linijka to oryginalna wiado- gpg: encrypted with 2048-bit ELG-E key, pod Windows rzuć okiem na plik
mość od Alice. Istnieje ponadto moż- ID 2B381D4B, created 2006-03-17 GnuPG.README.Windows w fol-
liwość wykorzystywania GnuPG do "Alice C " derze GnuPG w menuStart; gpg
szyfrowania danych za pomocą szy- gpg: encrypted with 2048-bit ELG-E key, można używać z poziomu linii po-
frów symetrycznych; program wyko- ID 6B99CC08, created 2006-03-17 leceń Windows albo za pośred-
rzystuje do tego opcjÄ™ conventional. "Bob B " nictwem Windows Privacy Tray
Można także wybrać algorytm Hi Bob, come to the willow WinPT.
szyfrujący. Aby zaszyfrować plik tree tonight at 8. we have to talk, Enigmail pobrać można spod
mail.tgz za pomocÄ… AES256, po Alice. adresu http://enigmail.mozdev.org/.
prostu wpisz gpg: Signature made Aby zainstalować tę wtyczkę wejdz
Fri 17 Mar 2006 04:05:26 PM CET do menu Narzędzia i wybierz Roz-
> gpg --cipher-algo aes256 using DSA key ID E7318B79 szerzenia, a następnie Instaluj.
-c mail.tgz gpg: Good signature from Wskaż przeglądarce świeżo pobrany
Enter passphrase: "Alice C " plik wtyczki Enigmail i wybierz Insta-
Repeat passphrase: luj. Enigmail będzie dostępna po re-
Teraz Bob może być pewien, że Ali- starcie Thunderbirda.
Zdanie kodowe trzeba wpisać dwu- ce napisała tę wiadomość  można Enigmail musi być uaktywnio-
krotnie, aby uniknąć literówek. Je- bowiem zweryfikować jej podpis. na osobno dla każdej tożsamości
żeli nie określisz za pomocą opcji e-mail, dla której chcesz jej uży-
Szyfruj swojÄ…
-o pliku wyjściowego, GnuPG sko- wać. Czyni się to w menu Edycja,
pocztÄ™: Thunderbird
rzysta z nazwy pliku wejściowe- Ustawienia kont (w menu Narzę-
i Enigmail
go wydłużonej o przyrostek .gpg. dzia w przypadku Windows). Trze-
Aby rozszyfrować te dane, wystar- Korzystanie z GnuPG w przedsta- ba zaznaczyć pole Uruchom obsłu-
czy wpisać wiony powyżej sposób może być gę OpenPGP (Enigmail) dla tej toż-
irytujące, zwłaszcza gdy chce się samości. Jeżeli Enigmail ma pro-
> gpg -o mail2.tgz mail.tgz.gpg wykorzystywać regularnie funkcje blem z określeniem identyfikatora
gpg: AES256 encrypted data kryptograficzne do podpisywania domyślnego klucza na podstawie
Enter passphrase: bÄ…dz szyfrowani poczty. W przy- adresu e-mail, okno to pozwala wy-
padku takim każda wiadomość mu- brać odpowiedni identyfikator ręcz-
Plik mail2.tgz zawierać będzie orygi- siałaby zostać zapisana w syste- nie. Przycisk Zaawansowane otwie-
nalne dane. mie plików, przetworzona przez ra dialog Preferencje OpenPGP;
GnuPG, a następnie ponownie można się do niego dostać także
Podpisy i ich walidacja otwarta w programie pocztowym i z menu OpenPGP (pozycja Pre-
Bob może teraz przeczytać wiado- wysłana. ferencje). Może zaistnieć koniecz-
mość i wie, że wiadomość z pew- Aby uprościć i uprzyjemnić użyt- ność podania w zakładce Podsta-
nością była przeznaczona dla nie- kownikom życie, niemal wszystkie wy ścieżki pliku binarnego gpg, je-
go (została zaszyfrowana jego klu- klienckie programy pocztowe albo żeli nie została ona ustawiona au-
czem publicznym), nie ma jednak implementują funkcje kryptograficz- tomatycznie. Ponadto ważne jest
pewności, czy rzeczywiście zosta- ne, albo dają dostęp do odpowied- sprawdzenie, czy zaznaczone jest
ła ona napisana i wysłana przez nich programów przez specjalne pole Szyfruj do siebie w zakładce
Alice  wiadomość nie posiada bo- wtyczki  np. KMail, Mutt, Pine, Syl- Wysyłanie, w przeciwnym razie nie
wiem podpisu. Aby takowy dodać, pheed, Emacs czy Balsa, żeby wy- bylibyśmy w stanie czytać wysłanej
Alice może zaszyfrować wiado- mienić zaledwie kilka. przez nas zaszyfrowanej poczty.
www.hakin9.org
10 hakin9 Nr 5/2006
Kryptografia dla poczty i danych
Inną wartą uwagi opcją jest Zawsze cie (ssh, scp) bądz serwerów pocz- nak z powodzeniem udało nam
korzystaj z PGP/MIME w zakładce ty, WWW itd. (nie pokazane tutaj), się to sprawdzić pod Fedora Co-
PGP/MIME; jeżeli nie jest ona ak- Linux pozwala także na dość łatwe re 4. Niektóre systemy potrzebo-
tywna Enigmail korzysta z tak zwa- szyfrowanie plików-kontenerów oraz wać będą zmodyfikowanej wer-
nego formatu inline PGP, w którym systemów plików. Pokrótce przedsta- sji urządzenia loopback; trochę
nie są szyfrowane załączniki. wimy tutaj LoopAES oraz DM-Crypt, wskazówek na ten temat znalezć
Aby zaszyfrować bądz podpi- istnieją jednak oczywiście inne można pod adresem http://loop-
sać list, naciśnij przycisk OpenPGP opcje, a ponadto możliwe jest wyko- aes.sourceforge.net/.
w oknie kompozycji. Możesz wy- nywanie podobnych operacji pod in- Po pierwsze wybieramy party-
brać tam Podpisz wiadomość, Za- nymi systemami operacyjnymi. Poni- cję. Może ona znajdować się na pen
szyfruj wiadomość bądz i jed- żej przedstawimy dwa przykłady. drive'ie USB bądz na zewnętrznym
no, i drugie. Jeżeli chcemy podpi- twardym dysku, może też być par-
sać wiadomość, Enigmail wyświe- Szyfrowanie partycji dzięki tycją na dysku wbudowanym  mu-
tli dialog z prośbą o zdanie kodo- LoopAES si jednak być pusta.
we aby uzyskać dostęp do nasze- LoopAES korzysta z linuksowego Po drugie, utwórz losowy klucz.
go klucza prywatnego. Następnie urządzenia loopback (z włączony- W naszym przypadku pobierzemy
GnuPG przetwarza dane, zanim mi rozszerzeniami kryptograficzny- 2925 bajtów z /dev/random, dokona-
nasz klient poczty wyśle je w świat. mi) by stworzyć system plików we- my ich konwersji do formatu base64
Jeżeli chcesz zaszyfrować wiado- wnątrz kontenera bądz na partycji ja- (za pomocą narzędzia uuencode, na
mość, GnuPG musi znać klucz pu- ko urządzeniu. Zamierzamy tutaj po- ogół dostępnego w pakiecie sha-
bliczny jej adresata. kazać szybki i prosty scenariusz, w rutils) i skorzystamy z head i ta-
Po otrzymaniu zaszyfrowanej którym wykorzystamy wolną party- il, by wybrać z tego losowego blo-
i przeznaczonej dla nas wiadomo- cjÄ™ na dysku (w naszym przypadku ku 65 linijek. Na koniec przy pomocy
ści, jesteśmy proszeni o wprowadze- noszącą nazwę /dev/sdc3) by stwo- GnuPG szyfrujemy te liczby algoryt-
nie zdania kodowego. Thunderbird rzyć system plików na zaszyfrowa- mem AES256:
sprawdza także podpis (jeżeli tako- nym urządzeniu loopback. System
wy występuje) i informuje, czy jest plików będzie szyfrowany i deszy- > head -c 2925 /dev/random |
on poprawny. frowany w locie, ale by uzyskać do uuencode -m | head -n 66 | tail -n
niego dostęp potrzebny będzie klucz 65 |
Zaszyfrowane pliki-
Właściwy klucz będzie przechowy- gpg --symmetric  cipher-algo
kontenery i systemy
wany w symetrycznie zaszyfrowa- aes256 -a > keyfile.gpg
plików
nym pliku. Brzmi to nieco skompliko-
Kryptografia to nie tylko GnuPG i wanie, jednak zapoznając się s przy- W zależności od ilości entropii do-
szyfrowanie plików bądz wiadomo- kładem zobaczysz, jak to rozwiąza- stępnej w systemie operacja ta mo-
ści. Obok wielu innych jej potencjal- nie działa. że zająć dość dużo czasu (do ge-
nych zastosowań, takich jak zabez- Być może nie będzie ono dzia- nerowania liczb losowych za po-
pieczanie komunikacji w Interne- łać na wszystkich systemach, jed- mocą /dev/random potrzeba du-
żo entropii!). Teraz można umie-
ścić plik kluczy np. na dysku USB
O autorze bÄ…dz SmartCard'zie. Od tego mo-
Doktor Lars Packschies jest pracownikiem naukowym oraz administratorem oprogra-
mentu twój zaszyfrowany system
mowania i ochrony danych w środowisku Linux, SunOS/Solaris, IRX i AIX Regionalne-
plików będzie dostępny tylko wte-
go Centrum Rachunkowego (Regionales Rechenzentrum, RRZ) na Uniwersytecie w
dy, gdy podłączysz doń to fizycz-
Koloni. Kontakt z autorem: packschies@rrz.uni-koeln.de.
ne urzÄ…dzenie.
Kolejnym krokiem jest inicjacja
partycji danych. Wypełnimy ją raz
pseudolosowymi liczbami, korzysta-
W Sieci
jąc z /dev/zero by wygenerować stru-
" http://downlode.org/Etext/alicebob.html
mień zer, które zostaną zaszyfrowa-
" http://www.gnupg.org
ne przez szyfrujÄ…ce urzÄ…dzenie loop-
" http://rfc2440.x42.com  OpenPGP, RFC 2440
back. Robi siÄ™ to tylko raz:
" http://rfc2822.x42.com  RFC 2822, S/MIME
" http://www.cits.rub.de/MD5Collisions  Historia Alice i jej szefa
> head -c 15 /dev/urandom | uuencode
" http://www.heise.de/newsticker/meldung/56624  komentarze Wernera Kocha,
-m - |
po niemiecku
" http://www.gnupg.org/(de)/documentation/faqs.html head -n 2 | tail -n 1 | losetup -p 0 -e
" http://www.stud.uni-hannover.de/~twoaday/winpt.html
aes256
/dev/loop3 /dev/sdc3
www.hakin9.org hakin9 Nr 5/2006 11
Praktyka
Tworzymy w ten sposób urządze- Kontener danych zaszyfrowany drivers/md oraz kernel/crypto. Wy-
nie loopback /dev/loop3 korzysta- przez DM-Crypt korzystamy kontener o rozmiarze
jące z partycji /dev/sdc3, zainicjo- Kolejnym przykładem, który chcę 200 MB. Stworzymy go następują-
wanej pewną ilością losowych liczb tutaj przedstawić, jest korzystanie z co:
oraz korzystajÄ…cej z AES256. Od pliku-kontenera (czyli po prostu blo-
tej chwili wszystko, co zapiszemy ku losowych danych na twardym > dd if=/dev/urandom
do /dev/loop3 będzie zaszyfrowa- dysku) do przechowywania weń za- of=container bs=1024k count=200
ne. W ten sposób strumień zer sta- szyfrowanych danych. Wykorzysta-
nie się długą listą pseudolosowych my tutaj DM-Crypt, który powinien Teraz superużytkownik może pod-
liczb; korzystamy z tego sposobu, być dostępny w twoim systemie, pod łączyć kontener do Device Mappe-
ponieważ jest on po prostu dużo warunkiem że korzystasz z architek- ra poprzez DM-Crypt, w naszym
szybszy niż generacja liczb loso- tury z jądrem 2.6. Jeżeli w twoim sys- przypadku korzystając z urządzenia
wych. Operację tę przeprowadza temie narzędzie to nie działa, zajrzyj /dev/loop4.
siÄ™ tylko raz. pod adres http://www.saout.de/misc/
dm-crypt. > losetup /dev/loop4 container
> dd if=/dev/zero of=/dev/loop3 bs DM-Crypt to napisany przez Chri- > cryptsetup -y create secret /dev/
=4k conv=notrunc 2>/dev/null stophe'a Saouta cel dla Device Map- loop4
pera służący do szyfrowania danych.
Inicjacja zostanie zakończona, gdy Od wersji 2.6.4 jądra DM-Crypt za- Aby uniknąć skutków ewentualnych
urządzenie loopback jest zwalniane: stępuje Cryptoloop. Device Mapper literówek przy wpisywaniu zda-
administruje wirtualnymi urządzenia- nia kodowego, dzięki opcji -y zo-
> losetup -d /dev/loop3 mi blokowymi, które z kolei mogą ko- staniemy o nie zapytane dwukrot-
rzystać z fizycznych urządzeń takich nie. Container to nazwa pliku konte-
Teraz musimy zainicjować na naszej jak twarde dyski czy też partycje. Ist- nera (może być konieczne podanie
partycji system plików: nieje całkiem spora liczba celów dla pełnej ścieżki), secret zaś to na-
Device Mappera, na przykład ten za- zwa pliku Device Mappera (można
> losetup -K /path/to/your/keyfile.gpg pewniający rozdzielanie danych po- równie dobrze użyć innej nazwy);
-e między kilkoma urządzeniami. Rów- znajdziesz go potem pod /dev/
AES256 /dev/loop3 /dev/sdc3 nie dobrze można tę swego rodza- mapper/secret. Urządzenie nie za-
ju warstwę pośrednią wyposażyć w wiera póki co systemu plików, stwo-
i funkcje kryptograficzne: DM-Crypt. rzymy go następująco:
Upewnij się, że w twoim jądrze
> mkfs -t ext2 /dev/loop3 aktywne sÄ… funkcje Device map- > mkfs.ext2 /dev/mapper/secret
per support oraz Crypt target sup-
Aby ponownie zwolnić urządzenie, port (można je znalezć pod Device po czym możemy je zamontować:
wywołamy Drivers/Multi-Device-Support (RAID
and LVM)). Ponadto aktywne powin- > mount /dev/mapper/secret /mnt/secret
> losetup -d /dev/loop3 ny być także Device Drivers/Block
Devices/Loopback device support Po zakończeniu korzystania z konte-
Za każdym razem, gdy chcemy sko- oraz Cryptographic Options/AES ci- nera, wpisujemy
rzystać z ten partycji, tworzymy pher algorithms.
urządzenie loopback i montujemy Jeżeli korzystasz z dystrybucji > umount /mnt/secret
je w systemie plików. Jeżeli dodamy Fedora Core, zainstaluj pakiet de- > cryptsetup remove secret
do pliku /etc/fstab następującą linię vice-mapper; użytkownikom Debia- > losetup -d /dev/loop4
(wszystko to powinno znalezć się w na potrzebne będą pakiety dmcrypt
jednej linijce): oraz cryptsetup. Oprócz tego nale- DM-Crypt może obsługiwać nie tyl-
ży załadować kilka modułów jądra. ko kontenery danych, ale także ca-
/dev/sdc3 /mnt/loopdev ext2 Użytkownicy Red Hata bądz Fedo- łe partycje; można także łatwo za-
defaults,noauto,loop=/dev/loop3, ry mogą dodać następujące linijki do szyfrować partycje wymiany. Po-
encryption=AES256,gpgkey=naszplikkluczy pliku /etc/rc.local: wyższy przykład pokazał tylko szy-
0 0 frowanie kontenera, więcej infor-
modprobe aes macji o DM-Crypt znalezć można
operacja ta stanie się całkiem pro- modprobe dm_mod na jego stronie domowej pod adre-
sto. Wystarczy wywołać: modprobe dm_crypt sem http://www.saout.de/misc/dm-
crypt/ l
> mount /mnt/loopdev Jeżeli korzystasz z Debiana, użyj
Password: zdanie kodowe pliku kluczy narzędzia modconf i wybierz kernel/
www.hakin9.org
12 hakin9 Nr 5/2006


Wyszukiwarka

Podobne podstrony:
projektowanie schematow logicznych dla magazynow danych
Definiowanie urzÄ…dzenia dla przechowywania danych
Billing dla bazy danych Oracle
Kryptografia a bezpieczeństwo danych
bazy danych dla kazdego
WYKORZYSTANIE STANDARDOW SERII ISO ORAZ OGC DLA POTRZEB BUDOWY INFRASTRUKTURY DANYCH PRZESTRZENNYCH
Obliczanie godła mapy 1P0 dla danych wsp w ukł 2000
Informatyka dla Gimnazjum Zeszyt Ćwiczeń Prosty serwis Wiki nie wymagający bazy danych
Elementy kryptografii Szyfrowanie danych przy użyciu kluczy symetrycznych I
Elementy kryptografii Szyfrowanie danych przy użyciu kluczy symetrycznych II

więcej podobnych podstron