kryptografia-w-javie.-od-podstaw ebook.pdf

(18855 KB) Pobierz
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Kryptografia w Javie.
SPIS TREŒCI
Od podstaw
KATALOG KSI¥¯EK
Autor: David Hook
T³umaczenie: Zbigniew Banach
ISBN: 83-246-0277-1
Format: B5, stron: 512
Przyk³ady na ftp: 600 kB
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Stosuj algorytmy kryptograficzne w aplikacjach
• Poznaj architekturê interfejsów kryptograficznych Javy
Zastosuj klucze symetryczne i asymetryczne
Naucz siê zarz¹dzania certyfikatami w programach
W œwiecie, w którym najcenniejszym towarem jest informacja, kryptografia coraz
bardziej zyskuje na znaczeniu. Cenne dane, przesy³ane w sieci lub przechowywane
w aplikacjach i bazach danych, musz¹ byæ chronione za pomoc¹ skomplikowanych
algorytmów szyfrowania i uwierzytelniania. Poniewa¿ próby w³amañ do serwerów
internetowych zdarzaj¹ siê regularnie, implementacja mechanizmów kryptograficznych
w aplikacjach sieciowych i platformach handlu elektronicznego ma szczególnie wysoki
priorytet. Java, wykorzystywana bardzo czêsto do tworzenia takich w³aœnie rozwi¹zañ,
wyposa¿ona zosta³a w zestaw interfejsów programistycznych (API), które pozwalaj¹
szybko i skutecznie wzbogacaæ aplikacje o obs³ugê kryptografii.
Ksi¹¿ka „Kryptografia w Javie. Podstawy” to podrêcznik przedstawiaj¹cy na
praktycznych przyk³adach narzêdzia kryptograficzne Javy. Opisuje podstawowe
zasady ich u¿ywania, u³atwia zrozumienie zale¿noœci miêdzy poszczególnymi
interfejsami API i uczy, jak w razie potrzeby korzystaæ z gotowych rozwi¹zañ,
by oszczêdziæ czas. Daje wiedzê niezbêdn¹ do implementowania technik
kryptograficznych w aplikacjach bez niepotrzebnego komplikowania kodu Ÿród³owego.
Architektura interfejsów JCA i JCE
Szyfrowanie symetryczne
Generowanie kluczy
Stosowanie kluczy asymetrycznych
Podpisy cyfrowe
Obs³uga certyfikatów
Szyfrowanie poczty elektronicznej
Twórz bezpieczne aplikacje,
wykorzystuj¹c nowoczesne mechanizmy kryptograficzne
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
774753248.018.png 774753248.019.png 774753248.020.png 774753248.021.png 774753248.001.png 774753248.002.png 774753248.003.png 774753248.004.png 774753248.005.png 774753248.006.png 774753248.007.png 774753248.008.png 774753248.009.png 774753248.010.png 774753248.011.png 774753248.012.png 774753248.013.png 774753248.014.png 774753248.015.png 774753248.016.png
 
O autorze .................................................................................................................................................... 13
Wstęp .......................................................................................................................................................... 15
Rozdział 1. JCA i JCE ................................................................................................................................... 21
Podstawowa architektura .............................................................................................. 21
Podpisywanie dostawców .............................................................................................. 24
Pliki polityki ograniczeń ................................................................................................ 25
Instalacja plików polityki nieograniczających siły algorytmów ....................................... 25
Rozwiązywanie innych problemów ............................................................................. 27
Skąd wiadomo, że pliki dostarczone
przez firmę Sun naprawdę działają tak, jak powinny? .............................................. 28
Instalacja dostawcy Bouncy Castle ................................................................................ 28
Instalacja poprzez konfigurację środowiska uruchomieniowego ................................... 28
Instalacja na etapie wykonania ................................................................................ 31
Priorytety dostawców .................................................................................................... 31
Sprawdzanie możliwości dostawcy ................................................................................. 33
Podsumowanie ............................................................................................................ 34
Ćwiczenia .................................................................................................................... 35
Rozdział 2. Kryptografia z kluczem symetrycznym .............................................................................. 37
Pierwszy przykład ......................................................................................................... 38
Prosta klasa narzędziowa ........................................................................................ 38
Klasa SecretKeySpec .............................................................................................. 42
Klasa Cipher .......................................................................................................... 42
Dopełnienie w symetrycznych szyfrach blokowych ........................................................... 44
Dopełnienie PKCS #5/PKCS #7 ............................................................................... 44
Inne mechanizmy dopełnienia .................................................................................. 47
Tryby szyfrowania w symetrycznych szyfrach blokowych ................................................... 48
Tryb ECB ................................................................................................................ 48
Tryb CBC ................................................................................................................ 50
Słowo o obiektach parametrów szyfru ....................................................................... 58
Klasa AlgorithmParameters ..................................................................................... 58
Tryb CTS — specjalna odmiana CBC ........................................................................ 59
Tryby strumieniowe symetrycznych szyfrów blokowych ................................................ 59
774753248.017.png
 
