Bezpieczeństwo IT

Kryptografia w menedżerze haseł perc.pass

avatar
Jakub Derda
IT Technical Consultant

Powiązane usługi

Tagi

Kryptografia a perc.pass

Zawartość:

Kryptografia

Czym jest klucz kryptograficzny?

Dlaczego nie można szyfrować samymi hasłami? Przecież to też bity

Po co to wszystko

Kiedy rozpoczynaliśmy przygodę z realizacją pomysłu na webowy menedżer haseł, w zespole panowała atmosfera ogromnej ekscytacji, mieszająca się z gradem pomysłów na rozwiązanie codziennych problemów użytkowania cyfrowego świata. Świadomość odpowiedzialności za hasła użytkowników przyszła później.

Gdy nadszedł moment realizacji, kiedy trzeba było pogłówkować w jaki sposób spełnić te wszystkie pięknie brzmiące pomysły, okazało się, że problem zdecydowanie nie jest trywialny. Właśnie wtedy zaczynaliśmy odkrywać, dlaczego do tej pory w Polsce nikt nie podjął wyzwania i na naszym rodzimym podwórku nie udało się znaleźć polskiego menedżera haseł.

W tym, ale i w przyszłych artykułach, postaram się przedstawić z technicznie analitycznego punktu widzenia to, jak sprawiliśmy, by perc.pass był bezpiecznym kryptosystem oraz by operacje były jak najbardziej rozproszone ( czyli by działo się to po stronie użytkownika).

Zanim jednak przejdę do najbardziej interesujących merytorycznie zagadnień, postaram się wytłumaczyć w prostych słowach wszystkie niezbędne zagadnienia, technikalia i standardy potrzebne do zrozumienia pomysłu na zabezpieczenie danych organizacji. Tematy, które będę poruszać w 100% odpowiadają implementacji produktu i wpisują się we wszystkie wymagania związane z RODO, ISO:27001 oraz spełniają zalecenia organizacji zajmujących się cyberbezpieczeństwem.

To czym jest ta kryptografia?

W ścisłym sensie jest to gałąź wiedzy z pogranicza matematyki i informatyki o utajnianiu wiadomości. Nie chodzi tutaj o ukrywanie faktu jej istnienia. Kryptografia ma uchronić wiadomość przed nieuprawnionym dostępem, nawet gdy inni mają dostęp do całej informacji (szyfrogramu).

Techniki kryptograficznie wykorzystują wiele dobrze znanych algorytmów szyfrowania, które są funkcjami matematycznymi opartymi zwykle na solidnych podstawach matematycznych. I to właśnie one dokonują właściwego szyfrowania lub deszyfracji. Dobre algorytmy są z reguły publicznie znane, a ich moc oparta jest na tajności zastosowanych kluczy.

Klucz kryptograficzny?

Tak, w kryptografii używa się kluczy, które podobnie jak te do kłódek, strzegą dostępu do naszych danych. Tym terminem zwykło się określać używany przez algorytm ciąg bitów do przekształcania danych z postaci jawnej do zaszyfrowanej lub na odwrót. Ich długość stanowi bardzo ważny parametr w systemach kryptograficznych, ponieważ im są one dłuższe, tym zapewniają większe bezpieczeństwo i trudniej je odgadnąć, natomiast wprowadza to dodatkowy narzut na czas wykonywania operacji, więc konieczny jest kompromis.

Algorytmy kryptograficzne, ze względu na wykorzystywane klucze, dzieli się obecnie na 2 grupy:

  • algorytmy symetryczne
  • algorytmy asymetryczne
kryptografia w menedżerze haseł - schemat szyfrowania symetrycznego

Kryptografia symetryczna do szyfrowania i deszyfrowania wykorzystuje dokładnie ten sam klucz, który jest uzgodniony jeszcze przed rozpoczęciem komunikacji przez obydwie strony. Klucz bezwzględnie musi pozostać znany jedynie stronom w komunikacji. Jego ujawnienie skutkuje także ujawnieniem tajnej wiadomości, ponieważ zwyczajnie można ją zdeszyfrować. Algorytmy te są zdecydowanie szybsze niż asymetryczne, ponieważ większość z nich polega na wykonywaniu prostych przekształceń: podstawień i transpozycji.

Kryptografia asymetryczna w procesie komunikacji wykorzystuje parę kluczy: publiczny i prywatny. Klucz prywatny, jak wskazuje jego nazwa, musi bezwzględnie pozostać znany jedynie właścicielowi. Klucz publiczny natomiast służy do tego, aby każdy mógł go poznać i z niego skorzystać. W ten sposób, przez kogokolwiek zaszyfrowana wiadomość kluczem publicznym danego właściciela, może zostać odszyfrowana jedynie kluczem prywatnym, który posiada właściciel. W tym przypadku algorytmy szyfrowania i deszyfrowania są identyczne. Opierają się na funkcjach matematycznych, a nie na podstawianiu i transpozycji, dlatego są zdecydowanie wolniejsze w działaniu od algorytmów symetrycznych.

kryptografia w menedżerze haseł - szyfrowanie asymetryczne

