Blog

Jak działają hasła maskowane?

masz pytania? napisz do nas
Hasła maskowane 13 października, 2021

Wprowadzenie

Zapewne większość z was posiada konta bankowe na których znajdują się wasze oszczędności. Przez fakt, że nie żyjemy w świecie idealnym, w którym każda jednostka może czuć się w 100% bezpiecznie,
powstał system autoryzacji użytkowników za pomocą tak zwanego loginu oraz hasła.

W bankowości internetowej, słowo „Login”, zastąpiono pojęciem „CIF”. Jest to nic innego jak unikalny identyfikator klienta. Zazwyczaj jest to losowy ciąg liczbowy,
generowany przez system bankowy. Tak naprawdę, same nazewnictwo nie odgrywa obecnie żadnej znaczącej roli. Jedyną kwestią, na której powinno zależeć naszemu usługodawcy, to zapewnienie nam bezpieczeństwa.

Dlatego, gdy dla przykładu próbujemy zalogować się do systemu Alior Banku, jesteśmy proszeni o podanie np. 1, 4, 7 znaku naszego hasła.

W jaki sposób odbywa się to od strony technicznej? Tu właśnie z pomocą przychodzą

Hasła maskowane

Jest to dość nietypowy sposób zabezpieczania dostępu do systemu. Z całą pewnością, sens ich wdrażania do niektórych systemów – mija się z celem.

Niemniej, jeżeli chodzi o ich poziom bezpieczeństwa – jeżeli oczywiście wdrażane są w sposób prawidłowy, potrafią ochronić znaczną część bazy w przypadku wycieku danych

A zatem, przejdźmy do sedna.

Sposób działania

Aby go zrozumieć, musimy posłużyć się podstawami matematyki z czasów szkoły podstawowej. Użyjemy do tego celu podstaw geometrii liniowej.

Proszę wyobrazić sobie prostą, przechodzącą przez punkt A = (x, y) oraz punkt B = (x1, y1). Dla przypomnienia, prostą przechodzącą przez dany punkt,
wyznacza wzór y = ax + b.

Posiadając już tą wiedzę, możemy przejść dalej

Praktyka

Wyznaczenie punktów na tej prostej powinniśmy zacząć od wybrania czterech losowych liczb (po dwa na każdy punkt). Dla łatwiejszego zrozumienia zagadnienia,
będziemy posługiwać się prostymi liczbami.

Powiedzmy zatem, dla większej klarowności prezentacji, że dla punktu A = (0, 2) oraz B = (-2, 0)

W dalszej kolejności przyjmujemy, że użytkownik, wpisujący się do systemu, miał hasło przetrzymywane w bazie danych – abc.
Musimy teraz zamienić te znaki na kod ASCII. Po wykonanej czynności, otrzymamy następujący wynik

  • a -> 97
  • b -> 98
  • c -> 99

Kolejnym krokiem, będzie naniesienie na naszą prostą przechodzącą przez punk A oraz B, naszego hasła.

Uwaga, każdy punkt odpowiadać może wyłącznie jednej literze naszego hasła.

Rozmieszczamy je w sposób w zupełności losowy. Na poniższym zdjęciu przedstawiam jak powinno to wyglądać

Początkowe punkty na osi

Niebieskie punkty na osi, to nasze punkty początkowe, do których będziemy odnosić nasze równania oraz sprawdzać poprawność wpisane hasła do tego, które znajduje się w bazie danych.

Czerwone natomiast, są to punkty odpowiadające poszczególnym znakom naszego hasła. Przypominam, że zostały rozmieszczone w sposób losowy,
dlatego nie doszukujcie się tutaj jakiegokolwiek wzoru.

Zakodowanie hasła

Teraz, czeka nas najtrudniejsza część w procesie wdrażania tego rozwiązania. Musimy do naszej współrzędnej x oraz y wstawić wartość punktu C,
później tak samo D oraz E. Pokaże to na poniższym przykładzie

C = (2, 4),
D = (4,6),
E = (8,10)

