Praktyczne aspekty stosowania kryptografii w systemach komputerowych
Czas trwania szkolenia:5 dni (40h)
Kod kursu:KRYPT/F
Poziom zaawansowania:
O szkoleniu Praktyczne aspekty stosowania kryptografii w systemach komputerowych
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
Dla kogo?
- Programiści i architekci chcący poznać zagadnienia związane z prawidłowym wykorzystaniem mechanizmów kryptograficznych do budowy bezpiecznych systemów
Wymagania
- Od uczestników wymagana jest znajomość obsługi komputera, pracy z wierszem poleceń oraz znajomość podstawowych zasad programowania i podstaw składni języków C i Java
Zalety
- Podczas szkolenia uczestnicy użyją wybranych algorytmów kryptograficznych w celu zapewnienia usług integralności, uwierzytelnienia, niezaprzeczalności oraz poufności
- Uczestnicy zaatakują nieprawidłowo zabezpieczone systemy oraz sprawdzą odporność swoich rozwiązań na ataki
- Zajęcia warsztatowe obejmują między innymi implementację protokołu wzajemnego uwierzytelnienia pomiędzy kartą elektroniczną i aplikacją
- Uczestnicy samodzielnie skonfigurują własny ośrodek certyfikacji, uruchomią zabezpieczoną pocztę elektroniczną w oparciu o S/MIME oraz bezpieczną komunikację wykorzystując protokół SSL/TLS
- Podczas szkolenia wykorzystujemy biblioteki zaimplementowane w C oraz Java, między innymi Bouncy Castle, OpenSSL, Mbed TLS i TinyCrypt
- W wersji dedykowanej szkolenie może być zrealizowane w oparciu o biblioteki, języki programowania lub platformy wybrane przez uczestników
- 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
Cele szkolenia
- Poznanie i praktyczne wykorzystanie różnorodnych technik kryptograficznych, które używane są przy implementacji zabezpieczeń w systemach komputerowych
- Poznanie prawidłowych zasad użycia między innymi algorytmów szyfrujących (symetrycznych i asymetrycznych), funkcji skrótu, kodów uwierzytelniających wiadomość, algorytmów podpisu cyfrowego oraz wybranych protokołów kryptograficznych
- Umiejętne unikanie typowych ataków na systemy wykorzystujące techniki kryptograficzne
- Zrozumienie problemów związanych z zarządzaniem kluczami kryptograficznymi oraz przechowywaniem i przekazywaniem danych poufnych dzięki wielu praktycznym przykładom i warsztatom
- Samodzielne zastosowanie poznanych mechanizmów do konfiguracji i uruchomienia centrum certyfikacji, zabezpieczonej poczty elektronicznej oraz komunikacji klient-serwer
Program
Wprowadzenie do ochrony informacji
- Czym jest bezpieczeństwo informacji
- Pojęcia i relacje w bezpieczeństwie
- Podstawowe usługi ochrony informacji
- Integralność, uwierzytelnienie, niezaprzeczalność i poufność
- Kryptologia, kryptografia i kryptoanaliza
- Podstawowe zasady stosowane w kryptografii
- Kryptografia klasyczna
- Bezpieczeństwo obliczeniowe i siła klucza
- Standaryzacja i zalecenia: RFC, ISO/IEC, CEN/CENELEC, ETSI, PKCS, FIPS, ANSI, ITSEC/Common Criteria
- Biblioteki kryptograficzne w Java i C/C++
Algorytmy symetryczne
- Usługa poufności
- Szyfr z kluczem jednorazowym (one-time pad, OTP)
- Szyfrowanie a kodowanie
- Szyfry blokowe i ich parametry
- AES, 3DES i inne szyfry blokowe
- Podstawowe tryby pracy szyfrów blokowych: ECB, CBC, CTR
- Techniki oceny bezpieczeństwa algorytmów kryptograficznych
- Podstawy kryptoanalizy
- Szyfrowanie i kompresja
- Szyfry strumieniowe: ChaCha20
Funkcje skrótu
- Usługa integralności
- Cechy funkcji skrótu
- Rodzina SHA, SHA3 i algorytm Keccak
- Ataki na funkcje skrótu
- Procedury i algorytmy niszczenia informacji
Uwierzytelnienie i identyfikacja, kody uwierzytelniające wiadomość
- Usługa uwierzytelnienia i identyfikacji
- Kody uwierzytelniające wiadomość: HMAC, KMAC, CBC-MAC, CMAC
- Uwierzytelnienie a autoryzacja
Generatory liczb losowych
- Pojęcie losowości, typy generatorów liczb losowych
- Entropia i jej rola
- Bezpieczne kryptograficznie generatory ciągów pseudolosowych
Szyfrowanie z uwierzytelnieniem
- Zasady łączenia różnych usług ochrony informacji
- Tryby uwierzytelnionego szyfrowania (authenticated encryption, AE)
- Tryby uwierzytelnionego szyfrowania z danymi dodatkowymi (authenticated encryption with associated data, AEAD)
- Tryby: CCM, GCM i EAX
Algorytmy asymetryczne
- Problem wymiany i ustanawiania klucza
- Ceremonia wymiany klucza
- Algorytm Diffiego-Hellmana-Merkla (DH)
- Algorytm RSA
- Podpis cyfrowy i problem autentyczności klucza
- Algorytm podpisu cyfrowego DSA
- Krzywe eliptyczne w kryptografii: krzywe NIST, SECG i Brainpool, Curve25519, Curve448
- Algorytmy oparte o krzywe eliptyczne: ECDH, X25519, X448, ECDSA, EdDSA, Ed25519, Ed448
- Formaty podpisu cyfrowego
- Szyfrowanie za pomocą algorytmów asymetrycznych
- Porównanie algorytmów symetrycznych i asymetrycznych
Hasła
- Hasła, frazy hasłowe a klucze kryptograficzne
- Wymagania wobec haseł
- Numery PIN
- Tworzenie kluczy z haseł
- Szyfrowanie z hasłem (password based encryption, PBE)
- Przechowywanie haseł: Argon2, bcrypt, PBKDF2
- Szyfrowanie nośników danych
Protokoły kryptograficzne
- Protokół zobowiązania bitowego
- Protokół wyzwanie-odpowiedź
- Współdzielenie sekretów i schematy progowe
- Dowody wiedzy zerowej
Zarządzanie kluczami
- Metody zarządzania kluczami w systemach kryptograficznych
- Repozytoria kluczy: PKCS #12, JKS, JCEKS, BC i BCFKS
- Dywersyfikacja kluczy
- Unikalność klucza, klucze sesyjne (efemeryczne)
- Funkcje wyprowadzania klucza (key derivation function, KDF)
- Zarządzanie kluczami w systemach kart elektronicznych
- Zarządzanie kluczami w systemach płatniczych
- Karty inteligentne (smart cards)
- Elementy zabezpieczające (security elements, SE)
- Sprzętowe moduły zabezpieczeń (hardware security module, HSM)
- Interfejs PKCS #11
- Dostawcy usług kryptograficznych w Java
- Biblioteki CSP
Zastosowania kryptografii
- Zalecenia dotyczące algorytmów kryptograficznych, długości kluczy i innych parametrów
- Podstawy notacji ASN.1
- Kodowanie DER (Distinguished Encoding Rules) i PEM (Privacy-Enhanced Mail)
- 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
- Działanie i parametry protokołu SSL/TLS
- Jednostronne i obustronne uwierzytelnienie w protokole SSL/TLS
- Doskonałe utajnienie z wyprzedzeniem (perfect forward secrecy, PFS)
- Wykorzystanie kryptografii do budowy blockchain
Ataki na systemy wykorzystujące kryptografię
- Klasy ataków i ich cele
- Atak brutalny
- Atak słownikowy
- Atak typu man in the middle (MITM)
- Atak powtórzeniowy
- Inicjalizacja generatora liczb pseudolosowych
- Nieprawidłowe użycie kluczy i trybów szyfrowania
- Błędy w implementacji algorytmów
- Ataki socjotechniczne