В этом протоколе пользователи должны пройти аутентификацию. Они могут делать это с помощью паролей, файлов, содержащих закрытые ключи RSA, аппаратных устройств, таких как Ledger Nano S и Ledger Nano X и т. д.
Некоторые средства аутентификации более безопасны, чем другие: использование аппаратного устройства, предназначенного для хранения закрытого ключа без возможности его извлечения, более безопасно, чем хранение закрытого ключа в файле. К сожалению, самые безопасные из них также более болезненны в использовании. Пользователи, у которых есть ключи на устройстве, должны носить устройство с собой, должны вводить свой PIN-код каждый раз, когда они инициируют сеанс SSH, и т. д. Это затрудняет защиту более безопасных способов, чем пароли и файлы, для случаев использования, когда безопасность доступа не является приоритетом.
Итак, вопрос: можно ли хранить аутентификационный материал более надежно, чем в файле (который может быть украден некоторыми вредоносными программами), не изменяя при этом взаимодействия с пользователем?
И ответ: да, с помощью TPM!
Немного истории
В течение достаточно долгого времени компьютеры могли напрямую встраивать чип безопасности. Этот чип под названием Trusted Platform Module (TPM) предоставляет множество функций, включая возможность защиты закрытых ключей, используемых в криптографии с открытым ключом.
Поскольку он встроен в компьютеры, для его использования нет необходимости подключать устройство к компьютеру. Поэтому это считается менее безопасным, чем аппаратное устройство, которое может храниться в другом месте от компьютера (это позволяет реализовать принцип, согласно которому, пока устройство не подключено к компьютеру, никакое вредоносное ПО не может использовать хранящиеся в нем секреты).
Таким образом, TPM не является «лучшей защитой», но все же гораздо более безопасен, чем использование таких файлов, как $HOME/.ssh/id_rsa
для хранения приватных ключей.
Как можно использовать TPM с OpenSSH в Linux? С проектом под названием tpm2-pkcs11
, следуя инструкциям, доступным на многих веб-сайтах в течение многих лет, в том числе на официальная документация из своего репозитория кода.
Какие новости? Это программное обеспечение наконец упаковано в Ubuntu и Debian, что делает его доступным для большинства пользователей Linux!
Точнее вот временная шкала:
- В 2014 году были опубликованы основные спецификации TPM 2.0. Для взаимодействия с TPM из программного обеспечения были предприняты усилия по стандартизации, и были созданы два несовместимых программных стека: один от Trusted Computing Group (TCG), называемый Программный стек TPM (TSS) и один от IBM, также называемый Стек программного обеспечения TPM.
- В 2018 году проект
tpm2-pkcs11
был создан для предоставления интерфейса PKCS#11 для TPM 2.0 с использованием TSS TCG. PKCS # 11 — это стандарт, определяющий интерфейс прикладного программирования (API) с именем Криптоки использовать токены, хранящие криптографические ключи. Поскольку OpenSSH поддерживает использование интерфейса PKCS#11 для аутентификации пользователей, это позволяет использовать TPM для хранения ключей, используемых для аутентификации SSH. - В феврале 2019,
tpm2-pkcs11
был добавлен в Fedora 29. - В сентябре 2019 года с этим пакетом была выпущена CentOS 8.
- В апреле 2020,
tpm2-pkcs11
был добавлен в Debian sid. К сожалению, в нем не было программыtpm2_ptool
что необходимо для простого создания ключей. Об этой проблеме сообщалось в Ошибка Debian # 968310. - В январе 2021 года пакет Debian был фиксированной (и сопровождающий признал мою помощь!).
- В апреле 2021 года Ubuntu 21.04 Волосатый бегемот был выпущен с фиксированный пакет.
- В августе 2021 года Debian 11 Меченый был выпущен с фиксированный пакет
Теперь tpm2-pkcs11
доступен в Debian, Ubuntu и некоторых других дистрибутивах Linux, перечисленных на Репология.
Использование tpm2-pkcs11
В Debian 11 выполните следующие действия для создания и использования нового ключа SSH, надежно хранящегося в TPM:
- Установить команду
tpm2_ptool
и библиотекаlibtpm2_pkcs11.so.1
, которые предоставляются двумя пакетами:
2. Убедитесь, что система может использовать TPM 2.0. Если одна из следующих проверок не пройдена, это может означать, что в системе нет TPM, или есть TPM 1.2, или есть TPM 2.0, который отключен в настройках BIOS:
3. Добавьте текущего пользователя в группу, которая может получить доступ к устройству TPM. /dev/tpmrm0
. В Debian и Ubuntu пользователи должны принадлежать к группе с именем tss
(благодаря конфигурации, предоставленной tpm-udev
пакет). Следующая команда добавляет текущего пользователя в эту группу:
Инициализировать хранилище пользователей, защищенное паролем и СОПИН и создайте ключ, например, ключ эллиптической кривой на кривой с именем «NIST P-256» (также известный как «secp256r1»):
4. Аббревиатура СОПИН означает Личный идентификационный номер сотрудника службы безопасности и является концепцией из спецификации PKCS#11. В простых случаях использования его можно рассматривать как «пароль восстановления», который позволяет изменить пароль, например, когда он был утерян.
5. Отобразите открытый ключ этого нового ключа:
6. Настройте новый открытый ключ на сервере, например, записав его в $HOME/.ssh/authorized_keys
или в настройках учетной записи GitHub, или в любом другом месте, где используются открытые ключи SSH.
7. Настройте клиент SSH для использования tpm2-pkcs11
для подключения к серверу, например, написав это в $HOME/.ssh/config
(сторона клиента):
Подключитесь к серверу (обратите внимание, что предыдущий шаг можно пропустить:
Будущая работа
В предыдущем разделе было показано, как создать новый ключ в TPM. Хотя это позволяет использовать TPM для защиты аутентификации SSH, есть две функции, которые необходимы, чтобы сделать это реальной альтернативой использованию файлов для хранения закрытых ключей:
- Функция № 1: импорт существующих ключей SSH в TPM вместо создания новых (что обеспечивает плавный переход к хранилищу TPM, резервное копирование ключей, на случай поломки или потери компьютера и т. д.).
- Функция № 2: использование ключей SSH без пароля, таких как незащищенные файлы закрытых ключей (эта функция более безопасна, чем файлы ключей, поскольку защищенный ключ нельзя извлечь из TPM).
Я реализовал обе функции в tpm2-pkcs11
и отправил их в Pull Requests #681 и #695. Функция № 1 также была представлена в мае во время еженедельной онлайн-конференции сообщество tpm.dev и запись доступна на https://developers.tpm.dev/posts/14389750.
Таким образом, обе функции, скорее всего, станут доступны в будущем выпуске tpm2-pkcs11
.
Кстати, для любознательных читателей, желающих разобраться во внутренностях tpm2-pkcs11
, я опубликовал о них статью на конференции SSTIC 2021, названную Защита аутентификации SSH с помощью TPM 2.0 (статья на английском языке, презентация на французском языке). Кроме того, читателям, которые хотят попробовать что-то, не касаясь настоящего TPM, может быть интересен раздел «Эмуляция TPM 2.0» этой статьи.
(Иллюстрация: Райнер Кнеппер, Лицензия на свободное искусство)
- SEO-контент и PR-распределение. Получите усиление сегодня.
- ПлатонАйСтрим. Анализ данных Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Покупайте и продавайте акции компаний PREIPO® с помощью PREIPO®. Доступ здесь.
- Источник: https://www.ledger.com/blog/ssh-with-tpm
- :имеет
- :является
- :нет
- :куда
- $UP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- способность
- в состоянии
- О нас
- доступ
- Учетная запись
- признанный
- Добавить
- добавленный
- Добавляет
- адвокат
- Также
- альтернатива
- an
- и
- ответ
- любой
- API
- Применение
- апрель
- МЫ
- Искусство
- гайд
- AS
- At
- Август
- подлинности
- Аутентификация
- доступен
- поддержка
- BE
- становиться
- было
- изоферменты печени
- Сломанный
- Ошибка
- но
- by
- призывают
- CAN
- не могу
- нести
- случаев
- случаев
- CGI
- изменения
- проверка
- Проверки
- чип
- клиент
- код
- компьютер
- компьютеры
- вычисление
- сама концепция
- Конференция
- Конфигурация
- Свяжитесь
- подключенный
- считается
- может
- Создайте
- создали
- Создающий
- криптографический
- криптография
- любопытный
- Текущий
- кривая
- Определяет
- предназначенный
- Дев
- устройство
- Устройства
- DID
- различный
- трудный
- непосредственно
- инвалид
- Дисплей
- распределения
- do
- документации
- приносит
- в течение
- легко
- усилие
- Эллиптических
- вставлять
- встроенный
- включен
- позволяет
- обеспечение соблюдения
- Английский
- и т.д
- НИКОГДА
- Каждая
- пример
- существующий
- опыт
- извлечение
- не удается
- Особенность
- Особенности
- февраль
- Файл
- Файлы
- в заключение
- фиксированной
- после
- Что касается
- Бесплатно
- Французский
- от
- будущее
- порождать
- GitHub
- группы
- Аппаратные средства
- аппаратное устройство
- аппаратные устройства
- Есть
- здесь
- Как
- How To
- HTML
- HTTP
- HTTPS
- i
- IBM
- Идентификация
- if
- в XNUMX году
- импортирующий
- in
- В том числе
- несовместимый
- инициировать
- вместо
- инструкции
- взаимодействовать
- заинтересованный
- Интерфейс
- в
- вопрос
- IT
- ЕГО
- январь
- Январь 2021г.
- JPG
- Основные
- ключи
- известный
- Ledger
- Ledger Nano
- Ledger Nano S
- Ledger Nano X
- Меньше
- такое как
- Вероятно
- Linux
- Включенный в список
- расположение
- потерянный
- Главная
- сделать
- ДЕЛАЕТ
- Создание
- вредоносных программ
- многих
- материала
- макс-ширина
- Май..
- значить
- означает
- модуль
- БОЛЕЕ
- Более того
- самых
- много
- my
- Названный
- карликовый
- необходимо
- Необходимость
- необходимый
- Новые
- Новости
- нет
- сейчас
- of
- сотрудник
- on
- ONE
- те,
- онлайн
- or
- заказ
- Другие контрактные услуги
- Другое
- пакет
- в упаковке
- пакеты
- болезненный
- Пароль
- пароли
- выполнять
- личного
- Часть
- Платформа
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- штекер
- возможное
- Точно
- presentation
- представлены
- предыдущий
- принцип
- приоритет
- частная
- Секретный ключ
- Частные ключи
- Программирование
- Проект
- для защиты
- защищенный
- защищающий
- протокол
- обеспечивать
- при условии
- приводит
- что такое варган?
- публичный ключ
- открытые ключи
- опубликованный
- вопрос
- читатели
- реальные
- запись
- освободить
- выпустил
- Сообщается
- обязательный
- RSA
- s
- Раздел
- безопасный
- безопасно
- безопасность
- видел
- сентябрь
- Сессия
- настройки
- несколько
- сторона
- просто
- So
- Software
- некоторые
- Спецификация
- спецификации
- Стеки
- стандарт
- Шаг
- Шаги
- По-прежнему
- украли
- диск
- магазин
- хранить
- представленный
- такие
- Поддержанный
- система
- чем
- благодаря
- который
- Ассоциация
- Еженедельный
- их
- Их
- Там.
- следовательно
- они
- вещи
- этой
- время
- Сроки
- в
- Лексемы
- трогательный
- переход
- надежных
- стараться
- два
- напишите
- Ubuntu
- понимать
- К сожалению
- использование
- используемый
- Информация о пользователе
- Пользовательский опыт
- пользователей
- через
- хотеть
- законопроект
- Путь..
- способы
- веб-сайты
- еженедельно
- были
- когда
- который
- в то время как
- КТО
- без
- письмо
- X
- лет
- Да
- зефирнет