No Image

Шифрование диска в linux

СОДЕРЖАНИЕ
1 просмотров
22 января 2020

Безопасность и конфиденциальность очень важны, для тех, кто хранит важные данные на компьютере. Ваш домашний компьютер находится в безопасности, но с ноутбуком или другими переносными устройствами ситуация очень сильно меняется. Если вы носите свой ноутбук с собой почти везде и к нему могут иметь доступ посторонние лица, возникает вопрос – как защитить свои данные от чужого вмешательства. Именно от физических атак, где каждый желающий может попытаться получить данные из USB накопителя или жесткого диска ноутбука просто забрав устройство или в случае ноутбука, вытянув жесткий диск и подключив его к другой операционной системе.

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

Методы шифрования данных в Linux

Шифрование на уровне файловой системы:

  • 1. eCryptfs – это криптографическая файловая система Linux. Она хранит криптографические метаданные для каждого файла в отдельном файле, таким образом, что файлы можно копировать между компьютерами. Файл будет успешно расшифрован, если у вас есть ключ. Это решение широко используется для реализации зашифрованной домашней директории, например, в Ubuntu. Также ChromeOS прозрачно встраивает эти алгоритмы при использовании сетевых устройств для хранения данных (NAS).
  • 2. EncFS – обеспечивает шифрованную файловую систему в пространстве пользователя. Она работает без каких-либо дополнительных привилегий и использует библиотеку fuse и модуль ядра для обеспечения интерфейса файловой системы. EncFS – это свободное программное обеспечение и она распространяется под лицензией GPL.

Блочное шифрование на уровне устройства:

  • Loop-AES – быстрая и прозрачная файловая система, а также пакет для шифрования раздела подкачки в Linux. Исходный код программы давно не изменялся. Она работает с ядрами 4.x, 3.x, 2.2, 2.0.
  • TrueCrypt – это бесплатное решение с открытым исходным кодом для шифрования диска в операционных системах Windows 7 / Vista /XP / Mac OS X, а также в Linux.
  • dm-crypt+LUKS – dm-crypt – это прозрачная подсистема для шифрования диска в ядре 2.6 и более поздних версиях. Поддерживается шифрование целых дисков, съемных носителей, разделов, томов RAID, программного обеспечения, логических томов и файлов.

В этой инструкции мы рассмотрим шифрование жесткого диска на Linux с помощью алгоритма Linux Unified Key Setup-on-disk-format (LUKS).

Как работает LUKS?