Teraz, musimy od naszej współrzędnej y, odjąć liczbę, odpowiadającej jej znaku ascii. Dla przypomnienia, każdy punkt na osi, odpowiada wyłącznie jednemu znakowi hasła

Dlatego, od współrzędnej y punktu C, odejmujemy 97, od D 98, od E 99

C = (2, -93)
D = (4, -92)
E = (8, -89)

Gratuluję, właśnie otrzymaliśmy zakodowaną wersję naszego hasła.

No świetnie, ale w jaki sposób mamy teraz porównać zakodowane hasło, które znajduje się w bazie do tego, co wpisał użytkownik?

Deszyfracja

Przyjmijmy, że hasło wpisane w formularzu autoryzacji brzmi qwe

W tym momencie, wykonujemy tą samą czynność, którą wykonywaliśmy przy zakodowaniu hasła. Zamieniamy każdy znak hasła na kod ASCII.

W tym przypadku, będzie to:

  • q -> 113
  • w -> 119
  • e -> 101

Teraz, do informacji, które znajdują się w bazie danych, dodaje do każdego z punktów dla współrzędnej y wartości, które wpisał użytkownik,
posługując się kodami ASCII. Będzie to wyglądać w sposób następujący.

Uwaga! Dla wyliczonych wartości, tworzę nowe punkty na osi. Później, będziemy je nanosić na oś.

G = (2, 20),
H = (4, 27),
I = (8, 12)

Po naniesieniu ich na oś, otrzymujemy następujący wynik

Rozkodowanie hasła maskowanego

Jak możemy zauważyć, punkty te, nie dość, że nie są w równej linii, to dodatkowo, gdy poprowadzimy prostą przechodzącą przez punkty G oraz H,
punkty dalej nie przetną osi Y w miejscu, w którym została ona przecięta na samym początku

Walidacja danych

Jak widzimy na powyższym obrazku, proste nie przecięły osi Y w miejscy, w którym została ona przecięta na samym początku. Oznacza to ni mniej ni więcej, że hasło wpisane przez potencjalnego użytkownika,
jest niepoprawne i nie może on zostać wpuszczony do systemu i należy poinformować go, o błędnych danych.

Pojawia się tutaj niestety mały problem techniczny. Mianowicie chodzi tutaj o to, co powinniśmy trzymać w bazie danych, aby mieć z czym porównywać dane wprowadzone przez użytkownika

Przede wszystkim musimy trzymać współrzędne punktów. Niestety, co wydaje się być przykrą wiadomością i poniekąd tak jest – musimy trzymać dokładnie tyle samo punktów,
ile liter znajduje się w haśle. Co to oznacza z punktu widzenia bezpieczeństwa? Jeżeli potencjalny haker włamie się do naszego systemu, już pierwszym rzutem oka będzie w stanie stwierdzić,
nie tyle co jakie jest hasło, co jego długość.

Poza tym, że musimy trzymać te punkty, przydałoby się posiadać informacje na temat wartości zmiennej b równania. Dlaczego? Cóż, bez niej trudno będzie wykonać sprawdzenie poprawności.

Podsumowanie

Cóż, wygląda na to, że to tyle na dziś. Post był tak długi tak naprawdę z dwóch powodów.

  1. Z chęci wyjaśnienia samego pojęcia haseł maskowanych
  2. Z chęci pokazania podstawowych mechanizmów ich wykorzystania po stronie technicznej.

Mamy nadzieję jednak, że dzięki temu wpisowi, zaznajomiłeś się drogi użytkowniku z samą ideą ich stosowania.
Jeżeli samemu chcesz spróbować, odpowiedz sobie najpierw na pytanie – po co.

Nie zawsze bowiem jest to najlepsze rozwiązanie i znacznie lepiej jest użyć haseł hashowanych bądź szyfrowanych.

Dziękujemy za dotrwanie do końca i do zobaczenia w kolejnym artykule 🙂

Pozdrawiamy,
Zespół EncodeIT.

Tagi: ,

Kategorie,