Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Banki i szyfrowanie plików – który składnik lepszy: hasło czy wykorzystanie numeru PESEL?

14 lutego 2024, 20:33 | W biegu | komentarzy 16

Wielu ludzi otrzymuje ostatnio informacje z PKO TFI dotyczące hasła do przesyłanego załącznika w formacie PDF o treści:

Ze względów bezpieczeństwa załącznik został zaszyfrowany, aby uniemożliwić dostęp do pliku osobom trzecim. Hasłem dostępu do pliku jest ciąg 11 znaków wyznaczonych w oparciu o imię i nazwisko oraz datę urodzenia. Wprowadź je w następującej kolejności:

MM – miesiąc urodzenia

AB – pierwsza i ostatnia litera imienia [wielka litera]

RRR – trzy ostatnie cyfry z roku urodzenia

AB – pierwsza i ostatnia litera z nazwiska [wielka litera]

DD – dzień urodzenia.

Przykład: imię i nazwisko: Jan Testowy, data urodzenia: 3 lipca 1965 r. -> hasło do pliku: 07JN965TY03.

Jest to niewątpliwie zmiana w stosunku do spotykanego zwykle do tej pory szyfrowania dokumentów przy pomocy numeru PESEL odbiorcy, ale czy faktycznie z korzyścią dla bezpieczeństwa?

Teoretycznie powinno być bezpieczniej – PESEL to 11 cyfr, a w tym przypadku mamy także 11 znaków – 7 cyfr oraz 4 litery.

Metoda prognostyczna – algorytm naiwny

Licząc metodą naiwną, czyli dopuszczając dowolną cyfrę na dowolnej pozycji, PESEL ma 1011, czyli 100 miliardów kombinacji. Polski alfabet ma 32 litery, do tego pewnie warto dołożyć Q, V oraz X, które mogą wystąpić w egzotycznych imionach lub nazwiskach. Zatem w przypadku hasła utworzonego opisaną metodą, mamy 107 – wynikające z 7 cyfr – pomnożone przez 354 – wynikające z czterech liter – możliwych kombinacji. Rozpisując:

10*10*35*35*10*10*10*35*35*10*10. 

Czyli nieco ponad 15 trylionów. I jednocześnie 150 razy więcej, niż w przypadku numeru PESEL.

Optymalizacja

Atakujący nie ma jednak potrzeby sprawdzania wszystkich możliwych kombinacji. Numer PESEL posiada bowiem określoną strukturę. Sześć początkowych cyfr koduje rok, miesiąc i dzień urodzenia. Kolejne cztery są numerem serii, przy czym czwarta zależy dodatkowo od płci. Ostatnia cyfra w numerze PESEL jest wyliczana na podstawie sumy kontrolnej. 

Atakujący może zatem skorzystać z generatora numerów PESEL, aby wygenerować jedynie poprawne numery PESEL, co zmniejszy ich liczbę. Uruchomienie polecenia:

pypy3 pesel-generator.py -s 1900 -e 2024 | wc -l

pokaże nam – w ciągu niecałych 4 minut – że liczba kombinacji do sprawdzenia to „raptem” 457 milionów.

W przypadku wersji z hasłem także możliwe są optymalizacje. Atakujący może ograniczyć miesiąc do 12 wartości, trzy ostatnie cyfry z roku urodzenia do 200 wartości (pierwszą cyfrą będzie 0 lub 9), a dzień urodzenia – nie myśląc zbyt wiele – do 31 wartości.

Zatem realna ilość kombinacji do sprawdzenia to 12 * 352 * 200 * 352 * 31, czyli nieco ponad 111 miliardów kombinacji. Wykorzystać może program hashcat

hashcat -a3 -m 10500 plik_z_hashem.txt -1 AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWYXZŹŹ -2 01 -3 90 -4 0123 ?2?d?1?1?3?d?d?1?1?4?d

Dla podanej maski, z uwagi na pewne uproszczenia pokrywającej blisko 300 miliardów kombinacji, szacowany czas obliczeń to 13,5 godziny. Na nienajlepszym do tego celu laptopie – Macbook M1 Pro osiągającym prędkość 6124 kH/s dla tego typu hasha. Z pewnością atakujący będzie dysponował mocniejszym sprzętem.

