os crypt s - zpcir.ict.pwr.wroc.plwitold/opsys/os_crypt_s.pdf · Kaz˙dy moz˙e zaszyfrowa´c...

40
Szyfrowanie Jedn a z najskuteczniejszych technologii stosowanych w celu utrzymania bezpiecze´ nstwa wsp´o lczesnych system´ ow sieciowych jest szyfrowanie. Jest ono stosowane w odniesieniu do pojedynczych dokument´ ow, jak i ci ag lych transmisji sieciowych. Szyfrowanie umo ˙ zliwia r´ ownie ˙ z stosowanie podpis´ ow cyfrowych umo ˙ zliwiaj ac potwierdzanie integralno ´ sci dokument´ ow oraz to ˙ zsamo ´ sci partnera. Tradycyjnie szyfrowanie, stosowane od staro ˙ zytno ´ sci, wykorzystywalo technologie szyfrowania symetrycznego. Jego istot a jest identyczno ´ c kluczy (szyfr´ow) slu ˙ z acych do szyfrowania i deszyfrowania. Bezpiecze´ nstwo tego systemu opiera si e na tajno ´ sci kluczy, co stanowi zarazem jego podstawow a s labo ´ c. W momencie gdy zachodzi konieczno ´ c wprowadzenia nowych kluczy, potrzebna jest metoda ich bezpiecznego przekazania sobie przez partner´ ow. Zastosowania kryptografii — szyfrowanie symetryczne 1

Transcript of os crypt s - zpcir.ict.pwr.wroc.plwitold/opsys/os_crypt_s.pdf · Kaz˙dy moz˙e zaszyfrowa´c...

Szyfrowanie

Jedna z najskuteczniejszych technologii stosowanych w celu utrzymania bezpieczenstwawspo lczesnych systemow sieciowych jest szyfrowanie. Jest ono stosowane w odniesieniudo pojedynczych dokumentow, jak i ciag lych transmisji sieciowych. Szyfrowanieumozliwia rowniez stosowanie podpisow cyfrowych umozliwiajac potwierdzanieintegralnosci dokumentow oraz tozsamosci partnera.

Tradycyjnie szyfrowanie, stosowane od starozytnosci, wykorzystywa lo technologieszyfrowania symetrycznego. Jego istota jest identycznosc kluczy (szyfrow) s luzacychdo szyfrowania i deszyfrowania. Bezpieczenstwo tego systemu opiera sie na tajnoscikluczy, co stanowi zarazem jego podstawowa s labosc. W momencie gdy zachodzikoniecznosc wprowadzenia nowych kluczy, potrzebna jest metoda ich bezpiecznegoprzekazania sobie przez partnerow.

Zastosowania kryptografii — szyfrowanie symetryczne 1

System klucza publicznego

Najwazniejsza technologia szyfrowania stosowana w systemach i sieciachkomputerowych jest szyfrowanie asymetryczne, zwane rowniez systemem kluczapublicznego. Klucz szyfrowania kazdej jednostki (osoby lub instytucji) sk lada siez dwoch czesci: klucza publicznego, ktory jest jawny i moze byc przesy lanyotwartymi kana lami, oraz klucza prywatnego, ktory jest tajny i nigdzie nie wysy lany.Kazdy moze zaszyfrowac wiadomosc kluczem publicznym odbiorcy, ale odszyfrowac jabedzie mog l tylko w lasciciel klucza znajacy jego czesc prywatna.

Zastosowania kryptografii — szyfrowanie asymetryczne 2

Podpisy cyfrowe

System klucza publicznego umozliwia latwe wprowadzenie dodatkowej waznej funkcji,jaka sa podpisy cyfrowe. Polega ona na zaszyfrowaniu komunikatu przez nadawceswoim w lasnym kluczem prywatnym. Taki komunikat moze byc odszyfrowany przezkazdego, ale tylko kluczem publicznym nadawcy. Zgodnosc odszyfrowanegokomunikatu z jego pe lna otrzymana wersja dowodzi, ze to okreslona osobazaszyfrowa la wiadomosc, oraz, ze tresc wiadomosci jest nieprzek lamana.

Zastosowania kryptografii — podpisy cyfrowe 3

Szyfrowanie asymetryczne i symetryczne

Pytanie: czy pojawienie sie metod szyfrowania asymetrycznego spowodowa lo, ze starszemetody szyfrowania symetrycznego powinny odejsc do lamusa?

Niestety, nie. Szyfrowanie asymetryczne jest znacznie mniej efektywne (o kilka rzedowwielkosci) niz symetryczne. W praktyce, zw laszcza duze dokumenty, lepiej jestszyfrowac tradycyjnymi szyframi symetrycznymi. Mozna te dwie metody szyfrowaniapo laczyc w taki sposob, ze dokument wysy lany danemu odbiorcy jest szyfrowanyszyfrem symetrycznym z jednorazowo wygenerowanym kluczem. Ten klucz zostajezaszyfrowany kluczem publicznym odbiorcy i wys lany mu razem z dokumentem.

