Programowanie kart Java Card

Czas trwania szkolenia:5 dni (40h)

Kod kursu:J/CARD

Poziom zaawansowania:
javasecuritycryptographyjava-card

Szkolenie na zamówienie

  • Dostosowany program
  • Indywidualna wycena
  • Dowolny termin
Zapytanie o szkolenie

O szkoleniu Programowanie kart Java Card

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?

  • Szkolenie adresowane jest do osób pragnących poznać zagadnienia związane wykorzystaniem elektronicznych kart inteligentnych Java Card do budowy bezpiecznych systemów

Wymagania

  • Od uczestników szkolenia wymagana jest umiejętność programowania na poziomie podstawowym w Java oraz (opcjonalnie) C/C++

Zalety

  • Podczas warsztatów uczestnicy przygotują własne aplety dla Java Card oraz umieszcza je w symulatorze i rzeczywistej karcie
  • Uczestnicy dokonają ataku na nieprawidłowo zabezpieczony system kartowy
  • W trakcie szkolenia zaimplementujemy protokół wzajemnego uwierzytelnienia pomiędzy kartą i aplikacją oraz pomiędzy dwiema kartami
  • Elementem warsztatów jest realizacja mechanizmu zabezpieczonej komunikacji pomiędzy terminalem a kartą
  • Uczestnicy przygotują aplikację wykorzystującą czytnik zgodny z PC/SC
  • 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 architektury i możliwości Java Card oraz zasad tworzenia apletów z użyciem symulatora i rzeczywistej karty
  • Poznanie i wykorzystanie algorytmów i protokołów kryptograficznych używanych w systemach kartowych
  • Praktyczna umiejętność obsługi czytników kart w aplikacjach poprzez interfejs PC/SC w językach C/C++ i Java na platformach Windows, Linux i macOS
  • Poznanie zasad i dobrych praktyk w zakresie tworzenia bezpiecznych systemów kartowych na przykładach takich jak podpis elektroniczny, dostęp do systemów, systemy płatności oraz dystrybucja i udostępnianie kluczy

Program

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

Podobne szkolenia