LUKS (Linux Unified Key Setup – протокол шифрования блочного устройства. Но мы забежали далеко наперед, чтобы понять как это работает, нужно скачала разобраться с другими технологиями, используемыми в этом способе.

Чтобы выполнить шифрование диска linux используется модуль ядра dm-crypt. Этот модуль позволяет создавать в каталоге /dev/mapper виртуальное блочное устройство с прозрачным для файловой системы и пользователя шифрованием. Фактически все данные лежат на зашифрованном физическом разделе. Если пользователь пытается записать данные на виртуальное устройство, они на лету шифруются и записываются на диск, при чтении с виртуального устройства, выполняется обратная операция – данные расшифровываются с физического диска и передаются в открытом виде через виртуальный диск пользователю. Обычно для шифрования используется метод AES, потому что под него оптимизированы большинство современных процессоров. Важно заметить, что вы можете шифровать не только разделы и диски, но и обычные файлы, создав в них файловую систему и подключив как loop устройство.

Алгоритм LUKS определяют какие действия и в каком порядке будут выполняться во время работы с шифрованными носителями. Для работы с LUKS и модулем dm-crypt используется утилита Cryptsetup. Ее мы и рассмотрим далее.

Утилита Cryptsetup

Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.

В Debian или Ubuntu, для этого используйте такую команду:

apt-get install cryptsetup

В дистрибутивах, основанных на Red Hat это будет выглядеть так:

yum install cryptsetup-luks

Синтаксис запуска команды такой:

$ cryptsetup опции операция параметры_операции

Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:

  • luksFormat – создать зашифрованный раздел luks linux
  • luksOpen – подключить виртуальное устройство (нужен ключ)
  • luksClose – закрыть виртуальное устройство luks linux
  • luksAddKey – добавить ключ шифрования
  • luksRemoveKey – удалить ключ шифрования
  • luksUUID – показать UUID раздела
  • luksDump – создать резервную копию заголовков LUKS

Параметры операции зависят от самой операции, обычно это либо физическое устройство, с которым нужно произвести действие, либо виртуальное или и то и другое. Еще не все понятно, но на практике, я думаю, вы со всем разберетесь.

Шифрование диска Linux

Теория пройдена, все инструменты готовы. Теперь рассмотрим шифрование раздела linux. Перейдем к настройке жесткого диска. Обратите внимание, что это удалит все данные из диска или раздела, который вы собираетесь зашифровать. Так что если там есть важные данные, лучше скопируйте их в более надежное место.

Создание раздела

В этом примере мы будем шифровать раздел /dev/sda6, но вместо него вы можете использовать целый жесткий диск или просто один файл, заполненный нулями. Создаем шифрованный раздел:

cryptsetup -y -v luksFormat /dev/sda6

WARNING!
========
This will overwrite data on /dev/sda6 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Эта команда выполнит инициализацию раздела, установит ключ инициализации и пароль. Указывайте такой пароль, чтобы его потом не забыть.

Выполните такую команду чтобы открыть только что созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось шифрование luks linux:

cryptsetup luksOpen /dev/sda6 backup2

Enter passphrase for /dev/sda6

Теперь вы можете увидеть новое виртуальное устройство /dev/mapper/backup2 созданное с помощью команды luksFormat:

ls -l /dev/mapper/backup2

lrwxrwxrwx 1 root root 7 Oct 19 19:37 /dev/mapper/backup2 -> ../dm-0

Чтобы посмотреть состояние устройства выполните:

cryptsetup -v status backup2

/dev/mapper/backup2 is active.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sda6
offset: 4096 sectors
size: 419426304 sectors
mode: read/write
Command successful.

А с помощью следующей команды вы можете сделать резервную копию заголовков LUKS на всякий случай:

cryptsetup luksDump /dev/sda6

Ну, можно сказать, раздел готов. И что самое интересное, теперь вы можете им пользоваться так же, как и любым другим обычным разделом в каталоге /dev. Его можно форматировать с помощью стандартных утилит, записывать на него данные, изменять или проверять файловую систему и т д. Нельзя только изменить размер. То есть все полностью прозрачно, как и сказано в начале статьи.

Форматирование раздела

Давайте для начала отформатируем диск. Для надежности, чтобы стереть все данные, которые были в этом месте раньше, перезапишем наш шифрованный раздел linux нулями. Это уменьшит вероятность взлома шифрования, через увеличение количества случайной информации. Для этого выполните:

dd if=/dev/zero of=/dev/mapper/backup2

Работа утилиты может занять несколько часов, чтобы иметь возможность наблюдать за процессом, используйте pv:

pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M

Когда процесс завершится мы можем отформатировать устройство в любую файловую систему. Например, отформатируем в ext4:

Как видите, все команды cryptsetup применяются к физическому разделу, в то время как остальные команды для работы с дисками – к нашему виртуальному.

Монтирование раздела

Теперь можно примонтировать только, что созданную файловую систему:

$ mount /dev/mapper/backup2 /backup2

Отключение раздела

Все работает, но как отключить устройство и защитить данные. Для этого выполните:

cryptsetup luksClose backup2

Повторное монтирование

Чтобы снова получить возможность работать с зашифрованным разделом с помощью LUKS linux необходимо опять его открыть:

cryptsetup luksOpen /dev/sda6 backup2

Теперь можем монтировать:

mount /dev/mapper/backup2 /backup2

Проверить файловую систему luks

Поскольку после открытия раздела с помощью luks linux, этот раздел воспринимается системой, как и все другие, вы можете просто использовать утилиту fsck:

sudo umount /backup2

$ fsck -vy /dev/mapper/backup2

$ mount /dev/mapper/backup2 /backu2

Изменить парольную фразу luks

Шифрование дисков Linux выполняется с определенной парольной фразой, но вы можете ее изменить. Даже больше, вы можете создать до восьми разных парольных фраз. Для изменения выполнив следующие команды. Сначала сделаем резервную копию заголовков LUKS:

Читайте также:  Телефон xiaomi за 4000 рублей

cryptsetup luksDump /dev/sda6

Затем создадим новый ключ:

cryptsetup luksAddKey /dev/sda6

Enter any passphrase:

Enter new passphrase for key slot:
Verify passphrase:

И удалим старый:

cryptsetup luksRemoveKey /dev/sda6

Сейчас вам придется ввести еще старый пароль.

Выводы

Вот и все теперь вы знаете как зашифровать раздел в Linux, а также понимаете как все это работает. Кроме того, шифрование дисков в Linux по алгоритму LUKS открывает широкие возможности для полного шифрования устанавливаемой системы.

Плюсы:

  • LUKS шифрует все блочное устройство, и поэтому очень хорошо подходит для защиты содержимого переносных устройств, таких как мобильные телефоны, съемные носители или жесткие диски ноутбуков.
  • Вы можете использовать на серверах NAS для защиты резервных копий
  • Процессоры Intel и AMD с AES-NI (Advanced Encryption Standard) имеют набор команд, которые могут ускорить процесс шифрования на основе dm-crypt в ядре Linux начиная с 2.6.32.
  • Работает в том числе и с разделом подкачки, так что ваш ноутбук может использовать функцию спящего режима, или гибернации полностью безопасно.

Минусы:

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

Содержание

Описание руководства

Данная статья рассказывает, как создать надёжно зашифрованное хранилище данных на жестком диске компьютера и при этом не сломать спящий и ждущий режимы. Особенно актуально это для владельцев ноутбуков, т. к. в отличие от стационарных компьютеров шанс кражи/утери ноутбука выше и возникает обоснованное желание хранить информацию в зашифрованном виде. Однако, предлагаемая по-умолчанию опция шифрования домашней папки при помощи ecryptfs во-первых не шифрует корневой раздел системы 1) , а во-вторых ecryptfs шифрует раздел swap с применением случайно сгенерированного ключа, таким образом, перестает работать такая нужная в ноутбуках опция как спящий режим 2) 3) .