Jako ciekawostkę można podać, że na kryptografii asymetrycznej zorientowana jest cała infrastruktura podpisów cyfrowych, ponieważ w tej sytuacji wykorzystywana jest operacja przeciwna – skróty dokumentów szyfrowane są przy pomocy klucza prywatnego (który posiada jedynie właściciel), aby odszyfrować je kluczem publicznym (który jest dobrze znany i jest pewność, że należy do danej osoby, co weryfikuje podpis).

W perc.pass wykorzystujemy obydwa rodzaje algorytmów kryptograficznych, które zabezpieczają dane, ale i same klucze użytkowników, dlatego tak istotne jest rozumieć skąd biorą się te wszystkie schematy.

Dopełnieniem podstawowej wiedzy na temat tego, jak działa  kryptografia w menedżerze haseł perc.pass muszą być tzw. kryptograficzne funkcje skrótu lub jednokierunkowe funkcje hashujące. Obydwa pojęcia oznaczają to samo, czyli funkcje matematyczne, które na podstawie danych dowolnej długości generują krótką wartość o stałej długości. Dobra funkcja skrótu dla różnych danych wejściowych powinna z dużym prawdopodobieństwem generować różne wyniki. Narzędzia te charakteryzują się nieodwracalnością operacji matematycznych i jedyną opcją złamania jest zgadywać dane wejściowe, co jest zadaniem co najmniej karkołomnym.

Funkcje skrótu wykorzystywane są także do generowania symetrycznych kluczy kryptograficznych na podstawie danych wejściowych. Ich połączenie z dodatkowymi mechanizmami bezpieczeństwa pozwala na korzystanie z haseł w kryptografii. Password-Based Key Derivation Function, czyli PBKDF stanowi rodzinę funkcji, które służą do generowania kluczy kryptograficznych z haseł. Na ich wejściu podaje się hasło użytkownika oraz pewien koszt obliczeń. Opcjonalnie można jeszcze stosować sól, która jest ciągiem bitów dodatkowo zaciemniającym rezultat. W efekcie, uzyskuje się pseudolosowy klucz, który można wykorzystać do operacji.

Dlaczego nie można szyfrować samymi hasłami? Przecież to też bity!

Taki proces szyfrowania byłby z góry skazany na porażkę, ponieważ nasze hasła to najczęściej słowa i cyfry. Rzadko zapamiętuje się hasła ze znakami specjalnymi. Takie klucze można by bardzo szybko odgadnąć prostymi atakami słownikowymi i od razu uzyskać odszyfrowaną wiadomość.

W momencie, gdy z prostego hasła typu “password” uzyskuje się klucz, który jest generowany z tego hasła i skrótów liczonych przez pewną liczbę iteracji, sytuacja nie jest już taka prosta i odgadywanie klucza staje się znacznie bardziej wydłużone dla atakującego, ponieważ każda próba musi się wiązać jeszcze z obliczeniem np. 600 000 razy funkcji skrótu.

W perc.pass oczywiście do generowania klucza głównego wykorzystujemy funkcję PBKDF2, której specyfikację opisano w dokumencie RFC 2898 (https://www.ietf.org/rfc/rfc2898.txt ). To właśnie przy jej pomocy przetwarzane jest Hasło Główne użytkownika. Po to właśnie przy aktywacji użytkownik może ustalić sobie liczbę iteracji. Zgodnie z zaleceniem OWASP obecnie powinno się ustawiać 600 000 iteracji, dlatego też perc.pass ustala tę wartość jako minimalną.

No dobrze, ale po co to wszystko?

Na początku artykułu napisałem, że nie do końca zgadzam się, iż użytkownicy będą nam powierzać swoje hasła. Z ich perspektywy – oczywiście, będą to hasła wpisywane do aplikacji webowej w postaci jawnej, jednak opisana tutaj kryptografia służy przede wszystkim do tego, abyśmy my jako dostawcy oprogramowania i przestrzeni w naszym Data Center, nie mieli jakiegokolwiek wglądu do danych wrażliwych naszych użytkowników!

I faktycznie tak jest, ponieważ jedyne co jest przechowywane w naszej infrastrukturze to szyfrogramy haseł i załączników, które docierają do nas od użytkowników. A co jest najlepsze – i tak są jeszcze raz szyfrowane podczas komunikacji przy pomocy zwykłego SSL/TLS, ale i podczas przechowywania w naszych bazach danych. Więc u nas są jedynie szyfrogramy szyfrogramów i jakieś mało znaczące metadane.

Schematy szyfrowania są bardzo ciekawym zagadnieniem, które długo rozgryzaliśmy analitycznie, ale o tym już w następnych artykułach.

Chcesz zadbać o cyberbezpieczeństwo?

Skontaktuj się z nami!

Zostaw dane - oddzwonimy

Nasz specjalista odezwie się do Ciebie najpóźniej kolejnego dnia roboczego. Nie musisz wypełniać pola wiadomości, ale krótka informacja o interesującym Cię temacie rozmowy będzie dla nas cenną wskazówką.

Powiązane usługi