Zauwazmy, ze rozwiazuje to zarazem problem wysy lania jednego dokumentu wieluodbiorcom. Chcac zaszyfrowac go kluczem publicznym, musia lyby zostac utworzonewielokrotne wersje tego samego dokumentu, kazda zaszyfrowana kluczem publicznymkolejnego odbiorcy. Zamiast tego, zaszyfrowany dokument jest jeden, i do niegodo laczonych wiele kopii klucza symetrycznego (typowo znacznie mnieszego niz samdokument) zaszyfrowanego kluczami publicznymi wielu odbiorcow.

Zastosowania kryptografii — podpisy cyfrowe 4

Skroty kryptograficzne

Dodanie do wysy lanego komunikatu jego zaszyfrowanej wersji jako podpisu dzia la, aleniekoniecznie jest wygodne. Na przyk lad, dla d lugich komunikatow (takich jak filmwideo) podpis by lby niepotrzebnie d lugi. Istnieja metody generowania skrotowkryptograficznych (ang. digest albo hash), ktore z dokumentu cyfrowego dowolnejd lugosci tworza krotki plik cyfrowy w taki sposob, ze jest bardzo ma lo prawdopodobne,aby z innego sensownego dokumentu utworzyc identyczny skrot. Skrot kryptograficznypo zaszyfrowaniu w lasnym kluczem publicznym stanowi wygodniejsza wersje podpisucyfrowego.

Zastosowania kryptografii — skroty kryptograficzne 5

Skroty kryptograficzne (cd.)

Zadaniem skrotu kryptograficznego jest utworzyc ciag bitow, ktory bedzie maksymalniejednoznacznie zwiazany z oryginalnym dokumentem, ktory z maksymalnymprawdopodobienstwem bedzie rozny dla roznych dokumentow, ale ktory bedzie mia lsta la d lugosc. Algorytmy generacji takich skrotow nazywane sa rowniez funkcjamijednokierunkowymi albo mieszajacymi.

Na przyk lad, popularny przez wiele lat algorytm skrotu kryptograficznego MD5generuje ciagi 128-bitowe, czesto kodowane w postaci 32-znakowych napisowszesnastkowych (heksadecymalnych). Inny popularny algorytm SHA-1 generuje ciagi16-bitowe, kodowane jako napisy heksadecymalne 40-znakowe.

Kryptografia silnie sie rozwija. Istniejace algorytmy szyfrowania sa intensywnie badanei nowe rozwijane. Na przyk lad, w 2011 opublikowano metode ataku na algorytm SHA-1pozwalajacy wygenerowac kolizje (alternatywny ciag bajtow dajacy te sama wartoscskrotu SHA-1). Metoda wymaga 2

65 operacji i nikomu nie uda lo sie jeszczewygenerowac takiej kolizji. Pomimo to g lowni producenci oprogramowania (Microsoft,Google, Mozilla) og losili, ze od roku 2017 ich systemy nie beda akceptowa lycertyfikatow opartych na skrotach SHA-1. Istnieje jednak rodzina znaczniebezpieczniejszych algorytmow SHA-2.

Zastosowania kryptografii — skroty kryptograficzne 6

Szyfrowanie i podpisywanie kluczami publicznymi

Zastosowanie skrotow kryptograficznych jest zatem standardowa i wygodna metodapodpisywania cyfrowego dokumentow. Ponizej przedstawiona jest pe lna proceduraszyfrowania dokumentu do bezpiecznej transmisji przez siec, oraz generowania podpisucyfrowego w celu sprawdzenia integralnosci dokumentu i wiarygodnosci jego autorstwa:

Dok ladna zgodnosc obliczonego przez odbiorce skrotu z wersja rozszyfrowanaz dokumentu swiadczy o zgodnosci dokumentu z wersja wys lana przez nadawce.

Zastosowania kryptografii — system klucza publicznego 7

System klucza publicznego (cd.)

Podsumujmy wiadomosci o systemie kluczy publicznych. Pozwala on na zaszyfrowaniekomunikatu kluczem publicznym odbiorcy, i jednoczesnie wygenerowanie podpisucyfrowego dokumentu, czyli skrotu kryptograficznego oryginalnego dokumentuzaszyfrowanego kluczem prywatnym nadawcy. Odbiorca moze odszyfrowac wiadomoscswoim kluczem prywatnym, nastepnie obliczyc jej skrot, i porownac go z otrzymanymod nadawcy skrotem, rozszyfrowanym kluczem publicznym nadawcy. W ten sposoboryginalna wiadomosc by la transmitowana w postaci zakodowanej, i odbiorca majednoczesnie gwarancje, ze wiadomosc jest dok ladnie zgodna z nadanym tekstem,

Teoretycznie technologia klucza publicznego rozwiazuje problem dystrybucji kluczyszyfrowania. Klucze mozna przesy lac jawnie otwartymi kana lami. Kazdy moze np.opublikowac swoj klucz na stronie internetowej, albo rozsy lac go elektronicznie bezobawy ujawnienia tajnych danych.

