Laboratorium nr 2 Szyfrowanie, podpis elektroniczny i certyfikaty Wprowadzenie W roku 2001 Prezydent RP podpisał ustawę o podpisie elektronicznym, w która stanowi że podpis elektroniczny jest równoprawny podpisowi własnoręcznemu: Dane w postaci elektronicznej opatrzone bezpiecznym podpisem elektronicznym weryfikowanym przy pomocy ważnego kwalifikowanego certyfikatu są równoważne pod względem skutków prawnych dokumentom opatrzonym podpisami własnoręcznymi, chyba że przepisy odrębne stanowią inaczej. Art. 5 Ustawy o podpisie elektronicznym. Konstrukcja podpisu elektronicznego opiera się na szyfrowaniu danych za pomocą kryptografii asymetrycznej. Szyfr asymetryczny posiada dwa klucze: publiczny i prywatny. Jak sama nazwa wskazuje klucz publiczny jest znany powszechnie, natomiast klucz prywatny zna jedynie jego właściciel. Klucze te posiadają dwie główne cechy: znając jeden z kluczy nie możliwym jest znalezienie drugiego z nich, zaszyfrowane dane za pomocą jednego z kluczy można odszyfrować jedynie drugim kluczem. Taka konstrukcja szyfru umożliwia podpis elektroniczny: ponieważ klucz prywatny stanowi własność konkretnej osoby i jest znany tylko niemu to szyfrując dokument (lub jego skrót) kluczem prywatnym, jednoznacznie potwierdzamy tożsamość podpisującego. Jeśli dane zostały zaszyfrowane kluczem prywatnym, wiadomo że mógł to zrobić jedynie jego posiadacz. "Podpis elektroniczny - dane w postaci elektronicznej, które wraz z innymi danymi, do których zostały dołączone lub z którymi są logicznie powiązane, służą do identyfikacji osoby składającej podpis elektroniczny." Art. 3 Ustawy o podpisie elektronicznym. Podstawowe własności podpisu elektronicznego: Unikalność - każdy dokument elektroniczny posiada unikalny podpis cyfrowy ściśle związany z dokumentem. Integralność - jakakolwiek zmiana w treści dokumentu podpisanego cyfrowo unieważnia podpis. Niezaprzeczalność - tylko osoba posiadająca klucz prywatny może wygenerować podpis pod dokumentem. Ponieważ podpis elektroniczny to zaszyfrowane dane za pomocą klucza prywatnego, jego odczyt to proces odszyfrowania za pomocą klucza publicznego. Istotną sprawą jest wykorzystanie w tym procesie właściwego klucza publicznego właściciela dokumentu. Skąd można mieć pewność że używa się właściwego klucza?
Przynależność klucza publicznego do danego użytkownika zapewnia certyfikat klucza publicznego. Certyfikat ten to plik podpisany cyfrowo przez podmiot świadczący usługo certyfikacyjne. Certyfikat zawiera dane dotyczące właściciela, jego klucz publiczny i informacje o tym kto wystawił certyfikat. "Certyfikat - elektroniczne zaświadczenie, za pomocą którego dane służące do weryfikacji podpisu elektronicznego są przyporządkowane do osoby składającej podpis elektroniczny i które umożliwiają identyfikację tej osoby." Art. 3 Ustawy o podpisie elektronicznym. Do podmiotów świadczących usługi certyfikacyjne można mieć zaufanie są to podmioty zapisane w rejestrze Narodowego Centrum Certyfikacji. Narodowe Centrum Certyfikacji pełni funkcję głównego urzędu certyfikacji dla infrastruktury bezpiecznego podpisu elektronicznego w Polsce. Dodatkowo podpis elektroniczny można oznakować czasem. Znacznik czasu wskazuje jednoznacznie że dany dokument istnieje i nie był modyfikowany od czasu zapisanego w tym znaczniku. Znakowanie czasem [nazywamy] usługę polegającą na dołączaniu do danych w postaci elektronicznej logicznie powiązanych z danymi opatrzonymi podpisem lub poświadczeniem elektronicznym, oznaczenia czasu w chwili wykonania tej usługi oraz poświadczenia elektronicznego tak powstałych danych przez podmiot świadczący tę usługę. Art. 3 Ustawy o podpisie elektronicznym PGP (Pretty Good Privacy) jest kryptosystemem, który umożliwia uwierzytelnianie użytkowników i zapewnia poufność transmitowanych danych. Program PGP został stworzony w roku 1991 przez Phila Zimmermanna. Na zajęciach będziemy używać wersji PGP 8.0.2. Szyfrowanie danych w PGP opiera się zarówno na kryptografii symetrycznej i asymetrycznej. Siłą szyfrowania symetrycznego jest jego duża szybkość, natomiast
największa zaleta kryptografii asymetrycznej to brak problemów z bezpieczną dystrybucją kluczy (klucz przeznaczony do szyfrowania danych jest jawny). Dane przesyłane między użytkownikami są szyfrowane za pomocą algorytmu symetrycznego (np. TripleDES, CAST), używając w tym celu pewnego klucza sesyjnego. Klucz sesyjny musi być tajny, ponieważ służy on zarówno do szyfrowania jak i do odszyfrowywania danych. Aby zapewnić tajność klucza sesyjnego, szyfruje się go za pomocą kryptografii asymetrycznej, a więc klucz sesyjny szyfrujemy za pomocą klucza publicznego odbiorcy. Następnie oba szyfrogramy (dane zaszyfrowane kluczem sesyjnym i klucz sesyjny zaszyfrowany kluczem publicznym), zostają przesłane do odbiorcy. Schemat szyfrowania pokazany jest poniżej: Odszyfrowywanie danych przebiega następująco: na początku odszyfrowujemy klucz sesyjny za pomocą swojego klucza prywatnego (kryptografia asymetryczna), a następnie za pomocą otrzymanego klucza sesyjnego odszyfrowujemy odebraną wiadomość (kryptografia symetryczna). Opisany schemat przedstawiono na rysunku poniżej: W czasie laboratorium będziemy używać następujących składowych aplikacji PGP:
PGPkeys Umożliwia tworzenie nowych kluczy kryptograficznych, zapisywanie kluczy publicznych otrzymanych od innych użytkowników, zarządzanie kluczami, definiowanie poziomów bezpieczeństwa dla kluczy, tworzenie kluczy dzielonych itp. Encrypt/Decrypt i Sign/Verify Służy do szyfrowania i odszyfrowywania wiadomości, generowania i weryfikacji podpisów cyfrowych. Wipe Umożliwia bezpieczne kasowanie danych Przygotowanie 1. Proszę uruchomić komputer w systemie Windows i na pulpicie stworzyć nowy katalog bezpieczenstwo. 2. Proszę ściągnąć instalkę programu PGP 8.0.2 ze strony: http://kt.agh.edu.pl/~niemiec/lab UWAGA! Proszę sprawdzić czy PGP nie jest już zainstalowane przez poprzednia grupę. Ostatnia grupa powinna odinstalować program pod koniec zajęć. 3. Zainstalować program z ustawieniami domyślnymi. Gdy pojawi się okno: User Type, wybrać opcję: No, I m a New User. Po zainstalowaniu programu PGP należy zrestartować system operacyjny. 4. Po restarcie, proszę uruchomić PGPmail. Powinno pojawić się okienko programu PGP: Klucze kryptograficzne 5. Proszę uruchomić pierwszy moduł programu: PGPkeys. W PGPkeys stworzyć nową parę kluczy (opcja: Generale New Pair). Należy wypełnić wymagane pola: nazwę i adres e-mailowy oraz hasło dostępu. W trybie Expert można wybrać algorytm: np. RSA. Wygenerowana para będzie używanym przez nas kluczem publicznym i prywatnym. Czy można wygenerować tylko jeden klucz asymetryczny (np. klucz prywatny)? Czy miałoby to sens?
6. Wyeksportować swój klucz publiczny do pliku. Oglądnąć zawartość otwierając plik w edytorze tekstowym. Jaką postać ma klucz wygenerowany w PGP? 7. Wymienić się swoimi kluczami publicznymi z inną grupą: za pomocą e-mail a, pamięci przenośnej, można udostępnić folder z plikiem, itp. Czy wymiana kluczy prywatnych miałaby sens? 8. Zapisać klucz publiczny innej osoby w PGPkeys. Następnie go podpisać cyfrowo (opcja: Sign) i ustawić niski poziom zaufania (właściwości klucza -> Trusted-Untrusted). Dlaczego warto różnicować poziom zaufania dla rożnych kluczy? 9. Zweryfikować otrzymany i zapisany klucz publiczny porównując fingerprint (postać z wyrazami tzw. Biometric Words), a następnie zobaczyć postać heksadecymalną. Jeśli właściciel potwierdzi prawidłową postać fingerprint zmienić poziom zaufania tego klucza na najwyższy. Czym jest fingerprint? Czym różni się weryfikacja klucza publicznego za pomocą fingerprint od poznanej wcześniej weryfikacji za pomocą certyfikatów? Szyfrowanie i podpis cyfrowy 10. Ściągnąć klucz publiczny prowadzącego zajęcia ze strony: http://kt.agh.edu.pl/~niemiec/lab, zaimportować go do PGPkeys, podpisać i ustawić wysoki poziom zaufania. Następnie, za pomocą tego klucza, zweryfikować oba podpisy cyfrowe pliku tekstowego: plik_podpisany_cyfrowo.txt (do ściągnięcia ze strony http://kt.agh.edu.pl/~niemiec/lab). UWAGA: jeśli program łączy się z serwerami w celu poszukiwania kluczy należy anulować weryfikację! Oznacza to ze weryfikacja zakończyła się niepowodzeniem. Który z nich jest podpisem cyfrowym stworzonym przez Marcina Niemca? 11. Wygenerować nową parę kluczy. Następnie stworzyć klucz dzielony (Shared Key) pomiędzy 3 osoby. W tym celu należy rozdzielić ten klucz za pomocą opcji: Share Split. W ustawieniach zaznaczyć opcje, że podpis cyfrowy i odszyfrowanie danych jest możliwe, przy co najmniej dwóch częściach klucza. Wyeksportować nowe klucze do folderu bezpieczenstwo (każdy będzie w osobnym pliku). Następnie podpisać cyfrowo jakiś plik za pomocą dwóch części klucza. W jakich przypadkach są użyteczne operacje przy użyciu klucza współdzielonego? podać jakiś przykład użycia takiej techniki szyfrowania/podpisywania.
12. Stworzyć nowy plik tekstowy (wpisać do niego jakąś treść) i zaszyfrować go za pomocą klucza publicznego innej grupy laboratoryjnej. Następnie wysłać zaszyfrowany plik do właściciela klucza. Odszyfrować plik otrzymany od innej grupy. Bezpieczne usuwanie plików 13. Za pomocą narzędzia Wipe, trwale usunąć plik tekstowy z dysku. Czym różni się takie usuwanie plików z dysku od zwykłego usuwania za pomocą systemowego polecenia Usuń? 14. Za pomocą Freespace Wipe spróbować wyczyścić wolne miejsce na dysku. Nie jest konieczne włączanie Begine Wipe ponieważ czyszczenie trwałoby bardzo długa (ewentualnie można włączyć i za chwilę Anulować). Dlaczego taki proces zwiększa bezpieczeństwo danych? Czy w przypadku kasowania plików za pomocą PGP Wipe taki proces jest zbędny. Dlaczego? (Podpowiedź: proszę przeanalizować proces edytowania plików tekstowych) Narodowe Centrum Certyfikacji 15. Proszę wejść na stronę internetową Narodowego Centrum Certyfikacji (http://www.nccert.pl) i zapoznać się z rejestrem podmiotów kwalifikowanych które są upoważnione do wydawania kwalifikowanych certyfikatów w Polsce. Jakie jednostki kwalifikowane są wpisane do rejestru i jakie usługi mogą obecnie świadczyć? 16. Usunąć stworzony na początku zajęć katalog bezpieczeństwo i odinstalować program PGP (dotyczy ostatniej grupy laboratoryjnej) lub skasować wszystkie klucze kryptograficzne z aplikacji PGP.
Sprawozdanie W sprawozdaniu z laboratorium nr 2 należy opisać wykonane ćwiczenia i ich wyniki. W szczególności należy odpowiedzieć na zadane pytania. Dodatkowo we wnioskach należy napisać, na czym polega podpis elektroniczny oraz wyjaśnić do czego służy i jak działa PKI (Public Key Infrastructure). Dodatkowo (część nieobowiązkowa) Dla osób zainteresowanych tematem: - Niestety, kwalifikowane certyfikaty są zazwyczaj płatne. Można jednak korzystać z darmowych certyfikatów niekwalifikowanych jest to mniej bezpieczna opcja i nie pozwala na generowanie podpisów elektronicznych zgodnych z ustawą, ale warto choćby przetestować taką możliwość. Polecam strony znanych centrów np.: Thawte (http://www.thawte.com) czy VeriSign (http://www.verisign.com/).