Infrastruktura klucza publicznego (PKI) Openssl, Certyfikaty i GPG
Openssl - dostępny również dla MS Windows Instalacja pod MS Windows Pobierz plik http://gnuwin32.sourceforge.net/downlinks/openssl-bin-zip.php Można pobrać również dokumentację: http://gnuwin32.sourceforge.net/downlinks/openssl-doc-zip.php Wypakuj zawartość plików w dowolnym miejscu Uruchom konsole i przejdź do wypakowanego katalogu – ściślej podkatalogu bin
Openssl – podstawowe komendy Wyświetlanie komend i pomocy do komend: openssl –h openssl genrsa –h openssl rsautl –h Openssl rsa -h 1)Generacja klucza prywatnego openssl genrsa -out private.key 1024 2)Generacja klucza publicznego (uzupełnij na podstawie dokumentacji) opessl rsa -in private.key –pubout … public.key
3)Szyfrowanie przy użyciu klucza publicznego Utworzenie wiadomosci tekstowej echo "wiadomosc do zaszyfrowania">msg.txt Szyfrowanie openssl rsautl -encrypt -in msg.txt -inkey public.key -pubin -out enc.txt 4)Deszyfrowanie przy użyciu klucza prywatnego openssl rsautl -decrypt -in enc.txt -inkey private.key -out dec.txt
5)Szyfrowanie przy użyciu klucza prywatnego Utworzenie wiadomosci tekstowej echo "wiadomosc do zaszyfrowania">msg.txt Szyfrowanie openssl rsautl -raw -decrypt -in msg.txt -inkey private.key -out enc1.txt 6)Deszyfrowanie przy użyciu klucza publicznego openssl rsautl -… -encrypt –in enc1.txt -inkey public.key -pubin -out dec1.txt Pytanie: Jaki padding trzeba użyć w 6)? Jaka powinna być długość wiadomości msg.txt, by wiadomość dec1.txt była identyczna z msg.txt?
Openssl a podpis 7) Podpisywanie wiadomości openssl dgst -sign private.key msg.txt >sign.msg 8) Weryfikacja podpisu openssl dgst -verify public.key -signature sign.msg msg.txt
Openssl szyfrowanie symetryczne 9) openssl enc -des3 -e -salt -a -in msg.txt -out msgsym.base64 10) openssl enc -des3 -d -salt -a -out msg1.txt -in msgsym.base64
Certyfikaty kwalifikowane i niekwalifikowane Certyfikat kwalifikowany wykorzystuje się do podpisywania oficjalnych dokumentów http://www.certum.pl/certum/cert,wiedza_przewodnik.xml#pyt1 Niekwalifikowane m.in. do zabezpieczania komunikacji SSL i szyfrowania e-maili Lista podmiotów uprawnionych do wystawiania certyfikatów kwalifikowanych w Polsce znajduje się na stronie Narodowego Centrum Certyfikacji: http://www.nccert.pl/ncc/rejestr/rejestr_index.aspx
Certyfikaty Tworzenie centrum certyfikacji (CA) na własne potrzeby Generacja kluczy CA openssl genrsa -des3 -out CA.key <key_size> Generacja certyfikatu CA openssl req -new -key CA.key -x509 -days 1095 -out CA.crt -config config.txt Plik config.txt można przekopiować np. z: http://www.faqs.org/docs/securing/chap24sec194.html Generacja odcisku certyfikatu CA openssl x509 -fingerprint -noout -in CA.crt Żądanie wydania certyfikatu openssl genrsa -out <new.key> openssl req -new -key <new.key> -out <new.csr> -config config.txt Generacja certyfikatu podpisanego przez CA na podstawie żądania openssl x509 -req -days 365 -in <new.csr> -CA CA.crt -CAkey CA.key -CAcreateserial -out <new.crt>
Certyfikaty Konwersja do formatu PKCS#12 (opcjonalnie): openssl pkcs12 -export -in pem-certificate-and-key-file -out pkcs-12-certificate-and-key-file openssl pkcs12 -export -in pem-certificate-file -inkey pem-key-file -out pkcs-12-certificate-and-key-file openssl pkcs12 -export -in pem-certificate-file -nokeys -nodes -out pkcs-12-certificate-file Wyświetlanie zawartości certyfikatu: openssl.exe x509 -in new.crt -text
Zaufane centra certyfikacji Internet Explorer: Narzędzia->Opcje interentowe->Zawartość->Certyfikaty->Zaufane główne urzędy Firefox: Edycja->Preferencje->Zaawansowane->Szyfrowanie->Wyświetl certyfikaty->Organy certyfikacji
Przykładowe centra VeriSign jak uzyskać certyfikat SSL?: http://www.verisign.com/ jak się generuje żądanie wydania certyfikatu, które trzeba wkleić w formę on-line?: https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR198 Unizeto http://www.unizeto.pl Thawte http://thawte.com UWAGA: w przypadku certyfikatów SSL jako CN (common name) podajemy nazwę domenową serwera (np. www.cs.put.poznan.pl), na którym będzie ten certyfikat używany.
Wyświetlanie zawartości certyfikatu dla witryny WWW Klikamy na symbol kłódki po nawiązaniu połączenia poprzez https W przypadku Internet Explorera od wersji 7.0 począwszy wprowadzono bardziej rygorystyczne sprawdzanie certyfikatów oraz wprowadzono tzw. „Extended Validation (EV) Certificates”. Pole adresu wówczas przybiera zielony kolor.
Inne elementy PKI Listy CRL Urządzenia sprzętowe czytniki/karty
Testowanie połączeń SSL Inicjujemy polaczenie z serwerem openssl s_client -connect 150.254.30.30:443 -state -debug Wysylamu komendy HTTP GET / /HTTP/1.0 Host:www.cs.put.poznan.pl <ENTER>
GPG Instalacja Pobierz i uruchom instalator ftp://ftp.gnupg.org/gcrypt/binary/gnupg-w32cli-1.4.8.exe Zignoruj komunikat o prawach administratora i wybierz katalog instalacyjny, do którego posiadasz uprawnienia
Generacja kluczy 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? 1 DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
Generacja kluczy 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) Key does not expire at all Is this correct? (y/N) y
Generacja kluczy 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: Maciej Miłostan Email address: mm@cs.put.poznan.pl Comment: Mój klucz You are using the `CP852' character set. You selected this USER-ID: "Maciej Miłostan (Mój klucz) <mm@cs.put.poznan.pl>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.
gpg --list-keys C:/Documents and Settings/szarak/Dane aplikacji/gnupg\pubring.gpg ----------------------------------------------------------------- pub 1024D/6E17500D 2008-03-12 uid Maciej Miłostan (Mój klucz) <mm@cs.put.poznan.pl> sub 2048g/46E8314D 2008-03-12
Import klucza Ćwiczenie: Wygeneruj drugi klucz (np. dla Alice) Dokonaj eksportu klucza publicznego i prywatnego gpg -a --export Alice >alice.pub gpg -a --export-secret-key Alice >alice.prv Usuń klucze Alice gpg --delete-keys Alice gpg --delete-secret-keys Alice Wylistuj klucze gpg --list-keys Dokonaj importu klucza publicznego Alice gpg --import alice.pub wylistuj klucze Dokonaj importu klucza prywatnego Alice gpg --import alice.prv wylistuj klucze
Poziom zaufania (Trust level) 1) Ustaw poziom zaufania dla klucza Alice gpg --edit-key Alice list trust 4 list
Podpisywanie wiadomości Wiadomość i podpis w jednym pliku (*.gpg) gpg -u Alice -s msg.txt Weryfiakacja wiadomości gpg --verify msg.txt.gpg Zapisanie oryginalnej wiadomości gpg msg.txt.gpg Podpis w osobnym pliku (*.sig) gpg --detach-sign msg.txt Weryfikacja: gpg --verify msg.txt.sig msg.txt Podpis w formacie tekstowym (*.asc) gpg --clearsign msg.txt Dokonaj modyfikacji wiadomości w pliku msg.txt.asc i sprobuj dokonac weryfikacji podpisu
Szyfrowanie podpisanych wiadomości Podpis swoim kluczem i zaszyfrowanie wiadomości dla Alice gpg -se –r Alice msg.txt Odszyfrowanie i weryfikacja podpisu gpg –d msg.txt.gpg
Serwery kluczy Przykład pobieranie klucza: gpg --keyserver pgp.mit.edu --recv-keys F9B1BDED
GPG/PGP a poczta elektroniczna Thunderbird + Enigmail Outlook/Outlook Express + komercyjne implementacje PGP (Outlook + Plugin do GPG)
Thunderbird+GPG+Enigmail http://www.thuderbird.pl Enigmail http://enigmail.mozdev.org/home/index.php
http://enigmail.mozdev.org/documentation/screenshots.php
Zarządzanie kluczami
Podsumowanie Openssl GPG Enigmail Duża funkcjonalność Szeroko stosowany zestaw narzędzi i bibliotek GPG Pretty Good Privacy na licencji GNU Łatwe zarządzanie kluczami Łatwe podpisywanie i weryfikacja podpisów Możliwość łączenia z serwerami kluczy Enigmail Nakładka na GPG w postaci wtyczki do Thunderbird-a Wywołanie funkcji GPG z poziomu okienek graficznych Automatyzacja procesu szyfrowania i podpisywania E-maili