dm-crypt смена пароля
При установке Debian 5 всё, кроме /boot, было зашифровано dm-crypt. Возникла необходимость сменить пароль. Как это сделать?
Ссылки
[link1] https://www.pgpru.com/novosti/2008/predskazuemyjjgschinebezopasnyekljuchivdebianubuntu
[link2] https://www.pgpru.com/comment45783
[link3] https://www.pgpru.com/comment29957
[link4] https://www.pgpru.com/comment29988
[link5] https://www.pgpru.com/comment62765
[link6] https://www.pgpru.com/comment29963
[link7] https://www.pgpru.com/comment80575
посмотрите все разделы и тома, прописаные в fstab, которые зашифрованы с помощью dm-crypt LUKS с помощью luksDump:
Там скорее всего будет только один слот с паролем.
Добавьте второй пароль:
Теперь вы можете загружаться с двумя паролями – старым и новым.
Когда вы как следует выучите новый пароль, можете удалить старый пароль из первого слота:
Добавьте во второй слот новый пароль, а первый слот удалите:
Для подробностей man cryptsetup.
Точно, в примере при удалении слота с паролем я забыл указать раздел перед ним
Спасибо за помощь. А как работает luksDelKey? В смысле как затирает ключ? И чем отличается от luksRemoveKey и luksKillSlot?
в последней версии вроде бы хотели отказаться от luksRemoveKey и luksKillSlot, сделав так, чтобы luksDelKey затирал слот по умолчанию.
Принцип такой, что мастер-ключ зашифрован в своих слотах своими паролями. причём зашифрован с дополнительной информацией, с распределением данных по специальному алгоритму "antiforensic information splitter", предназначенным против восстановления информации с винчестеров и носителей с избыточной информацией (типа RAID), так чтобы с каждым нечитаемым/повреждённым/затёртым битом даже при знании пароля восстановить ключ было бы экспоненциально сложнее.
Соответственно удаление данных из слота не требует особо долгого многократного затирания, так как данные сами по себе представлены в "хрупком" виде. Но по этой же причине нежелательно делать копии контейнеров, хранить их в виде отдельных файлов, записывать на болванку. Лучше создать для копии второй контейнер, пусть с таким же паролем, но чтобы ключи в нём сгенерились другие и синхронизировать данные с ним.
Вот это – хороший топик, правильный. Мне нравится. А то развели тут соплей с PGP Holy Disk на весь форум...
В общем, как написано в man, для удаления старого пароля из слота нужно использовать luksKillSlot, luksDelKey – это тоже самое, но только устаревшее название опции, которым надо отучаться пользоваться.
А вот что такое luksRemoveKey подробно не описано, могу предположить – это чтобы не стирать пароли из всех слотов по одиночке, а убить ключ от контейнера разом.
Экспериментировать со всем этим надо поосторожнее, хотя cryptsetup-LUKS предупреждает, когда остаётся только один единственный последний слот с ключом.
Занятно, в моей Генте man cryptsetup содержит только luksDelKey. Версия актуальная — 1.0.6.
Не знаю, как там в вашей Генте, а вот в Debian Lenny тот же cryptsetup 1.0.6 наверное какой-то особенный и ман и пишут одно и тоже. наверное дебиановцы опять всё пропатчили по своему, так же как когда-то OpenSSL[link1].
Кстати, список крипторазделов после установки, которые поднимаются автоматически, лучше смотреть не в /etc/fstab, а в /etc/cryptab.
Ещё поглядел на /comment45783[link2]. Стало ли вам что-то с тех пор понятней?
Что именно делает luksRemoveKey? Фразу (из man) про него можно как угодно понимать.
Точно ли luksClose удаляет ключи из памяти? В man написано, что он и всё. Понимать это можно, как угодно. В интернетах всякое пишут, но стоит ли доверять непонятно чьим разъяснениям в рассылках... Где можно почитать о luksClose в официальной документации?
Зато про luksSuspend написано явно: Чем он отличается от luksClose? Удаляет ключ, но оставляет ассоциацию «дисковый раздел ↔ метка»? В man пишут, что после него можно сделать luksClose, хотя ключи к тому моменту уже могут быть удалены. Или luksClose делает luksSuspend, если ключ в памяти не завайплен, а потом собственно диассоциирует раздел с меткой?
Как связаны между собой эти три команды (luksRemoveKey, luksClose и luksSuspend) — не понятно. C deprecated-опциями всё ясно, но в моём man (версия 1.1.0-rc2) все эти три не отмечены, как deprecated.
https://code.google.com/p/cryptsetup/
В моей версии фразы «wipes the key from kernel memory» нету:
Обновите версию. Или читайте исходники.
при установке debian диск был полностью зашифрован, а /boot размещен на другом носителе. теперь вопрос: слот с паролем находится на зашифрованном диске? ибо dev нужно правильно указать.
Cлот с паролем находится в заголовке шифрованного раздела, /boot тут ни при чём, он только указывает, откуда грузиться и с какими опциями.
Спасибо.
а почему в этом примере при удалении указаны разные разделы? "1" – это опечатка?
1 — это номер слота. Всего есть 8 слотов (0-7), из которых обычно используется только часть, и, чаще всего, если вы не делалили никаких манипуляций, то только один — с нулевым номером. Вывод команды
Делаю по рекомендации:
P.S.
Вероятно, логика та же:
защита от дураканадо убедиться, что пользователь знает какую-нибудь пассфразу, помимо удаляемой.Шифрпанк во всей красеА что, трудно было об этом написать в информационном сообщении, сопутствующем запросу пассфразы? Если понимать вопроc так, как он задан, то LUKS лжёт: написано «любая», а «любая» не работает. Только не надо писать про багрепорты.Okayface.jpg
Должен сказать, что требование очень логичное, а то так можно создать дополнительную пассфразу, забыть её, продолжив использовать старую, а потом по ошибке грохнуть не тот слот. Когда убивается слот по номеру, вообще неясно, какой пассфразе он соответствует, если вы не отслеживали историю появления слотов, а так хоть какая-то защита есть...
P.S. После такой логики LUKS трудно привыкнуть к тому, что вводить старую пассфразу для смены пароля рута вообще не надо.
Если заголовок LUKS-тома случайно попадает на bad-блоки на диске, то что будет? Пароли съедятся, информация запишется, но потом её будет не расшифровать. По-моему, у меня сейчас уже второй раз такой глюк происходит с одним и тем же LUKS-разделом.
Разработчики вроде планировали дать возможность и на ёлку залезть, и ничего при этом не ободрать: заголовок хотели делать и в начале, и в конце шифротома с функцией аварийного восстановления. Но в своей версии ничего такого пока не видел.
Перефразируя известное правило, можно сказать, что «люди делятся на 2 типа: тех, которые делают бэкапы LUKS-хидеров и и тех, у кого не было в них bad-блоков».
К одному разделу сколько ни вводил пароль, он не подходил. Перезагрузился, попробовал в другой день — подошёл. Стёр пот с лица. К другому разделу (для него бэкапы уже были) как ни вводил пароль, всё не получалось. И раздел такой, что редко монтируется, не должны там быть bad-блоки. В итоге решил попробовать модификации пассфраз и выяснил, что пароль стоял там не тот, какой должен был быть и какой я думал. Тоже открылось. Но с тех пор я бэкаплю хидеры.
Кстати, странно, что LUKS'у нельзя указать внешний хидер параметром. Надо восстаналивать хидер, как я понял, на самом разделе, а потом пробовать его открыть. А что толку, если там bad-блок будет? Он же по сути не сможет в это место что-то записать. Записываться будет одно, а читаться другое.
Вообще, с bad-блоками, наверное, можно побороться брутфорсом, но с учётом того, что там в LUKS стоит соль и много итераций для замедления, перебор тысяч вариантов (допустим, поменялся один-два байта из сотен байт, содержащих хидер) может растянуться на непозволительно длительный срок...
Те, кто знают, что они делают, могут существенно упростить[link7] себе жизнь:
В новых версиях можно — опция --header.