Jednak w masowym uzyciu, z jakim mamy do czynienia we wspo lczesnym Internecie,pojawiaja sie dodatkowe problemy. Klucze ulegaja utraceniu i musza byc sprawnieuniewazniane i rozsy lane nowe. Niezawodnie mozna przes lac klucz publicznyprzyjacielowi (lub przyjacio lce), ale jak upewnic sie, ze klucz publiczny banku, firmyPaypal, albo urzedu skarbowego nie zosta l przek lamany?

Zastosowania kryptografii — system klucza publicznego 8

Atak posrednika

Niestety, w Internecie rozwine ly sie liczne techniki atakow wykorzystujace dziuryw zabezpieczeniach. Jezeli komus uda sie przeprowadzic atak w chwili pobieraniakluczy publicznych do komunikacji miedzy dwoma partnerami, to moze latwoprzechwycic, a nawet sfa lszowac, ca la komunikacje miedzy nimi wykorzystujac schematzwany atakiem posrednika (ang. man-in-the-middle attack).

Zastosowania kryptografii — atak posrednika 9

Infrastruktura klucza publicznego (PKI)

Z powyzszych wzgledow system klucza publicznego zosta l w Internecie rozbudowanydo Infrastruktury Klucza Publicznego (PKI — Public Key Infrastructure).Wymaga ona stworzenia zaufanej instytucji zwanej Centrum (albo Urzedem)Certyfikacji CA (ang. Certification Authority). Jego rola jest generowaniecertyfikatow potwierdzajacych, ze dany klucz publiczny jest rzeczywiscie kluczemosoby lub instytucji, ktora podaje sie za w lasciciela klucza. Poniewaz certyfikat jestpodpisany przez Centrum, wiec kazdy moze sprawdzic, ze przes lany klucz publicznyinnej jednostki jest w lasciwy.

Jednoczesnie Centrum przechowuje informacje o uniewaznionych kluczach, i pe lniszereg dalszych funkcji przydatnych w procesie szyfrowania i podpisywaniadokumentow miedzy partnerami w Internecie. Z tego powodu Centrum Certyfikacjimusi samo byc jednostka w pe lni zaufana, ktorego ani tozsamosc, ani wiarygodnosckluczy szyfrowania nie budza watpliwosci. Na przyk lad, przegladarki internetowe majawbudowane w sobie listy istniejacych na swiecie Centrow Certyfikacji, i normalnie nieprzyjmuja certyfikatow podpisanych przez Centrum Certyfikacji spoza tej listy.

Zastosowania kryptografii — infrastruktura klucza publicznego 10

Zastosowania kryptografii — infrastruktura klucza publicznego 11

OpenSSL — infrastruktura klucza publicznego 12

SSL i TLS

SSL (Secure Sockets Layer) jest standardem bezpiecznej komunikacji w Internecie.Polega na wbudowaniu technologii szyfrowania danych opartej na infrastrukturzeklucza publicznego (Public Key Infrastructure, PKI) w protoko l komunikacyjny. Danesa szyfrowane kluczem odbiorcy przed wys laniem ich. Dzieki temu sa zabezpieczoneprzed mozliwoscia ich odczytania przez nieuprawniona strone trzecia, jak rowniez saodporne na manipulacje. Jednoczesnie system dystrybucji kluczy rozwiazuje problemich autentycznosci.

Bezpieczne po laczenia oparte na SSL moga byc stosowane do kazdego rodzajusieciowego protoko lu komunikacyjnego, np. HTTP, POP3, FTP, telnet, itd.

SSL nie jest nowa technologia. Biezaca wersja protoko lu 3.0 istnieje od 1996.Planowane jest zastapienie go przez nowszy protoko l TLS (Transport Layer Security),ktory jest podobny ale niekompatybilny. SSL i TLS sa najpowszechniej wspieranymiprzez serwery WWW szyfrowanymi protoko lami (99.8% serwerow wspiera wersje 3.0SSL, 99.4% wspiera wersje 1.0 TLS).1

1Stan z kwietnia 2013.

OpenSSL — wprowadzenie 13

OpenSSL

OpenSSL jest przenosna, wieloplatformowa implementacja protoko low SSL i TLS,dostepna na zasadach open source. Zasadniczo OpenSSL ma postac biblioteki ANSI C,ktora implementuje podstawowe operacje kryptograficzne. Poza funkcjami niezbednymido szyfrowania sieciowej warstwy transportu, zawiera rowniez funkcje szyfrowaniasymetrycznego (dla plikow), podpisy cyfrowe, kryptograficzne funkcje skrotu,generatory liczb losowych itp.

OpenSSL jest wiecej niz tylko API, to takze program uzytkownika z interfejsem wierszapolecenia. Program pozwala na to samo, co API, i dodatkowo, pozwala sprawdzacserwery i klientow SSL.

W tym wyk ladzie przedstawione sa podstawowe mozliwosci OpenSSL dostepnez narzedzia terminalowego.

