Как мне зашифровать свою систему (в лучшем случае с помощью lvm + dm-crypt/luks) так, чтобы работала приостановка в ОЗУ и чтобы все находилось в зашифрованном состоянии при приостановке в ОЗУ?
решение1
То, что вы просите, это не просто suspend-to-RAM, которая оставляет RAM включенной и отключает все остальное. Поскольку вы будете стирать данные процесса в открытом тексте из RAM, вам нужно маршалировать все это в образ приостановки. Поэтому вам нужно вызвать код гибернации (т. е. suspend-to-disk). Реалистичным способом сделать это было бы создание зашифрованного ramdisk, объявление его пространством подкачки и заполнение памяти другими процессами. Даже в этом случае данные ядра не будут зашифрованы; для этого, я думаю, вам понадобится значительный патч ядра.
С другой стороны, если вы готовы приостановить работу на диске, это решенная проблема. Образ гибернации хранится в пространстве подкачки. Ваше пространство подкачки должно быть уже зашифровано с учетом ваших требований безопасности. Убедитесь, что оно зашифровано известным ключом, а не случайным (некоторые настройки с зашифрованным пространством подкачки используют /dev/random
в качестве ключа файл для пространства подкачки, что приводит к появлению другого ключа при каждой загрузке, поэтому невозможно возобновить образ гибернации). Основные дистрибутивы должны поддерживать гибернацию из коробки, включая возобновление из зашифрованного пространства подкачки.
решение2
Проверить tpm-luks
:https://github.com/shpedoikal/tpm-luks
Он хранит ваши ключи шифрования в доверенном платформенном модуле вашего компьютера.
Другим вариантом может бытьТРЕСОР, который использует регистры ЦП для хранения секретных ключей.