Szkolenie: Kryptografia na platformie Java w praktyce
Przegląd mechanizmów zabezpieczeń na platformie Java
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:J/KRYPT
Kryptografia na platformie Java w praktyce
Cele szkolenia
Poznanie i praktyczne wykorzystanie różnorodnych technik zabezpieczeń i algorytmów kryptograficznych w języku Java
Praktyczne użycie mechanizmów służących do zapewnienia poufności, integralności i uwierzytelnienia
Poznanie celu stosowania algorytmów takich jak kody uwierzytelniające wiadomość, szyfrowanie z hasłem czy algorytmy podpisu cyfrowego
Zdobycie umiejętności prawidłowego wykorzystania omawianych mechanizmów na platformie Java, poprzez przykłady realizowane w formie krótkich zadań programistycznych
Dla kogo?
Programiści tworzący aplikacje w środowisku Java
Zalety
Podczas warsztatów uczestnicy skonfigurują i użyją wbudowanych mechanizmów Java związanych z bezpieczeństwem
W trakcie szkolenia uczestnicy użyją wybranych algorytmów kryptograficznych w celu zapewnienia poufności, integralności i uwierzytelnienia
Zajęcia warsztatowe obejmują między innymi użycie urządzenia kryptograficznego za pomocą biblioteki PKCS #11
Uczestnicy wykorzystają protokół SSL/TLS do zapewnienia bezpiecznej komunikacji pomiędzy aplikacjami w Java
Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Wymagania
Od uczestników wymagane są podstawowe umiejętności z zakresu programowania w języku Java
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Mechanizmy zabezpieczeń na platformie Java
Zabezpieczenia na poziomie języka Java
Polityki bezpieczeństwa
Usługi uwierzytelniania i autoryzacji (Java Authentication and Authorization Service, JAAS)
Java Generic Security Services API (GSS-API)
Java Cryptography Architecture (JCA) i Java Cryptographic Extension (JCE)
Konfiguracja dostawców usług kryptograficznych
Biblioteka Bouncy Castle
Wprowadzenie do kryptografii
Podstawowe usługi ochrony informacji
Integralność, uwierzytelnienie, niezaprzeczalność i poufność
Podstawowe zasady stosowane w kryptografii
Bezpieczeństwo obliczeniowe i siła klucza
Podstawy notacji ASN.1
Kodowanie DER (Distinguished Encoding Rules) i PEM (Privacy-Enhanced Mail)
Przegląd algorytmów kryptograficznych
Algorytmy symetryczne i asymetryczne
Szyfry blokowe i strumieniowe
AES, ChaCha20, 3DES i inne szyfry symetryczne
Podstawowe tryby pracy szyfrów blokowych: ECB, CBC, CTR
Szyfrowanie z hasłem (password based encryption, PBE)
Funkcje skrótu i ich zastosowania
Rodzina SHA, SHA3 i algorytm Keccak
Usługa uwierzytelnienia i identyfikacji
Kody uwierzytelniające wiadomość: HMAC, KMAC i CMAC
Funkcje wyprowadzania klucza (key derivation function, KDF)
Bezpieczne kryptograficznie generatory ciągów pseudolosowych
Tryby uwierzytelnionego szyfrowania (authenticated encryption, AE)
Tryby uwierzytelnionego szyfrowania z danymi dodatkowymi (authenticated encryption with associated data, AEAD)
Tryb CCM i GCM
Algorytm Diffiego-Hellmana-Merkla (DH)
Algorytm RSA
Podpis cyfrowy i problem autentyczności klucza
Krzywe eliptyczne w kryptografii: krzywe NIST, SECG i Brainpool, Curve25519, Curve448
Algorytmy oparte o krzywe eliptyczne: ECDH, X25519, X448, ECDSA, EdDSA, Ed25519, Ed448
Szyfrowanie za pomocą algorytmów asymetrycznych
Podpis i szyfrowanie obiektów w Java
Zalecenia dotyczące mechanizmów kryptograficznych (wykorzystywane algorytmy, długości kluczy i inne parametry)
Bezpieczne przechowywanie kluczy i haseł
Repozytoria kluczy: PKCS #12, JKS, JCEKS, BC i BCFKS
Karty inteligentne (smart cards)
Elementy zabezpieczające (security elements, SE)
Sprzętowe moduły zabezpieczeń (hardware security module, HSM)
Interfejs PKCS #11
Przechowywanie haseł: Argon2, bcrypt, PBKDF2
Zastosowania kryptografii
Protokół zobowiązania bitowego
Protokół wyzwanie-odpowiedź
Java Simple Authentication and Security Layer (SASL)
Znaczenie zaufania, zaufana trzecia strona (trusted third party, TTP)
Infrastruktura klucza publicznego (public key infrastructure, PKI)
Usługi PKI w kontekście usług ochrony informacji
Generowanie kluczy oraz zgłoszenia certyfikacyjnego
Certyfikaty X.509
Łańcuch i ścieżka certyfikacji (certificate chain, certificate path)
Repozytoria certyfikatów
Pola certyfikatów i ich ustawienia
Ograniczanie użycia klucza
Lista certyfikatów unieważnionych (certificate revocation list, CRL)
Protokół weryfikacji statusu certyfikatu (online certificate status protocol, OCSP)
Bezpieczna poczta elektroniczna S/MIME
Podpis cyfrowy, XML Digital Signature
Działanie i parametry protokołu SSL/TLS
Java Secure Socket Extension (JSSE)
Jednostronne i obustronne uwierzytelnienie w protokole SSL/TLS
Doskonałe utajnienie z wyprzedzeniem (perfect forward secrecy, PFS)
Aplikacje dla kart kryptograficznych Java Card