Istnieje inna implementacja typu open-source protoko low SSL/TLS — GnuTLS.Zasadnicza roznica miedzy tymi pakietami jest w typie licencji darmowej. JednakGnuTLS nie posiada narzedzia terminalowego, i z punktu widzenia uzytkownikasystemow uniksowych jest ma lo interesujacy.

OpenSSL — wprowadzenie 14

Funkcje programu openssl

Program openssl umozliwia nastepujace operacje:

• Tworzenie i zarzadzanie kluczami prywatnymi, publicznymi i ich parametrami

• Operacje kryptograficzne z kluczem publicznym

• Tworzenie certyfikatow X.509, CSR oraz CRL

• Obliczanie skrotow wiadomosci

• Szyfrowanie i deszyfrowania roznymi szyframi

• Testowanie klientow i serwerow SSL/TLS

• Przetwarzanie poczty podpisanej lub zaszyfrowanej S/MIME

• Zadania znacznikow czasowych, generowanie i weryfikacja

OpenSSL — wprowadzenie 15

Podstawowe wywo lania openssl

Program openssl wywo luje sie z wektorem argumentow definiujacym funkcje:

# sprawdzenie zainstalowanej wersji openssl

openssl version

# z obszernymi informacjami

openssl version -a

# lista polecen openssl: jakiekolwiek nieznane polecenie, np.

openssl help

# podobny trik dziala dla indywidualnych polecen openssl, np.

openssl dgst -h

# kompleksowe testy wydajnosci operacji szyfrowania systemu

openssl speed

# testy wydajnosci ograniczone do konkretnego algorytmu

openssl speed rsa

# testy wydajnosci z uwzglednieniem wieloprocesorowosci

openssl speed rsa -multi 2

Mozna rowniez wejsc w tryb dialogowy openssl i pisac jego polecenia. Jednak brakwtedy mozliwosci readline — edycji poleceniami Emacsa, historii, itp.

OpenSSL — wprowadzenie 16

Dostepne algorytmy szyfrowania openssl

openssl list-cipher-commands

# lista dostepnych algorytmow z pelna informacja

openssl ciphers -v

# lista tylko szyfrow wersji TLSv1

openssl ciphers -v -tls1

# lista szyfrow "mocnych" (klucze powyzej 128 bitow)

openssl ciphers -v ’HIGH’

# lista szyfrow "mocnych" z algorytmeme AES

openssl ciphers -v ’AES+HIGH’

OpenSSL — wprowadzenie 17

Testowanie zdalnego serwera WWW

Openssl pozwala wykonywac wiele roznych testow zdalnych serwerow HTTPS:

# testowanie nawiazywania polaczen ze zdalnym serwerem WWW przez 30s

openssl s_time -connect remote.host:443

# test.polaczen i sciagania strony przez 10 sekund, tworz.nowej sesji

openssl s_time -connect remote.host:443 -www /index.html -time 10 -new

Jesli nie mamy do dyspozycji zdalnego serwera HTTPS, ktory moznaby wykorzystac dotestow, openssl pozwala

”postawic”minimalny serwer na wybranym porcie. Serwer

serwuje pliki z lokalnego katalogu, w ktorym zosta l uruchomiony:

# uruchomienie serwera HTTPS na porcie 10443 z certyfikatem mycert.pem

openssl s_server -accept 10443 -cert mycert.pem -WWW

# wygenerowanie certyfikatu serwera, zadaje duzo szczegolowych pytan

openssl req \

-x509 -nodes -days 365 \

-newkey rsa:1024 -keyout mycert.pem -out mycert.pem

OpenSSL — wprowadzenie 18

Symetryczne szyfrowanie plikow

Szyfrowanie symetryczne jest pomocnicza funkcja openssl. W tej roli openssl jestmniej wygodny w uzyciu niz np. GnuPG. Przy deszyfrowaniu wymaga znajomosci,oprocz has la, algorytmu uzytego do szyfrowania.

# szyfruj file.txt do file.enc algorytmem AES-256-CBC,

openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

# alternatywna forma tego samego, z kodowaniem tekstowym base64

openssl aes-256-cbc -a -salt -in file.txt -out file.ascii

# deszyfruj plik binarny na stdout

openssl enc -d -aes-256-cbc -in file.enc

# deszyfruj plik zakodowany tekstowo base64 na stdout

openssl enc -d -aes-256-cbc -a -in file.ascii

# haslo szyfrowania mozna podac w wierszu polecenia

openssl enc -aes-256-cbc -salt -in file.txt -out file.enc \

-pass pass:Kathy123

# mozna rowniez haslo zapisac na pliku

openssl enc -aes-256-cbc -salt -in file.txt -out file.enc \

-pass file:~/passwords/mypassword.txt

OpenSSL — symetryczne szyfrowanie plikow 19

# koduj tresc pliku base64 (bez szyfrowania), zapisz na drugim pliku

openssl enc -base64 -in file.txt -out file.ascii

