Szkolenie: Praktyczne aspekty stosowania kryptografii w systemach komputerowych
Przegląd mechanizmów kryptograficznych wykorzystywanych w celu zapewnienia bezpieczeństwa systemów komputerowych
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:5 dni (40h)
Kod kursu:KRYPT/F
Praktyczne aspekty stosowania kryptografii w systemach komputerowych
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
Dla kogo?
Programiści i architekci chcący poznać zagadnienia związane z prawidłowym wykorzystaniem mechanizmów kryptograficznych do budowy bezpiecznych systemów
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
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
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
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