os crypt s - zpcir.ict.pwr.wroc.plwitold/opsys/os_crypt_s.pdf · Kaz˙dy moz˙e zaszyfrowa´c...
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
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
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
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