# koduj base64 "w locie", wyslij wynik na wyjscie, uwaga na NEWLINE

printf "jakis napis" | openssl enc -base64

# dekodowanie BASE64, ponownie uwaga na NEWLINE

printf "amFraXMgbmFwaXM=\n" | openssl enc -base64 -d

OpenSSL — symetryczne szyfrowanie plikow 20

Skroty kryptograficzne i podpisy cyfrowe

Skroty kryptograficzne (file hash lub message digest) pe lnia role sygnatur duzychplikow danych. Na przyk lad, zamiast porownywac pliki kazdy z kazdym, moznaobliczyc ich skroty i szybko je porownac. Jeszcze wazniejsza role skroty pe lnia przycyfrowym podpisywaniu przesy lanych danych. Zamiast podpisywac ca ly plik, co jestrownowazne z jego zaszyfrowaniem, mozna podpisac jego skrot.

Zadaniem skrotu kryptograficznego jest byc”prawie unikalnym”. To znaczy, znalezienie

innego pliku z tym samym skrotem co dany plik musi byc bardzo trudne. W praktyce,podpisanie skrotu jest mniej bezpieczne niz ca lego pliku.

# skrot MD5

openssl dgst -md5 filename

# skrot SHA1

openssl dgst -sha1 filename

# wygenerowanie podpisu skrotu sha1 kluczem prywatnym

openssl dgst -sha1 -sign mykey.pem -out foo.tar.gz.sha1 foo.tar.gz

# weryfikacja sygnatury z kluczem publicznym nadawcy

openssl dgst -sha1 -verify pubkey.pem -signature foo.tar.gz.sha1 \

foo.tar.gz

OpenSSL — skroty kryptograficzne 21

OpenSSL — skroty kryptograficzne 22

System szyfrowania kluczem publicznym PGP i GnuPG

System PGP (Pretty Good Privacy) zosta l stworzony przez Philipa Zimmermannaw celu udostepnienia zwyk lym uzytkownikom systemow komputerowych dobrodziejstwwynikajacych z zastosowania nowoczesnych algorytmow szyfrowania z wykorzystaniemkluczy publicznych. Zaproponowana przez niego koncepcja okaza la sie na tyle dobra, zeprogram natychmiast zosta l zaakceptowany i powsta la spo lecznosc jego uzytkownikow,jak rowniez serwery kluczy publicznych tego systemu.

Jednak wkrotce pojawi ly sie problemy, wynikajace z szybkiego postepu w tworzeniunowych algorytmow szyfrowania, i checi ich uzycia w systemie PGP, a z drugiej stronywprowadzanej ich ochrony prawnej przez rozne firmy (patenty), a takze blokowaniaprzez rzad amerykanski mozliwosci eksportowania z U.S.A. oprogramowaniazawierajacego nowe algorytmy szyfrowania. Powstawa ly nowe wersje oprogramowaniaPGP, lecz niektore z nich narusza ly istniejace patenty, a inne nie mog ly bycrozpowszechniane z terenu U.S.A., i z koniecznosci nie wszystkie by ly ze sobakompatybilne.

Dobrym rozwiazaniem tych problemow jest system GnuPG, kompatybilny z systememszyfrowania PGP, i nalezacy do niego program gpg, z interfejsem uzytkownika zgodnymz oryginalnym programem pgp.

OpenSSL — szyfrowanie PGP/GPG 23

System PGP i GPG — tworzenie i przesy lanie kluczy

1. Wybranie kartoteki na pliki konfiguracyjne (musi byc zabezpieczona):

PGPPATH=~/.pgp # domyslna dla PGP

GNUPGHOME=~/.gnupg # domyslna dla GnuPG

export PGPPATH GNUPGHOME

2. Wygenerowanie sobie kompletu kluczy: prywatnego i publicznego.

pgp -kg

gpg --gen-key

3. Wprowadzenie czyjegos klucza publicznego do bazy danych.

pgp -ka plik_z_czyims_kluczem

gpg --import plik_z_czyims_kluczem

4. Utworzenie pliku tekstowego z w lasnym kluczem publicznym.

pgp -kxa user_id plik_z_kluczem

gpg --export --armor --output plik_z_kluczem user_id

OpenSSL — szyfrowanie PGP/GPG 24

System PGP i GPG — szyfrowanie

1. Zaszyfrowanie danych w pliku czyims kluczem publicznym

pgp -eat plik_danych mw ekr

bezposrednie wysy lanie zaszyfrowanych danych programem mailx

cat tresc_listu | pgp -eatf ekr | mailx -s "list ode mnie" ekr

zaszyfrowanie “w locie” tresci listu pisanego pod programem mailx

~| pgp -eatf ekr

2. Szyfrowanie symetryczne (jednym kluczem)

pgp -c plik_danych

OpenSSL — szyfrowanie PGP/GPG 25

System PGP i GPG — deszyfrowanie i podpisy cyfrowe

pgp nazwa_pliku

cat cos_tam | pgp

z poziomu programu mailx