Предлагается же создать один большой зашифрованный раздел размером с весь диск компьютера 4) , поверх которого развернуть виртуальную группу LVM, в которой создать обычные (не шифрованные с точки зрения ОС) разделы /, /home и swap. При этом, пользователю придётся вводить пароль при каждом включении компьютера (даже при выходе из спящего режима), однако, за счёт смещения шифрования на более низкий уровень, ОС «не заметит» этого и все функции будут работать.

Установка

Итак, для установки нам потребуется диск альтернативной установки системы, который можно скачать тут. Ищите образ с alternate в названии.

Загрузите систему с alternate — диска, выберите язык и приступите к установке:

Выберите ручной режим разметки диска:

Если у вас новый диск или, если вы хотите очистить на нем таблицу разделов, выберите строку с названием диска:

и создайте на нем новую таблицу разделов:

После этого, создайте на диске раздел /boot, выбрав указателем свободное место на диске:

Укажите небольшой объем, от 300 МБ до 1ГБ, т.к. для /boot этого будет вполне достаточно:

В списке «использовать как» укажите /boot, не забудьте сделать раздел загрузочным:

Далее, не размечая оставшееся место, переходим в пункт «Настроить шифрование для томов»:

Соглашаемся записать изменения:

Выбираем «Create encrypted volumes»:

Далее выбираем (при помощи кнопки Space ) свободное место на диске и жмём «Продолжить»:

Если у вас нет паранойи, можете просто нажать «Настройка раздела закончена», если есть – установите параметр «Стереть данные» в «Да»:

Снова соглашаемся на запись изменений на диск:

Далее выбираем «Finish»:

Далее установщик попросит вас ввести парольную фразу, которой он «закроет» диск:

После этого подтвердите пароль:

Если вы используете слишком простой пароль 5) , установщик попросит подтверждения:

После создания шифрованного тома, нужно настроить LVM:

Снова соглашаемся на запись изменений:

Создаем группу томов:

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

После этого создаем логические тома:

Пример для swap:

Аналогично создаем диски для root и home, выделяя им желаемый объем. Если у вас большой диск – можете оставить некоторый его объем свободным, позднее вы сможете добавить его к любому логическому тому 6) .

После этого выбирайте «Закончить»:

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

Выбирайте разделы, находящиеся в блоках, начинающихся на LVM, они названы, согласно именам, данным им вами при создании логических томов, например, в данном случае, это LV home, LV swap и LV root. Стоит заметить, что раздел root 7) не нужно делать загрузочным, т.к. роль загрузочного у нас выполняет отдельный раздел /boot.

По окончании, выбирайте «Закончить разметку и записать изменения на диск»:

И снова соглашаемся с записью изменений на диск (заодно можно ещё раз проверить все ли вы правильно разметили):

Далее продолжайте установку системы как обычно. Когда установщик спросит вас, зашифровать ли домашний каталог — откажитесь, ведь ваш диск уже зашифрован.

После завершения установки и перезагрузки система предложит вам ввести пароль для разблокировки шифрованного диска. Введите пароль и нажмите Enter .

