Ćwiczenie 8 Implementacja podpisu cyfrowego opartego na standardzie X.509 CEL: Poszerzenie wiadomości na temat podpisu cyfrowego oraz zastosowanie w praktyce standardu X.509. NARZĘDZIA: Oprogramowanie dedykowane (aplikacja kliencka i centrum certyfikacji), Notatnik systemowy lub Notepad++. DOKUMENTACJA: Literatura do laboratorium, podpis cyfrowy X-509.pdf ZADANIA SZCZEGÓŁOWE: 1.1 Wstęp Student ma do dyspozycji dwie aplikacje: Centrum Certyfikacji oraz aplikację kliencką. Aplikacje te dostępne są w architekturze x86 oraz x64. Przed przystąpieniem do ćwiczenia należy sprawdzić jakiej architektury używa zainstalowany na stanowisku roboczym system operacyjny. Uruchomić aplikacje w danej architekturze. Zapoznać się z ich ogólną budową. W przypadku używania zapory ogniowej, dodać do niej wyjątek zezwalający obu aplikacjom na dostęp do sieci. 1.2 Generacja kluczy Po uruchomieniu obydwu aplikacji w obsługiwanej przez system operacyjny architekturze, należy przystąpić do generacji kluczy. Generacja kluczy odbywa się w Centrum Certyfikacji. 1.2.1 Generacja kluczy dla Centrum Certyfikacji W Centrum Certyfikacji, należy wybrać zakładkę Generacja kluczy Ustawić siłę bitową klucza na 8192 i rozpocząć generację kluczy. Gdy generacja zostanie ukończona, pojawią się kolejno dwa okna, pytające gdzie zapisać utworzone klucze. Zapisać klucze w wybranym przez siebie folderze. Nazwać je odpowiednio klucz_prywatny_root.pry oraz klucz_publiczny_root.pub. Otworzyć za pomocą edytora tekstowego (wykorzystującego kolorowanie dla języka XML; np. Notepad++) wygenerowane klucze. Zapoznać się z ogólną budową plików. W jakim standardzie kodowania zapisane zostały wartości? Wrócić do aplikacji Centrum Certyfikacji. Porównać osiągnięty czas generacji z czasami znajdującymi się w poniższej tabeli. (Pamiętaj! Czasy porównuj z tą samą architekturą aplikacji, dla tej samej siły bitowej klucza). Jak wypadła twoja stacja robocza w porównaniu z zestawami testowymi A, oraz B? Zanotuj wyniki porównania. 1
Komputer testowy A: Procesor: AMD Phenom II X4 920 Procesor 2.8 GHz Pamięć RAM: 4GB DDR2 800 MHz System operacyjny: Windows 7 Professional x64 Dysk: WDC WD6401AALS (640GB) Komputer testowy B: Procesor: Intel Atom 1.6 GHz Pamięć RAM: 2GB DDR2 800 MHz System operacyjny: Windows 7 Professional x64 Dysk: Seagate Barracuda 7200.11 (500GB) Tab. 1. Porównanie czasów generacji kluczy przy zadanej sile bitowej klucza, na różnych zestawach, w różnej architekturze Komputer Architektura aplikacji Siła bitowa klucza Dni Godzin Minut Sekund Milisekund A. x86 384 - - - - 14 A. x86 1024 - - - - 134 A. x86 2048 - - - 1 817 A. x86 4096 - - - 14 647 A. x86 8192 - - 2 49 212 A. x86 10240 - - 25 38 732 A. x64 384 - - - - 11 A. x64 1024 - - - - 92 A. x64 2048 - - - - 181 A. x64 4096 - - - 1 277 A. x64 8192 - - - 19 955 A. x64 10240 - - - 38 210 A. x64 16384 - - 4 22 363 B. x86 384 - - - - 29 B. x86 1024 - - - - 376 2
B. x86 2048 - - - 3 326 B. x86 4096 - - - 47 606 B. x86 8192 - - 5 56 186 B. x86 10240-1 2 12 189 B. x64 384 - - - - 90 B. x64 1024 - - - - 464 B. x64 2048 - - - - 609 B. x64 4096 - - - 9 507 B. x64 8192 - - 1 42 947 B. x64 10240 - - 2 37 68 B. x64 16384 - - 20 15 239 1.2.2 Generacja kluczy dla subskrybenta Powtórz powyższą generację dla siły bitowej klucza 4096. Klucze nazwij odpowiednio klucz_prywatny_subskrybent.pry oraz klucz_publiczny_subskrybent.pub. Powtórz podpunkt dotyczący porównywania osiągniętych czasów. 1.2.3 Wnioski Wygenerowano parę kluczy dla Centrum Certyfikacji oraz parę kluczy dla subskrybenta. Wygenerowane klucze posłużą przy generacji certyfikatów, podpisywaniu dokumentów, weryfikacji certyfikatu on-line. 1.3 Generacja certyfikatów Gdy wygenerowano już klucze należy przystąpić do certyfikatów. Generacja certyfikatów odbywa się w aplikacji Centrum Certyfikacji. 1.3.1 Generacja certyfikatu dla Centrum Certyfikacji W tej części zostanie utworzony certyfikat dla Centrum Certyfikacyjnego, dzięki któremu będzie można podpisywać certyfikaty tworzone dla subskrybentów. Generacja certyfikatu dla Centrum Certyfikacji odbywa się tylko raz. Chyba, że klucz prywatny Centrum Certyfikacji zostanie skompromitowany. 1.3.1.1 Część I W Centrum Certyfikacji, należy wybrać zakładkę Certyfikaty. Kliknąć przycisk Nowy, w celu rozpoczęcia wprowadzania danych do nowego rekordu. 3
Wybrać algorytm podpisu (np. md5withrsaencryption ). Wybrać ID Osoby A = 1 z listy rozwijanej lub w zakładce Tożsamości wybrać rekord pierwszy, a następnie kliknąć przycisk Wybierz rekord dla podmiotu:, po uprzednim ustawieniu litery A w polu obok przycisku. ( ID Osoby A oznacza identyfikator podmiotu, który wystawia certyfikat). W przypadku gdy nie wiadomo, co wpisać w dane pole, należy najechać kursorem myszy na niezrozumiałą etykietę obok tego pola. Pojawi się podpowiedź. Przykładowo, należy to przetestować dla pola ID Osoby A. Wybrać datę, od której certyfikat będzie ważny. Wybrać datę, do której certyfikat będzie ważny. Wybrać ID Osoby B = 1 z listy rozwijanej lub w zakładce Tożsamości wybrać rekord pierwszy, a następnie kliknąć przycisk Wybierz rekord dla podmiotu:, po uprzednim ustawieniu litery B w polu obok przycisku. ( ID Osoby B oznacza identyfikator podmiotu, dla którego certyfikat jest wystawiany). 1.3.1.2 Część II Po wprowadzeniu powyższych danych poprawnie, uaktywni się przycisk 1.Wczytaj klucz publiczny podmiotu B. Kliknąć ten przycisk. Wczytać wcześniej utworzony plik klucz_publiczny_root.pub. Uaktywni się kolejny przycisk 2.Wczytaj klucz prywatny podmiotu A. Kliknąć ten przycisk. Wczytać wcześniej utworzony plik klucz_prywatny_root.pry. Uaktywni się kolejny przycisk 3. Utwórz wstępny certyfikat. Kliknąć ten przycisk. Przejść do zakładki Certyfikat forma tekstowa. Przeanalizować wygenerowaną wstępną część certyfikatu. Powrócić do zakładki Certyfikaty. Uaktywnił się przycisk 4. Uzupełnij wstępny certyfikat o sygnaturę. Kliknąć ten przycisk. Przejść do zakładki Certyfikat forma tekstowa. Przeanalizować utworzony certyfikat. Jakie pola zostały dodane? Powrócić do zakładki Certyfikaty. Uaktywnił się przycisk 5. Zapisz certyfikat do pliku. Kliknąć ten przycisk. Wskazać miejsce zapisu certyfikatu. Zapisać certyfikat. Certyfikat można podejrzeć za pomocą programu MS Wordpad. Zachować utworzony rekord do bazy danych. Kliknąć przycisk Zachowaj. 4
1.3.2 Generacja certyfikatu dla subskrybenta W tej części zostanie utworzony certyfikat dla subskrybenta, dzięki któremu subskrybent będzie mógł podpisywać cyfrowo dokumenty. 1.3.2.1 Część I Procedura postępowania jest identyczna jak dla części I w generacji certyfikatu dla Centrum Certyfikacji z tym że: Dla ID Osoby B wybrać należy = 2 z listy rozwijanej lub w zakładce Tożsamości wybrać rekord drugi, a następnie kliknąć przycisk Wybierz rekord dla podmiotu:, po uprzednim ustawieniu litery B w polu obok przycisku. ( ID Osoby B oznacza identyfikator podmiotu, dla którego certyfikat jest wystawiany). Ewentualnie można pokusić się o utworzenie własnego rekordu dla tożsamości, a następnie wybrać identyfikator tego rekordu jako ID Osoby B. 1.3.2.2 Część II Procedura postępowania jest identyczna jak dla części II w Generacji certyfikatu dla Centrum Certyfikacji z tym że: Dla przycisku 1.Wczytaj klucz publiczny podmiotu B należy wybrać plik klucz_publiczny_subskrybent.pub. 1.4 Podpisywanie plików oraz ich weryfikacja Podpisanie plików oraz ich weryfikacja odbywa się w aplikacji klienckiej. 1.4.1 Podpisywanie Z menu Plik wybrać Otwórz. Wybrać plik, który będzie podlegał podpisowi. Jeżeli plikiem jest dokument tekstowy, można spróbować otworzyć plik w edytorze tekstowym tylko do odczytu. Kliknąć zakładkę Podpisywanie. Wczytać klucz prywatny podmiotu B. Należy wybrać plik klucz_prywatny_subskrybent.pry. Wybrać funkcję skrótu. Utworzyć sygnaturę (podpis). Zapisać ją do pliku. Opublikować dokument wykorzystany do podpisywania, klucz publiczny podmiotu B, sygnaturę (podpis) danego pliku. Dołączyć również certyfikat podmiotu B. 5
1.4.2 Weryfikacja Pobrać dokument, który poddany zostanie weryfikacji; jego sygnaturę (podpis), klucz publiczny wystawcy certyfikatu (podmiotu B), klucz publiczny urzędu certyfikacyjnego (podmiotu A). Wczytać do aplikacji klienckiej pobrany dokument, w taki sam sposób jak to się odbywało przy podpisywaniu. Wczytać pobraną sygnaturę (podpis) dokumentu. Wybrać funkcję skrótu użytą podczas podpisywania. Ewentualnie wybierać kolejne funkcje skrótu i weryfikować po każdej z nich, sygnaturę (podpis). Czy weryfikacja dla wybranej wcześniej funkcji skrótu przebiegła pomyślnie? 1.5 Weryfikacja certyfikatu on-line Weryfikacja certyfikatu on-line pozwala sprawdzić bieżący status certyfikatu w urzędzie certyfikacyjnym. 1.5.1 Uruchamianie serwera OCSP By uruchomić serwer OCSP przejść do zakładki Serwer Weryfikacji Certyfikatów w Centrum Certyfikacji. Wybrać adres serwera oraz port. Wczytać klucz prywatny podmiotu A, który będzie automatycznie podpisywał komunikaty odpowiedzi wysyłane do klientów. Wybrać funkcję skrótu, używaną podczas automatycznego podpisywania, Uruchomić serwer OCSP. 1.5.2 Łączenie się z serwerem OCSP Po stronie klienta wybrać zakładkę Klient OCSP. Ustawić odpowiedni adres IP, pod którym znajduje się serwer OCSP oraz port. Wczytać klucz publiczny podmiotu B. Wczytać certyfikat podmiotu B. Jeżeli klucz jest powiązany z certyfikatem, moduł odczytany z klucza publicznego podmiotu B powinien zgadzać się z modułem znajdującym się w certyfikacie. Wczytać klucz publiczny podmiotu A, w celu weryfikacji komunikatów przychodzących z serwera, podpisanych kluczem prywatnym podmiotu A. 6
Połączyć się z serwerem OCSP, wysłać zapytanie dotyczące statusu certyfikatu. Czekać na sprawdzenie integralności komunikatu przychodzącego oraz na wynik weryfikacji. 1.6 Zmiana statusu certyfikatu Status certyfikatu można zmienić wybierając zakładkę Lista CRL w aplikacji Centrum Certyfikacji. Jeżeli na liście CRL nie znajduje się rekord zawierający numer seryjny naszego certyfikatu, oznacza to, że certyfikat jest aktywny. Stworzyć nowy rekord. Wybrać numer seryjny certyfikatu, który zostanie unieważniony. Wybrać nowy status: Wstrzymany, bądź Unieważniony. Datę unieważnienia pozostawić bez zmian. Odczytany zostanie aktualny czas. Zachować rekord w bazie. Powtórzyć weryfikację certyfikatu on-line. Czy status jest przesyłany poprawnie? 1.7 Testy statystyczne Testy statystyczne przeprowadza się aplikacji klienckiej w zakładce Testy statystyczne. Mają one ona celu sprawdzenie czy moduł klucza publicznego, wykazuje cechy ciągu losowego. Wybrać preferowaną wartość poziomu istotności. Wczytać klucz publiczny. Test częstości oraz seryjny nie wymagają wprowadzania dodatkowych parametrów. Pozostałe testy wymagają ustawienia wartości początkowych parametru. Przeprowadzić wszystkie testy w danej konfiguracji. Przeprowadzić wszystkie testy ponownie przy różnych: parametrach, wartościach poziomu istotności, kluczach o różnej długości. 1.8 Wnioski Udokumentuj swoją pracę. Zapisz wnioski i spostrzeżenia dotyczące zrealizowanego ćwiczenia. 7