Każda grupa laboratoryjna wybiera dokładnie jedno zadanie z poniższego zestawu dziesięciu studiów przypadków do kompleksowego opracowania w formie pisemnego referatu inżynierskiego. Prace realizowane są w zespołach liczących od dwóch do trzech studentów, a czas przeznaczony na realizację laboratorium wynosi 180 minut. Zadania na ocenę 4.0 łączą analizę organizacyjno-prawną z praktycznym wykorzystaniem bezpłatnego oprogramowania narzędziowego, konfiguracji wiersza poleceń oraz weryfikacji reguł bezpieczeństwa w systemach operacyjnych Linux, Windows oraz RouterOS. Od studentów wymaga się przeprowadzenia burzy mózgów, zbadania wzajemnych zależności pomiędzy komponentami systemu oraz wypracowania całościowego, spójnego rozwiązania technicznego. Efektem pracy grupy musi być dojrzałe sprawozdanie techniczne, wykazujące nie tylko zrozumienie teorii, lecz także umiejętność doboru i przetestowania konkretnych narzędzi audytorskich i konfiguracyjnych.
Z laboratorium każda grupa przygotowuje jedno łączne sprawozdanie w formacie dokumentu PDF o objętości od sześciu do ośmiu stron znormalizowanego tekstu inżynierskiego. Dokument musi rozpoczynać się od strony tytułowej zawierającej pełną nazwę uczelni, nazwę przedmiotu, imiona i nazwiska członków grupy wraz z numerami albumów, kierunek studiów, numer grupy dziekańskiej oraz rok akademicki. Bezpośrednio pod stroną tytułową należy wkleić pełną, niezmienioną treść wybranego do realizacji zadania laboratoryjnego. Układ merytoryczny pracy musi obligatoryjnie obejmować wstęp wprowadzający w tematykę, szczegółowe rozwinięcie problemu inżynierskiego oraz wyczerpujące podsumowanie z wnioskami. W części analitycznej wymagany jest szczegółowy opis zidentyfikowanych zagrożeń, formalna matryca ryzyka (prawdopodobieństwo x skutek) oraz uzasadnienie wyboru proponowanych reguł polityki bezpieczeństwa. W części praktycznej sprawozdanie musi zawierać logiczny schemat działania i połączeń, wykaz wykorzystanych bezpłatnych narzędzi i serwisów WWW, a także przetestowane pliki konfiguracyjne oraz zrzuty poleceń CLI wraz z ich rzeczywistymi wynikami. Sprawozdanie musi w sposób jednoznaczny i bezdyskusyjny dowodzić, że zespół samodzielnie i poprawnie zrealizował zadanie oraz zrozumiał wpływ poszczególnych parametrów na bezpieczeństwo całego systemu informatycznego. W referacie należy podać spis wykorzystanych źródeł, w tym aktów prawnych (RODO, ustawa o KSC), norm serii ISO/IEC 27001 i 27005 oraz oficjalnych wytycznych CSIRT NASK i NIST. Obrona sprawozdania odbywa się w trakcie zajęć poprzez ustne wystąpienie członków grupy i merytoryczną dyskusję nad przyjętymi rozwiązaniami technicznymi.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon4 Bezpieczeństwo protokołów komunikacyjnych i sieci komputerowych. Wzajemne uwierzytelnianie mTLS.
Celem zadania jest zaprojektowanie, zaimplementowanie i przetestowanie mechanizmu wzajemnego uwierzytelniania w protokole TLS (Mutual TLS - mTLS) dla bezpiecznej komunikacji międzysystemowej B2B (Business-to-Business) oraz interfejsów otwartej bankowości (Open Banking API zgodnych z dyrektywą PSD2). Studenci badają zasady obustronnej weryfikacji tożsamości kryptograficznej, w której nie tylko serwer przedstawia swój certyfikat X.509 przeglądarce, ale również klient (bramka płatnicza, partner finansowy) musi wylegitymować się certyfikatem cyfrowym podpisanym przez zaufany urząd certyfikacji (Root/Intermediate CA).
W części praktycznej studenci konfigurują serwer WWW Nginx w trybie wymuszonego uwierzytelniania klientów (ssl_verify_client on), budują dedykowaną strukturę certyfikatów klienckich, implementują ekstrakcję pól tożsamości z certyfikatu (Subject DN, Serial Number) do nagłówków przekazywanych do aplikacji backendowej oraz badają zachowanie systemu w przypadku podłączenia nieautoryzowanego klienta (odrzucenie połączenia na etapie uzgadniania TLS bez angażowania aplikacji).
Krajowa Izba Płatnicza PaySwitch S.A. pośredniczy w rozliczaniu płatności natychmiastowych pomiędzy 15 bankami komercyjnymi w Polsce. Komunikacja pomiędzy serwerami banków a węzłem centralnym PaySwitch odbywa się za pośrednictwem interfejsów REST API przesyłających zlecenia transferu środków pieniężnych o wartości milionów złotych.
W dotychczasowym rozwiązaniu autoryzacja partnerów bankowych opierała się wyłącznie na statycznych kluczach API (API Key) przesyłanych w nagłówku HTTP Authorization przez standardowe połączenie HTTPS. Podczas incydentu bezpieczeństwa w jednym z banków doszło do wycieku klucza API z repozytorium kodu. Przestępcy, posługując się wykradzionym kluczem, próbowali wysyłać fałszywe dyspozycje przelewów bezpośrednio do węzła PaySwitch.
Chociaż atak został w porę udaremniony, audyt bezpieczeństwa zlecony przez KNF i Narodowy Bank Polski (NBP) wykazał, że uwierzytelnianie jednokierunkowe oparte na statycznym sekrecie jest całkowicie niewystarczające dla infrastruktury krytycznej rynku finansowego. Nakazano natychmiastowe wdrożenie bezwzględnego wzajemnego uwierzytelniania mTLS z certyfikatami sprzętowymi X.509.
W nowej architekturze serwer PaySwitch nawiązuje połączenie wyłącznie z tymi klientami, którzy w trakcie kryptograficznego powitania TLS przedstawią certyfikat wydany przez prywatne CA izby płatniczej, a numer seryjny certyfikatu znajduje się na aktywnej liście dopuszczonych instytucji.
Grupa laboratoryjna przyjmuje zadanie architektów bezpieczeństwa. Studenci muszą stworzyć lokalne CA, wygenerować certyfikat serwera i certyfikaty klientów bankowych, skonfigurować serwer Nginx do wymuszania weryfikacji certyfikatów klienckich (mTLS), zaimplementować przekazywanie tożsamości klienta do backendu oraz zweryfikować zablokowanie nieautoryzowanych połączeń za pomocą narzędzia cURL.
W architekturze mTLS ogromną zaletą bezpieczeństwa jest to, że nieautoryzowany klient jest odrzucany już na etapie negocjacji warstwy kryptograficznej TLS (Transport Layer). Oznacza to, że żadne nieautoryzowane pakiety HTTP w ogóle nie docierają do serwera aplikacji ani bazy danych, co całkowicie uodparnia backend na ataki typu SQL Injection, XSS, czy przeciążenie zapytań (DDoS na warstwę aplikacji).
Poniżej przedstawiono przykładową konfigurację serwera Nginx wymuszającą mTLS dla endpointów transakcyjnych:
Próba nawiązania połączenia bez certyfikatu klienta kończy się błędem warstwy TLS:
Pomyślna autoryzacja banku partnerskiego za pomocą certyfikatu klienckiego X.509 i klucza prywatnego:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Wdrożenie wzajemnego uwierzytelniania mTLS w komunikacji pomiędzy bankiem a zewnętrznym dostawcą usług zapewniło kryptograficzną pewność tożsamości obu stron połączenia. Wymuszenie certyfikatów klienckich X.509 z dedykowanym rozszerzeniem Client Authentication wyeliminowało podatność interfejsu REST API na ataki podszywania się pod klienta oraz kradzież statycznych kluczy API. Serwer proxy po zweryfikowaniu nienaruszalności łańcucha zaufania przekazuje zweryfikowane atrybuty tożsamości podmiotu bezpośrednio do logiki biznesowej aplikacji bankowej. Weryfikacja statusu certyfikatów w czasie rzeczywistym zabezpieczyła interfejs przed próbami użycia poświadczeń wycofanych przez instytucję certyfikującą. Zaimplementowane rozwiązanie w pełni odpowiada specyfikacji technicznej PolishAPI oraz wymogom regulacyjnym nakładanym przez Europejski Urząd Nadzoru Bankowego w ramach dyrektywy PSD2.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon4 Kryptografia asymetryczna. Infrastruktura klucza publicznego (PKI) i certyfikaty X.509.
Celem zadania jest zaprojektowanie, zbudowanie i skonfigurowanie w pełni funkcjonalnej, hierarchicznej infrastruktury klucza publicznego (Public Key Infrastructure - PKI) w środowisku korporacyjnym przy użyciu zaawansowanych możliwości narzędzia OpenSSL 3.x. Studenci poznają architekturę dwustopniowego urzędu certyfikacji składającego się z nadrzędnego urzędu certyfikacji (Root CA) trzymanego w trybie offline (odłączonego od sieci) oraz podrzędnego urzędu certyfikacji (Issuing / Intermediate CA) wystawiającego certyfikaty końcowe dla serwerów i użytkowników.
W ramach laboratorium studenci konfigurują pliki sterujące openssl.cnf, definiują restrykcyjne rozszerzenia X.509 v3 (Basic Constraints, Key Usage, Extended Key Usage, Subject Alternative Name - SAN), obsługują podpisywanie żądań CSR (Certificate Signing Request) oraz badają zasady zapobiegania atakom podszywania się pod urząd certyfikacji (CA impersonation) wynikającym z błędnego ustawienia flagi isCA.
Grupa Kapitałowa PolskieKoleje Cyfrowe S.A. zarządza infrastrukturą teleinformatyczną na dworcach, w pociągach oraz w centrach sterowania ruchem kolejowym. W spółce funkcjonuje ponad 3000 urządzeń sieciowych, serwerów bazodanowych oraz paneli operatorskich, które wymagają bezpiecznej komunikacji szyfrowanej TLS.
Dotychczas administratorzy na każdym serwerze generowali certyfikaty samopodpisane (Self-Signed Certificates). Skutkowało to powszechnym ignorowaniem ostrzeżeń o błędach certyfikatów przez pracowników ('kliknij Zaakceptuj ryzyko i kontynuuj'), co stwarzało idealne warunki do przeprowadzania ataków Man-in-the-Middle przez podstawienie fałszywego certyfikatu w sieci kolejowej.
Próba zakupu publicznych certyfikatów komercyjnych dla tysięcy wewnętrznych adresów IP i domen (.kolej.local) okazała się niemożliwa ze względów formalnych (publiczne urzędy CA nie mogą wystawiać certyfikatów dla domen nierzestawnych i prywatnych adresów IP RFC 1918) oraz nieuzasadniona ekonomicznie.
Zarząd PK Cyfrowe podjął decyzję o budowie własnego, korporacyjnego Urzędu Certyfikacji (Enterprise PKI). Główny klucz Root CA ma zostać wygenerowany na odizolowanej stacji bez dostępu do Internetu, zabezpieczony hasłem frazowym i zdeponowany w sejfie, natomiast bieżące operacje podpisywania ma realizować pośredni urząd certyfikacji Intermediate CA.
Zadaniem grupy laboratoryjnej jest stworzenie kompletnej struktury katalogów i plików konfiguracyjnych OpenSSL dla Root CA i Intermediate CA, wygenerowanie 4096-bitowego samopodpisanego certyfikatu Root CA (ważnego 10 lat), wygenerowanie certyfikatu Intermediate CA (ważnego 5 lat) podpisanego przez Root CA, a następnie wystawienie certyfikatów końcowych dla serwerów z obowiązkowym rozszerzeniem Subject Alternative Name (SAN).
Zwróćcie szczególną uwagę na rozszerzenie `basicConstraints`. Dla Root CA oraz Intermediate CA flaga ta musi bezwzględnie przyjmować wartość `CA:TRUE`. Dodatkowo dla Intermediate CA kluczowe jest zdefiniowanie parametru `pathlen:0`. Oznacza to, że Intermediate CA może wystawiać wyłącznie certyfikaty dla końcowych urządzeń i użytkowników, ale nie może utworzyć kolejnego, podrzędnego urzędu certyfikacji. Chroni to całą korporacyjną strukturę PKI przed niekontrolowanym rozrostem i potencjalną kompromitacją.
Poniżej przedstawiono procedurę podpisywania certyfikatu serwera z rozszerzeniem SAN przez Intermediate CA w OpenSSL:
Weryfikacja łańcucha certyfikatu oraz obecności rozszerzeń Subject Alternative Name (SAN):
Inspekcja bazy danych wystawionych certyfikatów urzędu w pliku index.txt:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Budowa hierarchicznej infrastruktury PKI z fizycznie odizolowanym głównym urzędem certyfikacji wyeliminowała ryzyko całkowitej utraty zaufania w organizacji w razie incydentu na serwerze operacyjnym. Zastosowanie parametru pathlen równego zero w certyfikacie wystawcy pośredniego skutecznie uniemożliwiło tworzenie nieautoryzowanych, głębszych gałęzi łańcucha zaufania. Zautomatyzowanie przetwarzania żądań CSR z obligatoryjnym rozszerzeniem Subject Alternative Name rozwiązało problem błędów walidacji w nowoczesnych przeglądarkach internetowych ignorujących pole Common Name. Zdefiniowanie restrykcyjnych flag Key Usage zagwarantowało, że certyfikaty końcowe nie mogą posłużyć do podpisywania innych certyfikatów lub list unieważnień. Opracowany model stanowi fundament zaufania w korporacyjnej sieci wewnętrznej, w pełni spełniający wymogi rygorystycznych audytów bezpieczeństwa.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon4 Kryptografia asymetryczna. Odwoływanie certyfikatów, listy CRL i protokół OCSP.
Celem zadania jest zbadanie, zaimplementowanie i przetestowanie dwóch kluczowych mechanizmów sprawdzania statusu unieważnienia certyfikatów X.509 w infrastrukturze PKI: list unieważnionych certyfikatów (Certificate Revocation List - CRL) oraz protokołu weryfikacji statusu w czasie rzeczywistym (Online Certificate Status Protocol - OCSP, RFC 6960). Studenci analizują wady i zalety obu rozwiązań: problem rosnącego rozmiaru i opóźnień aktualizacji list CRL w zestawieniu z problemami wydajnościowymi i wyciekiem prywatności zapytań w klasycznym OCSP.
W części praktycznej studenci symulują kompromitację klucza prywatnego serwera, unieważniają certyfikat w bazie urzędu CA, generują podpisaną listę CRL, uruchamiają lokalny responder OCSP za pomocą modułu openssl ocsp, a następnie konfigurują mechanizm automatycznego zszywania odpowiedzi (OCSP Stapling) w serwerze WWW Nginx/Apache. Projekt uczy eliminacji ataków z wykorzystaniem odwołanych poświadczeń.
Operator Krajowego Węzła Telemedycyny MedNet S.A. łączy ponad 500 szpitali i przychodni przesyłających dane o hospitalizacjach i zabiegach operacyjnych. Każdy serwer szpitalny autoryzuje się certyfikatem X.509. W ubiegłym miesiącu na jednym ze szpitalnych serwerów doszło do incydentu: administrator omyłkowo opublikował klucz prywatny serwera na publicznym kanale Discord podczas poszukiwania pomocy technicznej.
Mimo że administrator po 30 minutach usunął wpis, klucz został zindeksowany przez boty. Zespół bezpieczeństwa MedNet natychmiast zgłosił konieczność unieważnienia skompromitowanego certyfikatu. Okazało się jednak, że w korporacyjnym urzędzie CA listy CRL nie były publikowane od 90 dni, a serwer respondera OCSP w ogóle nie został uruchomiony.
W efekcie, mimo formalnego zgłoszenia kompromitacji, wszystkie pozostałe szpitale i bramki dostępowe weryfikujące certyfikat nadal traktowały go jako w 100% poprawny i zaufany. Napastnicy, posługując się przejętym kluczem, mogli przez kolejne tygodnie podszywać się pod serwer szpitalny i pobierać dane medyczne pacjentów.
Kierownictwo MedNet powierzyło grupie laboratoryjnej zadanie wdrożenia kompletnego i niezawodnego systemu unieważniania certyfikatów. Nowy system musi umożliwiać natychmiastowe odwołanie certyfikatu z podaniem formalnego powodu (reasonCode wg RFC 5280, np. keyCompromise), automatyczną publikację zaktualizowanych list CRL co 24 godziny oraz uruchomienie szybkiego respondera OCSP zintegrowanego z mechanizmem OCSP Stapling na serwerach brzegowych.
Studenci muszą przeprowadzić całą procedurę: odwołanie certyfikatu w CA, wygenerowanie listy CRL, przetestowanie zapytania OCSP za pomocą OpenSSL, skonfigurowanie Nginx do zszywania odpowiedzi oraz weryfikacja zablokowania dostępu dla unieważnionego klienta.
Tradycyjna weryfikacja OCSP (Direct OCSP Query) stwarzała poważny problem prywatności: przy każdym wejściu użytkownika na stronę internetową jego przeglądarka wysyłała zapytanie do serwera urzędu certyfikacji (CA), ujawniając adres IP użytkownika oraz nazwę odwiedzanej domeny. Ponadto awaria serwera OCSP prowadziła do spowolnienia otwierania stron. Mechanizm OCSP Stapling całkowicie rozwiązuje oba te problemy: to serwer WWW okresowo odpytuje CA, pobiera kryptograficznie podpisaną odpowiedź i 'zszywa' ją z powitaniem TLS kierowanym do klienta.
Poniżej przedstawiono procedurę unieważnienia certyfikatu w bazie OpenSSL oraz weryfikację respondera OCSP:
Wysłanie zapytania OCSP z weryfikacją odpowiedzi za pomocą narzędzia OpenSSL ocsp:
Inspekcja wpisu unieważnienia wewnątrz listy CRL poleceniem openssl crl:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Badania empiryczne mechanizmów unieważniania certyfikatów wykazały, że tradycyjne listy CRL generują nieakceptowalne opóźnienia sieciowe oraz drastyczny wzrost zużycia pasma przy rosnącej skali infrastruktury. Zastosowanie protokołu OCSP skróciło czas weryfikacji, jednak naraziło historię odwiedzin użytkowników na ujawnienie w zapytaniach kierowanych do zewnętrznych serwerów urzędu certyfikacji. Optymalnym rozwiązaniem okazało się wdrożenie technologii OCSP Stapling, w której to serwer WWW okresowo pobiera podpisany kryptograficznie status certyfikatu i dołącza go do początkowego pakietu handshake. Wykorzystanie rozszerzenia TLS Must-Staple skutecznie zabezpieczyło klientów przed atakami blokowania odpowiedzi OCSP, które w domyślnym trybie Soft-Fail były ignorowane przez przeglądarki. Zaimplementowana konfiguracja łączy natychmiastową reakcję na wycofanie poświadczeń z najwyższą wydajnością i pełną ochroną prywatności użytkowników.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon2 Warunki zapewnienia poufności i integralności informacji. Standardy bezpieczeństwa branży płatniczej PCI DSS.
Celem zadania jest przeprowadzenie audytu technicznego i zaprojektowanie architektury kryptograficznej zgodnej z najnowszą wersją globalnego standardu bezpieczeństwa kart płatniczych PCI DSS v4.0 (Payment Card Industry Data Security Standard). Studenci analizują szczegółowe wymagania Wymogu 3 (Ochrona przechowywanych danych posiadaczy kart - Account Data) oraz Wymogu 4 (Ochrona danych posiadaczy kart za pomocą silnej kryptografii podczas transmisji przez otwarte, publiczne sieci).
W części inżynierskiej zadanie obejmuje opracowanie bezpiecznego potoku przetwarzania podstawowego numeru rachunku karty (Primary Account Number - PAN): implementację bezwzględnego zakazu przechowywania wrażliwych danych uwierzytelniających (SAD: kodów CVV2/CVC2, zawartości paska magnetycznego, kodów PIN), wdrożenie silnego szyfrowania AES-256-GCM dla przechowywanych numerów PAN, maskowania numerów kart (wyświetlanie wyłącznie pierwszych 6 i ostatnich 4 cyfr) oraz implementację architektury tokenizacji zastępującej numer karty losowym tokenem.
Spółka TravelPoland S.A. prowadzi ogólnopolski portal rezerwacji hoteli i biletów lotniczych. Klienci dokonują płatności kartami Visa i Mastercard bezpośrednio na stronie internetowej. W celu umożliwienia 'szybkich płatności jednym kliknięciem' przy kolejnych rezerwacjach, baza danych aplikacji zapisywała pełne 16-cyfrowe numery kart płatniczych (PAN), daty ważności oraz 3-cyfrowe kody CVV2 w zwykłej tabeli bazy MySQL w postaci nieszyfrowanego tekstu jawnego (Plaintext).
Podczas corocznego audytu Qualified Security Assessor (QSA) stwierdził drastyczne naruszenie standardu PCI DSS v4.0: Wymóg 3.2 bezwzględnie zabrania przechowywania danych SAD (Sensitive Authentication Data, w tym kodów CVV2) po zakończeniu autoryzacji transakcji, nawet w postaci zaszyfrowanej! Co więcej, brak szyfrowania numerów PAN w spoczynku i brak maskowania na ekranie konsultantów call-center stanowił bezpośrednie zagrożenie gigantycznymi karami finansowymi ze strony organizacji płatniczych oraz cofnięciem prawa do akceptacji kart.
Zarząd TravelPoland stanął przed widmem natychmiastowego zablokowania bramek płatniczych. Nakazano pilne wdrożenie zewnętrznego modułu tokenizacji oraz całkowite usunięcie numerów kart z baz danych systemów rezerwacyjnych.
Grupa laboratoryjna przyjmuje rolę audytorów i inżynierów PCI DSS. Zadaniem zespołu jest zaprojektowanie architektury Tokenizacji Kart Płatniczych (Card Tokenization Vault): numer PAN trafia wyłącznie do wyizolowanego, certyfikowanego sejfu danych (CDE - Cardholder Data Environment), gdzie jest szyfrowany algorytmem AES-256 z kluczem zarządzanym w sprzętowym module, a do pozostałych systemów rezerwacyjnych zwracany jest bezpieczny token alfanumeryczny pozbawiony wartości dla potencjalnego złodzieja.
Sprawozdanie musi zawierać algorytm maskowania numerów kart (Luhn Check + maskowanie), skrypt tokenizacji w języku Python, analizę prawno-techniczną wymogów PCI DSS v4.0 oraz procedurę natychmiastowego niszczenia kodów CVV2 z pamięci RAM.
W standardzie PCI DSS kluczowym pojęciem jest redukcja zakresu audytu (Scope Reduction). Jeśli firma przechowuje numery kart w głównym systemie rezerwacyjnym, cała sieć, wszystkie komputery, serwery, a nawet stacje robocze pracowników podlegają rygorystycznemu, niezwykle kosztownemu audytowi PCI DSS. Wdrożenie architektury tokenizacji pozwala zamknąć dane kartowe w miniaturowej, odizolowanej strefie sejfu (CDE Vault), co wyłącza 95% infrastruktury firmy z rygorów audytu, drastycznie zwiększając bezpieczeństwo i obniżając koszty.
Poniżej przedstawiono implementację modułu tokenizacji i maskowania numeru karty w języku Python:
Weryfikacja braku obecności kodów CVV2 w bazach danych aplikacji za pomocą skryptu przeszukującego tabele:
Test poprawności numeru karty za pomocą algorytmu Luhna w wierszu poleceń:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Audyt architektury przetwarzania płatności wykazał, że zastąpienie jawnych numerów PAN jednorazowymi tokenami w bazie zamówień sklepu drastycznie zredukowało zakres środowiska objętego rygorem audytu PCI DSS v4.0. Wrażliwe numery kart zostały odizolowane w certyfikowanym skarbcu danych, gdzie podlegają szyfrowaniu algorytmem AES-256-GCM z kluczami przechowywanymi w sprzętowym module HSM. Zgodnie z wymogiem 3.3 standardu wprowadzono mechanizm maskowania numerów kart w logach aplikacyjnych, pozostawiając czytelnymi jedynie pierwsze sześć oraz ostatnie cztery cyfry na potrzeby weryfikacji operacyjnej. Wdrożenie procedury Dual Control wyeliminowało możliwość nieautoryzowanego dostępu pojedynczego administratora do nadrzędnych kluczy szyfrujących. Zaprojektowane procedury całkowicie wykluczyły przechowywanie kodów CVV2 po zakończeniu procesu autoryzacji, zapewniając pełną zgodność z najnowszymi wytycznymi PCI Security Standards Council.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon3 Autoryzacja i uwierzytelnianie w systemach komputerowych. Uwierzytelnianie wieloskładnikowe w finansach.
Celem zadania jest zaprojektowanie, zaimplementowanie i przetestowanie przepływu transakcji elektronicznych z wykorzystaniem nowoczesnego protokołu 3-D Secure w wersji 2.2+ (EMV 3DS) oraz mechanizmów Silnego Uwierzytelniania Klienta (Strong Customer Authentication - SCA) wymaganego przez unijną dyrektywę PSD2 (Payment Services Directive 2). Studenci badają zasady podziału odpowiedzialności pomiędzy trzema domenami: domeną akceptanta (Acquirer Domain / 3DS Server), domeną interoperacyjności (Interoperability Domain / Directory Server - DS) oraz domeną wydawcy karty (Issuer Domain / Access Control Server - ACS).
W ramach laboratorium studenci analizują dwa podstawowe scenariusze transakcyjne: przepływ bezproblemowy oparty na analizie ryzyka (Frictionless Flow), w którym transakcja niskiego ryzyka jest zatwierdzana w ułamku sekundy bez angażowania użytkownika, oraz przepływ z wyzwaniem (Challenge Flow), wymuszający na kliencie potwierdzenie płatności w aplikacji mobilnej banku za pomocą dwóch niezależnych składników (wiedza, posiadanie, biometria). Zadanie uczy również obsługi wyłączeń spod SCA (Exemptions).
Krajowy Sklep Internetowy AGD-RTV 'MegaMarket24' odnotował w okresie przedświątecznym gwałtowny wzrost liczby oszustw transakcyjnych (Card-Not-Present Fraud) przeprowadzanych za pomocą skradzionych danych kart płatniczych. Sklep korzystał ze starego protokołu 3DS 1.0, który wyświetlał toporne okno ramki iframe z koniecznością podania hasła SMS, co powodowało porzucanie koszyków zakupowych przez ponad 35% klientów mobilnych.
Właściciele sklepu, chcąc zmniejszyć wskaźnik porzuceń, wyłączyli wymóg weryfikacji 3DS dla części transakcji. W rezultacie banki wydawcy kart zaczęły masowo odrzucać autoryzacje (błąd Soft Decline kod 65 - SCA Required), a dla zrealizowanych oszukańczych transakcji zastosowano mechanizm obciążenia zwrotnego (Chargeback Liability Shift) na niekorzyść sklepu, co przyniosło straty rzędu 450 000 zł.
Bank akceptujący (Acquirer) zażądał natychmiastowej integracji z najnowszym protokołem EMV 3-D Secure 2.2, który przekazuje do banku ponad 150 parametrów telemetrycznych dotyczących urządzenia klienta, umożliwiając bankom podejmowanie inteligentnych decyzji o zwolnieniu z uwierzytelniania (Frictionless) przy jednoczesnym zachowaniu pełnej ochrony przed oszustwami.
Zarząd MegaMarket24 powierzył grupie laboratoryjnej zadanie wdrożenia i przetestowania bezpiecznego potoku transakcyjnego 3DS 2.0 zintegrowanego z bramką płatniczą.
Zadaniem studentów jest zasymulowanie integracji z serwerem 3DS, zaimplementowanie zbierania telemetrii przeglądarki (Device Fingerprinting), obsługa komunikatu wyzwania (Challenge Flow) z silnym uwierzytelnieniem SCA oraz skonfigurowanie reguł wnioskowania o wyłączenia (np. transakcje niskiej wartości poniżej 30 EUR / 100 PLN oraz analiza ryzyka TRA - Transaction Risk Analysis).
Protokół 3-D Secure w wersji 2.0 zrewolucjonizował płatności internetowe dzięki wprowadzeniu ścieżki Frictionless Flow. Zamiast męczyć klienta hasłami SMS przy każdym zakupie, sklep przesyła do banku wydawcy karty bogaty pakiet danych telemetrycznych (adres IP, geolokalizacja, historia zakupów, cyfrowy odcisk urządzenia). Na tej podstawie bankowe algorytmy uczenia maszynowego (AI Fraud Prevention) oceniają ryzyko w ułamku sekundy. Aż 85-90% legalnych transakcji przechodzi bez żadnego okna weryfikacyjnego (Frictionless), a użytkownik jest proszony o potwierdzenie biometryczne tylko w przypadku anomalii.
Poniżej przedstawiono przykładową strukturę komunikatu żądania uwierzytelnienia 3DS 2.0 (AReq) w formacie JSON:
Odpowiedź Directory Servera (ARes) wskazująca na konieczność przeprowadzenia wyzwania (Challenge Flow):
Pomyślne zakończenie wyzwania i wygenerowanie kryptograficznego tokena CAVV (Liability Shift):
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Wdrożenie protokołu 3-D Secure 2.0 w platformie e-commerce umożliwiło bezproblemowe pogodzenie wymogów silnego uwierzytelniania klienta z minimalizacją współczynnika odrzuconych koszyków zakupowych. Wykorzystanie zaawansowanego profilowania urządzenia oraz analizy ryzyka transakcji pozwoliło na skierowanie ponad 75% operacji na ścieżkę bezproblemową bez angażowania kupującego. W sytuacjach podwyższonego ryzyka system płynnie inicjuje ścieżkę Challenge Flow, przekierowując autoryzację do bankowej aplikacji mobilnej wykorzystującej biometrię i powiadomienia push. Zastosowanie podpisów cyfrowych JWS oraz szyfrowania JWE zagwarantowało nienaruszalność i poufność danych wymienianych pomiędzy komponentami 3DS. Implementacja stanowi wzorcowe wypełnienie przepisów unijnej dyrektywy PSD2 oraz wytycznych KNF w obszarze bezpieczeństwa płatności internetowych.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon4 Kryptografia asymetryczna. Podpisy cyfrowe, standard eIDAS i formaty zaawansowane.
Celem zadania jest zbadanie prawnych, kryptograficznych i technicznych aspektów podpisu elektronicznego w Unii Europejskiej zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) nr 910/2014 (eIDAS). Studenci analizują trzy poziomy podpisów: zwykły podpis elektroniczny, zaawansowany podpis elektroniczny (AdES) oraz kwalifikowany podpis elektroniczny (QES), który na mocy prawa posiada skutek prawny równoważny podpisowi własnoręcznemu (art. 25 ust. 2 eIDAS).
W części praktycznej studenci implementują i badają trzy wiodące europejskie standardy formatów podpisów cyfrowych zdefiniowane przez ETSI: format XAdES (XML Advanced Electronic Signatures) dla dokumentów strukturalnych, format PAdES (PDF Advanced Electronic Signatures) dla dokumentów przenośnych PDF oraz format CAdES (CMS Advanced Electronic Signatures) dla plików binarnych. Projekt obejmuje integrację z kwalifikowanym znacznikiem czasu (Time-Stamp Authority - TSA wg RFC 3161) zapewniającym prawny dowód istnienia dokumentu w danym punkcie czasu oraz weryfikację długoterminową (LTV - Long-Term Validation).
Krajowy Rejestr Dłużników i Sąd Arbitrażowy przy Izbie Gospodarczej w Warszawie wdraża platformę elektronicznego składania pozwów i wydawania cyfrowych wyroków arbitrażowych. Każdy wyrok sądu musi zostać podpisany kwalifikowanym podpisem elektronicznym przez trzech arbitrów, a dokumentacja musi zachować ważność dowodową przed sądami powszechnymi przez okres minimum 20 lat.
W trakcie pilotażu sędziowie podpisywali pliki PDF prostym podpisem w programie Adobe Acrobat bez dołączania kwalifikowanego znacznika czasu oraz bez osadzania pełnego łańcucha certyfikatów i list CRL (brak profilu LTV / PAdES-B-LTA). Po upływie dwóch lat, gdy certyfikat jednego z sędziów wygasł, programy weryfikujące zaczęły wyświetlać czerwony komunikat ostrzegawczy 'Podpis jest nieprawidłowy lub certyfikat wygasł!'.
Strona przegrywająca proces zaskarżyła wyrok, podnosząc zarzut, że wyrok nie został skutecznie podpisany w czasie ważności certyfikatu, a brak niezależnego znacznika czasu uniemożliwia udowodnienie, czy podpis został złożony przed, czy po unieważnieniu certyfikatu arbitra. Sąd apelacyjny nakazał wstrzymanie egzekucji wyroku do czasu wyjaśnienia.
Dyrektor Sądu Arbitrażowego powołał zespół biegłych z zakresu kryptologii (grupę laboratoryjną) w celu opracowania i wdrożenia niezaprzeczalnego standardu podpisywania orzeczeń sądowych zgodnego ze standardem eIDAS PAdES-LTA.
Zadaniem studentów jest zbadanie formatów XAdES, PAdES i CAdES, zaimplementowanie procesu podpisywania dokumentu PDF za pomocą narzędzia OpenSSL / pyhanko / DSS (Digital Signature Service), skonfigurowanie pobierania kryptograficznego znacznika czasu z publicznego serwera TSA oraz przeprowadzenie weryfikacji poprawności podpisu w horyzoncie długoterminowym.
Kluczem do długoterminowej ważności podpisu elektronicznego (Long-Term Validation - LTV) jest profil PAdES-B-LTA. W tym profilu w momencie składania podpisu do struktury dokumentu PDF zostaje wstrzyknięty kryptograficzny znacznik czasu (RFC 3161) oraz kompletne listy CRL i odpowiedzi OCSP poświadczające, że w tej konkretnej sekundzie certyfikat sędziego był ważny i nienaruszony. Dzięki temu, nawet gdy po 10 latach certyfikat wygaśnie lub urząd CA zakończy działalność, weryfikator może z matematyczną pewnością stwierdzić, że w chwili podpisywania dokumentu wszystkie warunki prawne były spełnione.
Poniżej przedstawiono procedurę generowania i weryfikacji znacznika czasu RFC 3161 za pomocą OpenSSL:
Inspekcja treści znacznika czasu (Time-Stamp Token) za pomocą openssl ts -reply:
Podpisanie dokumentu PDF w standardzie PAdES-B-LTA za pomocą biblioteki pyHanko w Pythonie:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Zaimplementowanie mechanizmu podpisywania dokumentów w standardzie PAdES-LTA zapewniło pełną moc prawną elektronicznych umów handlowych na gruncie rozporządzenia eIDAS oraz polskiego Kodeksu cywilnego. Dołączenie do struktury pliku PDF kwalifikowanego znacznika czasu zgodnego z RFC 3161 jednoznacznie potwierdziło nienaruszalność dokumentu w chwili jego parafowania. Wzbogacenie podpisu o kompletne dane walidacyjne LTV, w tym pełen łańcuch certyfikatów oraz zweryfikowane odpowiedzi OCSP ze statusem Good, umożliwiło weryfikację podpisu nawet po wielu latach od wygaśnięcia certyfikatu subskrybenta. Wybór formatu PAdES pozwolił na zachowanie doskonałej integralności wizualnej dokumentu przy użyciu standardowych czytników PDF bez konieczności instalowania zewnętrznych wtyczek. Opracowany proces stanowi w pełni bezpieczny, bezpapierowy obieg dokumentacji korporacyjnej o najwyższym poziomie wiarygodności dowodowej przed sądem.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon3 Autoryzacja i uwierzytelnianie w systemach komputerowych. Ataki na kanały transakcyjne i podpis transakcji.
Celem zadania jest zbadanie zaawansowanych wektorów ataków złośliwego oprogramowania na transakcje bankowości elektronicznej, ze szczególnym uwzględnieniem trojanów bankowych klasy Man-in-the-Browser (MitB, np. ZeuS, SpyEye, Dridex) oraz zaprojektowanie kryptograficznych mechanizmów obronnych opartych na dynamicznym podpisywaniu parametrów transakcji (Dynamic Linking / Transaction Signing / WYSIWYS - What You See Is What You Sign) zgodnie z art. 66 dyrektywy PSD2.
Studenci analizują technikę ataku, w której trojan zainfekował przeglądarkę internetową klienta za pomocą złośliwego rozszerzenia lub hooków API (DOM Injection), modyfikując numer rachunku odbiorcy w ułamku sekundy przed wysłaniem formularza do banku, podczas gdy na ekranie klienta wyświetla się pierwotny, poprawny numer. W części naprawczej studenci implementują mechanizm podpisywania danych transakcji w zewnętrznym, niezależnym kanale mobilnym (Out-of-Band Mobile Signing) z kryptograficznym wiązaniem kwoty i numeru rachunku docelowego.
Prywatny Bank Handlowy 'PoloniaBank' odnotował falę reklamacji od klientów biznesowych, którzy twierdzili, że zlecili przelewy wynagrodzeń dla swoich pracowników lub kontrahentów, a środki finansowe trafiły na zupełnie inne, nieznane rachunki bankowe. Klienci zarzekali się, że przed kliknięciem 'Wyślij' widzieli na ekranie poprawne numery kont swoich partnerów handlowych.
Szczegółowa analiza śledcza (Forensics) przeprowadzona na komputerach poszkodowanych księgowych ujawniła obecność trojana bankowego Man-in-the-Browser ukrytego pod postacią niewinnej wtyczki do przeglądarki Chrome służącej do pobierania faktur PDF. Trojan monitorował aktywność na stronie banku; w momencie naciśnięcia przycisku zatwierdzenia przelewu, skrypt w ułamku milisekundy podmieniał wartość pola nr_konta w drzewie DOM na numer konta kontrolowany przez przestępców.
Co gorsza, dotychczasowy mechanizm autoryzacji SMS przesyłał kod w postaci: 'Kod autoryzacyjny do operacji: 819201'. Ponieważ treść SMS nie zawierała ani kwoty, ani numeru rachunku, zdezorientowana księgowa przepisywała kod z telefonu, nieświadomie autoryzując sfałszowany przelew na kwotę 250 000 zł.
Komisja Nadzoru Finansowego nakazała bankowi natychmiastowe wdrożenie mechanizmów Dynamicznego Wiązania Transakcji (Dynamic Linking) wynikających z norm RTS dyrektywy PSD2.
Grupa laboratoryjna przyjmuje zadanie zespołu bezpieczeństwa bankowego. Studenci muszą zasymulować atak MitB w środowisku testowym (skrypt wstrzykujący kod do DOM), a następnie zaprojektować i zaimplementować architekturę Transaction Signing: wyliczanie unikalnego kodu autoryzacyjnego powiązanego kryptograficznie (HMAC-SHA256) z kwotą i ostatnimi cyframi konta odbiorcy oraz wymuszenie prezentacji tych danych na ekranie niezależnego urządzenia autoryzującego.
Standard Dynamic Linking (dynamicznego wiązania) wprowadzony przez PSD2 wymaga, aby kod uwierzytelniający był unikalny dla każdej konkretnej transakcji i ściśle powiązany z kwotą oraz odbiorcą. Oznacza to, że kod wygenerowany dla przelewu 100 zł na konto A jest matematycznie bezużyteczny dla przelewu 100 zł na konto B, ani dla przelewu 10 000 zł na konto A. Nawet jeśli trojan MitB zdoła przechwycić kod autoryzacyjny, nie może go użyć do sfałszowania żadnego innego przelewu.
Poniżej przedstawiono implementację algorytmu Dynamic Transaction Signing w języku Python:
Symulacja wstrzyknięcia złośliwego kodu przez trojana MitB w konsoli przeglądarki:
Odpowiedź serwera bankowego odrzucająca transakcję z naruszonym wiązaniem dynamicznym:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Praktyczna analiza zachowania trojana bankowego typu Man-in-the-Browser wykazała, że złośliwy skrypt wstrzyknięty w proces przeglądarki jest w stanie niezauważalnie podmienić docelowy numer rachunku IBAN w formularzu przelewu. Tradycyjne hasła jednorazowe okazały się bezskuteczne, o ile użytkownik bezrefleksyjnie przepisywał kod autoryzacyjny bez weryfikacji danych operacji. Skutecznym środkiem obronnym okazało się wdrożenie mechanizmu dynamicznego łączenia, w którym kod uwierzytelniający jest kryptograficznie zależny od kwoty oraz docelowego numeru konta. Przeniesienie autoryzacji do bezpiecznej aplikacji mobilnej z technologią RASP i czytelną prezentacją szczegółów przelewu uniemożliwiło przeprowadzenie ataku nawet na zainfekowanym komputerze użytkownika. Zaprojektowana architektura eliminuje kluczowe wektory nadużyć finansowych i spełnia rygorystyczne wytyczne Rekomendacji KNF dotyczące bezpiecznej bankowości elektronicznej.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon2 Warunki zapewnienia integralności i autentyczności informacji. Podpisywanie żądań API.
Celem zadania jest zaprojektowanie, zaimplementowanie i przetestowanie bezpiecznego protokołu komunikacji międzysystemowej dla bramki płatności internetowych (Payment Gateway API) łączącej tysiące sklepów e-commerce z operatorem rozliczeniowym. Studenci badają anatomię ataków na interfejsy finansowe: ataki powtórzeniowe (Replay Attacks), ataki modyfikacji parametrów zamówienia (np. zmiana kwoty przelewu lub statusu płatności z PAID=false na PAID=true w locie) oraz podsłuch w kanale komunikacyjnym.
W ramach laboratorium studenci implementują mechanizm kryptograficznego podpisywania każdego żądania HTTP (Request Signing) za pomocą kodów uwierzytelniania wiadomości HMAC-SHA256, wdrożenie jednorazowych liczb losowych (Nonce) z pamięcią podręczną Redis oraz znaczników czasu (Timestamp Tolerance Window max. 300 sekund). Projekt uczy weryfikacji integralności ładunku JSON oraz bezpiecznego zarządzania współdzielonymi sekretami API.
Ogólnopolska sieć sklepów odzieżowych 'ModaOnline S.A.' zintegrowała swój sklep internetowy z nową bramką płatności natychmiastowych. Integracja opierała się na wywołaniach webhooków: po pomyślnym opłaceniu zamówienia przez klienta, serwer bramki płatności wysyłał żądanie POST na adres https://modaonline.pl/api/payment/webhook z treścią JSON: {"order_id": "ORD-9812", "status": "PAID", "amount": 450.00}.
Podczas audytu bezpieczeństwa testerzy przechwycili jedno legalne żądanie potwierdzenia płatności. Ponieważ webhook nie posiadał żadnego podpisu kryptograficznego ani weryfikacji tożsamości nadawcy, testerzy byli w stanie wysłać sfałszowane żądanie HTTP podające dowolny numer nieopłaconego zamówienia z parametrem "status": "PAID". Sklep natychmiast oznaczył zamówienie jako opłacone i przekazał towar do wysyłki magazynowej bez wpłynięcia ani jednego grosza na konto firmy.
Co gorsza, testerzy zademonstrowali atak powtórzeniowy (Replay Attack): przechwycili żądanie zwrotu środków (Refund API) i wysłali je do serwera bramki 100 razy z rzędu w pętli. Ponieważ interfejs nie kontrolował unikalności zapytań (brak Nonce), serwer bramki 100-krotnie wypłacił środki z rachunku sklepu na kartę klienta.
Dyrektor Finansowy spółki nakazał natychmiastowe zablokowanie wszystkich integracji webhookowych do czasu wdrożenia pancernego standardu bezpieczeństwa transakcji API wzorowanego na standardach Stripe i Amazon AWS API Signing.
Zadaniem grupy laboratoryjnej jest opracowanie bezpiecznego protokołu wymiany komunikatów: zaimplementowanie podpisywania całego ładunku JSON kluczem HMAC-SHA256, osadzenie sygnatury w nagłówku X-Signature, dodanie nagłówka ze znacznikiem czasu X-Timestamp (odrzucanie zapytań starszych niż 5 minut) oraz nagłówka X-Nonce (zapisywanego w bazie Redis na 10 minut w celu eliminacji duplikatów).
Podczas weryfikacji sygnatur kryptograficznych HMAC w aplikacjach webowych kardynalnym błędem jest stosowanie zwykłego operatora porównania ciągów (np. `if ($sig == $expected_sig)` lub `if sig == expected_sig`). Zwykłe porównanie przerywa działanie na pierwszym niezgodnym bajcie, co tworzy kanał boczny podatny na atak czasowy (Timing Attack), w którym napastnik może odgadnąć poprawną sygnaturę bajt po bajcie. Należy bezwzględnie stosować stałoczasową funkcję porównania, taką jak `hash_equals()` w PHP lub `hmac.compare_digest()` w Pythonie.
Poniżej przedstawiono implementację bezpiecznego serwera weryfikującego podpis HMAC, znacznik czasu i unikalność Nonce w języku Python:
Próba wysłania powtórzonego żądania (Replay Attack) zostaje natychmiast odrzucona przez Redis Nonce Lock:
Próba modyfikacji kwoty transakcji w locie powoduje naruszenie podpisu HMAC-SHA256:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Zaprojektowanie protokołu podpisywania żądań API za pomocą algorytmu HMAC-SHA256 zapewniło pełną integralność i niezaprzeczalność powiadomień transakcyjnych wysyłanych przez bramkę płatniczą. Deterministyczna kanonizacja parametrów żądania HTTP przed obliczeniem skrótu wyeliminowała błędy weryfikacji wynikające z różnic w formatowaniu znaków białych lub kolejności pól JSON. Połączenie kryptograficznego znacznika czasu z pięciominutowym oknem tolerancji oraz unikalnego numeru nonce skutecznie uniemożliwiło realizację ataków powtórzeniowych. Zastosowanie szybkiego rejestru kluczy jednorazowych w pamięci podręcznej Redis pozwoliło na natychmiastowe odrzucanie duplikatów żądań bez obciążania głównej bazy danych. Wdrożony mechanizm zabezpiecza platformę e-commerce przed sztucznym zatwierdzaniem fikcyjnych zamówień i stanowi standard branżowy rekomendowany przez wiodących operatorów płatności.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon4 Bezpieczeństwo protokołów komunikacyjnych i sieci komputerowych. Audyt konfiguracji TLS.
Celem zadania jest przeprowadzenie rygorystycznego, zautomatyzowanego audytu bezpieczeństwa warstwy kryptograficznej TLS (Transport Layer Security) w węzłach bramek płatniczych oraz wdrożenie całościowego utwardzenia konfiguracji (Hardening) zgodnie z wytycznymi PCI SSC (Payment Card Industry Security Standards Council) oraz rekomendacjami NIST SP 800-52 Rev. 2. Studenci analizują historyczne i współczesne podatności protokołów bezpiecznych: Heartbleed (CVE-2014-0160), CCS Injection, POODLE, DROWN, FREAK, Logjam, ROBOT oraz ataki na renegocjację sesji.
W ramach laboratorium studenci wykorzystują zaawansowane narzędzia diagnostyczne wiersza poleceń (testssl.sh, sslscan, nmap ssl-enum-ciphers) oraz oficjalne API Qualys SSL Labs do zbadania odporności serwera produkcyjnego. Zadanie obejmuje eliminację słabych szyfrów (CBC, RC4, 3DES), wymuszenie obsługi wyłącznie bezpiecznych protokołów (TLS 1.2 i TLS 1.3), wdrożenie ochrony przed atakami typu downgrade oraz automatyzację audytu w potoku ciągłej integracji CI/CD.
Operator bramki płatniczej CashFlow Polska S.A. obsługuje integracje finansowe dla ponad 500 serwisów internetowych. W ramach corocznego audytu odnowienia certyfikacji PCI DSS Level 1, zewnętrzny audytor QSA przeprowadził skanowanie infrastruktury brzegowej bramki i wykrył szereg krytycznych uchybień konfiguracyjnych.
Na interfejsie API bramki nadal aktywna była obsługa protokołu TLS 1.0 oraz słabych zestawów szyfrów z algorytmem CBC podatnych na atak Lucky Thirteen. Dodatkowo serwer akceptował niebezpieczną renegocjację sesji inicjowaną przez klienta (Insecure Client-Initiated Renegotiation), co pozwalało napastnikowi na przeprowadzenie ataku DoS polegającego na wyczerpaniu mocy procesora serwera poprzez ciągłe wymuszanie kosztownych operacji asymetrycznych.
Brak wdrożenia nagłówka HSTS oraz brak wsparcia dla mechanizmu ALPN (Application-Layer Protocol Negotiation) spowodował obniżenie oceny w teście SSL Labs do kompromitującej oceny 'B'. Audytor QSA wydał warunkową opinię negatywną, wyznaczając 7 dni na doprowadzenie konfiguracji do stanu idealnego (ocena A+ w SSL Labs), w przeciwnym razie operatorowi groziło wstrzymanie możliwości przetwarzania transakcji kartowych.
Zarząd CashFlow powołał grupę laboratoryjną w celu przeprowadzenia audytu diagnostycznego, zidentyfikowania wszystkich słabych punktów konfiguracji oraz wdrożenia pancernego profilu kryptograficznego.
Studenci muszą przeprowadzić pełne skanowanie za pomocą narzędzia testssl.sh, zinterpretować raport podatności, zmodyfikować konfigurację serwera Nginx/Apache (wyłączenie TLS 1.0/1.1, usunięcie szyfrów CBC, włączenie HSTS i OCSP Stapling) oraz powtórzyć skanowanie w celu udokumentowania osiągnięcia najwyższego ratingu A+.
Uzyskanie najwyższego ratingu A+ w audytach bezpieczeństwa TLS (np. Qualys SSL Labs lub testssl.sh) wymaga spełnienia czterech bezwzględnych kryteriów: 1) Całkowite wyłączenie protokołów poniżej TLS 1.2, 2) Akceptowanie wyłącznie szyfrów zapewniających Forward Secrecy (wyłącznie zestawy ECDHE/DHE z szyfrowaniem AEAD, zero szyfrów CBC), 3) Prawidłowo skonfigurowany certyfikat z pełnym łańcuchem zaufania i aktywnym OCSP Stapling, oraz 4) Wdrożenie nagłówka HSTS z czasem ważności minimum 6 miesięcy (max-age >= 15768000) i flagą includeSubDomains.
Poniżej przedstawiono przykładowy wynik audytu bezpieczeństwa serwera bramki za pomocą narzędzia testssl.sh po wdrożeniu utwardzenia:
Ocena ogólna ratingu bezpieczeństwa wygenerowana przez skaner audytorski:
Weryfikacja obsługi ALPN (Application-Layer Protocol Negotiation) dla HTTP/2:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Zautomatyzowany audyt bezpieczeństwa przeprowadzony za pomocą narzędzia testssl.sh pozwolił na natychmiastowe zidentyfikowanie i wyeliminowanie niebezpiecznych luk w konfiguracji TLS węzła bramki płatniczej. Wyłączenie przestarzałego wsparcia dla protokołu TLS 1.0/1.1 oraz słabych szyfrów CBC całkowicie usunęło podatności na ataki Sweet32 i Lucky Thirteen, skutkując uzyskaniem najwyższej noty A+ w teście SSL Labs. Wymuszenie algorytmów TLS 1.3 z wymianą kluczy X25519 zagwarantowało pełne utajnianie w przód dla wszystkich transakcji kartowych. Skonfigurowanie nagłówka HSTS z okresem ważności dwóch lat oraz wpisaniem domeny na globalną listę Preload zablokowało wszelkie próby obniżenia poziomu połączenia do nieszyfrowanego HTTP. Otrzymana konfiguracja stanowi wzorzec bezpieczeństwa transmisji danych finansowych, w pełni odpowiadający rygorystycznym wytycznym punktu 4.1 normy PCI DSS v4.0.
Kon1 Rodzaje i źródła zagrożeń dla systemów teleinformatycznych. Metody i środki ochrony. Kon2 Warunki zapewnienia poufności i integralności informacji. Ochrona danych w portfelach cyfrowych.
Celem zadania jest zaprojektowanie kompleksowej architektury bezpieczeństwa aplikacji mobilnego portfela elektronicznego (E-Wallet / Digital Wallet) przechowującego wirtualne karty płatnicze, tokeny płatności zbliżeniowych NFC (HCE - Host Card Emulation) oraz saldo środków cyfrowych. Studenci badają zasady ochrony danych w urządzeniach mobilnych narażonych na ataki rootowania/jailbreaku, analizę pamięci RAM (Memory Dumping) oraz inżynierię wsteczną aplikacji (Reverse Engineering).
W części technicznej zadanie obejmuje wdrożenie wielowarstwowej ochrony: integrację z bezpieczną enklawą sprzętową procesora smartfona (Hardware Security Module / Secure Enclave w iOS / Android Keystore z obsługą StrongBox), generowanie kluczy asymetrycznych powiązanych z biometrią użytkownika (User Authentication Gatekeeper), szyfrowanie bazy danych portfela algorytmem SQLCipher (AES-256) oraz implementację mechanizmów ochrony przed modyfikacją kodu w czasie działania (RASP - Runtime Application Self-Protection).
Fintech 'SmartPay Polska' uruchomił aplikację mobilnego portfela elektronicznego dla systemów Android i iOS, umożliwiającą płatności zbliżeniowe w sklepach, przelewy P2P na numer telefonu oraz przechowywanie biletów komunikacji miejskiej. Portfel gromadził dane kart płatniczych oraz tokeny autoryzacyjne w lokalnej bazie danych SQLite na smartfonie.
W trakcie audytu bezpieczeństwa testerzy pobrali aplikację ze sklepu Google Play i uruchomili ją na zrootowanym smartfonie z zainstalowanym frameworkiem Frida. Za pomocą prostego skryptu hookującego funkcje jądra testerzy zrzucili zawartość bazy SQLite z pamięci telefonu, uzyskując dostęp do tokenów sesyjnych, historii transakcji, salda oraz niezaszyfrowanych kluczy prywatnych użytkowników.
Co więcej, wykazano, że aplikacja nie posiadała żadnych mechanizmów wykrywania debugera, nie sprawdzała integralności własnego pakietu APK, a klucze szyfrujące były wyprowadzane ze stałego ciągu znaków zapisanego w kodzie aplikacji (Hardcoded Key), co pozwalało każdemu złośliwemu oprogramowaniu zainstalowanemu na telefonie na kradzież środków z portfela.
Prezes SmartPay natychmiast zawiesił działanie aplikacji i powołał grupę audytorów (zespół laboratoryjny) w celu zaprojektowania od podstaw pancernej architektury bezpieczeństwa portfela mobilnego.
Zadaniem studentów jest zaprojektowanie schematu ochrony: wdrożenie bezpiecznego przechowywania kluczy w sprzętowej enklawie Android Keystore / Apple Secure Enclave (gdzie operacja kryptograficzna wymaga uwierzytelnienia biometrycznego), zaszyfrowanie bazy SQLite za pomocą SQLCipher (AES-256 z kluczem wygenerowanym w Keystore), wdrożenie mechanizmów wykrywania root/jailbreak oraz implementacja dynamicznej tokenizacji transakcji NFC.
W architekturze nowoczesnych portfeli cyfrowych kluczowym standardem jest oddelegowanie operacji kryptograficznych do bezpiecznej enklawy procesora (Secure Enclave / StrongBox). Aplikacja mobilna nigdy nie zna surowego klucza prywatnego ani klucza deszyfrującego bazę. Zamiast tego aplikacja żąda od systemu operacyjnego: 'Zaszyfruj/podpisz te dane za pomocą klucza X'. System operacyjny uruchamia moduł biometrii (odcisk palca), weryfikuje użytkownika sprzętowo i dopiero wtedy koprocesor kryptograficzny wykonuje operację, uniemożliwiając kradzież klucza nawet przy pełnym przejęciu kontroli nad systemem Android przez złośliwe oprogramowanie.
Poniżej przedstawiono przykładową implementację inicjalizacji zaszyfrowanej bazy SQLCipher z kluczem pobieranym ze sprzętowego Keystore w języku Kotlin/Java:
Próba odczytania zaszyfrowanej bazy portfela przez napastnika za pomocą standardowego narzędzia sqlite3:
Wykrycie próby podłączenia frameworka Frida przez moduł RASP i natychmiastowe zamknięcie aplikacji:
Poniższa lista zawiera propozycje zagadnień i wniosków technicznych, które warto uwzględnić w sprawozdaniu z tego zadania:
Przykładowe wnioski (wzór do sprawozdania): Zaprojektowanie architektury mobilnego portfela cyfrowego w oparciu o sprzętową enklawę bezpieczeństwa zagwarantowało całkowitą izolację kluczy kryptograficznych od systemu operacyjnego urządzenia. Zastąpienie rzeczywistego numeru karty dynamicznym tokenem urządzenia uniemożliwiło wykorzystanie przechwyconych danych transakcyjnych w innym kanale płatniczym. Każda operacja zbliżeniowa NFC z wykorzystaniem technologii HCE wymaga wygenerowania jednorazowego kryptogramu dynamicznego, którego odtworzenie przez podsłuchującego jest matematycznie niemożliwe. Wymuszenie autoryzacji biometrycznej chronionej sprzętowo zapobiegło realizacji płatności w przypadku fizycznej kradzieży odblokowanego smartfona. Wdrożone mechanizmy spełniają najwyższe standardy konsorcjum EMVCo i zapewniają użytkownikom maksymalne bezpieczeństwo środków finansowych.