Я хотел бы реализовать полное шифрование диска на всех клиентах. Но чтобы избежать необходимости вводить код доступа FDE при загрузке, мне интересно, можно ли распространять код доступа с помощью DHCP или чего-то подобного.
Идея заключается в том, что FDE должна защищать ноутбук в случае его кражи или нахождения за пределами компании, но если он используется в корпоративной сети, мы предполагаем, что он не украден.
В идеале я бы хотел, чтобы код доступа был одноразовым, чтобы если кто-то перехватит ответ DHCP, он не смог бы расшифровать ноутбук в целом.
решение1
Поскольку это, скорее всего, потребует написания пользовательского Initramfs или, по крайней мере, хука, вам могут быть интересны следующие ресурсы (игнорируйте специфичные для Gentoo части):
- https://wiki.gentoo.org/wiki/Custom_Initramfs
- https://wiki.gentoo.org/wiki/Custom_Initramfs#DHCP
- https://wiki.gentoo.org/wiki/Custom_Initramfs/Examples#Self-Decrypting_Server
Пример сервера саморасшифровки создает следующий ключ шифрования:
(
# CPU:
grep -vE '(MHz|bogomips)' /proc/cpuinfo
# RAM:
tail /proc/iomem
# MAC-Address: (requires network drivers)
cat /sys/class/net/*/address
# Block devices and partitions (ignore optional CD drive):
grep -v sr0 /proc/partitions
# Random file:
cat /root/secret
) | sha512sum | xargs echo -n > /root/key
Предполагается, что это защитит от того, что кто-то пройдет мимо вашего сервера и вытащит жесткие диски; сам по себе жесткий диск не знает ЦП, ОЗУ, MAC-адрес сервера, поэтому он не может расшифровать себя за пределами корпуса, к которому он принадлежит.
В случае с ноутбуком (когда украдено все устройство) это бесполезно, поскольку у вора будут все эти данные, поэтому вам придется заменить их данными DHCP.
Итак, после того, как вы получили IP-адрес и т.п. через DHCP, это может быть что-то вроде:
(
cat /sys/class/net/*/address
ip addr show
ip route show
cat /etc/resolv.conf
) | sha512sum | xargs echo -n > /root/key
И это даст вам хэш/парольную фразу на основе вашего MAC-адреса, IP-адреса и маршрута, а также DNS-серверов и т. д.
Это будет работать до тех пор, пока DHCP всегда будет настраивать ноутбук одинаково, поэтому DHCP-серверу придется навсегда запомнить конфигурацию ноутбука, иначе ноутбук перестанет загружаться.
Такое решение всегда немного нестабильно, поэтому обязательно используйте LUKS, поддерживающий несколько парольных фраз, и держите наготове резервную парольную фразу на случай, если DHCP-пароль выйдет из строя.
К тому же это не очень безопасно: эта информация DHCP общедоступна (для того, кто использует ноутбук) и, вероятно, ее несложно угадать (для любого, кто использует другой ноутбук в той же среде), поэтому она защитит от среднестатистического вора, но не от немного технически подкованного коллеги по работе.