[ Pobierz całość w formacie PDF ]
.Odbiorca otrzymując wiadomość oraz podpis cyfrowy musi zweryfikować podpis, wcelu sprawdzenia autentyczności wiadomości oraz określeniu autora tekstu.W tymcelu obiekt podpisu należy wprowadzić w stan weryfikacji - VERIFY - wywołującmetodę initVerify() z podaniem klucza publicznego autora, np.:10-20Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA Rozdział 10Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA podpiis.iiniittVerriify((kp.gettPublliic(())));;fpodpis.initVerify(kp.getPublic());podp s n Ve y kp ge Pub cNastępnie dostarcza się dane do obiektu i wywołuje się metodę weryfikacji verify():podpiis.updatte((wiiadomosc));;podpis.update(wiadomosc);podp s upda e w adomoscboollean ttestt = podpiis.verriiffy((kod_podpiisu));;boolean test = podpis.verify(kod_podpisu);boo ean es = podp s ve y kod_podp suW przypadku poprawności podpisu metoda verify() zwraca true w przeciwnymprzypadku false.W większości przypadków, jak wspomniano wcześniej, klucze nie są generowane zakażdym razem przy tworzeniu podpisu, lecz są przechowywane w specjalnej baziedanych.Dla Javy taką bazą danych może być keystore, przechowująca klucze icertyfikaty.W celu dostępu do bazy kluczy stosuje się mechanizmy dostarczaneprzez klasę KeyStore lub poprzez użycie programów narzędziowych dostarczanych zdystrybucją Javy tj., "keytool", "jarsigner" (podpisywanie archiwuw JAR) oraz"policytool".Baza danych "keystore" to nic innego jak plik o właściwej strukturze.Wcelu identyfikacji, "keystore" dla pakietu SUN posiada identyfikator JKS.Inicjowanieobiektu klasy KeyStore odbywa się podobnie jak dla pozostałych mechanizmówkryptografii w Javie poprzez przywołanie metody statycznej getInstance().Następnienależy załadować dane aktualnie przechowywane w bazie do pamięci poprzezwykorzystanie metody load().Metoda load() specyfikuje strumień wejściowy (skądczytać) oraz ewentualnie hasło dostępu.Każda pozycja w bazie keystore jestidentyfikowana przez unikalną nazwę (ang.alias).W celu uzyskania nazwy możnaposłużyć się metodą aliases().W celu określenia czy dana pozycja w bazie jestkluczem czy certyfikatem należy wykorzystać metody typu boolean tj.: isKeyEntry()oraz isCertificateEntry() z podaniem jako argumentu odpowiedniej nazwy pozycji, októrą pytamy.Aby stworzyć nową pozycję w bazie keystore musimy najpierw związaćnazwę z daną pozycją poprzez metody: setCertificateEntry() oraz setKeyEntry()podając jako argument odpowiednio certyfikat lub klucz, alias, oraz ewentualniehasło.W razie potrzeby możemy usunąć pozycję z bazy wykorzystując metodędeleteEntry() z podaniem aliasu pozycji do usunięcia.Wszystkie te operacje sąwłaściwe tylko wówczas, gdy baza keystore jest załadowana do pamięci.W celunagrania nowo stworzonej lub zaktualizowanej bazy na dysku należy przywołaćmetodę store() podając odpowiedni strumień wyjścia i hasło.Opróczprzechowywania kluczy w bazie konieczna jest również możliwość pobierania z bazykluczy celem ich wykorzystania np.dla generacji podpisów.W tym celu mając wpamięci załadowaną bazę należy przywołać metodą getKey() lub getCertificate()odpowiedni klucz lub certyfikat poprzez podanie właściwej nazwy jako argumentumetody.Na zakończenie omawiania mechanizmów kryptografii w JCA warto zwrócić uwagęna istnienie specjalnych wyjątków poszczególnych mechanizmów.Przykładowo:DigestException, KeyException, SignatureException, itp.Wyjątki te najczęściejwystępują przy niezgodności inicjowania elementu wedle przyjętego algorytmudanego mechanizmu np.błąd w czasie wywoływania metody sign()(SignatureExcpetion) lub w czasie wykonywania metody digest() (DigestException),itd.10-21Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA Rozdział 10Jacek Rumiński - Język JAVA Jacek Rumiński - Język JAVA 10.4.5 Kodowanie danychPodsumowując zagadnienia kryptografii w Javie należy powiedzieć, żemechanizmy służące zapewnianiu autentyczności są dostarczane w sposób prosty,tak więc zastosowanie ich w programach nie wymaga specjalistycznej wiedzyprogramisty
[ Pobierz całość w formacie PDF ]