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