Изменение пароля

Работа с live-cd

Загрузитесь с live-cd 8) , выберите «Попробовать Ubuntu» и дождитесь полной загрузки системы. После этого, настройте подключение к интернету. Затем откройте терминал и выполните:

После успешной установки, переходите к этапу «Смена пароля».

Смена пароля

Описание

При установке диск шифруется при помощи связки LUKS и dm-crypt. LUKS использует в качестве идентификаторов доступа key slots, которые в данном случае выступают в виде пароля, однако могут быть и ключом. Всего доступно 8 слотов. По умолчанию (при создании шифрованного диска) используется слот 0.

Если вам нужно использовать компьютер совместно с другим человеком — вы можете создать для него отдельный пароль разблокировки диска.

Для операций со слотами — сначала нужно определиться с диском, на котором установлено шифрование. Выполните в терминале команду

Вывод будет примерно следующим:

Она даст вам список разделов на диске. Нужно найти тот раздел, на котором присутствует зашифрованный раздел. В данном случае это sda5.

Теперь можно просмотреть состояние слотов на этом разделе:

Видим, что слот 0 содержит пароль, а слоты 1-7 имеют статус DISABLED.

Устанавливаем новый ключ

Ввиду того, что необходим как минимум один активный слот, сменить пароль в обычном понимании на таком диске невозможно. Однако, можно создать пароль в другом слоте, а потом удалить первый слот. Чтобы создать новый ключ, выполните:

Если теперь посмотреть слоты, то станет видно, что статус ENABLED стоит теперь уже у двух слотов:

Теперь можно удалить старый пароль, находящийся в слоте 0:

И видим, что слот 0 стал DISABLED.

Заключение

Вот и все. Информация на диске надёжно защищена. Однако, не стоит забывать, что существует большое количество различных угроз, и ваши данные все еще могут быть доступны злоумышленнику, в то время, пока компьютер включён, все диски «открыты». И конечно же, в случае кражи, шифрование спасет ваши данные от злоумышленника, но не вернет их вам, так что не забывайте делать резервные копии.

Ссылки

Статья написана по мотивам вот этой вот статьи.

Содержание статьи

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

