Jak korzystam z KeePass

Na specjalne życzenie Mariusza kilka słów na temat tego, w jaki sposób korzystam z KeePass. Nie należy tego traktować jako jedynie słusznego sposobu wykorzystania tego narzędzia. Korzystam z niego w sposób, który dla mnie jest wystarczająco wygodny , ktoś inny może zechcieć wykorzystać więcej jego funkcji.

Dlaczego zapisuję swoje hasła

Teoretycznie najbardziej bezpiecznym miejscem do przechowywania hasła, jest pamięć (nieulotna!) jego “właściciela”. Sporym problemem jest niestety ulotność pamięci użytkownika. Można pamiętać kilka najczęściej używanych haseł czy kodów PIN, ale zapamiętanie kilkudziesięciu haseł jest już większym wyzwaniem.

Gdy mówi się o bezpieczeństwie haseł, podkreśla się często, że hasła powinny być złożone, po czym następuje długa litania tego, czego nie należy wykorzystywać w roli hasła. Pojawia się również zalecenie, by hasła były unikalne. To ostatnie zalecenie jest, moim zdaniem, zbyt słabo akcentowane. Podsumowując, dobre hasło powinno być:

O ile z jednej strony jestem zwolennikiem rozwiązań typu single sign-on , to z drugiej strony mocno optuję za wykorzystaniem innego hasła dla każdego z serwisów. Nie ma w tym sprzeczności, przy rozwiązaniach typu single sign-on baza informacji o użytkownikach jest jednak w jakiś sposób scentralizowana, przez co do jej bezpieczeństwa można mieć większe zaufanie, niż do dziesiątek różnych serwisów, które haseł swoich użytkowników nie traktują z należytą atencją.

Obecnie korzystam prawie ze 100 haseł (w tym różnych kodów PIN). Pamiętam ich jedynie kilka, między innymi to hasło, na podstawie którego generowany jest klucz szyfrowania haseł przechowywanych w bazie KeePass. Te hasła to frazy , wyglądają mniej więcej tak: T0H@$l0Mu#3Pam13t@C!. Wszystkie pozostałe hasła generuję automatycznie i przechowuję w KeePass. Dzięki temu mogę być w miarę spokojny, że w moim przypadku wyciek haseł z serwisu, z którego korzystam, będzie miał dość ograniczone skutki (unikalność haseł). Dodatkowo jestem złym celem do łamania haseł (długie, złożone, niesłownikowe hasła). Nie muszę przy tym obawiać się, że jakiegoś hasła zapomnę. Tworzenie takiego repozytorium (wszystkich) haseł ma jednak również swoje wady.

Zapisywanie wszystkich haseł w jednym miejscu powoduje, że takie repozytorium haseł staje się ciekawym celem ataków. Problemem jest tu przede wszystkim wrogi kod działający na stacji, na której korzystamy z takiego repozytorium. Siłą rzeczy trzeba wpisać hasło, na podstawie którego generowany jest klucz używany do szyfrowania takiej bazy. Z jego pomocą atakujący może sam rozszyfrować bazę, może też atakować pamięć procesu, nawet pomimo tego, że niektóre programy różne techniki ochrony pamięci stosują. Moim zdaniem korzyści związane z zapisywaniem haseł (unikalne, złożone hasła dla każdego serwisu, brak dodatkowego obciążenia mojej pamięci) są większe, niż ryzyka z nim związane. Trzeba jednak o nich pamiętać. Tutaj podkreślę, że wcześniejsze stwierdzenie prawdziwe jest dla mnie, nie musi być natomiast prawdziwe dla kogoś, kto o “higienę” stacji roboczej dba nieco mniej. Po drugie należy oddzielić od siebie dwie kwestie – techniczne możliwości ataku oraz to, co rzeczywiście ma miejsce obecnie. Do czasu, gdy są łatwiejsze cele, atakujący mogą nie być zainteresowani praktycznym wykorzystaniem tej teoretycznej możliwości ataku. Tu znów trzeba rozdzielić od siebie atak masowy od ataku targetowanego. Mówiąc obrazowo – w tym drugim przypadku tak zirytowaliśmy niedźwiedzia, że uporczywie ściga właśnie nas. Nawet mimo tego, że w tym pościgu mija wiele łatwiejszych kąsków.

