Wiadomość, którą widzisz, to osobny problem. Prosi o potwierdzenie, że host, z którym się łączysz, jest naprawdę tym, którego się spodziewasz. Z serwera możesz uzyskać odcisk palca, uruchamiając ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Następnie, gdy łączysz się zdalnie po raz pierwszy, możesz upewnić się, że odciski palców pasują.
Klucze hosta, widoczne tutaj w akcji, odnoszą się do problemu ataków typu mężczyzna w środku - być może DNS został obalony, a ty łączysz się z maszyną konkurenta zamiast z własną. Ta maszyna zbiera dane uwierzytelniające i w sposób transparentny przekazuje połączenie z prawdziwym serwerem, kradnąc informacje bez Twojej wiedzy. Upewnienie się, że klucz hosta pasuje, zapobiega temu, chyba że osoba atakująca faktycznie ukradła klucz publiczny serwera.
Pozostaje jednak problem - skąd wiesz, który klucz jest odpowiedni? Po pierwszym połączeniu klucz publiczny jest zapisywany w ~/.ssh/known_hosts
pliku, więc kolejne połączenia są w porządku. Ale po raz pierwszy albo potrzebujesz jakiegoś pozapasmowego sposobu na uzyskanie odcisku palca, albo podążasz za modelem „TOFU”: zaufanie przy pierwszym użyciu.
Ale to nie ma nic wspólnego z hasłami vs. kluczami, z wyjątkiem tego, że zarówno klucze, jak i hasła mogą zostać skradzione w wyniku tego ataku - w pewnym sensie jest to luka, o którą prosisz.
Istnieją (przynajmniej) trzy powody, dla których hasła są gorsze niż klucze:
- Mogą być brutalnie zmuszane. Typowe 8-znakowe hasło wybrane przez użytkownika ma około 30 bitów zgadywania-entropii. Para kluczy publiczny / prywatny ssh ma 1024 bity lub więcej. Brutalne użycie klucza ssh jest praktycznie niemożliwe, ale automatyczne zgadywanie hasła odbywa się cały czas.
- Mogą być głupie. Użytkownicy rutynowo wybierają okropne hasła, nawet z obowiązującymi ograniczeniami, i częściej używają trudniejszych haseł w wielu miejscach. To oczywiście ułatwia ataki.
- Hasła mogą zostać skradzione zdalnie. Gdy używasz SSH, hasło jest szyfrowane w sieci, ale bardzo często serwer ssh jest zastępowany w zaatakowanym systemie tym, który rejestruje wszystkie hasła. Dzięki kluczom klucz prywatny pozostaje w systemie lokalnym i nigdy nie jest wysyłany, więc nie można go skradzić bez narażenia komputera klienta.
Ponadto klucze ssh zapewniają wygodę, gdy są używane z czymś podobnym ssh-agent
- zapewnia bezproblemową operację łączenia bez ponownego uwierzytelniania za każdym razem, przy jednoczesnym zachowaniu rozsądnego poziomu bezpieczeństwa.
Żądanie obu nie ma znaczącej przewagi, ponieważ ktoś, kto ma wystarczający dostęp do kradzieży klucza prywatnego, może dość łatwo ukraść hasło użytkownika. Jeśli potrzebujesz większego bezpieczeństwa, zastanów się nad systemem dwuskładnikowego uwierzytelniania, takim jak RSA SecurID lub WiKID .
tak naprawdę pytasz: „jest jeden czynnik lepszy niż inny”, tematem jest uwierzytelnianie wieloskładnikowe i naprawdę dobrze byłoby zajrzeć do tematu.
Zazwyczaj „czynnikiem” jest coś, co znasz (hasło), coś, co masz (plik ssh lub karta machnięcia klawiszem), lub coś, czym jesteś (odcisk palca).
Jedna nie jest lepsza niż żadna inna per se, są one komplementarne. Utrata płyty CD z plikiem klucza jest tak samo niebezpieczna jak ujawnienie hasła, jeśli to wszystko, czego potrzebujesz. W przypadku bezpiecznych środowisk powszechne jest uwierzytelnianie dwuskładnikowe.
źródło