W tym protokole użytkownicy muszą być uwierzytelnieni. Mogą to zrobić za pomocą haseł, plików zawierających prywatne klucze RSA, urządzeń sprzętowych, takich jak Ledger Nano S i Ledger Nano X itp.
Niektóre metody uwierzytelniania są bezpieczniejsze niż inne: użycie urządzenia zaprojektowanego do przechowywania klucza prywatnego bez możliwości jego wyodrębnienia jest bezpieczniejsze niż przechowywanie klucza prywatnego w pliku. Niestety te najbezpieczniejsze są również bardziej bolesne w użyciu. Użytkownicy, którzy mają swoje klucze na urządzeniu, muszą nosić je ze sobą, muszą wpisywać swój kod PIN za każdym razem, gdy inicjują sesję SSH itp. To sprawia, że dość trudno jest zalecać sposoby bezpieczniejsze niż hasła i pliki w przypadkach użycia, w których bezpieczeństwo dostępu nie jest priorytetem.
Pytanie brzmi: czy możliwe jest bezpieczniejsze przechowywanie materiału uwierzytelniającego niż w pliku (który może zostać skradziony przez niektóre złośliwe oprogramowanie), bez zmiany doświadczenia użytkownika?
A odpowiedź brzmi: tak, przy użyciu modułu TPM!
Trochę historii
Od dłuższego czasu komputery mogą bezpośrednio osadzać układ zabezpieczający. Układ ten, nazwany Trusted Platform Module (TPM), zapewnia wiele funkcji, w tym możliwość ochrony kluczy prywatnych używanych w kryptografii klucza publicznego.
Ponieważ jest osadzony w komputerach, nie ma potrzeby podłączania urządzenia do komputera, aby z niego korzystać. Jest to zatem uważane za mniej bezpieczne niż urządzenie sprzętowe, które może być przechowywane w innym miejscu niż komputer (pozwala to na egzekwowanie zasady, że dopóki urządzenie nie jest podłączone do komputera, żadne złośliwe oprogramowanie nie może wykorzystać przechowywanych w nim tajemnic).
Tak więc TPM nie jest „najlepszym zabezpieczeniem”, ale i tak jest o wiele bezpieczniejsze niż używanie plików takich jak $HOME/.ssh/id_rsa
do przechowywania kluczy prywatnych.
Jak można używać modułu TPM z OpenSSH w systemie Linux? Z projektem o nazwie tpm2-pkcs11
, postępując zgodnie z instrukcjami dostępnymi na wielu stronach internetowych od wielu lat, w tym na oficjalnej dokumentacji ze swojego repozytorium kodu.
A teraz, jakie są wieści? To oprogramowanie jest teraz ostatecznie spakowane w Ubuntu i Debian, dzięki czemu jest wreszcie dostępne dla większości użytkowników Linuksa!
Dokładniej, tutaj jest oś czasu:
- W 2014 roku opublikowano główne specyfikacje TPM 2.0. Aby umożliwić interakcję z modułem TPM z poziomu oprogramowania, podjęto próbę standaryzacji i utworzono dwa niekompatybilne stosy oprogramowania: jeden z Trusted Computing Group (TCG), zwany Stos oprogramowania TPM (TSS) oraz ten od IBM, tzw Stos oprogramowania TPM.
- W 2018 roku projekt
tpm2-pkcs11
został stworzony w celu udostępnienia interfejsu PKCS#11 do modułu TPM 2.0 przy użyciu TSS firmy TCG. PKCS # 11 to standard definiujący interfejs programowania aplikacji (API) o nazwie Kryptoki używać tokenów przechowujących klucze kryptograficzne. Ponieważ OpenSSH obsługiwał użycie interfejsu PKCS#11 do przeprowadzania uwierzytelniania użytkownika, umożliwiło to użycie modułu TPM do przechowywania kluczy używanych do uwierzytelniania SSH. - W lutym 2019,
tpm2-pkcs11
został dodany do Fedora 29. - We wrześniu 2019 roku z tym pakietem został wydany CentOS 8.
- W kwietniu 2020,
tpm2-pkcs11
został dodany do Debian sid. Niestety nie zawierał programutpm2_ptool
co jest niezbędne do łatwego tworzenia kluczy. Ten problem został zgłoszony w Błąd Debiana #968310. - W styczniu 2021 pakiet Debiana był ustalony (a opiekun potwierdził moją pomoc!).
- W kwietniu 2021 r. Ubuntu 21.04 Hirsute hipopotam został wydany z pakiet stały.
- W sierpniu 2021 r. Debian 11 Bullseye został wydany z pakiet stały
Teraz tpm2-pkcs11
jest dostępny na Debianie, Ubuntu i kilku innych dystrybucjach Linuksa wymienionych na repologia.
Używając tpm2-pkcs11
W Debianie 11, oto kroki, aby wygenerować i używać nowego klucza SSH bezpiecznie przechowywanego przez TPM:
- Zainstaluj polecenie
tpm2_ptool
i bibliotekalibtpm2_pkcs11.so.1
, które są dostarczane przez dwa pakiety:
2. Sprawdź, czy system może korzystać z modułu TPM 2.0. Jeśli jedna z poniższych kontroli zakończy się niepowodzeniem, może to oznaczać, że system nie ma modułu TPM, ma moduł TPM 1.2 lub ma moduł TPM 2.0, który jest wyłączony w ustawieniach systemu BIOS:
3. Dodaj bieżącego użytkownika do grupy, która ma dostęp do urządzenia TPM /dev/tpmrm0
. W Debianie i Ubuntu użytkownicy muszą należeć do grupy o nazwie tss
(dzięki konfiguracji dostarczonej przez tpm-udev
pakiet). Następujące polecenie dodaje bieżącego użytkownika do tej grupy:
Zainicjuj magazyn użytkownika, chroniony hasłem i a SOPIN i utwórz klucz, na przykład klucz krzywej eliptycznej na krzywej o nazwie „NIST P-256” (znany również jako „secp256r1”):
4. Akronim SOPIN znaczy Osobisty numer identyfikacyjny oficera ochrony i jest koncepcją ze specyfikacji PKCS#11. W prostych przypadkach może być postrzegane jako „hasło odzyskiwania”, które umożliwia modyfikację hasła, gdy np. zostało utracone.
5. Wyświetl klucz publiczny tego nowego klucza:
6. Skonfiguruj nowy klucz publiczny na serwerze, na przykład wpisując go $HOME/.ssh/authorized_keys
lub w ustawieniach konta GitHub lub w dowolnym innym miejscu, w którym używane są klucze publiczne SSH.
7. Skonfiguruj klienta SSH, którego chcesz używać tpm2-pkcs11
aby połączyć się z serwerem, na przykład wpisując to w $HOME/.ssh/config
(Strona klienta):
Połącz się z serwerem (Uwaga: poprzedni krok można pominąć:
Przyszła praca
W poprzedniej sekcji przedstawiono sposób tworzenia nowego klucza w module TPM. Chociaż umożliwia to użycie TPM do ochrony uwierzytelniania SSH, istnieją dwie funkcje, które są potrzebne, aby uczynić to prawdziwą alternatywą dla używania plików do przechowywania kluczy prywatnych:
- Funkcja nr 1: importowanie istniejących kluczy SSH do modułu TPM zamiast tworzenia nowych (co umożliwia płynne przejście do magazynu TPM, tworzenie kopii zapasowych kluczy na wypadek awarii lub utraty komputera itp.).
- Funkcja nr 2: używanie kluczy SSH bez hasła, takich jak niezabezpieczone pliki kluczy prywatnych (ta funkcja jest bezpieczniejsza niż pliki kluczy, ponieważ chronionego klucza nie można wyodrębnić z modułu TPM).
Zaimplementowałem obie funkcje w tpm2-pkcs11
i przesłał je w Pull Requestach #681 i #695. Funkcja nr 1 została również zaprezentowana w maju podczas cotygodniowej rozmowy online w dniu społeczność tpm.dev a nagranie jest dostępne na https://developers.tpm.dev/posts/14389750.
Tak więc obie funkcje prawdopodobnie staną się dostępne w przyszłej wersji tpm2-pkcs11
.
Nawiasem mówiąc, dla ciekawskich czytelników, którzy chcą zrozumieć wnętrze tpm2-pkcs11
, opublikowałem o nich artykuł na konferencji SSTIC 2021 pt Ochrona uwierzytelniania SSH za pomocą TPM 2.0 (artykuł w języku angielskim, prezentacja w języku francuskim). Ponadto czytelników, którzy chcą wypróbować różne rzeczy bez dotykania prawdziwego TPM, może zainteresować sekcja „Emulowanie TPM 2.0” tego artykułu.
(Ilustracja: Rainer Knäpper, licencja wolnej sztuki)
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoAiStream. Analiza danych Web3. Wiedza wzmocniona. Dostęp tutaj.
- Wybijanie przyszłości w Adryenn Ashley. Dostęp tutaj.
- Kupuj i sprzedawaj akcje spółek PRE-IPO z PREIPO®. Dostęp tutaj.
- Źródło: https://www.ledger.com/blog/ssh-with-tpm
- :ma
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- zdolność
- Zdolny
- O nas
- dostęp
- Konto
- przyznał
- Dodaj
- w dodatku
- Dodaje
- rzecznik
- również
- alternatywny
- an
- i
- odpowiedź
- każdy
- api
- Zastosowanie
- kwiecień
- SĄ
- Sztuka
- artykuł
- AS
- At
- Sierpnia
- uwierzytelniony
- Uwierzytelnianie
- dostępny
- poparcie
- BE
- stają się
- być
- obie
- Złamany
- Bug
- ale
- by
- wezwanie
- CAN
- nie może
- nieść
- walizka
- Etui
- CGI
- wymiana pieniędzy
- ZOBACZ
- Wykrywanie urządzeń szpiegujących
- żeton
- klient
- kod
- komputer
- komputery
- computing
- pojęcie
- Konferencja
- systemu
- Skontaktuj się
- połączony
- za
- mógłby
- Stwórz
- stworzony
- Tworzenie
- kryptograficzny
- kryptografia
- ciekawy
- Aktualny
- krzywa
- Definiuje
- zaprojektowany
- dev
- urządzenie
- urządzenia
- ZROBIŁ
- różne
- trudny
- bezpośrednio
- niepełnosprawny
- Wyświetlacz
- Dystrybucje
- do
- dokumentacja
- robi
- podczas
- z łatwością
- wysiłek
- Eliptyczny
- osadzać
- osadzone
- włączony
- Umożliwia
- Egzekwowanie
- Angielski
- itp
- EVER
- Każdy
- przykład
- Przede wszystkim system został opracowany
- doświadczenie
- wyciąg
- nie
- Cecha
- Korzyści
- luty
- filet
- Akta
- W końcu
- ustalony
- następujący
- W razie zamówieenia projektu
- Darmowy
- francuski
- od
- przyszłość
- Generować
- GitHub
- Zarządzanie
- sprzęt komputerowy
- urządzenie sprzętowe
- urządzenia sprzętowe
- Have
- tutaj
- W jaki sposób
- How To
- HTML
- http
- HTTPS
- i
- IBM
- Identyfikacja
- if
- realizowane
- importowanie
- in
- Włącznie z
- niezgodny
- zainicjować
- zamiast
- instrukcje
- interakcji
- zainteresowany
- Interfejs
- najnowszych
- problem
- IT
- JEGO
- styczeń
- Styczeń 2021
- jpg
- Klawisz
- Klawisze
- znany
- Księga główna
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- mniej
- lubić
- Prawdopodobnie
- linux
- Katalogowany
- lokalizacja
- stracił
- Główny
- robić
- WYKONUJE
- Dokonywanie
- malware
- wiele
- materiał
- Maksymalna szerokość
- Może..
- oznaczać
- znaczy
- moduł
- jeszcze
- Ponadto
- większość
- dużo
- my
- O imieniu
- nano
- niezbędny
- Potrzebować
- potrzebne
- Nowości
- aktualności
- Nie
- już dziś
- of
- Oficer
- on
- ONE
- te
- Online
- or
- zamówienie
- Inne
- Pozostałe
- pakiet
- pakowane
- Pakiety
- bolesny
- Hasło
- hasła
- wykonać
- osobisty
- Miejsce
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- wtyczka
- możliwy
- precyzyjnie
- presentation
- przedstawione
- poprzedni
- zasada
- priorytet
- prywatny
- Klucz prywatny
- Klucze prywatne
- Programowanie
- projekt
- chronić
- chroniony
- ochrony
- protokół
- zapewniać
- pod warunkiem,
- zapewnia
- publiczny
- Klucz publiczny
- klucze publiczne
- opublikowany
- pytanie
- czytelnicy
- real
- nagranie
- zwolnić
- wydany
- Zgłoszone
- wymagany
- RSA
- s
- Sekcja
- bezpieczne
- bezpiecznie
- bezpieczeństwo
- widziany
- wrzesień
- Sesja
- w panelu ustawień
- kilka
- bok
- Prosty
- So
- Tworzenie
- kilka
- specyfikacja
- Specyfikacje
- Półki na książki
- standard
- Ewolucja krok po kroku
- Cel
- Nadal
- skradziony
- przechowywanie
- sklep
- przechowywany
- składane
- taki
- Utrzymany
- system
- niż
- dzięki
- że
- Połączenia
- Tygodnik
- ich
- Im
- Tam.
- w związku z tym
- one
- rzeczy
- to
- czas
- Oś czasu
- do
- Żetony
- dotykając
- przejście
- zaufany
- próbować
- drugiej
- rodzaj
- Ubuntu
- zrozumieć
- Niestety
- posługiwać się
- używany
- Użytkownik
- Doświadczenie użytkownika
- Użytkownicy
- za pomocą
- chcieć
- była
- Droga..
- sposoby
- strony internetowe
- tygodniowy
- były
- jeśli chodzi o komunikację i motywację
- który
- Podczas
- KIM
- w
- bez
- pisanie
- X
- lat
- tak
- zefirnet