pipe ’pgp -m’

Podpisy cyfrowe:

pgp -s nazwa_pliku

pgp -sta nazwa_pliku # wygodne z flaga CLEARSIG

pgp -esta nazwa_pliku witold

Plik konfiguracyjny $PGPPATH/config.txt

CLEARSIG = on

TEXTMODE = on

ARMOR = on

OpenSSL — szyfrowanie PGP/GPG 26

System PGP i GPG — konfiguracja i manipulacje kluczami

1. wyswietlanie zapamietanych kluczy publicznych

pgp -kv

gpg --list-keys

2. wyswietlanie zapamietanych kluczy prywatnych (tylko sygnatur)

gpg --list-secret-keys

3. Sprawdzanie przez telefon sygnatury klucza

pgp -kvc witold

gpg --list-sigs

OpenSSL — szyfrowanie PGP/GPG 27

OpenSSL — szyfrowanie PGP/GPG 28

Szyfrowane po laczenia: ssh i scp

Programy ssh/scp umozliwiaja po laczenia terminalowe i kopiowanie plikow,z wykorzystaniem szyfrowania kluczem publicznym. Wymaga to wygenerowania parykluczy szyfrowania dla komputera, do wstepnego nawiazywania po laczenia. Ponadto,kazdy uzytkownik musi miec wygenerowana w lasna pare kluczy:

> ssh-keygen

...

> ls -l ~/.ssh:

total 36

-rw------- 1 witold gurus 826 2007-11-25 08:50 authorized_keys

-rw-r--r-- 1 witold gurus 15 2007-11-25 10:47 config

-rw------- 1 witold gurus 1675 2007-11-25 08:46 id_rsa

-rw-r--r-- 1 witold gurus 630 2008-06-04 16:52 id_rsa.keystore

-rw-r--r-- 1 witold gurus 396 2007-11-25 08:46 id_rsa.pub

-rw------- 1 witold gurus 14160 2008-10-24 10:16 known_hosts

Plik z kluczem prywatnym moze byc zabezpieczony has lem (passphrase). Has lo trzebapodawac kazdorazowo przy korzystaniu z klucza prywatnego (pewne udogodnieniezapewnia program ssh-agent, o czym za chwile). Mozna zrezygnowac z has la, wtedyklucz jest chroniony tylko prawami dostepu do pliku.

OpenSSL — szyfrowane po laczenia ssh 29

Nawiazywanie po laczenia

Normalnie przy nawiazywaniu po laczen ze zdalnymi systemami za pomoca ssh lubscp, zdalny system wymaga autoryzacji przez podanie has la:

shasta-3184> scp -p ~/mozilla.ps sierra:/tmp

The authenticity of host ’sierra (172.16.0.1)’ can’t be established.

RSA key fingerprint is 1b:9d:e6:cd:df:fd:ac:2a:6c:40:bd:0b:40:2b:50:9d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ’sierra,172.16.0.1’ (RSA) to the list of known hosts.

witold@sierra’s password:

mozilla.ps 100% |*****************************| 937 KB 00:01

W tym przypadku okaza lo sie, ze program ssh na komputerze lokalnym (shasta) nieznalaz l zapamietanego klucza publicznego komputera zdalnego (sierra), i ostrzeg luzytkownika, ze zapyta bezposrednio zdalny komputer o jego klucz. Nastepnie zapisa lotrzymany zdalny klucz w pliku lokalnym. Normalnie jest bezpieczniej uzyc od razuklucza publicznego zdalnego komputera nawet do nawiazania wstepnego po laczenia, zewzgledu na mozliwosc podszywania sie.

Przy kolejnych po laczeniach system znajdzie i uzyje zapamietany klucz publicznyzdalnego komputera. Warto zwrocic uwage na ten szczego l, poniewaz jest to pierwszystopien zabezpieczenia programu ssh.

OpenSSL — szyfrowane po laczenia ssh 30

Nawiazywanie po laczenia (2)

-bash-3.00$ ssh sierra.ict.pwr.wroc.pl

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

1b:9d:e6:cd:df:fd:ac:2a:6c:40:bd:0b:40:2b:50:9d.

Please contact your system administrator.

Add correct host key in /home/witold/.ssh/known_hosts to get rid of this message.

Offending key in /home/witold/.ssh/known_hosts:3

RSA host key for palnet.homeunix.net has changed and you have requested strict checking.

Host key verification failed.

W tym przypadku klucz przys lany przez zdalny serwer nie zgadza sie z kluczempamietanym dla serwera przez program ssh. Moze to byc wynikiem zmiany klucza nazdalnym serwerze (np. w wyniku reinstalacji), ale moze sygnalizowac fa lszerstwo.

OpenSSL — szyfrowane po laczenia ssh 31

”Odcisk palca” klucza

Aby potwierdzic poprawnosc klucza zdalnego systemu, do ktorego nie mamy innegodostepu niz po laczenie ssh na swoje konto, mozemy sprawdzic jego

”odcisk palca”