Można oczywiście próbować dalszych optymalizacji. Luty ma 28 dni, część miesięcy 30, nie 31 dni, imię ani nazwisko nie kończy się raczej na ą, ę, czy nawet ó. Trzeba jednak pamiętać, by nie przesadzić z optymalizacją – wbrew pozorom nie wszystkie imiona żeńskie używane w Polsce kończą się na literę a. Widzimy jednak nadal wyraźną przewagę wersji z hasłem, jeśli chodzi o przestrzeń rozwiązań.

Podsumowanie

Wersja z hasłem jest więc na papierze bezpieczniejsza, niż wersja z wykorzystaniem numeru PESEL. Ale czy tak jest faktycznie?
Nie można zapomnieć o innych możliwościach poznania hasła. Atakujący raczej będzie wiedział, czyje hasło próbuje odgadnąć. W takiej sytuacji litery imienia i nazwiska są po prostu znane, a ich wkład w siłę hasła jest żaden.
Datę urodzenia atakujący może z kolei łatwo poznać przeprowadzając małe badanie OSINT, na przykład na Facebooku. Jest spora szansa na to, że znajdzie życzenia zdjęcia z imprezy, okolicznościowy wpis czy życzenia urodzinowe składane przez znajomych. W takiej sytuacji wersja z numerem PESEL będzie bezpieczniejsza.

Jak widzimy, obie wersje mają swoje poważne słabości. Najbezpieczniejszym rozwiązaniem byłoby ustanowienie hasła do szyfrowania dokumentów przez samego użytkownika.