Dlaczego korzystam z KeePass (a nie innego rozwiązania)

KeePass nie jest jedynym narzędziem tego typu. Wcześniej używałem narzędzia PasswordMinder, przeniosłem się do KeePass w 2008 roku. Motywacją do przesiadki był rosnący czas wyszukiwania odpowiedniego rekordu (hasła), KeePass pod tym względem oferuje wygodny mechanizm wyszukiwania rekordów. Przy okazji jest to jedna z moich(?) cech specyficznych. Preferuję wyszukiwanie informacji od jej organizowania. Przed wyborem KeePass przyglądałem się również narzędziu Password Safe (stoi za nim Bruce Schneier), ale KeePass wygrał wyglądem i wygodą użytkowania.

KeePass obecnie dostępny jest w dwóch wersjach (porównanie funkcji), ja korzystam z wersji 1.x. Po prostu wydaje mi się lżejsza. Ilość dostępnych funkcji jest może mniejsza, ale dla mnie wystarczająca. Być może w przyszłości przeniosę się do linii 2.x, na razie nie mam takich planów.

W jaki sposób korzystam

Skonfigurowałem sobie KeePass w taki sposób, by uruchamiał się po zalogowaniu użytkownika, w stanie zminimalizowanym i zablokowanym otwierając (używając) ostatniej wykorzystanej bazy. Gdy chcę z niego skorzystać, używam kombinacji klawiszy CTRL+ALT+K, co powoduje pojawienie się okienka do wpisania głównego hasła z, co ważne, ustawionym focusem(!) W tej chwili pozostaje mi tylko wpisać hasło i... tu jest mała niewygoda. Kolejnym krokiem jest u mnie wyszukanie stosownego rekordu, więc focus mógłby się znajdować w polu wyszukiwania. Niestety tak nie jest, ale nie jest to też wielki problem, wystarczy dwukrotnie nacisnąć klawisz TAB. Pozostaje tylko wpisać nazwę szukanego rekordu (nadal można nie odrywać rąk od klawiatury). Można skonfigurować program tak, by po wyszukaniu focus był ustawiony na liście wyników (Tools – > Options –> Advanced opcja Focus entry list after a successful quick search), można też żyć bez tego, wystarczy klawisz TAB (dwa razy). Na liście pozostaje wybrać odpowiedni rekord.

KeePass wspiera funkcję Auto-Type, ale nie mogę na jej temat powiedzieć zbyt wiele – po prostu jej nie używam zbyt intensywnie. Zamiast tego korzystam z funkcji Copy&Paste oraz Drag&Drop. Po znalezieniu stosownego rekordu po prostu przeciągam hasło (bo login zwykle wpisuję ręcznie) do stosownego pola. W przypadku niektórych aplikacji skorzystać muszę z funkcji Copy&Paste, bo Drag&Drop w nich po prostu nie działa. Tak jakoś ustawiłem sobie pozycję i wielkość okna KeePass, że w większości przypadków nie zasłania ono pola do wpisania hasła, więc ta metoda jest dość szybka, przynajmniej z mojego punktu widzenia.

Gdyby ktoś korzystał z Auto-Type, to wprowadzenie hasła sprowadzałoby się do naciśnięcia kombinacji CTRL+V na wybranym rekordzie. Cały scenariusz wygląda wówczas mniej więcej tak:

Domyślnie Auto-Type wysyła login użytkownika, następnie TAB, hasło użytkownika i ENTER. Ustawienia te można dostosowywać na poziomie konkretnego rekordu. Więcej informacji na temat tej funkcji i bardziej zaawansowanych możliwości: Auto-Type.