(fingerprint), ktory jest rodzajem sumy kontrolnej, latwej do przeczytania. Uzytkownikzdalnego systemu (np. administrator) moze go uzyskac nastepujacym poleceniem,i nastepnie np. podyktowac przez telefon:

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Do uzyskania odcisku palca klucza nie jest potrzebny dostep do klucza prywatnego, doktorego zwyk ly uzytkownik nie ma dostepu, poniewaz jest to klucz ca lego systemu,a nie konkretnego uzytkownika.

Po weryfikacji poprawnosci uzyskiwanego klucza, nalezy wykasowac edytoremtekstowym stary klucz z pliku pamietanych kluczy, co pozwoli nawiazac poprawnepo laczenie.

OpenSSL — szyfrowane po laczenia ssh 32

Tunelowanie po laczen przez ssh

Dodatkowa, niezwykle przydatna w lasnoscia programu ssh jest zdolnosc tunelowaniapo laczen, czyli tworzenia portow sieciowych TCP po dowolnej stronie po laczenia ssh.W chwili proby otwarcia tego portu program ssh tworzy port po drugiej stroniepo laczenia ssh, i po laczenie TCP miedzy nimi. Nawiazywanie po laczenia i komunikacjaTCP przez lacze ssh sa szyfrowane.

Mechanizm tworzenia tuneli TCP jest”mocny” i daje wiele mozliwosci. Przeanalizujemy

kilka przyk ladowych konfiguracji.

OpenSSL — szyfrowane po laczenia ssh 33

ssh: przyk lady tuneli (1)

Na przyk lad, chcemy komunikowac sie ze zdalnym serwerem HTTP, ktory mozewymagac od nas wprowadzenia danych (przez formularze), ktore niekonieczniechcielibysmy przesy lac przez siec otwartym tekstem. Serwery HTTP czesto chroniatakie dane udostepniajac po laczenia szyfrowane HTTPS. Jesli jednak dany serwer tegonie robi, mozemy sami otworzyc swoje po laczenie w szyfrowanym kanale. W tym celunalezy zainstalowac tunel ssh wed lug ponizszego schematu:

ssh -L 8080:localhost:80 remote.ssh.server

Komunikacja ze zdalnym serwerem polega teraz na laczeniu sie z portem 8080 nakomputerze lokalnym.

OpenSSL — szyfrowane po laczenia ssh 34

ssh: przyk lady tuneli (2)

W powyzszym przyk ladzie tworzone jest po laczenie ze zdalnym serwerem ssh abyumozliwic otwieranie w jego ramach po laczen do innych serwisow na tej samejmaszynie. Rozwazmy teraz scenariusz, ze serwer ssh znajduje sie w sieci, gdzie istniejaserwisy na innych komputerach, dostepne w sieci wewnetrznej, ale nie bezposrednio, wInternecie. Moze to wynikac z konfiguracji bramy do tej sieci, albo ze wzgledowpraktycznych.

Typowo tak sa skonfigurowane serwisy, ktore wymagaja autoryzacji otwartym tekstem,na przyk lad: POP3 (110), Microsoft Windows (139), albo serwisy prywatne, ktorychnie chciano udostepnic w Internecie, tylko w sieci lokalnej, np.: CVS (port 2401),HTTP proxy (2138), i inne.

Ponizsze wywo lanie ssh otworzy po laczenie, a w nim cztery tunele dla po laczen TCPdo roznych serwisow, na roznych serwerach, widocznych i dostepnych ze zdalnegoserwera ssh. Dodatkowy argument -N mowi, zeby program ssh w ogole nie otwiera lpo laczenia terminalowego, i obs lugiwa l tylko tunele TCP.

ssh -N -L 10110:pop3.server:110 -L 10139:windows.server:139 \

-L 12138:squid.server:2138 -L 12401:cvs.server:2401 remote.host

OpenSSL — szyfrowane po laczenia ssh 35

ssh: przyk lady tuneli (3)

Wczesniejsze przyk lady zak lada ly tworzenie portow dla nowych po laczen na maszynielokalnej. Jest to schemat czesto przydatny, gdy laczymy sie ze zdalnym komputeram,np. za zapora (firewall). Zdalny komputer pe lni wtedy role bramy do sieci wewnetrznej,i jesli taka brama istnieje, mozemy tworzyc wygodne kana ly dostepu do serwisowwewnetrznych.

Rozwazmy teraz inny scenariusz, kiedy ponownie chcemy uzyskac dostep do sieciwewnetrznej za zapora, lecz nie istnieje komputer dostepowy przyjmujacy po laczeniassh z Internetu. Mozemy jednak utworzyc tunele jesli posiadamy komputer wewnatrzsieci lokalnej, z ktorego mozna wykonywac po laczenia na zewnatrz. Wtedy po laczeniessh wykonane z zewnetrznym serwerem moze zainstalowac na tym serwerze portpozwalajacy otwierac po laczenie do naszej w lasnej maszyny, a za jej posrednictwem doinnych serwisow w sieci lokalnej.

