Группа под названием PrivacyIdea создала небольшой пакет для добавления подпрограммы HMAC-SHA1 вызов-ответ в initramfs, что означает, что Ubuntu может запросить у вас запрос на передачу в Yubikey, а затем использовать ответ для разблокировки тома LUKS. По большей части, я следую этим инструкциям , с некоторыми добавленными комментариями. Процесс на самом деле очень легко сделать.
Я проверил это на Ubuntu 14.04, 16.04 и 18.04; используя Yubikey Neo. Он должен работать с любым последним Yubikey, с прошивкой 2.0+ и с любой версией Ubuntu после 14.04. Я также тестировал Ubuntu 19.04 с Yubikey 5C, потребовалась некоторая дополнительная работа, но ее можно заставить работать. Могут быть и другие аппаратные устройства HMAC-SHA1, с которыми это работает, но я не знаю ни одного из существующих. Как всегда, прежде чем продолжить, убедитесь, что у вас есть резервная копия ваших данных - здесь не должно быть никаких проблем, но всегда есть вероятность, что это разрушит все на вашем компьютере. Эти инструкции поставляются без гарантии.
Обновление: Начиная с Ubuntu 16.04, необходимые пакеты находятся в основных репозиториях, и PPA не требуется.
Добавить комментарий, если у вас есть вопросы!
0. Предпосылки
Чтобы это работало, вам уже нужно будет настроить и работать с полным дисковым шифрованием LUKS. Вы можете сделать это, выбрав соответствующую опцию при установке Ubuntu. Для максимальной безопасности во время установки у вас должна быть выбрана очень надежная фраза-пароль. Если ваша парольная фраза не до конца, вы должны изменить ее на лучшую, прежде чем продолжить ( более подробные инструкции здесь ).
Метод ниже не заменит существующие парольные фразы, но вместо этого добавит другую парольную фразу в один из слотов LUKS. Следовательно, если вы потеряете свой Yubikey, вы все равно сможете разблокировать свой компьютер, используя любую существующую парольную фразу - я предлагаю вам записать ее и спрятать в безопасном месте - вам также понадобится несколько раз во время этой процедуры. Ваша новая парольная фраза для вызова Yubikey должна быть достаточно сильной, но не обязательно такой же, как та, которую вы использовали при установке Ubuntu.
1. Добавить PrivacyIdea PPA и установить пакет
На Ubuntu 14.04
Откройте терминал и выполните следующую команду:
sudo add-apt-repository ppa:privacyidea/privacyidea
Нажмите Enter при появлении запроса, затем запустите:
sudo apt-get update
Затем установите пакет с помощью:
sudo apt-get install yubikey-luks
На Ubuntu 16.04, 18.04
Нет необходимости в PPA, вы можете установить пакет с помощью:
sudo apt-get install yubikey-luks
На Ubuntu 19.04
Посмотрите этот ответ, чтобы узнать, как собрать yubikey-luks
пакет из исходного кода для Ubuntu 19.04.
2. Установите программное обеспечение Yubikey
Если вы используете функциональность HMAC-SHA1 Yubikey для чего-то другого, вы можете пропустить этот раздел. Он удалит любую конфигурацию во втором слоте Yubikey, поэтому не выполняйте этот шаг, если вы используете HMAC-SHA1 для других целей с этим Yubikey.
Вам необходимо настроить Yubikey для работы с Ubuntu, установив необходимое программное обеспечение, либо из Yubico PPA в Ubuntu 14.04, либо из основного репозитория Ubuntu 16.04 и более поздних версий.
На Ubuntu 14.04
Если вы еще этого не сделали, добавьте PPA и установите пакет с:
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization
На Ubuntu 16.04, 18.04 (и позже)
sudo apt-get install yubikey-personalization
3. Инициализируйте слот Yubikey для HMAC-SHA1.
Теперь нам нужно запрограммировать второй слот Yubikey с конфигурацией HMAC-SHA1. Это удалит вашу предыдущую конфигурацию слота, которая по умолчанию пуста. Опять же, если вы используете HMAC-SHA1 для чего-то другого , не выполняйте эту команду - она сотрет вашу конфигурацию. Вы можете безопасно использовать тот же секретный ключ внутри Yubikey для этой настройки LUKS, что и для других ваших целей. (Например, с другим компьютером, использующим LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
Терминал отобразит некоторую информацию о внесенных изменениях. Вам не нужно записывать это, но он покажет секретный ключ, используемый Yubikey в алгоритме HMAC-SHA1 для вычисления ответа при вызове.
4. Зарегистрируйте Yubikey в слот LUKS
Теперь мы отредактируем конфигурацию LUKS, добавив ответ от Yubikey в качестве одного из ключей расшифровки.
Раздел, который нам нужно указать, зависит от того, используете ли вы BIOS или UEFI для загрузки вашей машины. Для BIOS зашифрованный том используется /dev/sda5
по умолчанию, для UEFI - по умолчанию /dev/sda3
. Вы можете проверить это, открыв disks
утилиту и подтвердив путь к разделу - он должен быть sda3
либо sda5
. ПРИМЕЧАНИЕ. На новых компьютерах с дисками NVMe путь будет примерно таким /dev/nvme0n1p3
.
Запустите это в терминале:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7
Это запишет в слот 7 конфигурации LUKS, следуя инструкциям установщика (они немного различаются в зависимости от используемой версии).
Тогда все готово! У вас должна быть возможность перезагрузить компьютер, и если ваш Yubikey вставлен, вы можете ввести свой пароль для вызова и использовать Yubikey в качестве второго фактора, чтобы разблокировать раздел LUKS и загрузить систему. После расшифровки жесткого диска вы можете удалить Yubikey.
Если вы потеряете свой Yubikey, вы все равно можете ввести исходную (надеюсь, очень длинную) парольную фразу для расшифровки жесткого диска, а затем вы можете повторить эту процедуру еще раз, чтобы зарегистрировать новый Yubikey.
Изменение контрольной фразы запроса на шифрование
Смена пароля на более позднем этапе довольно проста, просто используйте эту команду для сброса секретного ключа. Не обязательно сбрасывать секретный ключ, но это не повредит. Имейте в виду, что это уничтожит предыдущий секретный ключ, не делайте этого, если вы используете HMAC-SHA1 для чего-то еще с этим Yubikey. (Например, с другим компьютером, использующим LUKS + Yubikey).
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
Затем, аналогично описанному выше шагу 4 , зарегистрируйте новый пароль в слоте ключа LUKS, за исключением выбора очистки слота 7 с помощью этой команды:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c
При появлении запроса Enter any remaining passphrase
используйте резервную резервную фразу, а не парольную фразу Yubikey. Затем дважды введите новую парольную фразу Yubikey, затем, наконец, вам потребуется ввести резервную парольную фразу в последний раз.
Теперь ваша старая парольная фраза Yubikey Challenge была удалена, и только ваша новая будет расшифровывать жесткий диск. Ваша предыдущая резервная фраза будет прежней. Вы можете изменить эту фразу-пароль, перейдя по ссылкам на шаге 0 .
Примечание о последствиях для безопасности
Добавление Yubikey добавит определенный уровень безопасности в вашу систему - кто-то должен знать и пароль-пароль вызова, и ваш Yubikey, чтобы иметь возможность разблокировать жесткий диск (или найти исходную фразу-пароль, которую вы сейчас используете в качестве резервной копии) , Однако технически возможно, чтобы злоумышленник расшифровал жесткий диск, если он знает вашу парольную фразу вызова (например, путем «серфинга по плечу», когда вы ее вводите) и может получить доступ к вашему Yubikey только на короткое время. Используя контрольную фразу, они могли получить ответ от Yubikey и сохранить его, а затем использовать его для расшифровки жесткого диска в любое время без Yubikey. Или, опять же, если злоумышленник или вредоносное ПО знали вашу фразу-пароль и смогли запустить код на компьютере, подключенном к вашему Yubikey, они также могли выполнить вызов и сохранить ответ. Поэтому по-прежнему крайне важно быть бдительным при вводе ключевой фразы вызова и следить за тем, чтобы Yubikey всегда находился в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. и чтобы у вас всегда был Yubikey в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. и чтобы у вас всегда был Yubikey в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (или ответ HMAC-SHA1 от Yubikey, или вашу резервную копию), он может создать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (или ответ HMAC-SHA1 от Yubikey, или вашу резервную копию), он может создать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем.Страница man для cryptsetup объясняет это, посмотрите в раздел luksHeaderBackup . Если вы подозреваете, что это произошло, вы должны создать совершенно новый том LUKS для защиты ваших данных.
Обновление для Ubuntu 19.04:
Похоже, что в Ubuntu 19.04 (и, может быть, 18.10, я не пробовал этот релиз),
cryptsetup
изменилось достаточно, чтобы сломать привычнуюyubikey-luks
работу. Эта фиксация из вышестоящего репозитория, кажется, реализует исправление, но первоначальный репозиторий , по-видимому, не обновлялся с октября 2018 года. Я нашел этот форк репо, в котором есть исправление, а также несколько других фрагментов. и сумел собрать пакет, который работает 19.04.Поскольку я не смог найти существующую сборку обновленного форка, метод получения
yubikey-luks
работы включает получение исходного кода и сборку пакета DEB локально, а затем его установку.Выполните шаги из моего предыдущего ответа , за исключением того, что замените шаг 1 следующим:
1. Получите исходный код yubikey-luks, соберите и установите пакет
Установите зависимости сборки с помощью:
Затем скачайте и распакуйте исходный архив:
Постройте пакет с:
Затем установите его:
Затем продолжайте следовать остальным шагам в моем первом ответе.
Надеемся, что к 19.10 версия
yubikey-luks
в основном архиве Ubuntu может быть обновлена, так что сборка вручную не требуется.В качестве бонуса, более новая версия имеет файл конфигурации, который можно найти по адресу
/etc/ykluks.cfg
. Сообщение, отображаемое при загрузке, может быть настроено в этом файле.источник