Generowanie haseł

Jedną z ważnych funkcji KeePass jest generowanie haseł, w tym automatyczne generowanie haseł dla nowo tworzonych rekordów. Istnieje możliwość skonfigurowania i zapisania kilku różnych profili (zasad), według których hasła są generowane.

Istotny jest profil “domyślny”, który wykorzystywany jest przy generowaniu haseł dla nowych rekordów. Ustawiłem sobie w tym przypadku hasła o długości 16 znaków, które zawierają duże i małe litery, cyfry oraz znaki z zakresu @$#. Jest to profil zachowawczy, ale hasła wygenerowane przy jego pomocy zwykle działają. Hasła generowane przy jego pomocy wyglądają (mniej więcej) tak:

hMPtZ47PH@qN1CIm 5L1gma@idFEiVEk# JpOMY23CJR5Zvj@$

Przed wygenerowaniem hasła dla nowego rekordu warto zapoznać się z ewentualnymi ograniczeniami narzucanymi przez politykę haseł. Pozwoli to czasem uniknąć kilku niemiłych niespodzianek, na przykład takich: Spójność rządzi.

Jeśli aplikacja jest bardziej wyrozumiała w stosunku do haseł, można korzystać z bardziej złożonych profili. I hasła mogą wyglądać tak:

aK0t0N(S)3W[!j#“x[IwRfr^]f@+J+#s,hLU[h.Ttgl(}lxjwu6g@vp?6c3yB{ ndA?'EpLbIwvY:RHmZ[@0V[z}JLiZ<I2f>>6m,vg4Me5#>z@,+4[:XG5Z>zav9 Pa/ZLBt9sQvd>83wswOBIa/x8e#H/Y\CC(O64]&lb=tO,'`8.X”%25l/rha'=j.072

Nawet te “łatwiejsze” hasła w znaczny sposób odbierają od tych typowych. Jak wyglądają typowe hasła, można przeczytać na przykład tutaj: Statistics from 10,000 leaked Hotmail passwords oraz tutaj: 32 miliony haseł wyciekło. Jakie najpopularniejsze?

Warto zastanowić się nad jeszcze jednym zagadnieniem – czy zawsze hasło będzie kopiowane/przeciągane/automatycznie wpisywane, czy też będzie istniała konieczność przepisania go ręcznie. Jeśli tak, to warto zracjonalizować politykę haseł, bo przepisywanie 32 krzaczków będzie uciążliwe...

KeePass pozwala również na zbieranie dodatkowej entropii przed wygenerowaniem hasła. Nie korzystam z tej funkcji. Dlaczego? Ujmę to tak: w moim threat landscape ewentualne problemy z jakością generatora RNG nie zajmują na tyle istotnej pozycji, by uzasadniać uciążliwe machanie myszką. Patrz też: Random Number Generation.

O czym warto pamiętać

Hasło (Master Key) musi być mocne. Można połączyć je dodatkowo z Key File , ale nie korzystam z tej opcji. Mocne hasło jest, moim zdaniem, wystarczającym zabezpieczeniem. Dość istotnym parametrem jest ilość rund, które są konieczne przy przekształceniu wpisanego hasła, na klucz. Jest to parametr konfigurowalny. Istnieje możliwość automatycznego określenia ilości rund w taki sposób, by na danym sprzęcie “odblokowanie” KeePass trwało sekundę. Jest to czas absolutnie do zaakceptowania przez użytkownika, jednocześnie dość skutecznie utrudniający ataki polegające na “odgadnięciu” hasła. Ilość rund można zmieniać przez File – > Database Settings.

W tym samym miejscu można również zmienić wykorzystywany algorytm szyfrowania. W wersji 1.x dostępne są dwa algorytmy szyfrowania, AES oraz Twofish, w obu przypadkach długość klucza wynosi 256 bitów. Więcej informacji na ten temat można znaleźć w Database Encryption oraz Hashing and Key Derivation. Ja korzystam z algorytmu AES, jest on jedynym dostępnym w wersji 2.x.

Możesz korzystać z więcej niż jednej bazy. To zalecenie/możliwość bezpośrednio związane jest z wątpliwością Mariusza, którą wyraził w komentarzu:

Wątpliwości mimo wszystko trzymania wszystkich haseł w jednym miejscu (w tym tych naprawdę wrażliwych – Ty trzymasz tam wszystko? łącznie z hasłami do banków czy jakiś ważnych systemów?)

Te wątpliwości mogą być uzasadnione, o czym wspominałem wcześniej. Baza w postaci zaszyfrowanej jest bezpieczna, a przynajmniej nie ma podstawy by twierdzić, że jest inaczej. Przy haśle o odpowiedniej długości i złożoności oraz odpowiedniej ilości iteracji (patrz wyżej) w procesie generowania klucza, ataki offline na plik nie stanowią dużego ryzyka (ponownie: według obecnego stanu wiedzy). Problemem są natomiast ataki na działającą aplikację KeePass. Wydzielenie bardzo istotnych haseł do oddzielnej bazy zmniejsza nieco prawdopodobieństwo ich wycieku. Zakładam, że te bardzo istotne hasła do bardzo istotnych systemów są wykorzystywane rzadziej, niż hasła do systemów używanych codziennie. Oczywiście, jeśli ktoś będzie miał intruza w systemie wystarczająco długo, to intruz ten zdobędzie i te hasła, bo prawdopodobnie będzie kiedyś trzeba ich użyć, ale może je zdobyć również w inny sposób (choćby keylogger). Drugą oczywistą oczywistością jest to, że hasła do różnych baz haseł muszą być różne...

KeePass powinien być zablokowany. W moim przypadku KeePass blokuje się automatycznie, gdy minimalizuję okno, lub blokuję konsolę systemu. Nie korzystam z opcji automatycznego blokowania się KeePass po upływie określonego czasu. To jest moja świadoma decyzja wynikająca ze sposobu, w jaki korzystam z komputera oraz nawyku blokowania konsoli, w przypadku, gdy od niego odchodzę. Stosownej konfiguracji można dokonać w Tools – > Options –> Security. Przy okazji – KeePass może minimalizować się do traya, “krzyżyk” również może minimalizować, a nie zamykać program. Te ustawienia z kolei dostępne są w Tools – > Options –> GUI.

KeePass to nie sposób na malware. Z założenia nie używam komputerów, którym nie ufam. Na pewno nie użyłbym na nich KeePass (patrz też: Specialized Spyware). Przy takim podejściu mniej istotne są dla mnie zabezpieczenia przed atakami “lokalnymi”, ale i tak warto:

Szczerze mówiąc najwięcej wątpliwości mam do skuteczności ochrony pamięci (patrz: Process Memory Protection oraz Locking the Workspace). Dobrze, że jest, ale realnie patrząc daje niewiele. Jeśli masz malware na stacji, to masz pozamiatane. Na wiele sposobów.

Musisz mieć backup! Jeśli stanie się krzywda bazie, to (najprawdopodobniej) masz pozamiatane. Dlatego należy mieć kopię zapasową, najlepiej kilka. Sama baza jest szyfrowana, więc w zasadzie nie ma konieczności (choć można) zabezpieczać ją dodatkowo. Ja (w miarę spójną) bazę mam na kilku komputerach, w dodatku rozproszonych geograficznie. Prawdopodobieństwo ich jednoczesnej utraty jest niewielkie.

KeePass można dostosować pod siebie , dlatego warto przejrzeć dostępne opcje konfiguracyjne i ustawić narzędzie pod siebie. Możesz też skorzystać z innych narzędzi tego typu.

Oryginał tego wpisu dostępny jest pod adresem Jak korzystam z KeePass

Autor: Paweł Goleń