6
Kryptografia w Javie. Od podstaw
Symetryczne szyfry strumieniowe ................................................................................... 63
Generowanie losowych kluczy ....................................................................................... 65
Interfejs Key ........................................................................................................... 67
Klasa KeyGenerator ................................................................................................ 67
Szyfrowanie z hasłem ................................................................................................... 68
Podstawowe PBE .................................................................................................... 69
PBE w JCE .............................................................................................................. 70
Opakowywanie klucza ................................................................................................... 75
Szyfrowanie operacji wejścia-wyjścia .............................................................................. 78
Podsumowanie ............................................................................................................ 80
Ćwiczenia .................................................................................................................... 81
Rozdział 3. Skróty wiadomości, MAC i HMAC ......................................................................................... 83
Klasa narzędziowa ....................................................................................................... 84
Problem modyfikacji wiadomości ................................................................................... 86
Skróty wiadomości ....................................................................................................... 88
Klasa MessageDigest ............................................................................................. 90
Modyfikacja skrótu ....................................................................................................... 92
HMAC — MAC oparty na skrócie ................................................................................... 94
Klasa Mac .............................................................................................................. 97
Kody MAC oparte na szyfrach symetrycznych .................................................................. 98
Funkcje skrótu jako źródło danych pseudolosowych ...................................................... 100
Generowanie kluczy PBE ........................................................................................ 100
Generowanie maski .............................................................................................. 103
Operacje wejścia-wyjścia ze skrótami kryptograficznymi ................................................. 105
Podsumowanie .......................................................................................................... 107
Ćwiczenia .................................................................................................................. 108
Rozdział 4. Kryptografia asymetryczna ................................................................................................109
Klasa narzędziowa ..................................................................................................... 110
Interfejsy PublicKey i PrivateKey .................................................................................. 111
Algorytm RSA ............................................................................................................. 111
Klasa KeyFactory .................................................................................................. 114
Klasa RSAPublicKeySpec i interfejs RSAPublicKey ................................................... 115
Klasa RSAPrivateKeySpec i interfejs RSAPrivateKey ................................................. 115
Tworzenie losowych kluczy RSA .............................................................................. 115
Przyspieszanie pracy RSA ...................................................................................... 118
Mechanizmy dopełniania RSA ................................................................................ 120
Opakowywanie kluczy RSA ..................................................................................... 128
Wymiana kluczy tajnych .............................................................................................. 130
Uzgadnianie klucza .................................................................................................... 133
Algorytm Diffiego-Hellmana .................................................................................... 133
Diffie-Hellman bazujący na krzywych eliptycznych ..................................................... 137
Diffie-Hellman z wieloma stronami ......................................................................... 142
Algorytm El Gamala .................................................................................................... 144
Klasa AlgorithmParameterGenerator ....................................................................... 146
Podpisy cyfrowe ......................................................................................................... 148
Klasa Signature .................................................................................................... 149
Algorytm podpisu cyfrowego DSA ........................................................................... 150
Algorytmy podpisu oparte na RSA ........................................................................... 156
Podsumowanie .......................................................................................................... 160
Ćwiczenia .................................................................................................................. 161
Spis treści
7
Rozdział 5. Opis obiektów kryptograficznych w notacji ASN.1 ............................................................163
Czym jest ASN.1? ...................................................................................................... 163
Klasa narzędziowa ..................................................................................................... 164
Podstawowa składnia ASN.1 ....................................................................................... 165
Składnia komentarzy ............................................................................................. 165
Identyfikatory obiektów .......................................................................................... 165
Struktura modułu .................................................................................................. 166
Typy danych w ASN.1 ................................................................................................. 168
Typy proste .......................................................................................................... 169
Typy ciągów bitowych ............................................................................................ 170
Typy ciągów znakowych ......................................................................................... 170
Typy strukturalizowane .......................................................................................... 172
Adnotacje typów ................................................................................................... 172
Znaczniki ............................................................................................................. 173
Typ CHOICE .......................................................................................................... 177
Typ CLASS ........................................................................................................... 178
Reguły kodowania ...................................................................................................... 179
Kodowanie BER .................................................................................................... 179
Kodowanie DER .................................................................................................... 181
API ASN.1 w Bouncy Castle ........................................................................................ 182
Tworzenie podstawowych typów ASN.1 ................................................................... 183
Obsługa znaczników .............................................................................................. 185
Definiowanie własnych obiektów ............................................................................ 186
Analiza nieznanego zakodowanego obiektu ............................................................. 192
Prawdziwe przykłady wykorzystania ASN.1 w Javie ......................................................... 194
Podstawowe struktury ASN.1 ................................................................................. 194
Kodowanie IV ....................................................................................................... 195
Budowa podpisu PKCS #1 V1.5 ............................................................................. 196
Kodowanie parametrów podpisu PSS ..................................................................... 199
Kodowanie kluczy publicznych i prywatnych ............................................................. 201
Podsumowanie .......................................................................................................... 212
Ćwiczenia .................................................................................................................. 213
Rozdział 6. Nazwy wyróżniające i certyfikaty ......................................................................................215
Klasa narzędziowa ..................................................................................................... 216
Nazwy wyróżniające .................................................................................................... 216
Klasa X500Principal .............................................................................................. 218
Certyfikaty klucza publicznego ..................................................................................... 219
Klasa Certificate ................................................................................................... 220
Certyfikaty X.509 ....................................................................................................... 221
Klasa X509Certificate ........................................................................................... 221
Rozszerzenia X.509 .............................................................................................. 229
Interfejs X509Extension ........................................................................................ 230
Rozszerzenia obsługiwane bezpośrednio przez klasę X509Certificate ........................ 231
Odczyt i zapis certyfikatów .......................................................................................... 238
Klasa CertificateFactory ........................................................................................ 238
Żądania certyfikacyjne ................................................................................................ 242
Tworzenie prostego centrum certyfikacji ....................................................................... 248
8
Kryptografia w Javie. Od podstaw
Ścieżki i składy certyfikatów ........................................................................................ 253
Klasa CertPath ..................................................................................................... 254
Klasa CertStore .................................................................................................... 256
Klasa X509CertSelector ........................................................................................ 257
Podsumowanie .......................................................................................................... 259
Ćwiczenia .................................................................................................................. 260
Rozdział 7. Unieważnianie certyfikatów i walidacja ścieżek ...............................................................261
Klasa narzędziowa ..................................................................................................... 262
Listy unieważnionych certyfikatów ................................................................................ 265
Klasa CRL ............................................................................................................ 265
Listy unieważnionych certyfikatów X.509 ...................................................................... 266
Klasa X509CRL .................................................................................................... 267
Klasa X509CRLEntry ............................................................................................. 271
Rozszerzenia wpisów list CRL X.509 ...................................................................... 272
Rozszerzenia list CRL X.509 .................................................................................. 273
Pobieranie list CRL za pomocą klasy CertificateFactory ............................................ 278
Klasa X509CRLSelector ........................................................................................ 281
Protokół OCSP — weryfikacja statusu certyfikatów w czasie rzeczywistym ....................... 283
Klasa CertificateID ................................................................................................ 284
Klasa OCSPReq .................................................................................................... 285
Rozszerzenia żądań OCSP ..................................................................................... 288
Klasa OCSPResp .................................................................................................. 292
Klasa BasicOCSPResp .......................................................................................... 293
Rozszerzenia odpowiedzi OCSP .............................................................................. 295
Walidacja ścieżek certyfikatów .................................................................................... 301
Klasa TrustAnchor ................................................................................................ 301
Klasa PKIXParameters .......................................................................................... 302
Klasa CertPathValidator ........................................................................................ 304
Klasa PKIXCertPathValidatorResult ........................................................................ 305
Klasa PKIXCertPathChecker ................................................................................... 308
Budowanie poprawnej ścieżki na podstawie składu CertStore ........................................ 313
Klasa CertPathBuilder ........................................................................................... 313
PKIXBuilderParameters ......................................................................................... 313
Podsumowanie .......................................................................................................... 316
Ćwiczenia .................................................................................................................. 317
Rozdział 8. Zarządzanie kluczami i certyfikatami ................................................................................319
Klasa narzędziowa ..................................................................................................... 320
Klasa KeyStore .......................................................................................................... 321
Rodzaje repozytoriów ............................................................................................ 322
Podstawowe API klasy KeyStore ............................................................................. 323
Zagnieżdżone klasy i interfejsy klasy KeyStore .............................................................. 330
Interfejs KeyStore.ProtectionParameter .................................................................. 330
Interfejs KeyStore.Entry ......................................................................................... 331
Klasa KeyStore.Builder ......................................................................................... 335
Interfejs KeyStore.LoadStoreParameter .................................................................. 338
Format PKCS #12 ...................................................................................................... 338
Korzystanie z plików PKCS #12 w API KeyStore ....................................................... 341
Zgłoś jeśli naruszono regulamin