~Paweł „Róża” Różański

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Piotr

    A rozwiązanie jest bardzo proste – tak jak niektóre banki niech pozwolą ustawić własne hasło.

    Albo niech wysyłają hasło jednorazowe SMS-em

    Nigdy nie rozumiem co ma dać ustawianie hasła typu pesel czy inne dziwactwa jak w artykule :|

    Odpowiedz
    • Tak, zdecydowanie ustawienie hasła przez użytkownika jest najbezpieczniejszym rozwiązaniem. Niestety, jest dość trudne organizacyjnie – trzeba nakłonić wszystkich użytkowników do ustawienia tego hasła. Jeśli nie jest to wymuszane przy zakładaniu konta w serwisie, a dodatkowo istnieje narzucony termin wysłania danych, robi się nieciekawie.

      Ad. „hasło jednorazowe SMSem” – hasło do pliku czy archiwum to nie hasło jednorazowe. Dlatego byłbym ostrożny z wysyłaniem hasła SMSem. SMSy są dobre do krótkich, jednorazowych kodów. Łatwo je przepisać i nie muszą być tak odporne na ataki siłowe. Boję się, że hasła wysyłane SMSem byłyby krótkie, schematyczne, trudne do wpisania. Albo wszystko naraz. ;-)
      Oraz: trzeba mieć aktualny numer telefonu do wysyłki SMS…

      Odpowiedz
    • Asd

      Ponieważ to jest do automatycznego „ogarniecia” bez kontaktu z klientem.
      Czyli mniej kasy trzeba na obsługę procesu wydać.

      Odpowiedz
  2. wk

    Udziwnili, nie ulepszyli

    Odpowiedz
  3. Oczywiście e-mail zaczyna się od „Dzień Dobry, Paweł Różański”. ;)

    Gdyby komuś przyszedł do głowy pomysł stosować takie rozwiązanie u siebie, notka praktyczna: niektóre algorytmy mają z góry ustalone kodowanie (np. bcrypt), ale wiele nie ma. Efekt: odbiorca z nietypowym imieniem lub nazwiskiem, a nawet w Polsce żyją osoby z é czy ö, może nie dać rady odszyfrować.

    Smutna część jest taka, że autor rozwiązania wierzy, że zmiana kolejności symboli wpłynęła na zwiększenie bezpieczeństwa hasła. Hasło z pełną datą byłoby łatwiejsze do wpisania i *opisania*, a efekt byłby ten sam.

    Odpowiedz
  4. Piotr

    to chyba nie do końca tak, że atakujący zna osobę atakowanego,
    tego typu zabezpieczenie ma chronić przed wysłaniem informacji na adres mailowy nieuprawnionego odbiorcy, a sama treść maila nie identyfikuje danych osoby.
    zapewne chodziło, o to, aby złamane hasło do pliku pdf przez przypadkowego, błędnego odbiorcę wiadomości nie ujawniło PESEL, zresztą KNF wydał w 2021 i 2022 roku stanowisko, w którym dość ostro nakazuje niewykorzystywanie LESEL ani jego fragmentów do hasłowania plików.
    przed atakiem ukierunkowanym na skrzynkę pocztową nie ochroni nas hasło żadnego typu a obiekt ataku i tak będzie znany

    Odpowiedz
  5. Michał

    Tytuł artykułu trochę wprowadza w błąd.

    PeKaO TFI to jest PeKaO Towarzystwo Funduszy inwestycyjnych i zajmuje się ono zarządzaniem funduszami inwestycyjnymi (w tym również PPK – pracowniczymi programami kapitałowymi, których ten mailing dotyczył).
    TFI działa na podstawie ustawy o funduszach inwestycyjnych, a banki na podstawie ustawy prawo bankowe. Oczywiści PeKaO TFI to podmiot zależny od banku PeKaO S.A.

    Z tego względu nazwa (oraz tag) tego artykułu jest co najmniej nieprecyzyjna.

    Odpowiedz
  6. Wróżka

    Ułuda większego bezpieczeństwa.
    Do tego skórka nie warta wyprawki.
    Nie ze względu na zawartość pliku tylko na utrudnienia dla usera przy „mizernym” efekcie.
    Kilka godzin. Lepiej niż pesel, ale ogólnie to śmieszne działania, takie z klapkami na oczach.
    Ehhh

    Odpowiedz
  7. pocoto

    Czy to jakiś bzdurny wymóg prawny wysyłanie tych wyciagów mailem?
    Każdy klient ma konto. systemie więc mailem powinien iść komunikat: wygenerowalismy wyciąg , zaloguj się i pobierz sobie z zakladki: ..

    Odpowiedz
    • Art. 728 §2 KC.

      Jeżeli taka jest twoja wola, możesz zmienić hasło lub wyłączyć przesyłanie całych wyciągów, w zależności od opcji oferowanych przez bank, lub złożyć do banku wniosek o wprowadzenie stosownej opcji. Ale to ma być twoja wola, nie przymus ze strony banku; i to gwarantuje w/w artykuł.

      Odpowiedz
  8. Zbyszek

    pesel-generator.py -s 1900 -e 2024
    Trochę naciągane progi. Chyba że mialo pasować do artykułu…już widzę 124latka i noworodka w TFI ;)

    Odpowiedz
  9. GDR!

    Nie było jeszcze komentarza o PGP, więc – dla porządku – zostawiam. Nawet Facebook udostępnił możliwość wklejenia swojego klucza i otrzymywania zaszyfrowanych powiadomień.

    Odpowiedz
  10. Marcin

    Po pierwsze, nie 15 trylionów, bo 10*10*35*35*10*10*10*35*35*10*10 = 1.5* 10^13
    Bilion to 10^12, czyli 15 bilionów

    Dodatkowo poprawcie mnie jeśli się mylę, ale jest też błąd w samym równaniu „10*10*35*35*10*10*10*35*35*10*10”
    – pierwsza 10tka nie powinna byc 10 tylko 2 (ponieważ można mieć miesiące od 0X do 1X, a nie od 0X do 9X)
    – trzecia 10tka nie powinna być 10 tylko bliżej max 3 (licząc, że żyje jeszcze ktokolwiek z 18XX roku); realnie jest to 2 (19XX oraz 20XX)
    – przedostatnia 10stka też nie powinna być 10 tylko 4, bo dni w miesiącu jest od 01 do 31.

    Zatem finalne równanie to: „2*10*35*35*3*10*10*35*35*10*4”
    dając około 360 mld kombinacji, a nie 15 bilionów

    Odpowiedz
    • Imię *

      Pewnie użył krótkiej skali (bez -ardów), jak w angielskim. Miliard to „billion”, bilion to „trillion”, biliard to „quadrillion” itd.

      Odpowiedz
    • Tak, masz rację w kwestii nazewnictwa. Prawidłowo po polsku będzie 15 bilionów. Prawdopodobnie spolszczyłem angielskie trillion na trylion, zapominając o „przesunięciu” wartości. Dzięki!

      W równaniu nie ma błędu, podejście naiwne oznacza po prostu „cyfra na danej pozycji”. Wersja zoptymalizowana – nieco bardziej – jest opisana nieco później.

      Odpowiedz

Odpowiedz