У цьому протоколі користувачі повинні пройти автентифікацію. Вони можуть робити це за допомогою паролів, файлів, що містять приватні ключі 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. ПКС №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
пакет). Наступна команда додає поточного користувача до цієї групи:
Ініціалізувати сховище користувача, захищене паролем і a СОПІН і створіть ключ, наприклад ключ еліптичної кривої на кривій під назвою «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
і надіслав їх у запитах на вилучення # 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» цієї статті.
(Ілюстрація: Райнер Кнеппер, Free Art License)
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoAiStream. Web3 Data Intelligence. Розширення знань. Доступ тут.
- Карбування майбутнього з Адріенн Ешлі. Доступ тут.
- Купуйте та продавайте акції компаній, які вийшли на IPO, за допомогою 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
- додаток
- квітня
- ЕСТЬ
- Art
- стаття
- AS
- At
- Серпня
- автентифіковано
- Authentication
- доступний
- підтримка
- BE
- ставати
- було
- обидва
- Зламаний
- Помилка
- але
- by
- call
- CAN
- не може
- нести
- випадок
- випадків
- CGI
- заміна
- перевірка
- Перевірки
- чіп
- клієнт
- код
- комп'ютер
- комп'ютери
- обчислення
- концепція
- конференція
- конфігурація
- З'єднуватися
- підключений
- вважається
- може
- створювати
- створений
- створення
- криптографічні
- криптографія
- цікавий
- Поточний
- крива
- Визначає
- призначений
- DEV
- пристрій
- прилади
- DID
- різний
- важкий
- безпосередньо
- інвалід
- дисплей
- Розподілу
- do
- документація
- робить
- під час
- легко
- зусилля
- Еліптичних
- Вставляти
- вбудований
- включений
- дозволяє
- виконання
- англійська
- і т.д.
- НІКОЛИ
- Кожен
- приклад
- існуючий
- досвід
- витяг
- зазнає невдачі
- особливість
- риси
- лютого
- філе
- Файли
- в кінці кінців
- фіксованою
- після
- для
- Безкоштовна
- французька
- від
- майбутнє
- породжувати
- GitHub
- Group
- апаратні засоби
- апаратний пристрій
- апаратні пристрої
- Мати
- тут
- Як
- How To
- HTML
- HTTP
- HTTPS
- i
- IBM
- Ідентифікація
- if
- реалізовані
- імпорт
- in
- У тому числі
- несумісні
- ініціювати
- замість
- інструкції
- взаємодіяти
- зацікавлений
- інтерфейс
- в
- питання
- IT
- ЙОГО
- січня
- 2021 січня
- JPG
- ключ
- ключі
- відомий
- Гросбух
- Леджер Нано
- Ledger Nano S
- Книга Нано X
- менше
- як
- Ймовірно
- Linux
- Перераховані
- розташування
- втрачений
- головний
- зробити
- РОБОТИ
- Робить
- шкідливих програм
- багато
- матеріал
- макс-ширина
- Може..
- значити
- засоби
- Модулі
- більше
- Більше того
- найбільш
- багато
- my
- Названий
- нано
- необхідно
- Необхідність
- необхідний
- Нові
- новини
- немає
- зараз
- of
- Офіцер
- on
- ONE
- ті,
- онлайн
- or
- порядок
- Інше
- інші
- пакет
- упаковані
- пакети
- хворобливий
- Пароль
- Паролі
- виконувати
- персонал
- місце
- платформа
- plato
- Інформація про дані Платона
- PlatoData
- штекер
- це можливо
- точно
- Presentation
- представлений
- попередній
- принцип
- пріоритет
- приватний
- Private Key
- Приватні ключі
- Програмування
- проект
- захист
- захищений
- захищає
- протокол
- забезпечувати
- за умови
- забезпечує
- громадськість
- публічний ключ
- відкриті ключі
- опублікований
- питання
- читачі
- реальний
- запис
- звільнити
- випущений
- Повідомляється
- вимагається
- RSA
- s
- розділ
- безпечний
- безпечно
- безпеку
- бачив
- Вересень
- Сесія
- налаштування
- кілька
- сторона
- простий
- So
- Софтвер
- деякі
- специфікація
- специфікації
- Стеки
- standard
- Крок
- заходи
- Як і раніше
- вкрали
- зберігання
- зберігати
- зберігати
- представлений
- такі
- Підтриманий
- система
- ніж
- Дякую
- Що
- Команда
- Щотижневик
- їх
- Їх
- Там.
- отже
- вони
- речі
- це
- час
- Терміни
- до
- Жетони
- зворушливий
- перехід
- Довірений
- намагатися
- два
- тип
- Ubuntu
- розуміти
- на жаль
- використання
- використовуваний
- користувач
- User Experience
- користувачі
- використання
- хотіти
- було
- шлях..
- способи
- веб-сайти
- тижні
- були
- коли
- який
- в той час як
- ВООЗ
- з
- без
- лист
- X
- років
- так
- зефірнет