Chcesz używać kluczy YubiKey jako menadżera haseł?

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?

  • Brak rozszerzenia do przeglądarki.
  • Musisz samodzielnie dbać o backup.
  • To do Ciebie należy wybór odpowiedniego pliku z hasłami. Nowoczesne menadżery na stronie phishingowej nie podpowiedzą hasła - bo zapisują również adresy. Tutaj musisz kopiować adres do schowka.

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.

#yubikey