Braliście kiedyś coś w sklepie „na zeszyt”?

Jeśli kupujecie w supermarketach, to pewnie nie, ale gdy ktoś z Was kupował w osiedlowym warzywniaku pół kilograma marchewki i akurat zapomniał portfela, to być może wtedy życzliwa ekspedientka pani Halinka uruchamiała „procedurę zeszytu”: – Panie Stasiu, ja tu sobie zapiszę, że pan winien 3 złote, pan odda przy następnej okazji – i wpisywała w kajecik: Stasiu Malinowski z Mickiewicza, 3 zł.

Tak było do niedawna, ale pojawiło się… RODO.

Pan Stasiu uznał, że nie powierzy pani Halince danych osobowych, do których dostęp mogła też mieć pani Zosia, wścibska sąsiadka, która także robiła zakupy w warzywniaku. Zaraz by całe osiedle wiedziało, że Stasio spod siódemki ma długi! Ale myślicie, że nasz bohater zrezygnował z „procedury zeszytu”? Ha! W żadnym wypadku! – Pani Halinko, pani zaszyfruje moje dane – zszokował ekspedientkę pomysłem. – Niech pani zapisze zamiast marchewki cyfrę 1, zamiast selera cyfrę 5, Stasiu to będzie litera Z a mój adres zastąpimy literą P, zamiast kwoty do zapłaty damy literę R! Pani wie, co oznaczają te cyfry i litery i ja wiem, a nikt inny się nie domyśli! Pani Halinka dodatkowo odpowiednio sobie zaznaczyła wpis w zeszycie, tak aby wiedzieć czy nikt nic przy nim nie kombinował. W ten oto sposób powstał nam całkiem ciekawy zbiór danych.

W osiedlowym warzywniaku pomysł się jednak nie przyjął, ale chyba rozmowę musiał podsłuchać ktoś związany z Satoshi Nakamoto – twórcą bitcoina (bądź twórcami – bo nie wiadomo do tej pory, czy nazwa ta oznacza pojedynczą osobę czy grupę). Fakt, ideę nieco rozwinęli, ale zasada działania pozostała zbliżona.

Co dokładnie łączy metodę pana Stasia oraz kryptowaluty, o tym napiszemy już w następnych odcinkach IT po ludzku, a w ramach wprowadzenia dziś podrzucamy kilka terminów, którymi na pewno zabłyśniecie przy piwie ze znajomymi.

Zaczynamy od, uwaga, kryptograficznej funkcji skrótu.

Funkcja skrótu – inaczej nazywana funkcją mieszającą lub haszującą – to funkcja, dzięki której „ukryjemy” treść dowolnych rozmiarów wiadomości, przyporządkowując jej właśnie skrót, czyli ciąg znaków, co ważne, o określonej długości i niewielkich rozmiarów. Pozostając w branży spożywczej – to taka maszynka do mięsa, do której wrzucamy kawałek szynki, a z drugiej strony wychodzi nam mielonka, która nadal jest szynką, ale tak zmiksowaną, że nie jesteśmy w stanie określić od razu, jakim mięsem i o jakiej strukturze była wcześniej. Wiemy jednak, że ile razy byśmy nie wrzucili tej samej szynki – dostaniemy tą samą mielonkę. Innymi słowy – otrzymujemy bardzo dobrze zakodowaną szynkę.

Naszą maszynką do mielenia w świecie IT jest kryptograficzna funkcja skrótu.

Jest ona funkcją szczególną, bo możemy jej używać do zadań kryptologicznych, czyli np. możemy przechowywać w bezpieczny sposób na serwerze nasze hasła. I nieważne, czy będziemy mieć hasło „Kasia2020” czy „dhT&60K@@5” – i w jednym i w drugim przypadku przechowywany będzie ciąg znaków tej samej długości bardzo trudny do odwrócenia. Gdy będziemy się logować do poczty, system przetworzy wprowadzone przez nas hasło na skrót i jeśli ten skrót będzie identyczny z tym na serwerze, system pozwoli się nam zalogować (o soleniu haseł napiszemy w kolejnych częściach IT po ludzku). W przypadku wycieku danych z bazy, na światło dzienne wyjdzie tylko skrót naszego hasła a nie samo hasło. Dlaczego to takie ważne? Odpowiedz sobie drogi czytelniku, czy przypadkiem nie masz jednego hasła do wielu serwisów? Jeśli odpowiedź brzmi ‘tak’- zmień to proszę i to jeszcze dzisiaj. To dla twojego bezpieczeństwa. Rozumiem, że wiele haseł implikuje problem z ich zapamiętaniem. Głupio by było je zapisać na żółtej karteczce i przykleić do monitora. Wykorzystaj więc proszę aplikację typu pęk kluczy.

Na podobnych zasadach zachodzi uwierzytelnianie za pomocą podpisów cyfrowych.

Skrót będzie wyglądał na przypadkowy ciąg znaków, dlatego nie jesteśmy w stanie wywnioskować, jak wyglądała wiadomość wejściowa – ta cecha nazywana jest jednokierunkowością. Ale to za mało, żeby dane były bezpieczne – bardzo istotna jest odporność na kolizje. Sprawa jest prosta – powinno być bardzo ciężko znaleźć dwie różne wiadomości dające ten sam skrót. Jeśli dla słów ‘hasło’ oraz ‘password’ otrzymywany by był ten sam skrót to bez różnicy byłoby przy logowaniu co wpiszemy. Trochę to niebezpieczne aby wiele kluczy otwierało naszą skrzynkę pocztową. Otrzymywanie tego samego skrótu dla różnych wiadomości nazywane jest właśnie kolizją. Czy da się stworzyć funkcję skrótu która nie będzie miała kolizji? Nie! Tę kwestię, o czym pani Halinka może nie wiedzieć, wyjaśnia zasada szufladkowa Dirichleta, która mówi, że jeśli mamy dziesięć szuflad, a chcemy do nich włożyć jedenaście par skarpetek, to w którejś szufladzie będą musiały znaleźć się co najmniej dwie pary (tak naprawdę Dirichlet nie mówił o skarpetkach, ale istota zasady jest właśnie taka). Pamiętajmy że nasze hasła to dowolne ciągi znaków (niemal nieskończony zbiór skarpet) a skrót to jego reprezentacja w postaci skończonego ciągu znaków (ilość szuflad w normalnej komodzie).

A od pana Stasia, kryptograficznej funkcji skrótu i zasady szufladkowej Dirichleta już całkiem blisko do technologii blockchain i bitcoina. Serio! Przekonamy Was o tym w następnych odcinkach IT po ludzku. Zapraszamy!

Michał Krupka

React Developer, CTO

Poznajmy się bezpośrednio.
Zapraszam Cię do kontaktu.
praca@netins.it