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.
Jak korzystam z KeePass
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ć:
- złożone,
- (w miarę) unikalne,
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:
- jesteśmy na stronie, która wymaga logowania,
- ustawiamy kursor w polu login, naciskamy kombinacje CTRL+ALT+K,
- (opcjonalnie) odblokowujemy KeePass,
- wyszukujemy odpowiednie hasło,
- naciskamy CTRL+V,
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,hL*U[h.Ttgl(}lxjwu6g@vp?6c3yB{ ndA?'EpLbIwvY:RHmZ[@0V[z}JLiZ\<I2f>>6m,vg4Me5#>z@,+4[:XG5Z>z*av9 Pa/ZLBt9sQvd>83wswOBIa/x8e#H/Y\CC(O64]&lb=tO,'`8.X"%l/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:
- ograniczyć czas życia hasła w schowku - Tools -> Options -> Memory, ja korzystam z opcji Timed,
- czyścić schowek przy blokowaniu KeePass - Tools -> Options -> Advanced, opcja Clear clipboard (...),
- chronić pamięć (jeśli jest taka możliwość) - Tools -> Options -> Advanced, opcja Use advanced memory protection (...),
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.
Pierwsze to nawet nie pytanie, ale trochę zdziwienie. Miałem wrażenie, że managery haseł dużo bardziej automatycznie pomagają się logować. Typu raz wpisuje główne hasło, a później program który widzi, że wchodzę na określoną stronę (bo w bazie dla każdego wpisu podaje się jednak stronę) to sam z siebie (bez dodatkowego klikania) wypełnia mi dwa pola i jeszcze enter klika
A teraz trochę pytań:
1. Blokowanie KeePass
Pisałeś, że baza blokuje Ci się po minimalizacji i po zablokowaniu stacji. Myślisz, że jeśli mam nawyk blokowania stacji ZAWSZE jak od niej odchodzę nawet na chwilę to jest sens blokowania KeePassa przy minimalizacji? Jakaś dodatkowa korzyść jest z tego?
2. Hasło do bazy vs. konto Windows
Pewnie tą opcję odrzuciłeś jako mniej bezpieczną, ale tu się zastanawiam nad wygodą korzystania z KeePass w połączeniu z kontem użytkownika w Windowsie (bo widziałem, że jest taka możliwość). Pewnie dużym minusem jest wtedy to jedno wrażliwe hasło do konta użytkownika - choć w moim wypadku jest ono dosyć silne. No i KeePass zadziała tylko tam gdzie loguję się swoim kontem do komputera.
3. Komputer żony a hasła
Zastanawiam się co z hasłami do serwisów, do których czasem loguję się z innych komputerów (właśnie np. żony - gdzie czasem coś jej kupuję na Allegro z mojego konta). Jeśli tam hasło będzie losowo generowanie to nie mam szans go zapamiętać. A instalowanie KeePass na prawie-nie-moim kompie to też zły pomysł. Tu masz jakieś doświadczenia/podpowiedzi?
4. Problemy?
I tu pytanie - czy w historii korzystania z KeePass zdarzyły Ci się jakieś problemy? Nie wiem - strata bazy, hasło do którego nie dało się dobrać, itp?
A teraz odpowiadam na pytania:
1. Im mniej czasu baza jest odblokowana, tym mniejsze "okienko", w którym może być ona atakowana przez wrogie oprogramowanie. Powód, dla którego ja blokuję KeePass po użyciu jest jednak inny - nie lubię jak mi się jakieś niepotrzebne "okienko" na pasku zadań pokazuje
2. Funkcja połączenia hasła do KeePass z hasłem do Windows dostępna jest w linii 2.x, której nie używam. O ile dobrze pamiętam, w tym zakresie wykorzystywane jest DAPI (standardowy mechanizm Windows). Ma on swoje zalety (wygoda korzystania), ale i wady - np. dostęp do zabezpieczonych danych ma każdy proces uruchomiony w kontekście danego użytkownika (to trochę bardziej skomplikowane, a to tylko komentarz). Największym problemem jest dla mnie jednak potencjalna utrata dostępu do bazy haseł w przypadku zapomnienia hasła Windows i zresetowania go z poziomu administratora bez rozumienia konsekwencji takiej akcji.
3. Jak pisałem - ja jestem dziwny. Z nieswojego komputera nie zaloguję się nawet do poczty, bo hasła nie znam. Jest to moja świadoma decyzja i z godnością znoszę wszystkie związane z nią niedogodności
4. Jedynym problemem, którego doświadczyłem było wyświetlanie okna KeePass poza ekranem. Z uszkodzeniem bazy się nie spotkałem, ale backup mieć trzeba.
- wpisywanie hasła głównego,
- wydajność komórki,
- przepisywanie hasła,
Wydaje mi się, że wpisanie hasła na komórce jest znacznie mniej wygodne, niż na komputerze. W efekcie skorzystanie z KeePass będzie albo bardzo niewygodne, albo masterpassword będzie upraszczane przez użytkowników.
Wydajność urządzeń mobilnych jest zwykle dużo mniejsza, niż wydajność typowego komputera. Znów - ilość iteracji przy przekształceniu masterpassword na klucz będzie zmniejszona, lub otwieranie bazy będzie trwało bardzo długo.
Hasło "właściwe" trzeba(?) będzie przepisać patrząc na komórkę. W przypadku długich i skomplikowanych haseł jest to niewygodne. To akurat stosunkowo mały problem, przy wyborze sensownej polityki dla tworzonych/generowanych haseł.
Dość istotne są dwa pierwsze problemy. Taką bazę haseł można z komórki wyjąć (zgubiony telefon, malware) i hasło łamać na sprzęcie o "normalnej" wydajności. Połączenie ze sobą prawdopodobnie łatwiejszych haseł i mniejszej ilości iteracji zwiększa prawdopodobieństwo sukcesu takiej operacji.
Przepisywanie haseł z komórki to nie jest duży problem biorąc pod uwagę jak rzadko korzystam z takiego rozwiązania i wykorzystywanie - jak to określiłeś - sensownej polityki generowania haseł.
Bazę można natomiast przechowywać np. na dodatkowej karcie SD, którą wkładamy do telefonu tylko w momencie faktycznego z niej korzystania.
Tak czy inaczej wygoda tego rozwiązania "przemawia do mnie" o wiele bardziej niż ewentualne zagrożenia, które staram się ograniczać.
Dzięki temu możesz całkowicie zautomatyzaować proces logowania na stronie po zalogowaniu się do KeePass.
W oknie tym dodajesz kolejne przyciski np. Tab, strzałkę w dół itp. tak by w przypadku gdyby po otwarciu okna w przeglądarce focus nie był bezpośrednio w oknie logowania i trzeba by było do niego "dojść" poprzez np. naciśnięcie klawisza TAB
1. używasz może wyprodukowanych wtyczek do różnych przeglądarek?
2. czy keepass - poprzez ww. wtyczki - jest w stanie obejść schowek windows? (tak naprawdę - to jest jedno z miejsc, gdzie widzę potencjalnie dość duże (i łatwe) pole do nadużyć) - oczywiście pomijam fakt - posiadania malware itp, to niebezpieczeństwo, że ktoś (czy Ty sam, poprzez niechcący paste - wkleisz gdzieś swoje hasło (komu się nie zdarzyło choć raz wkleić np poprzez rightclick w puttym komuś czegoś co miał w schowku ręka do góry
3. znasz moze lastpass? jeśli tak - to czy brałeś go pod uwagę w przypadku zarządzania hasłami?
1. Nie. Używam gołego KeePass, a do wpisywania używam:
- Copy&Paste,
- Drag&Drop,
- ostatnio zaczynam używać Auto-Type,
I tak, zdarzało mi się upuścić hasło nie tu, gdzie chciałem. W takim przypadku po prostu zmieniałem hasło na nowe.
2. Nie śledziłem sposobu realizacji funkcji Auto-Type, ale WYDAJE MI SIĘ, że nawet w standardowym przypadku schowek nie jest wykorzystywany.
3. Wiem, że coś takiego jak LastPass istnieje. Gdy zmieniałem Password Minder na KeePass, to KeePass miało dłuższą historię niż LastPass (a przynajmniej tak mi się wydaje). A teraz do KeePass przyzwyczaiłem się na tyle, że zmian na razie nie planuję.
Od 2.09 jest opcja w zakładce Interface / Main window: "Focus quick search box when restoring from tray".
W File > Database settings > Security można też ustawić ilość rund szyfrowania bazy. Przy dobrym sprzęcie żaden pseudohacker się nie włamie.
Tylko, że... w wersji 1.x w konfiguracji Auto-Type nie mam zarejestrowanego tego skrótu a nie pamiętam, bym go zmieniał. W Wersji 2.x ta kombinacja jest rzeczywiście aktywna domyślnie i może być zmieniona przez Tools -> Options -> Integration
Ja od długiego czasu używam PINS http://www.mirekw.com/winfreeware/pins.html