Dobre praktyki związane z hasłami#
Autor: Maciej Grześkowiak
Menedżer haseł KeePassXC#
Będziemy pracować z menadżerem haseł KeePassXC. Możemy go pobierać go ze strony https://keepassxc.org/#project (zainstalować bez dodatku do przegladarki)
Na aplikację możemy patrzeć jak na listę haseł i poświadczeń zapisanych w bazie. Baza jest szyfrowana szyfrem symetrycznym za pomocą klucza głównego zwanego master key. To na razie tyle, wiecej później.
Podstawy obsługi KeePassXC#
Tworzenie nowej bazy#
Uruchom KeePassXC i kliknij utwórz nowa bazę (A)
Pojawi się kreator tworzenia bazy danych. Wprowadź nazwę bazy danych i krótki opis (opcjonalnie).
Kliknij przycisk Continue. Pojawi się ekran ustawień szyfrowania, nie zalecamy wprowadzania żadnych zmian poza zwiększaniem lub zmniejszaniem czasu deszyfrowania za pomocą suwaka. Ustawienie suwaka Decryption Time na wyższe wartości oznacza, że baza danych będzie miała wyższy poziom ochrony, ale czas potrzebny na jej otwarcie wydłuży się.
Kliknij przycisk Continue. Pojawi się ekran poświadczeń bazy danych (the Database Credentials), wprowadź hasło do bazy danych. To hasło nazywamy Master password. Zapamiętaj to proszę. Jesli chcesz zobaczyć hasło włacz jego widoczność (B).
Kliknij przycisk Done. Zostanie wyświetlony monit o wybranie lokalizacji do zapisania pliku bazy danych. Plik bazy danych jest zapisywany na komputerze z domyślnym rozszerzeniem .kdbx. Bazę danych można przechowywać w dowolnym miejscu, ponieważ jest ona w pełni zaszyfrowana, co zapobiega nieautoryzowanemu dostępowi.
Uwaga: W tym scenariuszu master password jest generowany na podstawie tylko hasła. Jest to bardzo słabe zabezpieczenie!!!!
Wpisy w KeePassXC#
Wpisy (entries) w KeePassXC są podstawowymi jednostkami, w których przechowywane są wszystkie poufne informacje. Każdy wpis może zawierać różne pola, takie jak nazwy użytkowników, hasła, adresy URL, załączniki i notatki. W razie potrzeby wpisy można tworzyć, edytować, klonować i usuwać. Wszystkie szczegóły, takie jak nazwy użytkowników, hasła, adresy URL, załączniki, notatki itp. są przechowywane we wpisach bazy danych. W bazie danych można utworzyć dowolną liczbę wpisów.
Dodanie nowego wpisu do bazy w KeePassXC#
Aby dodać wpis, wykonaj następujące czynności:
Wybierz w Menu: Wpisy > Nowy wpis. Pojawi się następujący ekran:
Wprowadź żądany tytuł wpisu, nazwę użytkownika, hasło, adres URL i notatki na tym ekranie. Po dodaniu adresu URL do wpisu można nacisnąć przycisk pobierania (strzałka w dół), aby automatycznie pobrać ikonę witryny dla tego wpisu.
(Opcjonalnie) Dodaj tagi do wpisu, aby szybko wyszukać go za pomocą panelu tagów w głównym widoku bazy danych. Możesz łatwo dodawać nowe tagi lub wybierać istniejące z rozwijanej listy.
(Opcjonalnie) Zaznacz pole wyboru Wygasa, aby ustawić datę wygaśnięcia hasła. Możesz ręcznie wprowadzić datę i godzinę lub kliknąć przycisk Presets, aby wybrać datę i godzinę wygaśnięcia hasła.
Kliknij przycisk OK, aby dodać wpis do bazy danych.
Pasek narzędzi KeePassXC (Toolbar)#
(A) Grupa Baza danych: Otwórz bazę danych, Zapisz bazę danych, Zablokuj bazę danych
(B) Grupa Wpisy: Utwórz wpis, Edytuj wpis, Usuń wybrane wpisy
(C) Grupa Dane wpisu: Kopiuj nazwę użytkownika, Kopiuj hasło, Kopiuj adres URL, Wykonaj autouzupełnianie
(D) Grupa Narzędzia: ustawienia bazy danych, raporty, generator haseł, ustawienia aplikacji
(E) Wyszukiwanie
Zadania do samodzielnego wykonania#
Zadanie: Dodaj nowy wpis w bazie np.: dostęp do konta FB
Zadanie: Zamknij KeePassXC i otwórz go ponownie. Zaloguj się do Google oraz FB. Wykorzytaj Toolbar
Zadanie: Dodaj nową pozycję w bazie np.: do FB, wygeneruj hasło za pomocą generatora (nie wykorzystuj rozszerzonego Ascii). Zamknij KeePassXC i otwórz go ponownie. Zaloguj się do Google wykorzytaj Toolbar.
Dostęp do bazy KeePassXC#
W tej sekcję poświęcimi zabezpieczaniu master key. Jak wspomiano na wstępie, każda baza jest szyfrowana szyfrem symetrycznym za pomocą klucza głównego zwanego master key. Master key może być generowany na podstawie jednego lub wielu składników.
Ochrona tylko hasłem dostępu (1FA nie polecane)#
Jeśli bazę w keePassXC zabezpieczasz tylko jedynie hasłem (w tym przypadku tylko master password), to proces generowania master key wygląda tak:
(Master Password) ──▶ SHA-256 ──▶ SHA-256 ──▶ CompositeKey ──▶ Argon2id ──▶ Master Key
Wniosek: Jeśli adwersarz zna master password, to może on wygenerować master key. Ochrona master key spoczywa na master password. Inaczej, tylko jeden czynnik chroni wtedy bazę!!!!! Takie podejście nie jest bezpieczne !!!
Ochrona hasłem oraz kluczem tajnym zapisanym w pliku na komputerze (2FA)#
Jeśli bazę w keePassXC zabezpieczasz hasłem (master key) oraz dodatkowym kluczem, który jest zapisany w pliku i przechowywany na twoim urządzeniu, to proces generowania master key wygląda tak:
(Master Password) ──▶ SHA-256 ──┐
├──▶ SHA-256 ──▶ CompositeKey ──▶ Argon2id ──▶ Master Key
(Klucz z pliku) ──▶ SHA-256 ─┘
Wniosek: Aby wygenerować master key, adwersarz musi znać master password oraz dodatkowy klucz tajny! zapisany w pliku. Ochrona master key spoczywa na na dwóch czynnikach master password oraz kluczu zapisanym w pliku. Inaczej, dwa czynniki chronią wtedy bazę!!!!!
Hasło + klucz tajny zapisany w pliku#
W pasku narzędzi wybierz beczkę z gwiazdką
Wybierz bezpieczeństwo i dodaj dodatkową ochronę
Wybierz Dodaj plik klucza
Wybierz wygeneruj, określ gdzie go zapisać na Twoim urządzeniu i klinij OK.
W ten sposób ustawiliśmy drugi czynnik, plik klucza, który chroni master key
Zadanie Wyjdź z KeePass i spróbuj sie zalogować do bazy w KeePassXC.
Logowanie do istniejącej bazy w KeePassXC#
Aby otworzyć istniejącą bazę danych, wykonaj następujące czynności:
Otwórz aplikację KeePassXC. Kliknij przycisk Otwórz bazę danych (A) lub wybierz ostatnią bazę danych z listy Ostatnie bazy danych (B)
Przejdź do lokalizacji bazy danych na komputerze i otwórz plik bazy danych. Pojawi się ekran odblokowania bazy danych:
Wprowadź hasło do bazy danych oraz kliknij Mam plik klucza (A). Podaj lokalizację klucza na komputerze.
Kliknij Odblokuj
Ochrona hasłem, kluczem tajnym w pliku oraz sekretem (3FA)#
Master key, który jest kluczem uzywanym do szyfrowania bazy Menadżera plików możemy zabezpieczyć dodatkowym czynnikiem. Wykorzystamy sekret - losowy ciąg bitów, który będzie zapisany w urządzeniu zewnętrznym Yubikey oraz będzie znany aplikacji KeePassXC
Jeśli bazę w keePassXC zabezpieczasz hasłem (master key), dodatkowym kluczem, który jest zapisany w pliku i przechowywany na twoim urządzeniu oraz sekretem zapisanym na YubiKey, to proces generowania master key wygląda tak:
Master password ─────┐
├─▶ H1 = SHA-256(master password) ──┬────────────────────┐
Plik klucza ─────────▶ H2 = SHA-256(plik) │ │
YubiKey ─────────────▶ Response = HMAC(wyzwanie, sekret) ◀────────────────────┘
▼
Composite Key = SHA-256(H1 || H2 || Response)
│
+ Argon2id
▼
MasterKey → odszyfrowanie bazy
Protokół challenge and response#
Opiszemy teraz protokół challenge and response, który ma dwa cele:
1. Ustalenie wspólnego sekretu między YubiKey i aplikacją KeePassXC
Gdy sekret jest już ustalony YubiKey i KeePassXC muszą sobie nawzajem udowodnić, że posiadaja taki sam sekret bez jego ujawniania.
2. Dowodzenie, że KeePassXC ma taki sam sekret jak YubiKey
Protokół
Zakładamy, że w protokole wykorzystywana jest bezkonfliktową funkcję hashującą 𝐻.
Protokół: Ustalenie wspólnego sekretu
YubiKey generuje sekret i bezpiecznie go przechowuje.
Yubikey wysyła bezpiecznie sekret do aplikacji KeePassXC, która przechowuje sekret bezpiecznie.
Protokół: Dowodzenie, że strony znają wspólny sekret*
KeePassXC losuje ciąg zwany wyzwaniem, i wysyła go Yubikey.
Yubikey wykorzystuje swój sekret oraz wyzwanie i oblicza odpowiedź \(H(**sekret**,**wyzwanie**)\). Yubikey wysyła odpowiedź do keePassXC.
KeePassXC wykorzystuje swój sekret oraz wyzwanie i samodzielnie \(H(**sekret**,**wyzwanie**)\). Jeśli odpowiedź obliczona przez KeePassXC jest równa odpowiedzi przysłanej przez YubiKey, to oznacza, że obie strony maja taki sam sekret.
Ustalenie wspólnego sekretu w praktyce#
Otwórz aplikację Yubikey Manager
Umieśc YubiKey w porcie USB. YubiKey Manager będzie się domagał, aby system odbierał dotknięcie klawiszem. Pozwól na to. (Jak to zrealizować w laboratorium?)
Wtbierz Alpplications/OTP
Wybierz Challenge-Response
Wybierz Configure (Long Touch (Slot 2))
Wybierz Generate oraz zaznacz Require touch. Teraz ważny krok!!!! Skopiuj wygenerowany Secret key
Wybierz Finish
This slot is congigured!!!! W ten sposób skonfigurowaliśmy YubiKey. Teraz czas na KeePassXC.
Otwórz aplikację KeePassXC. W pasku narzędzi wybierz beczkę z gwiazdką.
Wybierz bezpieczeństwo oraz Dodaj wyzwanie-odpowiedź
Wybierz YubiKey 5 - OTP-FIDO-CCID [62366385] Gniazdo 2/ Nacisnij. Kliknij OK.
Kliknij YubiKey palcem!!!!
W ten sposób skonfigurowaliśmy dodatkowy czynnik ochrony master key
Dowodzenie, że strony znają wspólny sekret w praktyce#
W celu odblokowania bazy padaj hasło, plik klucza oraza zaznacz uzyj klucza sprzetowego. Kliknij Odlokuj.
Kliknij YubiKey, aby uruchomić protokół wyzwanie odpowiedź