Ponizsze wywo lanie utworzy tunele dla tych samych serwisow co w poprzednimprzyk ladzie. W tym wypadku serwisy musza byc widoczne z naszego komputera,a porty o numerach > 10000 zostana utworzone na zdalnej maszynie.

ssh -N -R 10110:pop3.server:110 -R 10139:windows.server:139 \

-R 12138:squid.server:2138 -R 12401:cvs.server:2401 remote.host

OpenSSL — szyfrowane po laczenia ssh 36

ssh: przyk lady tuneli (4)

Rozwazmy teraz sytuacje, kiedy chcemy nawiazac po laczenie ssh pomiedzykomputerami, pomiedzy ktorymi nie istnieje mozliwosc bezposredniego po laczenia.Mozemy wtedy zbudowac tunele przez kolejne po laczenia(klient->brama1->brama2->serwer), ktore zapewnia otwieranie zagregowanegopo laczenia ssh:

# polaczenie z "klient" przez "brama1" i "brama2" do "serwer"

# na klient:

ssh -L 12345:localhost:12345 brama1

# na brama1:

ssh -L 12345:localhost:12345 brama2

# na brama2:

ssh -L 12345:localhost:22 serwer

Efekt jest taki, ze wywo lanie: ssh -p 12345 localhost na komputerze "klient"

otwiera po laczenie ssh do komputera koncowego "serwer". W celu kopiowaniaplikow pomiedzy tymi komputerami nalezy wywo lac polecenie scp -P 12345 ... (wtym przypadku niestandardowy port podajemy przez argument duze

”P”).

OpenSSL — szyfrowane po laczenia ssh 37

ssh: przyk lady tuneli (5)

W poprzednim przyk ladzie zestaw tuneli ssh pozwoli l nawiazywac po laczenia ssh

pomiedzy docelowymi komputerami, gdzie bezposrednie po laczenie nie by lo mozliwe.Rozwazmy teraz troche inny wariant tej sytuacji. Chcemy po laczyc komputery klient1 iklient2, ktore znajduja sie w sieciach lokalnych, niedostepnych z Internetu, za pomocakomputera serwer dostepnego w Internecie. Musimy tworzyc tunele od stronyizolowanych klientow:

# polaczenie z "klient1" przez "serwer" do "klient2"

# na klient1:

ssh -L 12345:localhost:12345 serwer

# na klient2:

ssh -R 12345:localhost:22 serwer

Powyzsze tunele umozliwiaja po laczenia ssh i scp z klient1 na klient2, oczywiscietylko dopoty, dopoki oba po laczenia istnieja. Aby umozliwic nawiazywanie po laczenmiedzy tymi klientami w odwrotnym kierunku, nalezy dodac odpowiedni komplet tunelibiegnacych w druga strone.

OpenSSL — szyfrowane po laczenia ssh 38

ssh: przyk lady tuneli (6)

Rozwazmy ponownie dok ladnie ten sam scenariusz, co w porzednim przyk ladzie.Chcemy po laczyc komputery klient1 i klient2, w niedostepnych sieciach lokalnych, zapomoca komputera serwer dostepnego w Internecie. Jestesmy na komputerze klient1,i jeszcze nie utworzylismy tunelu na tej maszynie. Wczesniej, na komputerze klient2utworzylismy odpowiedni tunel:

# na klient2:

ssh -R 12345:localhost:22 serwer

Na pozor, zamiast tworzyc tunel do portu 12345, i potem laczyc sie z koncowka tegotunelu na localhost, moglibysmy bezposrednio laczyc sie z tym portem na serwer. Takrzeczywiscie jest, ale wymaga to dwoch dodatkowych operacji.

Po pierwsze, domyslna konfiguracja serwera sshd nie pozwala udostepniac tworzonychprzez tunele portow na zewnetrznych interfejsach sieciowych. Aby tak sie sta lo, nalezyustawic flage "GatewayPorts yes" w konfiguracji sshd.

Po drugie, operacje tworzenia tuneli (-L, -R, i -D) domyslnie uaktywniaja port (bind)tylko na interfejsie wewnetrznym (loopback), pomimo ustawionej powyzszej flagiserwera. Aby uaktywnic port rowniez na interfejsach zewnetrznych, nalezy dodatkowouzyc opcji -g w powyzszym wywo laniu ssh.

OpenSSL — szyfrowane po laczenia ssh 39

Przydatne linki

Paul Heinlein, OpenSSL Command-Line HOWTOhttp://www.madboa.com/geek/openssl/

J.K. Harris, Understanding SSL/TLShttp://computing.ece.vt.edu/~jkh/Understanding_SSL_TLS.pdf

Philippe Camacho, An Introduction to the OpenSSL command line toolhttp://users.dcc.uchile.cl/~pcamacho/tutorial/crypto/openssl/

openssl_intro.html

Sun/Oracle documents, Introduction to SSLhttp://docs.oracle.com/cd/E19957-01/816-6156-10/

OpenSSL — linki 40