A TY, gdzie trzymasz swoje klucze?

Na tak postawione pytanie pewnie większość odpowie: w kieszeni, torebce lub plecaku. Jednak oczywiście nie chodzi o klucze do mieszkania, a o klucz prywatny. Dostęp bezhasłowy do serwerów ssh wymaga (oczywiście można pozwolić na prawdziwie bez hasłowy dostęp, jednak wtedy powstaje pytanie, czy brak hasła nie jest hasłem) posiadania pary kluczy: prywatnego, którego nie udostępniamy nikomu, oraz publicznego, który trzymamy na serwerach, do których chcemy mieć dostęp. Nie będę tu pisał o kryptografi klucza publicznego, bo o tym można przeczytać tu. A o ciekawej aplikacji krypton, która pozwala trzymać nasz klucz prywatny w jednym miejscu – na telefonie.

Aplikacja Krypton służy jako tak zwany Uniwersalny 2nd Factor (U2F), czyli narzędzie pozwalające nas uwierzytelnić. Innymi przykładami podwójnego uwierzytelnienie są SMSy, kody zdrapki, tokeny, klucze U2F czy innego rodzaju kody czasowe (TOTP). Dlaczego więc warto zainteresować się kryptonem?

Do minusów wszelkich kodów czasowych należy to, że są podatne na phishing. To znaczy, że dobrze przeprowadzony atak z człowiekiem w środku (ang. man in the middle) może wyłudzić od nas podanie kodu zupełnie nie zaufanej trzeciej stronie (ang. attacker). Jak się chronić przed tego typu atakami? Otóż najlepszym sposobem jest właśnie U2F, czyli narzędzie, które nie tylko pozwoli nas uwierzytelnić, ale również na drugiej strony przez sprawdzenie jej certyfikatu.

Do niedawna jedynym urządzeniem tego rodzaju był Yubikey, jednak wraz z popularyzacją standardu U2F liczba urządzeń się powiększa, a cena maleje (patrz porównanie kluczy). Jednak te narzędzia również nie są wolne od wad. Wymagają kompatybilnego złącza w komputerze. W praktyce oznacza to, że powinniśmy mieć przy sobie klucz USB A (najlepiej z NFC) oraz przejściówkę na USB-C. Noszenie ich może być problematyczne, nawet jeśli będą częścią biżuterii.

Nie musimy polegać tylko na fizycznym kluczu. Możemy mieć aplikację – Krypton. Jest to softwarowa implementacja U2F, która do poprawnego działania wymaga wtyczki do przeglądarki. Po instalacji aplikacji na telefonie i w przeglądarce parujemy urządzenia i już możemy dodać nasz telefon z Kryptonem jako klucz bezpieczeństwa w większości serwisów.

Używanie Kryptona zamiast klucza U2F nie jest może najlepszą metodą zwiększania bezpieczeństwa (wciąż bardziej wierzę w klucz fizyczny), jednak to nie jedyna funkcjonalność aplikacji. Potrafi ona również uwierzytelniać nasze sesje SSH i podpisywać komity. Przy czym robi to w taki sposób, że klucz prywatny nigdy nie opuszcza telefonu (a przynajmniej tak obiecują autorzy – kod można podejrzeć tu).

Aby to zrobić należy zainstalować program kr i sparować nasz telefon kodem QR (podobnie jak przeglądarkę). Pamiętaj instalowanie oprogramowania w poniższy sposób nie jest bezpieczne.

curl https://krypt.co/kr | sh
kr pair 

Następnie możemy dodać nasze zdalne serwery

kr add -s <USER>@<HOST>

Dodać podpisywanie komitów (Przeczytaj dlaczego tu i tam https://mikegerwitz.com/papers/git-horror-story https://stackoverflow.com/a/39708317/1387612)

kr codesign
kr codesign test

Połączyć z aws/bitbucket/digitalocean/gcp/github/ghe/gitlab/heroku

kr github

Czy dowolnym innym serwerem poprzez dodanie klucza publicznego

kr me

Gdy ktokolwiek będzie wykonywał operację wymagającą klucza, zostaniemy o tym poinformowani i poproszeni o autoryzację na telefonie za pomocą stosownego powiadomienia.

Niestety Krypton wciąż nie wspiera importowania wcześniej utworzonych kluczy kryptco/kr#173

Miłego podpisywania!


Leave a Reply