Взглянув на список шифрующего ПО для Linux и проанализировав степень популярности и актуальности каждого из них, мы придем к выводу, что есть только четыре безопасные и поддерживаемые криптосистемы для шифрования жестких дисков и других носителей информации на лету:

  1. loop-aes (http://loop-aes.sourceforge.net) – модификация стандартного Linux-драйвера loop.ko, которая не только подключает устройства и образы в loopback-режиме, но и позволяет производить их шифрование на лету.
  2. LUKS/dm-crypt – система шифрования, основанная на стандартной подсистеме шифрования Linux-ядра под названием dm-crypt и следующая рекомендациям TKS1/TKS2.
  3. TrueCrypt – кроссплатформенная система шифрования жестких дисков и образов с графическим интерфейсом.
  4. EncFS – файловая система уровня пользователя, выполняющая шифрование данных на уровне файлов, а потому способная работать поверх любой ФС.
Читайте также:  Число знаков в коде без учета пробелов

Каждая из этих систем имеет свои преимущества и недостатки, поэтому споры о том, что именно использовать, не прекращаются до сих пор. Драйвер loop-aes отличается простотой реализации, непревзойденной производительностью и стойкостью к взлому, однако метод его установки настолько нетривиален, что может отпугнуть даже продвинутых пользователей (мы не будем рассматривать loop-aes, ему была посвящена целая статья в одном из предыдущих номеров). LUKS/dm-crypt, с другой стороны, опирается на стандартную подсистему шифрования носителей, появившуюся еще в ядре версии 2.5 и поддерживающую десятки различных криптоалгоритмов. LUKS/dm-crypt доступен в любой Linux-системе, но, в отличие от loop-aes, до сих пор страдает от некоторых неисправленных проблем и менее производителен. TrueCrypt, пришедший в Linux из мира Windows-систем, медленнее LUKS/dm-crypt, но, в отличие от последнего, предоставляет по-настоящему кроссплатформенное решение (тома TrueCrypt могут быть прочитаны в Windows и Mac OS X), обладает встроенным графическим интерфейсом и позволяет создавать так называемые скрытые тома (невидимые зашифрованные тома внутри зашифрованных томов). EncFS – самое медленное, наиболее уязвимое, но настолько притягательно простое и удобное решение, что его нельзя обойти стороной.

Если говорить о стойкости шифрования и пригодности для повседневного применения, то здесь все в порядке, по крайней мере, у первых трех претендентов. Все три системы производят шифрование на лету и находятся ниже файловой системы, поэтому взломщик не имеет ни единого шанса узнать какие-либо подробности о хранящихся внутри тома данных. Каждая система защищена от так называемой Watermark-атаки, с помощью которой можно определить наличие в томе определенных типов файлов (dm-crypt до сих пор использует режим шифрования CBC (Сipher Block Chaining), уязвимый для этой атаки, но его легко можно изменить на устойчивый ESSIV, LRW или XTS). Все системы могут использовать различные алгоритмы шифрования, такие как, например, AES-256, Serpent или Twofish. Для получения доступа к данным все системы позволяют использовать зашифрованный ключ, хранящийся на USB-брелке или смарт-карте.

В стороне от loop-aes, LUKS/dm-crypt и TrueCrypt стоит простая и с виду незамысловатая программа EncFS. В отличие от своих тяжеловесных собратьев, она работает поверх уже существующей файловой системы и поэтому раскрывает злоумышленнику кучу самой разнообразной информации, включая всю структуру каталогов файловой системы, время создания и модификации файлов, их владельца и размер. EncFS шифрует каждый файл индивидуально, поэтому скрытыми от посторонних остаются только сами данные, хранящиеся внутри файлов, и их имена. Такая особенность делает EncFS неприменимой для хранения серьезных данных, но наделяет ее несколькими достоинствами: файловая система может динамически расти, инкрементальные системы бэкапа будут правильно обрабатывать файлы, зашифрованные EncFS, другие виртуальные файловые системы также могут быть зашифрованы (например, ты можешь подключить curlftpfs, создать каталог, подключить к нему encfs, и все заливаемые в него данные сохранятся на сервере в зашифрованном виде).

LUKS/dm-crypt

Система криптозащиты дисков LUKS/dm-crypt, как нетрудно догадаться, состоит из двух основных компонентов:

  • dm-crypt – стандартная подсистема шифрования дисков Linux-ядра версии 2.6, которая опирается на подсистему Device Mapper (dm), способную отображать дисковые устройства друг на друга, и криптографическое API (Crypto API), так же предоставляемое ядром и предназначенное для выполнения различных криптографических функций.
  • LUKS (Linux Unified Key Setup) – стандарт шифрования дисковых устройств для Linux, который описывает дисковый формат для зашифрованных данных.

Благодаря LUKS производители дистрибутивов и разработчики ПО, работающего с дисковыми устройствами, получают возможность встроить в свои продукты средства для однозначного определения шифрованных дисков и работы с ними. Например, подсистема HAL, которая сегодня используется большинством дистрибутивов в качестве прослойки для работы с оборудованием, уже давно умеет определять LUKS-диски, поэтому, если в комп будет вставлена флешка, зашифрованная с помощью LUKS/dm-crypt, пользователь увидит сообщение с просьбой ввести пароль, после чего флешка будет благополучно смонтирована. Именно в этой стандартизации заключается главное достоинство LUKS/dm-crypt перед всеми остальными решениями.

Для создания LUKS-совместимых шифрованных дисков предназначена утилита под названием cryptsetup-luks, которая в отдельных дистрибутивах (например, Ubuntu) ловко замаскирована под обычную cryptsetup. Поэтому для ее установки достаточно выполнить простую команду:

$ sudo apt-get install cryptsetup

Больше ничего инсталлировать не нужно, dm-crypt и все необходимые криптомодули уже есть в дистрибутиве. Но перед тем как начать шифрование, их придется загрузить:

$ sudo modprobe dm-crypt
$ sudo modprobe sha256
$ sudo modprobe aes

Чтобы модули загружались во время инициализации ОС, добавим их имена в файл /etc/modules:

$ sudo -i
# echo "dm-crypt
sha256
aes" >> /etc/modules

Далее выбираем дисковый раздел, который хотим подвергнуть шифрованию, и забиваем его нулями (если в разделе есть данные, их необходимо сохранить в укромном месте):

$ sudo dd if=/dev/zero of=/dev/sda5 bs=4K

Для пущей надежности и запутывания взломщика раздел можно наполнить случайными данными, но эта процедура может занять длительное время (несколько часов, а для больших дисков и целые сутки):

$ sudo dd if=/dev/random of=/dev/sda5 bs=4K

Инициализируем LUKS-раздел с помощью cryptsetup:

$ sudo cryptsetup luksFormat /dev/sda5 -c aes-xts-plain -s 256

Опция ‘-c’ задает режим шифрования, в нашем случае это AES-XTS (имеет гораздо более высокий уровень защиты по сравнению с режимами CBC, ECB; устойчив к Watermark-атакам). Опция ‘-s’ задает длину ключа шифрования в битах. Утилита cryptsetup запросит пароль, используемый для расшифровки ключа шифрования, а если говорить простым языком, для доступа к данным раздела. Попробуй придумать что-нибудь действительно сложное.

После того, как раздел будет инициализирован, его можно отобразить на другое блочное устройство с помощью Device Mapper и таким образом получить доступ к данным (все записываемые на эти устройства данные будут передаваться dm-crypt и попадать на физический раздел уже в зашифрованном виде):

$ sudo cryptsetup luksOpen /dev/sda5 имя

Теперь на разделе можно создать файловую систему и смонтировать ее:

$ sudo mkfs.ext4 /dev/mapper/имя -L метка
$ sudo mkdir /mnt/имя
$ sudo mount /dev/mapper/имя /mnt/имя

Размонтирование и отключение устройства от Device Mapper происходит в обратном порядке:

$ umount /mnt/имя
$ cryptsetup luksClose sda5

Чтобы операционная система сама научилась подключать и монтировать нужные криптованные устройства во время загрузки, а затем корректно отключать их во время шатдауна, достаточно добавить по одной строке в файлы /etc/crypttab и /etc/fstab:

$ sudo -i
# echo "имя /dev/sda5 none luks,cipher=aes-cbc-essiv:sha256" >> /etc/crypttab
# echo "/dev/mapper/имя /mnt/имя ext4 defaults 0 0" >> /etc/fstab

Теперь во время каждой загрузки ОС будет спрашивать пароль для доступа к криптованному разделу, если он будет указан неправильно – загрузка остановится.

Шифрование домашнего каталога производится по точно такой же схеме с тем лишь исключением, что перед добавлением новой записи в /etc/fstab следует удалить старую запись, ссылающуюся на /home. При создании шифрованной флешки специальные записи в /etc/crypttab и /etc/fstab не требуются. Подсистема HAL сама определит наличие на устройстве хранения LUKS-раздела и передаст эту информацию среде рабочего стола (Gnome, KDE, XFCE), которая, в свою очередь, выведет на экран окно с просьбой ввести пароль. Единственное, что необходимо сделать – при первом монтировании флешки изменить права доступа на ее корневой каталог:

$ sudo chown -R юзер:юзер /media/имя
$ sudo chmod g+s /media/имя

Здесь юзер – это твое имя в системе, а имя – название метки, которую ты указал при создании файловой системы (опция ‘-L’ утилиты mkfs).
Интересная особенность LUKS/dm-crypt заключается в возможности использования сразу нескольких ключей шифрования (а значит, и паролей) для одного дискового устройства. Это может понадобиться в многопользовательских системах для выделения каждому пользователю собственного пароля, расшифровывающего диск. Новые ключи добавляются в LUKS с помощью действия luksAddKey утилиты cryptsetup:

$ sudo cryptsetup luksAddKey /dev/sda5

Команда попросит тебя ввести текущий пароль, а затем дважды ввести новый. Удалить ключ можно, используя следующую команду:

$ sudo cryptsetup luksDelKey /dev/sda5 ID-ключа

Идентификатор нужного ключа ты найдешь в выводе следующей команды:

$ sudo cryptsetup luksDump /dev/sda5

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

$ dd if=/dev/urandom of=/путь/к/файлу bs=512 count=4

А затем используй его при инициализации LUKS-раздела:

$ sudo cryptsetup luksFormat -c aes-xts-plain -s 256 /dev/sda5 /путь/до/ключа

Для «открытия» раздела используй следующую команду:

$ sudo cryptsetup -d /путь/до/ключа luksOpen /dev/sda5 имя

TrueCrypt

Открытая система шифрования дисков TrueCrypt появилась для систем Windows еще в 2004 году, и уже через год в нее была добавлена поддержка Linux (версия 4.0), которая стала полноценной в 2008 году, когда была выпущена TrueCrypt 5.0 с графическим интерфейсом как для Windows, так и для Linux.

Читайте также:  Что делать если заглючил компьютер

TrueCrypt в первую очередь предназначена для шифрования образов ФС, но может быть использована и для шифрования целых разделов. Так же, как и LUKS, Linux-версия TrueCrypt опирается на подсистему dm-crypt, но, в отличие от первой, использует fuse для монтирования зашифрованных устройств/образов. Это оставляет свой отпечаток на производительности и делает TrueCrypt более медленной в сравнении с LUKS, однако, и у нее есть свои сильные стороны.

Во-первых, TrueCrypt по-настоящему кроссплатформенна, версии ПО есть для Windows, Mac OS X и Linux, их ядро абсолютно одинаково, поэтому никаких проблем при переносе образов между системами возникнуть не может (для чтения LUKS-разделов под Windows есть программа FreeOTFE, но за ее поддержку отвечают сторонние разработчики). Во-вторых, TrueCrypt умеет создавать скрытые шифрованные тома внутри уже существующих томов, причем делает это так, что формально нельзя доказать их наличие. В-третьих, TrueCrypt создает тома такими, что их невозможно отличить от случайных данных, что полезно при сокрытии информации (LUKS, как было описано выше, добавляет к любому тому заголовок, по которому его легко найти). В-четвертых, TrueCrypt позволяет менять пароли или файлы ключей для тома без потери данных (LUKS требует пересоздания тома).

В связи с лицензионными проблемами (при всей открытости исходного кода, лицензия TrueCrypt была признана несвободной ведущими производителями дистрибутивов) TrueCrypt был исключен из многих дистрибутивов, поэтому его придется скачивать и устанавливать самостоятельно:

$ cd /tmp
$ wget http://www.truecrypt.org/download/truecrypt-6.3a-linux-x86.tar.gz
$ tar -xzf truecrypt-6.3a-linux-x86.tar.gz
$ ./truecrypt-6.3a-setup-x86

В процессе установки необходимо прочитать и согласиться с лицензией и ввести свой пароль в системе (или пароль рута). После этого TrueCrypt будет установлен в каталог /usr, захламляя систему неуправляемыми пакетным менеджером файлами (которые, правда, могут быть удалены с помощью команды truecrypt-uninstall.sh).

После установки запускаем команду truecrypt и видим перед собой графический интерфейс. Основное пространство окна занимает список смонтированных шифрованных образов/разделов, в верхней части располагается стандартное меню, а снизу – основные элементы управления программой: создать том (Create Volume), смонтировать, размонтировать, открыть существующий том и т.д. После нажатия на кнопку «Create Volume» ты попадешь в мастер создания томов. Он проведет тебя через все шаги создания зашифрованного тома, включая выбор носителя (файл или раздел), типа тома (обычный или скрытый), ввод полного пути до файла тома или выбор устройства, выбор алгоритма шифрования и хеширования ключей, ввод размера тома, ввод пароля для доступа, выбор файловой системы (FAT, Ext2 или Ext3) и т.д. Все просто и понятно. После того как том будет создан, его можно найти с помощью кнопки «Select File» в нижней части окна программы, ввести пароль доступа, и том появится в списке подключенных томов. Клик на томе автоматически откроет стандартный файловый менеджер. После окончания работы можно нажать «Dismount All» и выйти из программы.

Не каждый пользователь будет рад графическому интерфейсу, поэтому у TrueCrypt есть еще один тип интерфейса: интерактивный текстовый режим, активируемый с помощью флага ‘-t’. Создание тома в этом режиме очень похоже на создание тома, с использованием графического мастера. Ты просто запускаешь команду «truecrypt -t -c» и отвечаешь на все те же стандартные вопросы. По окончании будет создан образ (или TrueCrypt’ный том внутри раздела), который можно подключить с помощью следующей команды:

$ truecrypt -t /путь/до/образа /точка/монтирования

для размонтирования используется флаг ‘-d’:

Замечу, что TrueCrypt совсем не уступает LUKS по степени обеспечения безопасности зашифрованных данных. В последней версии программы используется все тот же режим шифрования XTS, который мы использовали при создании зашифрованных разделов с помощью LUKS. В качестве алгоритмов шифрования могут быть использованы алгоритмы AES, Twofish и Serpent, ни один из них еще не был скомпрометирован. Более того, TrueCrypt позволяет использовать так называемые каскады алгоритмов, когда зашифрованный одним алгоритмом блок данных повторно шифруется другим.

EncFS

Виртуальная файловая система EncFS распространяется в виде обычного дистрибутивного пакета и не требует для своей работы ничего, кроме поддержки фреймворка fuse в ядре, libfuse, OpenSSL и небольшой библиотеки для логирования. Для инсталляции EncFS достаточно установить пакет с одноименным названием:

$ sudo apt-get install encfs

Создать зашифрованную с помощью EncFS файловую систему очень просто, для этого подойдет любой каталог. В качестве примера создадим два пустых подкаталога в /tmp, директория crypted будет содержать данные после их шифрования с помощью EncFS, а decrypted использоваться просто как точка монтирования для нее же:

$ cd /tmp
$ mkdir crypted decrypted

Подключим к каталогам EncFS:

$ encfs /tmp/crypted /tmp/decrypted

Теперь необходимо ответить на несколько вопросов. Первый вопрос: выбор режима работы EncFS с пользователем. Их всего два: expert (буква «x») и paranoid (буква «p»). Выбрав первый вариант, ты сможешь задать алгоритм шифрования (AES или Blowfish), длину ключа, такие вещи как Initialization Vector (если ты не знаешь, что это такое, можешь жать для выбора ответа по умолчанию) и т.д. В режиме paranoid программа сама ответит на свои вопросы и предложит ввести пароль для доступа к данным.

Стоит сказать, что, хотя для большинства пользователей режим paranoid будет более правильным выбором, режим expert открывает некоторые возможности для оптимизации. Например, алгоритм Blowfish быстрее AES, но он не используется по умолчанию просто потому, что нелегален для частного использования в некоторых странах. Также система по дефолту устанавливает блок данных ФС равным 1024 байт, хотя лучшую производительность EncFS показывает при установке размера блока равным размеру страницы оперативной памяти. То есть 4096 байт для x86.

Но вернемся к нашему зашифрованному каталогу. Перейдем в каталог decrypted и создадим несколько файлов:

$ cd decrypted
$ echo qwerty > file1
$ echo asdfgh > file2
$ echo zxcvbn > file3

Отключим EncFS и взглянем на результат:

$ cd ..
$ fusermount -u /tmp/decrypted
$ cd crypted
$ ls

Как видишь, EncFS полностью скрыла имена и данные файлов, но оставила почти все метаданные на виду. Кроме того, EncFS создала небольшой скрытый файл, начинающийся с «.encfs» и заканчивающийся номером версии. Файл содержит в себе метаданные, такие как опции шифрования (алгоритм, длина ключа), заголовки MAC (Message authentication code) и размер блоков шифрования.

Что лучше?

Ситуация с шифрующими системами в Linux весьма неоднозначна. С одной стороны, здесь есть стандартная реализация под названием LUKS/dm-crypt, обладающая всеми присущими криптосистеме функциями/свойствами и поддерживаемая из коробки самыми популярными дистрибутивами. С другой стороны, у LUKS/dm-crypt есть серьезные конкуренты, которые уделывают ее по нескольким характеристикам. Так что однозначный выбор сделать трудно. Я бы рекомендовал использовать LUKS/dm-crypt или loop-aes для повседневного использования и прибегать к помощи TrueCrypt, когда необходимо создать кроссплатформенный том, и EncFS, когда другие системы не могут быть использованы (например, шифрованный бэкап).

LUKS/dm-crypt и образы ФС

LUKS/dm-crypt вполне пригоден и для создания образов ФС, которые можно использовать для хранения важной информации:

# dd if=/dev/urandom of=luks.img bs=1M count=100
# losetup /dev/loop0 luks.img
# cryptsetup luksFormat /dev/loop0 -c aes-cbc-essiv:sha256 -s 256
# cryptsetup luksOpen /dev/loop0 luks
# mkfs.ext2 /dev/mapper/luks
# mkdir /mnt/luks
# mount /dev/mapper/luks /luks

LUKS/dm-crypt и одноразовые ключи

LUKS/dm-crypt также умеет использовать одноразовые ключи, что очень полезно при шифровании swap-разделов:

# swapoff -a
# cryptsetup -d /dev/urandom create cryptoswap /dev/sda1
# mkswap /dev/mapper/cryptoswap -L accessisdenied -v1
# echo "cryptoswap /dev/sda1 /dev/urandom swap" >> /etc/crypttab
# echo "/dev/mapper/cryptoswap none swap sw 0 0" >> /etc/fstab
# swapon -a

EncFS может работать в Linux, Mac OS X, FreeBSD и теоретически в любом UNIX, поддерживающем фреймворк fuse. Проект по портированию EncFS в Windows располагается по адресу www.assembla.com/spaces/wencfs.

WARNING

В целях безопасности индексацию зашифрованных разделов лучше отключить, отредактировав конфигурационный файл /etc/updatedb.conf. Файлы, зашифрованные EncFS, не могут иметь жестких ссылок, так как система шифрования привязывает данные не к inode, а к имени файла.

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector