Как получить применимое полное шифрование диска с различным шифрованием для различных пользователей

Когда система формует ветвление, обычно (это может зависеть от реализации), это также отмечает страницы как только для чтения, и отмечает родительский процесс как ведущее устройство этих страниц.
При попытке записать в эти страницы, происходит отсутствие страницы, и ОС вступает во владение, копируя весь список страниц или просто измененных (снова, зависящий от реализации), таким образом, запись будет иметь перезаписываемую копию.
Когда существует несколько процессов, разветвленных от того же, когда "основной" процесс пишет в, он - память, другие процессы скопировали свои эквивалентные страницы.

5
03.10.2013, 18:32
2 ответа
  1. Не шифруйте целый жесткий диск (как в /dev/sda, сделайте это на раздел (или более точно на файловую систему - посмотрите ниже).

  2. Имейте отдельные файловые системы, смонтированные в домах для этих двух пользователей. Я намеренно стараюсь не писать отдельные разделы, с тех пор в то время как это - обычный способ сделать вещи, он ограничивает в некоторых аспектах. Могло бы быть более удобно иметь один большой домашний раздел, который содержит большие файлы, которые содержат системы зашифрованного файла и смонтированы по мере необходимости. Преимуществом является более легкое изменение размеров домов пользователей при сохранении их разделенными.

  3. Автомонтируется на входе в систему, возможны через PAM. Обратите внимание, что Вы не хотите использовать тот же пароль для входа в систему и для фактического шифрования данных. Вместо этого Вы или используете LUKS или подражаете ему путем хранения ключа шифрования в файле, который самом шифруется с паролем входа в систему. Это гарантирует, что изменение пароля входа в систему не будет влиять на зашифрованные данные, но только зашифрованный ключ и таким образом эй не должно будет заботиться о перешифровании целых пользователей домой).

Общие инструкции:

  • разделение использования gdisk (также известный как gptfdisk иногда), parted или любая другая соответствующая программа, прочитайте страницы справочника для деталей (разделение немного вне объема этого QA),

  • основанные на зашифрованном файле файловые системы - у меня есть некоторые возражения на дизайн LUKS, таким образом, я обычно использую cryptsetup в "простом" режиме, который подражает LUKS в некоторых аспектах. Если Вы выбираете LUKS, чем можно просто уменьшить шаги к cryptsetup (с соответственно измененными опциями)

    1. подготовьте ключ шифрования и пароль. Это - интересная часть - для шифрования данных, Вы хотите что-то с достаточной случайностью (8 паролей буквы действительно не достаточно), и для пароля что-то, что Вы можете изменить легко (не будучи должен повторно зашифровать целую файловую систему) и довольно легки помнить и ввести. Эти требования идут вполне друг против друга. Следовательно мы будем использовать тот же прием, который делает LUKS (и который можно на самом деле считать изменением гибридной системы шифрования в некотором смысле)). Ключ шифрования может быть более или менее случайным - любое использование некоторые действительно случайные данные (например, от /dev/random), или довольно длинный хеш как SHA-2 или SHA-3 (первый был разработан NSA, если Вы задаетесь вопросом, использовать ли его или не в свете недавних событий) довольно долгого пароля.

      Довольно долго в первом случае (и в случае действительно случайных данных) средства, что длина должна быть о выбранной длине ключа для шифра, используемого плюс длина вектора инициализации. Во втором случае это означает, что это должно быть трудно к "в лоб" это. Используя хеш имеет преимущество способности восстановить ключ, если это повреждено или проиграло (если Вы помните начальный пароль, который был хеширован, конечно). Этот ключ затем шифруется и хранится в файле. Пароль для зашифрованного ключа в Вашем случае будет той же задницей пароль входа в систему.

      # set up the encrypted encryption key
      printf "Reasonably long and complicated passphrase" \
          | openssl dgst -sha512 -binary \
          | openssl enc -bf > /path/to/key.enc
      

      openssl dgst -sha512 -binary производит двоичную форму хеша SHA-512 от его стандартного входа, openssl enc -bf шифрует это с помощью Шифра - не стесняется выбирать хеш и шифр к симпатии (Twofish, или Rijndael являются оба довольно испытанными, но другими шифрами, доступными в ядре, должен быть прекрасным также).

      Хранение ключа за пределами шифруемого устройства имеет недостаток необходимости в дополнительной вещи кроме зашифрованных данных самой - LUKS хранит ключ в его заголовках, таким образом, это является автономным. С другой стороны, Вы связываетесь с определенным набором инструментов. В то время как это не разработано небрежно и присутствует на большинстве установок, Вам нужны специальные инструменты для доступа к нему.

      С отдельным файлом, с другой стороны, Вы свободны выбрать любой метод хранения ключа. Можно даже поместить его на съемные носители, вставить его перед входом в систему и удалить его, после того как файловая система смонтирована (Вы могли, вероятно, даже сцепить автоматический вход в систему на событии присоединения медиа к компьютеру). Конечно, все это должно быть хорошо продумано начиная с принципа безопасности "Не изобретают Ваш собственный crypto", применяется (см., например, это сообщение на Security SE) - который мог бы на самом деле быть аргументом в пользу использования LUKS. Резервное копирование ключа очевидно легко.

    2. создайте пустой файл, который будет содержать файловую систему

      dd if=/dev/zero of=/path/to/backing_file.enc bs=1M count=X
      
    3. создайте шифруемое устройство

      openssl enc -bf -d -in /path/to/key.enc 2>/dev/null \
          | cryptsetup create \
                  -c twofish-cbc-essiv:sha256 \
                  -s 256 \
                  -h plain \
                  encryptedfs /path/to/backing_file.enc
      

      openssl enc -bf -d просит пароль на stdin и пытается дешифровать ключ шифрования. cryptsetup create ... encryptedfs /path/to/backing_file.enc созданный зашифровал названное устройство DM encryptedfs поддержанный ранее созданным файлом. Важная опция это -c который выбирает шифр шифрования и его режим работы

    4. заполните устройство нулями - это эффективно помещает "случайный мусор" в отступающий файл и делает его менее очевидным, чем могло бы быть содержание файла (иначе, Вы могли сказать, где вещи были записаны путем сканирования для блоков, которые не обнуляются от шага 2).

      dd if=/dev/zero of=/dev/mapper/encryptedfs bs=1M
      
    5. Создайте файловую систему

      mkfs.[favourite_filesystem] [tuning options] /dev/mapper/encryptedfs
      
    6. Поместите соответствующую строку в /etc/fstab в случае, если Вы хотите сделать все самостоятельно, или в /etc/crypttab если Вы хотите своего рода интеграцию с системными инструментами.

  • для автоматического (ООН), монтирующаяся на входе в систему/выходе из системы, я отошлю Вас к pam_mount документации.

5
27.01.2020, 20:37
  • 1
    Спасибо, можно ли добавить детали, как на самом деле настроить это? –  student 03.10.2013, 10:36
  • 2
    Спасибо за детали. Это решение сотрудничает с ОБРЕЗКОЙ для ssd's? Там какие-либо проблемы производительности должны иметь в виду сравненный для шифрования отдельного фиксированного раздела с dm-склепом? –  student 06.10.2013, 11:12
  • 3
    , мудрая, это должно быть незначительно, особенно при создании отступающих файлов на пустом (или главным образом пустой) раздел в разумной файловой системе, которая попытается держать блоки файла вместе. Что касается обрезки SSD у меня нет подсказки, но, учитывая черную магию встроенное микропрограммное обеспечение SSD делает в эти дни, я не был бы чрезмерно заинтересован - это - столько уровней выше физической флэш-памяти, что я лично не ожидал бы слишком большой дополнительной неисправности. Много зависит от встроенного микропрограммного обеспечения SSD, я предполагаю. –  peterph 06.10.2013, 23:55

Я могу думать о двух ценных способах достигнуть такой системы w/o шифрование, Вы размещаете дважды.

  • разделите домашний раздел: создайте отдельный раздел, который смонтирован к /home. Каждый пользователь затем шифрует его дом через encfs.
  • разделите домашний раздел для каждого пользователя: каждый пользователь получает отдельный раздел для своего дома, который самостоятельно шифруется с помощью dm-crypt. Этот раздел затем смонтирован к /home/user когда он входит в систему.

Конечно, плюс шифрование / ;-)

В обоих случаях дома могут быть автоматически смонтированы во время процесса входа в систему при использовании того же пароля для входа в систему и шифрования. (может быть настроен в, например. /etc/security/pam_mount.conf.xml, существует много практических руководств), В то время как первый метод не шифрует названия папок Ваших пользователей, с помощью второго метода действительно все шифруется. Таким образом, я предпочел бы (и на самом деле использовал бы), метод два ;-)

2
27.01.2020, 20:37

Теги

Похожие вопросы