Szkolenie: Programowanie kart Java Card
Szkolenie wprowadza do architektury Java Card oraz zasad tworzenia apletów z wykorzystaniem symulatora i rzeczywistej karty. W ramach zajęć zostaną wykorzystane algorytmy i protokoły kryptograficzne stosowane w systemach kartowych, a także przygotowane aplikacje obsługujące czytniki kart poprzez interfejs PC/SC w językach C/C++ i Java. Uczestnicy zaimplementują mechanizmy wzajemnego uwierzytelnienia, zabezpieczoną komunikację między terminalem a kartą oraz przeprowadzą analizę podatności poprzez atak na nieprawidłowo zabezpieczony system kartowy.
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:5 dni (40h)
Kod kursu:J/CARD
Programowanie kart Java Card
Cele szkolenia
Szkolenie przygotowuje do samodzielnego projektowania i programowania apletów na platformę Java Card z wykorzystaniem symulatora oraz rzeczywistej karty
Szkolenie uczy implementacji i stosowania algorytmów oraz protokołów kryptograficznych w systemach kartowych
Szkolenie rozwija umiejętność obsługi czytników kart i integracji z aplikacjami poprzez interfejs PC/SC w językach C/C++ i Java
Szkolenie pokazuje zasady tworzenia bezpiecznych systemów kartowych, w tym mechanizmy uwierzytelniania, zabezpieczonej komunikacji i analizy podatności
Dla kogo?
Osoby chcące rozwijać kompetencje w zakresie aplikacji kartowych
Programiści i inżynierowie oprogramowania zainteresowani technologią kart inteligentnych oraz bezpieczeństwem IT
Efekty kształcenia
Uczestnik projektuje i wdraża aplety Java Card na symulatorze i rzeczywistej karcie
Uczestnik implementuje protokoły kryptograficzne i mechanizmy uwierzytelniania
Uczestnik obsługuje czytniki kart i integruje je z aplikacjami PC/SC
Uczestnik analizuje podatności i przeprowadza testy bezpieczeństwa systemów wykorzystujących karty
Uczestnik stosuje dobre praktyki w zakresie bezpieczeństwa i optymalizacji aplikacji Java Card
Uczestnik przygotowuje aplikacje wykorzystujące zabezpieczoną komunikację z kartą
Wymagania
Od uczestników szkolenia wymagana jest podstawowa umiejętność programowania w Java oraz (opcjonalnie) C/C++
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 kart elektronicznych
Klasyfikacje kart
Budowa fizyczna, wymiary
Interfejsy komunikacyjne
Karty stykowe
Karty bezstykowe, NFC (near-field communication)
Techniki komunikacji z kartami, czytniki kart
Karty pamięciowe i inteligentne
Karty natywne i programowalne
Zastosowania kart elektronicznych
Ogólna charakterystyka kart Java Card
Algorytmy i protokoły kryptograficzne
Podstawowe usługi ochrony informacji
Integralność, uwierzytelnienie, niezaprzeczalność i poufność
Funkcje skrótu: rodzina SHA, SHA3
Algorytmy symetryczne: AES, 3DES
Kody uwierzytelniające wiadomość (message authentication code, MAC): CMAC, HMAC
Tryby uwierzytelnionego szyfrowania (authenticated encryption with associated data, AEAD)
Ceremonia wymiany klucza
Krzywe eliptyczne w kryptografii: krzywe NIST, SECG i Brainpool, Curve25519, Curve448
Algorytmy uzgadniania klucza: DH, ECDH, X25519, X448
Algorytmy asymetryczne: RSA, ECDSA, EdDSA, Ed25519, Ed448
Podpis cyfrowy (digital signature)
Generatory liczb losowych i ich zastosowania
Podstawy notacji ASN.1
Kodowanie DER (Distinguished Encoding Rules) i PEM (Privacy-Enhanced Mail)
Problem bezpiecznego przechowywania informacji
Przechowywanie i przekazywanie danych kryptograficznych
Sprzętowe moduły bezpieczeństwa (hardware security module, HSM)
Dostęp do urządzeń kryptograficznych (biblioteki PKCS #11, CSP)
Zalecenia dotyczące parametrów algorytmów kryptograficznych
Protokół wyzwanie-odpowiedź
Zabezpieczanie komunikacji
Karty inteligentne Java Card
Architektura kart Java Card
Wersje platformy Java Card, Java Card Kit
Java Card Virtual Machine
Java Card Runtime Environment
Java Card API
Identyfikatory (AID) pakietów i instancji, RID i PIX
Środowisko rozwoju apletów
Symulator Java Card Platform Simulator (cref)
Działanie Card Managera
Aplikacje GPShell i GlobalPlatformPro
Obsługa komend APDU
Obsługa pamięci nieulotnej i ulotnej
Obsługa kodu PIN
Obsługa transakcji atomowych
Bufory z danymi o szczególnym znaczeniu
Obsługa ciągów znaków
Obsługa upływu czasu
Liczniki
Obsługa struktur danych TLV
Generatory liczb losowych
Sumy kontrolne
Wykorzystanie algorytmów kryptograficznych w kartach
Funkcje skrótu
Kody uwierzytelniające wiadomość
Algorytmy symetryczne i asymetryczne, generowanie kluczy
Szyfrowanie i deszyfrowanie
Składanie podpisu elektronicznego
Techniki biometryczne
Zabezpieczanie komunikacji z kartami
Komunikacja pomiędzy apletami
Serwisy
Komunikacja z Card Manager
Dostęp do zasobów zewnętrznych
Zalecenia dotyczące tworzenia wydajnych apletów Java Card
Optymalizacja wykorzystania pamięci
Techniki i zalecenia dotyczące testowania apletów Java Card
Aplikacje wykorzystujące karty
Czytniki kart inteligentnych
Interfejs PC/SC
Obsługa zdarzeń w czytniku
Typowe problemy związane z obsługą kart stykowych i bezstykowych
Karta jako bezpieczny nośnik informacji
Cykl życia karty
Personalizacja kart
Techniki dystrybucji kluczy
Moduły SAM (secure access module)
Przechowywanie i zarządzanie danymi użytkowników
Karty w systemach podpisu elektronicznego
System płatniczy EMV
Systemy dostępu
Dobre praktyki tworzenia systemów kartowych i wykorzystania kart elektronicznych
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi
