You are on page 1of 11

www.hakin9.

org hakin9 Nr 5/2006 2


Praktyka
C
zy umieciby poufne informacje na
kartce pocztowej i wysa je w ten
sposb do znajomych, wsppracow-
nikw bd partnerw biznesowych?
Chyba, nie. Dlaczego zatem mielibymy
umieszcza poufne informacje w e-mailu i
wysya je przez cay wiat? Kryptografa nie
tylko bardzo zwiksza bezpieczestwo ko-
munikacji w Internecie oferujc moliwo
szyfrowania i/lub podpisywania wiadomoci,
ale take stanowi gwarancj naszej prywat-
noci. Przykadowo, by moe jeste wia-
dom faktu, e Unia Europejska usankcjono-
waa przechowywanie przez dostawcw In-
ternetu oraz operatorw sieci komrkowych
informacji o poczeniach przez przynajm-
niej 6 miesicy. W poczeniu z informacja-
mi o kartach kredytowych i premiowych, a
take wszystkimi innymi dostpnymi tu i w-
dzie informacjami, pozwala to na wygenero-
wanie kompletnego proflu osobistego nie tyl-
ko z podstawowych danych, ale take z algo-
rytmw akwizycji danych. By moe ju teraz
zebray one mnstwo informacji na temat cie-
bie i twoich nawykw, teraz jednak moesz
zacz co z tym robi.
Szyfry symetryczne
i asymetryczne
Symetryczne klucze kryptografczne charakte-
ryzuj si tym, e klucze: szyfrujcy i deszy-
frujcy s identyczne. Innymi sowy, nadawca
i odbiorca wymienianej midzy nimi wiadomo-
ci musz posiada ten sam klucz i musz
wymieni ten klucz przed rozpoczciem trans-
misji wiadomoci. Bya to od zawsze gwna
wada metod symetrycznych: problem wymia-
ny klucza.
Jeden z pierwszych znanych szyfrw no-
si nazw szyfru Cezara. Juliusz Cezar szyfro-
Kryptografa
dla poczty i danych
Lars Packschies
stopie trudnoci
Termin kryptografa pochodzi od greckich sw: krypts, ukryte,
oraz grphein, pismo. W oglnoci, wyrniamy dwa rodzaje
szyfrw kryptografcznych: symetryczne i asymetryczne.
Okrelenia te zwizane s ze struktur klucza. Aby zaszyfrowa
dane bd wiadomo potrzebne s informacje o tym, jak
szyfrowa bd deszyfrowa dane (szyfr), a take klucz tajny
parametr szyfru.
Z artykuu dowiesz si...
Jak zainstalowa i urzy klucze GnuPG
Jak szyfrowa dane na poziomie systemu pli-
kw
Powiniene wiedzie...
Czym s podstawy kryptografi symetrycznej i
asymetrycznej
Jakie s podstawy algorytmw
Kryptografia dla poczty i danych
hakin9 Nr 5/2006 www.hakin9.org 3
wa wiadomoci zastpujc kad li-
ter w oryginalnej wiadomoci lite-
r przesunit o trzy miejsca w pra-
wo w alfabecie: A staje si D, B sta-
je si E, a Z staje si C. Algorytmem
jest tu zastpienie kadej litery jaw-
nego tekstu przez liter z przesuni-
tego alfabetu, kluczem za jest 3: al-
fabet przesunity zosta o 3.
Oczywicie metody zastpo-
wania i transponowania liter ce-
lem stworzenia bardziej zaawan-
sowanych szyfrw ulegay przez
lata ewolucji, niektrych przypad-
kach wymagay one zastosowa-
nia urzdze mechanicznych. Jed-
nym z wanych przykadw jest tu
ENIGMA, wykorzystywana przez
niemieckie wojsko podczas dru-
giej wojny wiatowej (bardzo do-
bry artyku na temat tego urzdze-
nia oraz jego kryptoanalizy znale
mona w Wikipedii). Wykorzysty-
wano ponad 200 000 takich ma-
szyn, za kady operator musia
otrzymywa co miesic list kluczy,
tak zwan ksik kodow. Przy
okazji: zakoczon powodzeniem
kryptoanaliz ENIGMY (mona po-
wiedzie: jej zamanie) przeprowa-
dzia grupa naukowcw skupionych
wok polskiego matematyka Ma-
riana Rajewskiego oraz Alana Tu-
ringa, w Bletchley Park, w Milton
Keynes, w Anglii, ju w poowie lat
30 ubiegego wieku. Og poinfor-
mowano o tym w latach 1970 (na-
zwano to ultra sekretem).
Dziki wykorzystaniu wspcze-
snym komputerw istnieje obecnie
cakiem spora liczba symetrycz-
nych szyfrw, ktre uwaa si za
bezpieczne na przykad AES (Ad-
vanced Encryption Standard, ina-
czej Rijndael, stworzony przez Jo-
ana Daemena i Vincenta Rijmena),
3DES (potrjny DES, Data Encryp-
tion Standard, oparty na pracach
Horsta Feistela) czy te IDEA (In-
ternational Data Encryption Algo-
rithm), wymieniajc zaledwie kil-
ka. Wszystkie te nowoczesne sy-
metryczne szyfry zaprojektowano
z grubsza pniej ni w latach 50
ubiegego wieku. Szyfry stworzone
wczeniej okrela si szerzej jako
klasyczne.
Niemniej dopiero w latach sie-
demdziesitych kryptografowie roz-
wizali problem wymiany klucza
(prace Whitfelda Diffego, Martina
Hellmana i Ralpha Merkle'a) oraz po-
wstaa oparta na tym pomyle kon-
cepcja asymetrycznych kluczy, opra-
cowana przez Rona Rivesta, Adie-
go Shamira i Leonarda Adlemana w
1977 roku.
Metody czy te algorytmy krypto-
grafi asymetrycznej wykorzystuj in-
ne klucze do szyfrowania, a inne do
deszyfrowania wiadomoci. Oba ta-
kie klucze nazywane s wsplnie pa-
r kluczy (czsto okrelan po prostu
jako klucz bd klucz asymetryczny).
Po wygenerowaniu pary jeden z klu-
czy trzymany jest w sekrecie, nazy-
wamy go kluczem prywatnym, drugi
za udostpnia si publicznie i jest
nazywany kluczem publicznym. Je-
den z kluczy suy do szyfrowania
wiadomoci, a dziki matematycz-
nym podstawom stosowanego roz-
wizania do zrekonstruowania ory-
ginalnej wiadomoci mona wyko-
rzysta tylko drugi klucz. Praktycz-
nie niemoliwe jest wyliczenie klu-
cza prywatnego z klucza publiczne-
go (bd na odwrt). Ponadto rw-
nie niemoliwe s prby deszyfrowa-
nia wiadomoci przez zastosowanie
wszystkich moliwych kluczy (pr-
by tego rodzaju okrela si mianem
atakw siowych) wedle wspcze-
snej wiedzy zajoby to kilka miliar-
dw lat.
Klucze prywatne
i publiczne
Koncepcja kluczy prywatnych i pu-
blicznych oglnie rzecz biorc po-
zwala na wykorzystanie ich na
dwa sposoby: (1) szyfrowanie/
deszyfrowanie oraz (2) generacja i
weryfkacja elektronicznych podpi-
sw.
Szyfrowanie/deszyfrowanie
Wyobramy sobie dwie osoby, Ali-
ce i Boba. Alice generuje par klu-
czy (robi to tylko raz, potem klu-
cze mona wykorzystywa wielo-
krotnie) i upublicznia swj klucz pu-
bliczny, dziki czemu Bob moe po-
bra ten klucz. Teraz Bob moe wy-
korzysta w klucz do zaszyfrowa-
nia wiadomoci przeznaczonej dla
Alice, ale tylko prywatny klucz Ali-
ce jest w stanie rozszyfrowa wia-
domo od Boba. Tylko waciciel
prywatnego klucza, Alice bdzie
mg j przeczyta. Kada oso-
ba majca dostp do publicznego
klucza Alice moe wysa jej wia-
domo, ktr tylko ona moe od-
czyta. Gdyby Alice chciaa wysa
tajn wiadomo do Boba, moga-
by skorzysta z publicznego klu-
cza wygenerowanego przez tego
ostatniego.
Rysunek 1. Enigmail dodaje przycisk OpenPGP, pozwalajcy na
podpisywanie i/lub szyfrowanie poczty
hakin9 Nr 5/2006 www.hakin9.org
Praktyka
4
Podpis
Drugi sposb wykorzystuje te sa-
me dwa klucze Alice, ale w odwrot-
nej kolejnoci. Wyobramy sobie,
e Alice pisze wiadomo i szyfruje
j swoim kluczem prywatnym. Te-
raz kady, kto posiada dostp do
odpowiedniego klucza publicznego
moe odczyta t wiadomo po jej
odszyfrowaniu. W przypadku takim
odbiorca moe by pewien, e wia-
domo zaszyfrowano prywatnym
kluczem Alice, a co za tym idzie to
Alice musiaa j napisa z def-
nicji Alice jest jedyn osob posia-
dajc dostp do tego klucza pry-
watnego. Nazywamy to podpisem
elektronicznym.
Oglnie rzecz biorc, istniej
dwie gwne metody asymetrycz-
ne, z ktrymi bdziemy mieli do
czynienia i ktre uwaane s za
bezpieczne: RSA (Rivest, Shamir,
Adleman; opatentowany) i ElGamal
(autorstwa Tahera ElGamala). Ist-
nieje take Digital Signature Algo-
rithm (DSA).
PGP, OpenPGP,
S/MIME
Zbieraj wszystkie powysze in-
formacje razem: RSA, ElGamal i
DSA to algorytmy bd szyfry asy-
metryczne. AES, 3DES bd IDEA
(IDEA rwnie zosta opatentowany)
s szyframi symetrycznymi. Mo-
na ich uywa po prostu by szyfro-
wa, deszyfrowa bd nawet elek-
tronicznie podpisywa dane jed-
nak aby naprawd moliwe byo wy-
korzystywanie tych algorytmw w
rzeczywistych zastosowaniach nie-
zbdna jest znaczna wiedza w in-
nych dziedzinach, na przykad: jak
przetwarza dane, jakich algoryt-
mw uywa do generacji par klu-
czy, co zrobi gdy wiadomo ma
by zaszyfrowana bd odszyfrowa-
na i tak dalej.
Aby skomplikowa zagadnienie
jeszcze bardziej, w nowoczesnych
aplikacjach do szyfrowania danych
wykorzystuje si nie tylko szyfry
asymetryczne. Zaszyfrowanie du-
ych iloci danych za pomoc szy-
fru asymetrycznego zajmuje mn-
stwo czasu, znacznie duej ni ma
to miejsce w przypadku szyfrw sy-
metrycznych.
Dlatego ze wzgldw praktycz-
nych dla kadej wiadomoci genero-
wany jest symetryczny klucz sesji, za
pomoc ktrego szyfrowane s da-
ne; dopiero klucz symetryczny szy-
frowany jest za pomoc asymetrycz-
nej pary kluczy. W efekcie dostajemy
dwa komponenty: symetrycznie za-
szyfrowany blok danych oraz asy-
metrycznie zaszyfrowany klucz sy-
metryczny. Nastpnie odbiorca po
prostu korzysta z odpowiedniego
klucza asymetrycznego aby wydo-
by klucz symetryczny, za pomoc
ktrego to klucza deszyfrowany jest
blok danych.
Pierwsz aplikacj implementu-
jc ww. algorytmy po tym, jak zo-
stay one upublicznione, bya PGP
(Pretty Good Privacy) Phila Zim-
mermana, opublikowana w 1991
w systemie biuletynowym. Zyskaa
ona wysok popularno, ale take
stawaa si coraz bardziej komer-
cyjna. Nie kada wersja PGP do-
stpna bya w postaci kodu rdo-
wego. Ponadto niedozwolone by-
o eksportowanie PGP ze Stanw
Zjednoczonych w postaci programu
komputerowego (istniay specjalne
wersje midzynarodowe, 5.0i; byy
one drukowane na papierze i legal-
nie eksportowane w postaci ksi-
ek, za poza granicami USA kod
by skanowany i przetwarzany pro-
gramami OCR), a sam program za-
wiera opatentowane algorytmy. Ze
wzgldu na to, e nie zawsze mo-
liwe byo spoeczne zapoznanie
si z kodem rdowym, wersjom
tym nie mona byo w peni zaufa
mogy one przykadowo posia-
da zaimplementowane bez wie-
dzy ogu tylne drzwi bd algoryt-
my klucza gwnego. Wykorzysta-
nie kodu kryptografcznego to spra-
wa zaufania. Aby unikn proble-
mw z patentami i licencjami, roz-
poczto prace nad GnuPG (autor-
stwa Wernera Kocha). GnuPG im-
plementuje tak zwany Standard
OpenPGP (RFC 2440, czsto na-
zywany take PGP/MIME), oparty
na PGP (tym, co napisa Phil Zim-
merman).
Byoby jednak zbyt prosto, gdyby
istnia tylko jeden standard: istnieje
take S/MIME (Secure MIME, RFC
2822). S/MIME wykorzystuje (nie-
ktre) szyfry wykorzystywane take
przez OpenPGP, jednak oba stan-
dardy posiadaj rne formaty klu-
czy oraz wiadomoci i z tego wzgl-
du s niekompatybilne. Ponadto oba
standardy wykorzystuj rne mode-
le zaufania: podczas gdy OpenPGP
pozwala na stworzenie duej sieci
zaufania , S/MIME korzysta z silnie
hierarchicznych certyfkatw opar-
tych na X.509 v3 (standard X.509
okrela m.in. standardowe formaty
certyfkatw kluczy publicznych oraz
algorytm walidacji cieki certyfkacji
patrz Wikipedia).
Algorytmy skrtw
Protokoy kryptografczne wyko-
rzystuj algorytmy generujce tak
zwane odciski palcw, czy te war-
toci skrtu, danych. Tego rodzaju
skrt jest bardzo krtki, nie mona
zrekonstruowa danych z ich war-
toci skrtu (w przeciwnym wypad-
ku byyby to najlepsze znane algo-
rytmy kompresji), a warto skrtu
powinna by defnitywna. Ponadto
musi by niemoliwe (a przynajm-
niej niemal niemoliwe) wygenero-
wanie dwch rnych dokumentw
o tej samej wartoci skrtu tak
zwana generacja kolizji.
Moliwe e widziae ju kiedy
skrty, sprawdzajc poprawno
pobranych pakietw z oprogramo-
waniem (na przykad za pomoc
md5sum bd sha1sum). Algoryt-
my: MD5 i SHA1 s powszechnie
stosowane w kryptografi, a zwasz-
cza w podpisach elektronicznych;
z drugiej strony, badacze odkryli
sposoby na ograniczenie liczby te-
stw przy poszukiwaniu kolizji o kil-
ka rzdw wielkoci. Dla MD5 ist-
nieje przykad, w ktrym naukowcy
wygenerowali dwa rne pliki post-
script o takiej samej wartoci skr-
tu MD5. Pierwszy z nich to list reko-
mendacyjny szefa Alice, drugi za
rozkaz rzymskiego imperatora
Gajusza Juliusza Cezara.
Z tego wzgldu MD5 naley
traktowa jako niebezpieczny. Po-
Kryptografia dla poczty i danych
hakin9 Nr 5/2006 www.hakin9.org 5
dobnie rzecz dzieje si w przypad-
ku SHA1. Niemniej, MD5 i SHA1 s
wci w uyciu ze wzgldu na to,
i s one czci algorytmu DSS.
Tak dugo, jak bdzie to prawd,
MD5 i SHA1 wci bd uywane
na przykad w GnuPG. GnuPG im-
plementuje wprawdzie lepsze algo-
rytmy, ale np. SHA256 korzysta z
kluczy RSA, nie DSS. Niestety wy-
glda na to, e trzeba bdzie z tym
y tak dugo, a ofcjalny stan-
dard NIST nie pozwoli na obej-
cie tego problemu. Jest jednak
moliwe skonfgurowanie kluczy
GnuPG tak, by unikay one stoso-
wania MD5. SHA-1 z kolei jest obo-
wizkowym elementem standardu
OpenPGP, mona jednak ograni-
czy prawdopodobiestwo uycia
go poprzez zmian priorytetw r-
nych algorytmw skrtu. Wrcimy
do tego pniej.
Generacja kluczy
GnuPG moe ju by zainstalowa-
ny w twoim linuksowym systemie.
Sprbuj wywoa gpg --version; je-
eli GnuPG jest ju dostpny, powi-
niene zobaczy jego numer wer-
sji oraz (skrcon) list zaimple-
mentowanych w obecnej wersji al-
gorytmw kryptografcznych oraz
kompresji:
......> gpg (GnuPG) 1.4.2.2
[..]
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E,
RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH,
AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160,
SHA256, SHA384, SHA512
Compression:
Uncompressed, ZIP, ZLIB, BZIP2
Jestemy teraz gotowi do wygenero-
wania naszej pierwszej pary kluczy
GnuPG. Aby rozpocz proces ge-
neracji, wpisz
............> gpg --gen-key
Please select
what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?
Wybierz tu opcj domyln. Pa-
ra kluczy DSA (wykorzystywana w
podpisach) bdzie miaa 1024 bi-
ty dugoci, mona jednak zmie-
ni rozmiar pary kluczy ElGamal.
Na og wystarczajc liczb jest
2048. Od pewnego momentu prze-
staje mie sens dalsze wyduanie
klucza, atwiej bowiem wtedy tortu-
rowa odpowiedni osob by zdo-
by klucz prywatny, ni prbowa
go zama. Niestety uytkownik po-
zostaje najsabszym ogniwem a-
cucha.
DSA keypair will have 1024 bits.
ELG-E keys may be
between 1024 and 4096 bits long.
What keysize do you want? (2048)
Dlatego po prostu wcinij <Enter>.
Requested keysize is 2048 bits
Please specify how long the key
should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Na og wpisujemy tutaj 0. Jeeli
chcesz zmienia klucz co roku, mo-
esz wpisa tutaj co innego. Je-
eli jednak korzystasz z tak zwa-
nych serwerw kluczy do dystry-
bucji swojego klucza bd kluczy,
niewane klucze bd akumulowa-
ne na serwerach nie mona ich
ze kasowa, mona je co najwy-
ej odwoa.
Nastpnym krokiem bdzie te-
raz umieszczenie w kluczu, jee-
li chcemy, troch informacji oso-
bistych. Jeeli chcesz bra udzia
w sieci zaufania i pozwoli innym
podpisywa twj klucz publiczny,
sygnalizujc w ten sposb e ci
ufaj, bdzie miao sens umiesz-
Tabela 1. Lista kodw
Kod Algorytm
Symetryczne szyfry
S1 IDEA
S2 3DES
S3 CAST5
S4 BLOWFISH
S7 AES128
S8 AES192
S9 AES256
S10 TWOFISH
Algorytmy skrtw
H1 MD5
H2 SHA1
H3 RipeMD160
H8 SHA256
H9 SHA384
H10 SHA512
Algorytmy kompresji
Z1 ZIP
Z2 ZLIB
Z3 BZIP2
hakin9 Nr 5/2006 www.hakin9.org
Praktyka
6
czenie w nim adresu e-mail oraz
prawdziwego imienia i nazwiska.
Oglnie rzecz biorc, mona tutaj
wpisa cokolwiek.
You need a user ID to identify your
key;
the software constructs the user ID
from the Real Name,
Comment and Email Address
in this form:
"Heinrich Heine (Der Dichter)
<heinrichh@duesseldorf.de>"
Real name: Alice C
mail address: alice@example.com
Comment:
You selected this USER-ID:
"Alice C <
alice@example.com>"
Change (N)ame, (C)omment,
(E)mail or (O)kay/(Q)uit?
Nacinij (O). Teraz wprowad swo-
je zdanie kodowe, inaczej nazywa-
ne mantr. Powinno by ono tak
dugie jak tylko jest to moliwe, po-
winiene by jednak w stanie je za-
pamita. 30-40 znakw powinno
wystarczy, w miar moliwoci nie
stosuj jednak tutaj sw ze sow-
nika bd zda z ksiek. Mantra
to ostatni bastion pomidzy klu-
czem prywatnym a zewntrznym
wiatem, niech zatem bdzie ona
dobra. Jeeli chcesz j zapisa,
umie odpowiedni kartk w sej-
fe. Moe si zdarzy, e przed roz-
poczciem procesu generacji klu-
cza trzeba bdzie wpisa mantr
dwukrotnie. GnuPG informuje ci
potem, e dobrym pomysem b-
dzie poruszanie troch mysz, po-
robienie czego na klawiaturze i tak
dalej. Do generacji klucza GnuPG
potrzebuje liczb losowych. Jako
tych liczb jest krytyczna. Wsp-
czesne dystrybucje Linuksa stosu-
j generatory liczb losowych, ktre
nadaj si do takich potrzeb.
W ten sposb proces generacji
klucza koczy si. GnuPG przed-
stawia zestawienie waciwoci klu-
cza oraz jego dane identyfkacyjne,
na przykad:
pub 1024D/E7318B79 2006-03-17
Key fngerprint
= 6DB6 3657 EE80 E74D 164B
C978 6500 F1EF E731 8B79
uid Alice C <alice@example.com>
sub 2048g/2B381D4B 2006-03-17
Linia zaczynajca si od pub 1024D
informuje nas, e gwny klucz ma
dugo 1024 bitw (klucze DSA za-
wsze s tej dugoci), e jest to klucz
DSA (oznaczenie D) oraz e jego
key-ID to E7318B79. Numer ten
bdzie identyfkowa twj klucz na
wiatowych serwerach kluczy. Na-
stpna linijka zawiera odcisk palca
naszego klucza. Kiedy klucz twj
jest podpisywany przez innych uyt-
kownikw, odcisk palca wykorzysty-
wany jest do identyfkacji (zauwa,
e identyfkator klucza przypomi-
na cztery ostatnie bajty jego odci-
sku palca). Linia zaczynajca si od
sub 2048g informuje nas, e pod-
klucz jest typu ElGamal (g) i ma du-
go 2048 bitw. Cao, zawiera-
jca potencjalnie dalsze podklucze i
inne dane tosamociowe (np. adre-
sy e-mail itd.), zawsze identyfkowa-
na bdzie jako key-ID E7318B79.
Generacja certyfkatu
odwoania klucza
Jest bardzo wane, by w nastpnym
kroku wygenerowa tak zwany cer-
tyfkat odwoania klucza. Pozwala on
nam odwoa nasz klucz, co oznacza
oznakowanie go jako np. niewany
bd wicej nie uywa. Jeeli klucz
twj zostanie w jaki sposb skom-
promitowany bd ukradziony, od-
woanie jest jedynym sposobem na
przekazanie wiatu, e nie naley go
wicej uywa. Z certyfkatem nale-
y by jednak bardzo ostronym. Je-
eli zostanie on ukradziony, zodziej
moe odwoa twj klucz i wysa go
na serwer kluczu, czynic go w ten
sposb bezuytecznym a w dodat-
ku nie potrzebuje on do tego ani two-
jego klucza prywatnego, ani twojej
mantry. Po wysaniu i rozprzestrze-
nieniu certyfkatu nie jest moliwe
usunicie go z klucza.
Celem wygenerowania osobiste-
go certyfkatu odwoania wywouje-
my nastpujce polecenie:
...> gpg --gen-revoke <your key-ID>
i podajemy dane informacje. Na
og generuje si certyfkat odwo-
ujcy klucz bez adnego szczegl-
nego powodu, mona zatem pozo-
stawi tutaj the key is not used any-
more. Po wpisaniu mantry GnuPG
wywietli certyfkat na standardo-
wym wyjciu. Najlepsz opcj jest
teraz zapisanie go na kawaku pa-
pieru i umieszczenie w sejfe. Je-
eli chce si go wydrukowa, war-
to by wiadomym faktu, e doku-
ment ten moe przej przez ser-
wery drukowania, ktre mog ska-
dowa dane. Moesz take zapisa
certyfkat na dysku i take umieci
go w sejfe, ale dyski trac z wie-
kiem dane.
W sytuacji gdy wystpiy ja-
kie problemy z kluczem (zgubie
go, zosta ukradziony albo po pro-
stu nie chcesz go ju uywa), po
prostu wczytaj w certyfkat do p-
ku kluczy publicznych i wylij go na
serwer kluczy. Wicej o importowa-
niu i eksportowaniu kluczy powiemy
poniej. Certyfkat odwoania mo-
na traktowa jak dowolny plik z klu-
czami publicznymi (jednak pki co
nie rb tego).
> gpg --import
<rev_certifcate_flename>
Serwery kluczy
Nasz klucz jest gotw do uytku. Je-
go publiczna cz moe by zapi-
sana do pliku, ktry nastpnie roz-
przestrzenimy pord przyjaci, al-
bo umieszczona na midzynarodo-
wych serwerach kluczy. Wysyanie
klucza publicznego na serwer zde-
cydowanie nie jest jedna zalecane
dopki, dopty nie zyskasz dowiad-
czenia w pracy z now par kluczy.
Aby wysa klucz publiczny na ser-
wer, wydaj ponisze polecenie:
> gpg --send-keys <key-ID>
Za do pobrania klucza z serwera
posuy nam:
> gpg --recv-keys <key-ID>
Moe by konieczne podanie adre-
su serwera kluczy. Werner Koch za-
Kryptografia dla poczty i danych
hakin9 Nr 5/2006 www.hakin9.org 7
leca korzystanie z tak zwanych ser-
werw kluczy SKS, jako e s one w
stanie poradzi sobie ze wszystki-
mi informacjami, jakie moe zawie-
ra plik kluczy. Adres serwera okre-
li mona za pomoc opcji --keyse-
rver. Przykadowo, w Polsce mona
skorzysta z sks.keyserver.pengu-
in.pl, w Niemczech za z sks.keyse-
rver.penguin.de. Serwery kluczy wy-
mieniaj midzy sob informacje, a
zatem nasz klucz automatycznie tra-
f do dystrybucji.
Pki kluczy
Zbiory albo pki publicznych i pry-
watnych kluczy znale mona w ka-
talogu ~/.gnupg. Warto si upewni,
e aden inny uytkownik nie moe
czyta plikw w tym katalogu.
Import i eksport kluczy
Aby wyeksportowa swj klucz pu-
bliczny do pliku o nazwie mykey.txt,
wywoaj polecenie:
> gpg --export --armor <twj key-ID> >
mykey.txt
Opcja --armor powoduje, e klucz
wypisany zostanie w postaci zro-
zumiaej dla czowieka. Key-ID mo-
e by zastpiony dowolnymi dany-
mi uytkownika zawartymi w kluczu,
na przykad nazwiskiem bd adre-
sem e-mail.
Aby wczyta klucz innego uyt-
kownika, po prostu we otrzymany
plik i dokonaj jego importu do swoje-
go publicznego pku. Tak wygldao-
by to w przypadku klucza, ktry Ali-
ce otrzymaa od Boba (klucz znajdu-
je si w pliku bobpublic.txt):
> gpg --import bobpublic.txt
gpg: key 20ACB216:
public key "Bob B
<bob@example.com>"
imported
gpg: Total number processed: 1
gpg: imported: 1
Edycja, defnicja zaufania i
podpisywanie kluczy
Istnieje tutaj jeden drobny haczyk:
oprcz po prostu rozpoczcia ko-
rzystania z klucza Boba Alice po-
winna uprzednio wyrazi swoje
dla zaufanie. Do wykonania te-
go GnuPG zapewnia edytor klu-
czy, uruchamiany poleceniem gpg
--edit-key <key-ID>. Rwnie i w
tym przypadku key-ID moe zosta
zastpiony np. przez imi Bob bd
jego adres e-mail.
Przegld polece edytora uzy-
ska mona wpisujc w jego li-
nii polece help. Aby ustawi po-
ziom zaufania dla klucza Boba, Ali-
ce uruchamia edytor i otwiera ten
klucz. Wywietlone zostan in-
formacje o kluczu, midzy innymi
o nieznanym poziomie zaufania i
wanoci.
pub 1024D/20ACB216 created:
2006-03-17 expires:
never usage: CS
trust:
unknown validity: unknown
sub 2048g/6B99CC08 created:
2006-03-17 expires:
never usage: E
[ unknown] (1).
Bob B <bob@example.com>
Bardzo wane jest by upewni si,
czy klucz ten rzeczywicie naley
do osoby, o ktrej Alice myli jako
o Bobie a na kolejnym etapie, czy
Bob rzeczywicie jest osob, za
ktr podaje si Alice. Jest moli-
we, e podszywajca si pod Bo-
ba trzecia osoba, nazwijmy j tra-
dycyjnie Mallorym, przekae Alice
niewaciwy klucz. Jeeli teraz Ali-
ce zaufaaby temu kluczowi i szy-
frowaa nim wiadomoci dla Bo-
ba, to Mallory mgby je czyta za-
miast Boba. Aby unikn tego ro-
dzaju ataku Alice mogaby poprosi
Boba o okazanie dokumentu tosa-
moci i przekazanie klucza osobi-
cie, mogaby take sprawdzi od-
cisk palca klucza i zapyta Boba,
czy jest on poprawny:
> gpg --fngerprint bob
[..]
Key fngerprint
= 6871 3E47 AEEE 7424 10EF
B544 3EC0 383B 20AC B216
Kiedy tosamo Boba i popraw-
no jego klucza zostay ju po-
twierdzone, Alice wydaje polece-
nie trust:
Please decide how far you trust
this user to correctly verify
other users' keys (by looking
at passports, checking
fngerprints from different
sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
GnuPG oczekuje, e Alice oceni do-
wiadczenie Boba w zarzdzaniu
kluczami oraz na ile jest on wedug
niej wiarygodny. Warto 5 zarezer-
wowana jest dla osobistych kluczy,
nie moe jej mie aden klucz inne-
go uytkownika. Alice ufa Bobowi w
peni (4):
Rysunek 2. Zielona linia przedstawia stan podpisu. Wiadomo
bya zaszyfrowana i podpisana, co pokazuj ikony: klucza i pira po
prawej stronie. Mona na nich klikn, aby uzyska wicej informacji o
wykorzystanych do tego kluczach
hakin9 Nr 5/2006 www.hakin9.org
Praktyka
8
pub 1024D/20ACB216 created:
2006-03-17 expires:
never usage: CS
trust:
full validity: unknown
sub 2048g/6B99CC08 created:
2006-03-17 expires:
never usage: E
[ unknown] (1). Bob B <bob@example.com>
Please note that the shown key validity
is not necessarily correct
unless you restart the program.
Mimo wszystko, klucz w ci nie
jest wany. Aby mc uczyni go
wanym, Alice ma moliwo pod-
pisania go swoim kluczem prywat-
nym. Z poziomu edytora kluczy
mona to uczyni poleceniem sign.
Klucz moe by nastpnie wyeks-
portowany do pliku (patrz wyej) i
wysany z powrotem do Boba, kt-
ry moe wczyta go do swojego pu-
blicznego pku. Podpisywanie klu-
czy innych uytkownikw ma na
celu tworzenie sieci zaufania. Je-
eli Alice nie chce przekaza pod-
pisanego klucza do Boba, a jedynie
chce by by on wany w jej wasnym
pku, moe podpisa go tylko lokal-
nie za pomoc polecenia lsign.
> lsign pub 1024D/20ACB216 created:
2006-03-17 expires:
never usage: CS
trust: full validity: unknown
Primary key fngerprint:
6871 3E47 AEEE 7424 10EF
B544 3EC0 383B 20AC B216
Bob B <bob@example.com>
Are you sure that you want to sign
this key with your
key "Alice C <alice@example.com>"
(E7318B79)
The signature will be marked
as non-exportable.
Really sign? (y/N)
Informacja pod koniec wynika z lo-
kalnoci tworzonego podpisu. Alice
wpisuje y aby mc podpisa klucz,
nastpnie za musi wpisa swoj
mantr konieczne jest otwarcie jej
klucza prywatnego.
You need a passphrase to unlock the
secret key for
user: "Alice C <alice@example.com>"
1024-bit DSA key,
ID E7318B79, created 2006-03-17
Enter passphrase:
Po wprowadzeniu poprawnego zda-
nia kodowego (mantry) klucz Boba
staje si wany dla Alice. Moe oka-
za si, e trzeba zrestartowa edy-
tor kluczy (uyj polecenia quit) aby
zaktualizowa wewntrzn baz za-
ufania GnuPG.
pub 1024D/20ACB216 created:
2006-03-17 expires:
never usage: CS
trust:
full validity: full
sub 2048g/6B99CC08 created:
2006-03-17 expires:
never usage: E
[ full ] (1). Bob B <bob@example.com>
Jeeli Bob wczyta i podpisze klucz
Alice stosujc opisany powyej
schemat (ewentualnie generujc
nielokalny podpis), mog oni za-
cz wysya do siebie tajne wia-
domoci. Oglnie rzecz biorc, wy-
sanie tajnej wiadomoci polega po
prostu na napisaniu jej i zaszyfro-
waniu kluczem publicznym odbior-
cy. Jeeli korzysta si z rozumiej-
cego GnuPG programu pocztowe-
go (jak na przykad Mozilla Thun-
derbird z wtyczk Enigmail), robi to
za nas program. Na pocztek jed-
nak uyjemy interfejsu linii polece
GnuPG.
Sie zaufania
Podpisywanie i ufanie kluczom in-
nych uytkownikw tworzy sie za-
ufania. Wyobramy sobie, e chce-
my napisa tajn wiadomo do
pewnego odbiorcy, ktrego klucz
pobralimy z serwera kluczy. Nigdy
nie spotkalimy tej osoby osobicie,
a chcemy wiedzie, czy dany klucz
rzeczywicie do niej naley. My nie
przeszlimy przez procedur spraw-
dzania odcisku palca, wysyanie te-
stowych listw itd., ale mg to zro-
bi kto inny. Jeeli rzeczywicie
ufamy tej trzeciej osobie, niezna-
ny klucz automatycznie staje si dla
nas wany.
Sie zaufania opiera si na kilku
prostych zasadach. Mona nimi nie-
co manipulowa, ale w oglnoci wy-
gldaj one nastpujco. Klucz jest
wany, jeeli:
podpisalimy go, lub
zosta podpisany kluczem, do
ktrego mamy pene zaufanie,
lub
zosta podpisany trzema klucza-
mi, ktrym ufamy marginalnie
oraz cieka pomidzy naszym
kluczem, a kluczem odbiorcy
skada si z nie wicej ni piciu
krokw.
Edycja
preferencji klucza
Jak wspomnielimy powyej, nasz
klucz moe zosta skonfgurowany
tak, by unika stosowania szcze-
glnych algorytmw takich jak
SHA-1 czy MD5, a przynajmniej
da wyszy priorytet innym algo-
rytmom: moliwe jest take wy-
czenie DES i korzystanie z szyfru
Blowfsh jako preferowanego szy-
fru symetrycznego, jeeli tego so-
bie yczymy.
Rwnie i te ustawienia mona
zmienia za pomoc edytora klu-
czy. Alice na przykad uruchomia-
by edytor za pomoc nastpujce-
go polecenia:
> gpg --edit-key alice
Secret key is available.
pub 1024D/E7318B79 created:
2006-03-17 expires:
never usage: CS
trust:
ultimate validity: ultimate
sub 2048g/2B381D4B created:
2006-03-17 expires:
never usage: E
[ultimate] (1).
Alice C <alice@example.com>
Wykorzystywane przez dany klucz
algorytmy mona wywietli za po-
moc polece edytora: showpref i
pref. Pierwsze wywietla parame-
try klucza w nieco obszerniejszej for-
mie, drugie zastpuje nazwy algo-
rytmw ich kodami. Klucz Alice jest
skonfgurowany nastpujco:
Kryptografia dla poczty i danych
hakin9 Nr 5/2006 www.hakin9.org 9
Command> showpref
pub 1024D/E7318B79 created:
2006-03-17 expires:
never usage: CS
trust: ultimate validity: ultimate
[ultimate] (1).
Alice C <alice@example.com>
Cipher: AES256, AES192,
AES, CAST5, 3DES
Digest: SHA1, RIPEMD160,
SHA256, MD5
Compression: ZLIB, BZIP2, ZIP,
Uncompressed
Features: MDC, Keyserver no-modify
Jak atwo zauway, SHA1 jest
pierwszym algorytmem w linii Di-
gest, nie mona jednak ustawia
preferencji stosujc nazwy algoryt-
mw trzeba zastpi je odpowied-
nimi kodami. Polecenie pref wywie-
tla dokadnie lini kodw danego klu-
cza:
Command> pref
pub 1024D/E7318B79 created:
2006-03-17 expires:
never usage: CS
trust: ultimate validity:
ultimate
[ultimate] (1).
Alice C <alice@example.com>
S9 S8 S7 S3 S2 H2 H3
H8 H1 Z2 Z3 Z1
[mdc] [no-ks-modify]
S to kody algorytmw symetrycz-
nego szyfrowania, H algorytmw
skrtw, Z za algorytmw kom-
presji.
Do ustawienia preferencji su-
y polecenie setpref, przyjmujce
na wejciu lini kodw. Jeeli Alice
chce si pozby MD5, ale chce za-
chowa pozostae ustawienia niena-
ruszone, skopiuje ona i lini kodw
z przedstawionego powyej wyjcia
polecenia pref, pomijajc jedynie H1
i przesuwajc H2 na koniec listy al-
gorytmw skrtw.
Command> setpref S9 S8 S7 S3 S2
H3 H8 H2 Z2 Z3 Z1
Set preference list to:
Cipher: AES256, AES192,
AES, CAST5, 3DES
Digest: RIPEMD160, SHA256, SHA1
Compression: ZLIB, BZIP2, ZIP,
Uncompressed
Features: MDC, Keyserver no-modify
Really update the preferences? (y/N)
Say yes here;
You need a passphrase to unlock
the secret key for user:
"Alice C <alice@example.com>"
1024-bit DSA key,
ID E7318B79, created 2006-03-17
Enter passphrase:
Po wprowadzeniu poprawnego zda-
nia kodowego atrybuty klucza s ak-
tualizowane. Rezultaty tej operacji
pokazuje polecenie showpref:
Command> showpref
pub 1024D/E7318B79 created:
2006-03-17 expires: never
usage: CS
trust: ultimate validity:
ultimate
[ultimate] (1).
Alice C <alice@example.com>
Cipher: AES256, AES192,
AES, CAST5, 3DES
Digest: RIPEMD160,
SHA256, SHA1
Compression: ZLIB, BZIP2, ZIP,
Uncompressed
Features: MDC, Keyserver no-modify
Jak wida MD5 zosta wyczo-
ny, za SHA1 traf na koniec linii
ale nie mona go cakowicie wy-
czy. Pokazuje to uytkowniko-
wi klucza Alice, e woli ona korzy-
sta z RIPEMD160 bd SHA256,
ni z SHA1. W wikszoci przypad-
kw wystarcza to do uniknicia ko-
rzystania z SHA1.
Konfguracja preferencji moe
by rwnie wana gdy znajdzie-
my si w potrzebie wczytania klu-
cza PGP do GnuPG bd vice ver-
sa. Aby na przykad wyeksportowa
klucz GnuPG tak, by mona byo go
uy w PGP (zauwa przy tym, e w
przypadku PGP nie mona korzy-
sta z kluczy ElGamal), preferencje
naley ustawi na S9 S8 S7 S3 S2
S10 H2 H3 Z1 Z0.
Uwaga: niektre wersje GnuPG
uywaj polecenia updpref do uak-
tywnienia ustawie zmienionych za
pomoc setpref. Przyjrzyj si wyj-
ciu polecenia edytora help. Aby za-
koczy biec sesj, wyjd z edy-
tora poleceniem quit.
Szyfrowanie
i deszyfrowanie
danych
Wyobra sobie, e Alice chce wy-
sa do Boba wiadomo zawiera-
jc poufne informacje. Moe napi-
sa j w pliku (secret.txt), a nastp-
nie zaszyfrowa go za pomoc po-
lecenia:
. > gpg --recipient bob
--encrypt --armor secret.txt
Wygeneruje ono plik secret.txt.asc.
Teraz nawet Alice nie jest w stanie
rozszyfrowa wiadomoci, chocia
oczywicie wci posiada ona ory-
gina. Z drugiej strony, moliwe jest
wygenerowanie zaszyfrowanego pli-
ku, ktre bdzie mogo rozkodowa
dwch bd wicej uytkownikw.
W przypadku takim plik musi by za-
szyfrowany z wicej ni jednym od-
biorc. Alice mogaby to zrobi na-
stpujco:
> gpg --recipient bob
--encrypt --recipient alice --armor
secret.txt
Lub w skrconej postaci,
> gpg -r bob -r alice -e -a secret.txt
Co si tutaj dzieje? Oryginalna wia-
domo jest szyfrowana kluczem
sesji, za tene klucz sesji jest na-
stpnie szyfrowany w osobnych ko-
piach kluczami publicznymi Alice i
Boba. Wszystkie te dane s nastp-
nie umieszczane razem w pliku se-
cret.txt.asc.
Alice moe wysa ten plik do Bo-
ba, ktry jest w stanie go odszyfro-
wa za pomoc opcji decrypt. Jego
prywatny klucz zostanie wykorzy-
stany automatycznie, ale Bob musi
wprowadzi swoj mantr, by go od-
blokowa.
> gpg --decrypt secret.txt.asc
You need a passphrase to unlock
the secret key for
user: "Bob B <bob@example.com>"
2048-bit ELG-E key, ID 6B99CC08,
hakin9 Nr 5/2006 www.hakin9.org
Praktyka
10
created 2006-03-17
(main key ID 20ACB216)
Enter passphrase:
Bob enters his passphrase here.
gpg: encrypted with 2048-bit ELG-E key,
ID 2B381D4B, created 2006-03-17
"Alice C <alice@example.com>"
gpg: encrypted with 2048-bit ELG-E key,
ID 6B99CC08, created 2006-03-17
"Bob B <bob@example.com>"
Hi Bob, come to the willow tree tonight
at 8. we have to talk, Alice.
W tym szczeglnym przypadku
ostatnia linijka to oryginalna wiado-
mo od Alice. Istnieje ponadto mo-
liwo wykorzystywania GnuPG do
szyfrowania danych za pomoc szy-
frw symetrycznych; program wyko-
rzystuje do tego opcj conventional.
Mona take wybra algorytm
szyfrujcy. Aby zaszyfrowa plik
mail.tgz za pomoc AES256, po
prostu wpisz
> gpg --cipher-algo aes256
-c mail.tgz
Enter passphrase:
Repeat passphrase:
Zdanie kodowe trzeba wpisa dwu-
krotnie, aby unikn literwek. Je-
eli nie okrelisz za pomoc opcji
-o pliku wyjciowego, GnuPG sko-
rzysta z nazwy pliku wejciowe-
go wyduonej o przyrostek .gpg.
Aby rozszyfrowa te dane, wystar-
czy wpisa
> gpg -o mail2.tgz mail.tgz.gpg
gpg: AES256 encrypted data
Enter passphrase:
Plik mail2.tgz zawiera bdzie orygi-
nalne dane.
Podpisy i ich walidacja
Bob moe teraz przeczyta wiado-
mo i wie, e wiadomo z pew-
noci bya przeznaczona dla nie-
go (zostaa zaszyfrowana jego klu-
czem publicznym), nie ma jednak
pewnoci, czy rzeczywicie zosta-
a ona napisana i wysana przez
Alice wiadomo nie posiada bo-
wiem podpisu. Aby takowy doda,
Alice moe zaszyfrowa wiado-
mo podajc jednoczenie dodat-
kow opcj: tutaj skorzystaa ona
z opcji --sign. Umieszcza ona pod-
pis i podpisany tekst w jednym pli-
ku, o nazwie secret.txt.asc. Zaka-
dajc, e Bob zaufa kluczowi Ali-
ce oraz go podpisa, polecenie gpg
--decrypt secret.txt.asc zwrci mu,
co nastpuje:
2048-bit ELG-E key,
ID 6B99CC08,
created 2006-03-17
(main key ID 20ACB216)
gpg: encrypted with 2048-bit ELG-E key,
ID 2B381D4B, created 2006-03-17
"Alice C <alice@example.com>"
gpg: encrypted with 2048-bit ELG-E key,
ID 6B99CC08, created 2006-03-17
"Bob B <bob@example.com>"
Hi Bob, come to the willow
tree tonight at 8. we have to talk,
Alice.
gpg: Signature made
Fri 17 Mar 2006 04:05:26 PM CET
using DSA key ID E7318B79
gpg: Good signature from
"Alice C <alice@example.com>"
Teraz Bob moe by pewien, e Ali-
ce napisaa t wiadomo mona
bowiem zweryfkowa jej podpis.
Szyfruj swoj
poczt: Thunderbird
i Enigmail
Korzystanie z GnuPG w przedsta-
wiony powyej sposb moe by
irytujce, zwaszcza gdy chce si
wykorzystywa regularnie funkcje
kryptografczne do podpisywania
bd szyfrowani poczty. W przy-
padku takim kada wiadomo mu-
siaaby zosta zapisana w syste-
mie plikw, przetworzona przez
GnuPG, a nastpnie ponownie
otwarta w programie pocztowym i
wysana.
Aby uproci i uprzyjemni uyt-
kownikom ycie, niemal wszystkie
klienckie programy pocztowe albo
implementuj funkcje kryptografcz-
ne, albo daj dostp do odpowied-
nich programw przez specjalne
wtyczki np. KMail, Mutt, Pine, Syl-
pheed, Emacs czy Balsa, eby wy-
mieni zaledwie kilka.
Jedn z najpotniejszych i nie-
zawodnych kombinacji jest w tej
dziedzinie Thunderbird (samodziel-
ny klient poczty z projektu Mozilla)
wsplnie z wtyczk dla GnuPG o
nazwie Enigmail. Enigmail dodaje
do klienta poczty menu OpenPGP;
jest ona dostpna pod Linuksa,
Mac OS X oraz Windows, wyma-
gana jest zainstalowana instancja
GnuPG. GnuPG dla twojej platfor-
my znajdziesz pod adresem http:
//www.gnupg.org/download. Je-
eli chcesz korzysta z GnuPG
pod Windows rzu okiem na plik
GnuPG.README.Windows w fol-
derze GnuPG w menuStart; gpg
mona uywa z poziomu linii po-
lece Windows albo za pored-
nictwem Windows Privacy Tray
WinPT.
Enigmail pobra mona spod
adresu http://enigmail.mozdev.org/.
Aby zainstalowa t wtyczk wejd
do menu Narzdzia i wybierz Roz-
szerzenia, a nastpnie Instaluj.
Wska przegldarce wieo pobrany
plik wtyczki Enigmail i wybierz Insta-
luj. Enigmail bdzie dostpna po re-
starcie Thunderbirda.
Enigmail musi by uaktywnio-
na osobno dla kadej tosamoci
e-mail, dla ktrej chcesz jej uy-
wa. Czyni si to w menu Edycja,
Ustawienia kont (w menu Narz-
dzia w przypadku Windows). Trze-
ba zaznaczy pole Uruchom obsu-
g OpenPGP (Enigmail) dla tej to-
samoci. Jeeli Enigmail ma pro-
blem z okreleniem identyfkatora
domylnego klucza na podstawie
adresu e-mail, okno to pozwala wy-
bra odpowiedni identyfkator rcz-
nie. Przycisk Zaawansowane otwie-
ra dialog Preferencje OpenPGP;
mona si do niego dosta take
z menu OpenPGP (pozycja Pre-
ferencje). Moe zaistnie koniecz-
no podania w zakadce Podsta-
wy cieki pliku binarnego gpg, je-
eli nie zostaa ona ustawiona au-
tomatycznie. Ponadto wane jest
sprawdzenie, czy zaznaczone jest
pole Szyfruj do siebie w zakadce
Wysyanie, w przeciwnym razie nie
bylibymy w stanie czyta wysanej
przez nas zaszyfrowanej poczty.
Kryptografia dla poczty i danych
hakin9 Nr 5/2006 www.hakin9.org 11
Inn wart uwagi opcj jest Zawsze
korzystaj z PGP/MIME w zakadce
PGP/MIME; jeeli nie jest ona ak-
tywna Enigmail korzysta z tak zwa-
nego formatu inline PGP, w ktrym
nie s szyfrowane zaczniki.
Aby zaszyfrowa bd podpi-
sa list, nacinij przycisk OpenPGP
w oknie kompozycji. Moesz wy-
bra tam Podpisz wiadomo, Za-
szyfruj wiadomo bd i jed-
no, i drugie. Jeeli chcemy podpi-
sa wiadomo, Enigmail wywie-
tli dialog z prob o zdanie kodo-
we aby uzyska dostp do nasze-
go klucza prywatnego. Nastpnie
GnuPG przetwarza dane, zanim
nasz klient poczty wyle je w wiat.
Jeeli chcesz zaszyfrowa wiado-
mo, GnuPG musi zna klucz pu-
bliczny jej adresata.
Po otrzymaniu zaszyfrowanej
i przeznaczonej dla nas wiadomo-
ci, jestemy proszeni o wprowadze-
nie zdania kodowego. Thunderbird
sprawdza take podpis (jeeli tako-
wy wystpuje) i informuje, czy jest
on poprawny.
Zaszyfrowane pliki-
kontenery i systemy
plikw
Kryptografa to nie tylko GnuPG i
szyfrowanie plikw bd wiadomo-
ci. Obok wielu innych jej potencjal-
nych zastosowa, takich jak zabez-
pieczanie komunikacji w Interne-
cie (ssh, scp) bd serwerw pocz-
ty, WWW itd. (nie pokazane tutaj),
Linux pozwala take na do atwe
szyfrowanie plikw-kontenerw oraz
systemw plikw. Pokrtce przedsta-
wimy tutaj LoopAES oraz DM-Crypt,
istniej jednak oczywicie inne
opcje, a ponadto moliwe jest wyko-
nywanie podobnych operacji pod in-
nymi systemami operacyjnymi. Poni-
ej przedstawimy dwa przykady.
Szyfrowanie partycji dziki
LoopAES
LoopAES korzysta z linuksowego
urzdzenia loopback (z wczony-
mi rozszerzeniami kryptografczny-
mi) by stworzy system plikw we-
wntrz kontenera bd na partycji ja-
ko urzdzeniu. Zamierzamy tutaj po-
kaza szybki i prosty scenariusz, w
ktrym wykorzystamy woln party-
cj na dysku (w naszym przypadku
noszc nazw /dev/sdc3) by stwo-
rzy system plikw na zaszyfrowa-
nym urzdzeniu loopback. System
plikw bdzie szyfrowany i deszy-
frowany w locie, ale by uzyska do
niego dostp potrzebny bdzie klucz
Waciwy klucz bdzie przechowy-
wany w symetrycznie zaszyfrowa-
nym pliku. Brzmi to nieco skompliko-
wanie, jednak zapoznajc si s przy-
kadem zobaczysz, jak to rozwiza-
nie dziaa.
By moe nie bdzie ono dzia-
a na wszystkich systemach, jed-
nak z powodzeniem udao nam
si to sprawdzi pod Fedora Co-
re 4. Niektre systemy potrzebo-
wa bd zmodyfkowanej wer-
sji urzdzenia loopback; troch
wskazwek na ten temat znale
mona pod adresem http://loop-
aes.sourceforge.net/.
Po pierwsze wybieramy party-
cj. Moe ona znajdowa si na pen
drive'ie USB bd na zewntrznym
twardym dysku, moe te by par-
tycj na dysku wbudowanym mu-
si jednak by pusta.
Po drugie, utwrz losowy klucz.
W naszym przypadku pobierzemy
2925 bajtw z /dev/random, dokona-
my ich konwersji do formatu base64
(za pomoc narzdzia uuencode, na
og dostpnego w pakiecie sha-
rutils) i skorzystamy z head i ta-
il, by wybra z tego losowego blo-
ku 65 linijek. Na koniec przy pomocy
GnuPG szyfrujemy te liczby algoryt-
mem AES256:
> head -c 2925 /dev/random |
uuencode -m | head -n 66 | tail -n
65 |
gpg --symmetric cipher-algo
aes256 -a > keyfle.gpg
W zalenoci od iloci entropii do-
stpnej w systemie operacja ta mo-
e zaj do duo czasu (do ge-
nerowania liczb losowych za po-
moc /dev/random potrzeba du-
o entropii!). Teraz mona umie-
ci plik kluczy np. na dysku USB
bd SmartCard'zie. Od tego mo-
mentu twj zaszyfrowany system
plikw bdzie dostpny tylko wte-
dy, gdy podczysz do to fzycz-
ne urzdzenie.
Kolejnym krokiem jest inicjacja
partycji danych. Wypenimy j raz
pseudolosowymi liczbami, korzysta-
jc z /dev/zero by wygenerowa stru-
mie zer, ktre zostan zaszyfrowa-
ne przez szyfrujce urzdzenie loop-
back. Robi si to tylko raz:
> head -c 15 /dev/urandom | uuencode
-m - |
head -n 2 | tail -n 1 | losetup -p 0 -e
aes256
/dev/loop3 /dev/sdc3
W Sieci
http://downlode.org/Etext/alicebob.html
http://www.gnupg.org
http://rfc2440.x42.com OpenPGP, RFC 2440
http://rfc2822.x42.com RFC 2822, S/MIME
http://www.cits.rub.de/MD5Collisions Historia Alice i jej szefa
http://www.heise.de/newsticker/meldung/56624 komentarze Wernera Kocha,
po niemiecku
http://www.gnupg.org/(de)/documentation/faqs.html
http://www.stud.uni-hannover.de/~twoaday/winpt.html
O autorze
Doktor Lars Packschies jest pracownikiem naukowym oraz administratorem oprogra-
mowania i ochrony danych w rodowisku Linux, SunOS/Solaris, IRX i AIX Regionalne-
go Centrum Rachunkowego (Regionales Rechenzentrum, RRZ) na Uniwersytecie w
Koloni. Kontakt z autorem: packschies@rrz.uni-koeln.de.
hakin9 Nr 5/2006 www.hakin9.org
Praktyka
12
Tworzymy w ten sposb urzdze-
nie loopback /dev/loop3 korzysta-
jce z partycji /dev/sdc3, zainicjo-
wanej pewn iloci losowych liczb
oraz korzystajcej z AES256. Od
tej chwili wszystko, co zapiszemy
do /dev/loop3 bdzie zaszyfrowa-
ne. W ten sposb strumie zer sta-
nie si dug list pseudolosowych
liczb; korzystamy z tego sposobu,
poniewa jest on po prostu duo
szybszy ni generacja liczb loso-
wych. Operacj t przeprowadza
si tylko raz.
> dd if=/dev/zero of=/dev/loop3 bs
=4k conv=notrunc 2>/dev/null
Inicjacja zostanie zakoczona, gdy
urzdzenie loopback jest zwalniane:
> losetup -d /dev/loop3
Teraz musimy zainicjowa na naszej
partycji system plikw:
> losetup -K /path/to/your/keyfle.gpg
-e
AES256 /dev/loop3 /dev/sdc3
i
> mkfs -t ext2 /dev/loop3
Aby ponownie zwolni urzdzenie,
wywoamy
> losetup -d /dev/loop3
Za kadym razem, gdy chcemy sko-
rzysta z ten partycji, tworzymy
urzdzenie loopback i montujemy
je w systemie plikw. Jeeli dodamy
do pliku /etc/fstab nastpujc lini
(wszystko to powinno znale si w
jednej linijce):
/dev/sdc3 /mnt/loopdev ext2
defaults,noauto,loop=/dev/loop3,
encryption=AES256,gpgkey=naszplikkluczy
0 0
operacja ta stanie si cakiem pro-
sto. Wystarczy wywoa:
> mount /mnt/loopdev
Password: zdanie kodowe pliku kluczy
Kontener danych zaszyfrowany
przez DM-Crypt
Kolejnym przykadem, ktry chc
tutaj przedstawi, jest korzystanie z
pliku-kontenera (czyli po prostu blo-
ku losowych danych na twardym
dysku) do przechowywania we za-
szyfrowanych danych. Wykorzysta-
my tutaj DM-Crypt, ktry powinien
by dostpny w twoim systemie, pod
warunkiem e korzystasz z architek-
tury z jdrem 2.6. Jeeli w twoim sys-
temie narzdzie to nie dziaa, zajrzyj
pod adres http://www.saout.de/misc/
dm-crypt.
DM-Crypt to napisany przez Chri-
stophe'a Saouta cel dla Device Map-
pera sucy do szyfrowania danych.
Od wersji 2.6.4 jdra DM-Crypt za-
stpuje Cryptoloop. Device Mapper
administruje wirtualnymi urzdzenia-
mi blokowymi, ktre z kolei mog ko-
rzysta z fzycznych urzdze takich
jak twarde dyski czy te partycje. Ist-
nieje cakiem spora liczba celw dla
Device Mappera, na przykad ten za-
pewniajcy rozdzielanie danych po-
midzy kilkoma urzdzeniami. Rw-
nie dobrze mona t swego rodza-
ju warstw poredni wyposay w
funkcje kryptografczne: DM-Crypt.
Upewnij si, e w twoim jdrze
aktywne s funkcje Device map-
per support oraz Crypt target sup-
port (mona je znale pod Device
Drivers/Multi-Device-Support (RAID
and LVM)). Ponadto aktywne powin-
ny by take Device Drivers/Block
Devices/Loopback device support
oraz Cryptographic Options/AES ci-
pher algorithms.
Jeeli korzystasz z dystrybucji
Fedora Core, zainstaluj pakiet de-
vice-mapper; uytkownikom Debia-
na potrzebne bd pakiety dmcrypt
oraz cryptsetup. Oprcz tego nale-
y zaadowa kilka moduw jdra.
Uytkownicy Red Hata bd Fedo-
ry mog doda nastpujce linijki do
pliku /etc/rc.local:
modprobe aes
modprobe dm_mod
modprobe dm_crypt
Jeeli korzystasz z Debiana, uyj
narzdzia modconf i wybierz kernel/
drivers/md oraz kernel/crypto. Wy-
korzystamy kontener o rozmiarze
200 MB. Stworzymy go nastpuj-
co:
> dd if=/dev/urandom
of=container bs=1024k count=200
Teraz superuytkownik moe pod-
czy kontener do Device Mappe-
ra poprzez DM-Crypt, w naszym
przypadku korzystajc z urzdzenia
/dev/loop4.
> losetup /dev/loop4 container
> cryptsetup -y create secret /dev/
loop4
Aby unikn skutkw ewentualnych
literwek przy wpisywaniu zda-
nia kodowego, dziki opcji -y zo-
staniemy o nie zapytane dwukrot-
nie. Container to nazwa pliku konte-
nera (moe by konieczne podanie
penej cieki), secret za to na-
zwa pliku Device Mappera (mona
rwnie dobrze uy innej nazwy);
znajdziesz go potem pod /dev/
mapper/secret. Urzdzenie nie za-
wiera pki co systemu plikw, stwo-
rzymy go nastpujco:
> mkfs.ext2 /dev/mapper/secret
po czym moemy je zamontowa:
> mount /dev/mapper/secret /mnt/secret
Po zakoczeniu korzystania z konte-
nera, wpisujemy
> umount /mnt/secret
> cryptsetup remove secret
> losetup -d /dev/loop4
DM-Crypt moe obsugiwa nie tyl-
ko kontenery danych, ale take ca-
e partycje; mona take atwo za-
szyfrowa partycje wymiany. Po-
wyszy przykad pokaza tylko szy-
frowanie kontenera, wicej infor-
macji o DM-Crypt znale mona
na jego stronie domowej pod adre-
sem http://www.saout.de/misc/dm-
crypt/ l

You might also like