Po co? Nie musisz mieć hasła głównego. Poznanie jednego hasła nie oznacza poznania reszty. Każde "pokazanie" hasła wymaga fizycznego dotknięcia klucza.
Opublikowano 01.01.2023 19:53
Sporo osób używa KeePassXC + YubiKey. Ale to NIE JEST "prawdziwe" 2FA. Czarny klucz obsługuje HMAC-SHA1. Zapisujesz w kluczu tajny sekret. Gdy wyślesz do Yubi jakiś ciąg znaków - zwróci on hash wygenerowany na podstawie zapisanego wcześniej sekretu. KeePass to wykorzystuje.
Program generuje losowy ciąg znaków. Wysyła go do Yubi i odczytuje hash. Ten hash (razem z hasłem) jest wykorzystywany do zaszyfrowania bazy. Oprócz bazy zapisuje się również ten losowy ciąg.
Jak wygląda odblokowanie menadżera? KeePass odczytuje losowy ciąg zapisany w bazie. Jeśli masz YubiKey, którego użyto podczas konfiguracji to zwróci on tą samą odpowiedź HMAC-SHA1 co wcześniej. Dzięki temu uda się odszyfrować bazę.
Ale jeśli ktoś pozna tą wartość - to może jej użyć. Nie zmienia się ona po każdym użyciu. Zmienia się tylko przy zapisie bazy. Wtedy KeePass generuje nową losową wartość i prosi klucz o nowy hash, którego używa do szyfrowania. Po odszyfrowaniu bazy atakujący ma dostęp do wszystkich haseł, które są w niej zapisane. To nic dziwnego. Tak działają menadżery haseł. Dlatego hasło główne jest tak istotne.
I tu do gry wchodzi AGE. Age to względnie nowy standard szyfrowania plików, który chce zastąpić GPG. Użycie jest proste. Ściągasz program, generujesz swój klucz i szyfrujesz nim plik. W sumie 2 komendy - patrz zdjęcie poniżej. Ale prawdziwa siła AGE to rozszerzenia.
Jeśli masz czarny YubiKey do przechowywania kluczy możesz użyć age-plugin-yubikey. Podpinasz klucz, uruchamiasz program, wybierasz wolny slot i podajesz kod PIN.
Rozszerzenie wygeneruje klucz, który możesz używać do szyfrowania plików. Po co tak kombinować? Już tłumaczę.
Aby odszyfrować plik musisz użyć pliku z kluczem prywatnym. Plik jak to plik, ktoś może skopiować/podglądnąć i tym samym poznać jego zawartość. Znając klucz może odszyfrować pliki, które nim zaszyfrowałeś. Analogicznie jak klucze do samochodu. Masz klucze? Możesz odjechać.
Tutaj nie ma tego problemu - bo klucz znajduje się wewnątrz YubiKey i nie można go łatwo wydobyć. Jeśli chcesz coś odszyfrować musisz o to poprosić YubiKey. Klucz prywatny nigdy nie opuszcza wnętrza YubiKey.
Przykład. Chcesz zobaczyć treść pliku X. Uruchamiasz AGE. Program odczytuje specjalną wartość i wysyła ją do klucza. Yubi prosi Cię o kod PIN i dotknięcie przycisku. Jeśli wszystko się zgadza - klucz odszyfrowuje dane i zwraca odpowiedź.
AGE wyświetla plik. Chcesz zobaczyć kolejny plik? Cała procedura jest ponawiana.
Ktoś uzyskał dostęp do zaszyfrowanych plików? Nic z nimi nie zrobi. W najgorszej opcji pozna tylko te hasła, które odszyfrujesz w danym momencie. Nie będzie w stanie odszyfrować innych - bo wymagane jest fizyczne dotknięcie klucza. A tego program nie jest w stanie zrobić.
Ręczne szyfrowanie haseł jest "takie sobie". Passage to program, który automatyzuje opisaną wcześniej procedurę.
A co gdy YubiKeye się zgubią? AGE pozwala na szyfrowanie kilkoma kluczami prywatnymi na raz. Wygeneruj klucz, przepisz go na kartce i schowaj w sejfie. Jego publiczną część użyj do szyfrowania plików - oprócz YubiKeyów.
A co z telefonami? Filippo (autor Age) po odszyfrowaniu konkretnego hasła generuje z niego kod QR przy pomocy passage -q
. Taki kod możesz zeskanować telefonem i skopiować hasło do schowka. Sprytne.
Minusy?
To rozwiązanie dla paranoików i zaawansowanych osób znających terminal. To też ciekawa alternatywa dla KeePassa. Nawet całkowita kompromitacja naszego komputera nie powoduje od razu automatycznego ujawnienia naszych haseł. Czekam na więcej zastosowań kluczy w przyszłości.
Więcej o szczegółach technicznych znajdziesz w tym poście.