2009-05-21 2 views
4

Недавно я прошел через эту маленькую нуб приключений на рабочий стол Linux:Как создать автономный зашифрованный файл в Linux?

  1. Возьмите текстовый файл с секретной информацией
  2. PGP-шифрование его (например, конек)
  3. Назад его вверх
  4. Переустановка OS, стирать жесткий диск, удалять компьютер в пуле и т. Д.
  5. Извлеките зашифрованный файл из резервной копии и задохните от ужаса, чтобы понять, что вы не можете его расшифровать, даже если вы знаете пароль, потому что вы не вернулись up ~/.gnupg, где был сохранен ваш ключ.

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

Кто-нибудь знает, как это сделать с Linux?

(я надеюсь, что это связано с достаточно программирования для SOF ... это важно для моего программирования работы в любом случае!)

ответ

3

TrueCrypt является удобным решением для шифрования диска, который работает на Linux (и других систем тоже) ,

Решения нижнего уровня только для Linux - это dm-crypt и crpytoloop.

+0

У вас могут возникнуть проблемы с дистрибутивами, которые не имеют более нового ядра. – Ian

2

Я использую ccrypt, который также доступен в Cygwin.

ccrypt is a utility for encrypting and decrypting files and streams. It 
    was designed to replace the standard unix crypt utility, which is noto‐ 
    rious for using a very weak encryption algorithm. ccrypt is based on 
    the Rijndael block cipher, which was also chosen by the U.S. government 
    as  the  Advanced  Encryption  Standard  (AES,  see 
    http://www.nist.gov/aes/). This cipher is believed to provide very 
    strong cryptographic security. 
1

Я использовал Mcrypt. Он поддерживает несколько современных алгоритмов шифрования, и это довольно comon на машинах Linux (или, по крайней мере, легко получить предварительно скомпилированный пакет для большинства дисторов).

8

Резюме: если вы хотите это сделать, используйте функцию --symmetric при шифровании.

Давайте рассмотрим детали того, что действительно происходит здесь; малое понимание часто помогает при попытке сделать все правильно.

Когда вы шифруете файл с помощью GnuPG, он использует «симметричное» шифрование. То есть он использует один ключ, который будет шифровать открытый текст и расшифровывать cyphertext. Почему он это делает? Безусловно, симметричные алгоритмы намного быстрее, чем алгоритмы открытого/закрытого ключа (где для шифрования и дешифрования используются отдельные ключи), а по другим причинам мы увидим позже.

Где этот ключ используется для шифрования файла? Это случайный случай. Нет, я здесь не шучу.

Теперь вы можете подумать, что у нас есть небольшая проблема. Файл зашифрован случайным ключом, и никто (кроме этого конкретного процесса GnuPG) не знает, что это такое. Итак, что будет дальше?

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

И что же такое --symmetric? Он просто шифрует этот случайный ключ шифрования с помощью самого симметричного алгоритма, на этот раз используя ключ на основе предоставленной кодовой фразы. Теперь любой, кто знает парольную фразу, может также расшифровать файл.

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

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

Что вы хотели сделать, это добавить параметр --symmetric, чтобы разрешить дешифрование файла только с помощью кодовой фразы.

Проблема заключалась в том, что вы зашифровали файл своим открытым ключом, и когда вы это делаете, вам понадобится секретный ключ (хранящийся в ~/.gnupg) для его расшифровки.

1

ecryptfs легко настроить и использовать.

  • Потенциал: вы не резервируете место заранее; он работает как слой поверх файловой системы

  • Даунсайд: имена файлов не зашифрованы. Очевидно, что вы можете работать с этим путем zipping или tarring для всего дерева и позволяя ecryptfs шифровать файл zip или tar, но это неприятно.

    ОБНОВЛЕНИЕ По состоянию на март 2012 года эта проблема решена (и была решена в течение некоторого времени): ecryptfs шифрует имена файлов. Я не мог легко найти номер версии или дату, когда эта функция была введена.

+2

На самом деле, eCryptfs поддерживает имена файлов, в настоящее время :-) –

2

Курт Сэмпсон проделал отличную работу, объясняя концепции. Я собираюсь дать некоторые подробности.

К сожалению, друзья Seahorse & не дают возможности делать симметричное шифрование, хотя могут обрабатывать дешифрование файлов с симметричным зашифрованием. Тем временем, как уже было сказано, вы можете сделать свое шифрование из командной строки, например.

gpg --symmetric --force-mdc --cipher-algo aes256 -o outfile infile 

Если вы счастливы с GPG, но на самом деле хотите, графический интерфейс, вы можете использовать мой gpg-frontend Pyrite. Он не интегрируется с Nautilus, как плагины морских коньков, но это все еще довольно мило, если можно так выразиться. :)

Как уже упоминалось, eCryptfs - отличный вариант, который sorta попадает в эту область, обеспечивая шифрование на каждом файле, хотя он делает это гораздо более удобным способом, в основном предоставляя вам папку, которая прозрачно шифрует/расшифровывает все записи &.Сначала это похоже на зашифрованное контейнерное решение, но на самом деле оно шифрует файлы по отдельности - после размонтирования папки вы получаете кучу файлов с одним зашифрованным файлом. Это article at LJ дает хороший сравнительный обзор eCryptfs по сравнению с некоторыми другими параметрами &. Вот как это просто, чтобы получить eCryptfs собирается:

$ mkdir ~/vault 
$ sudo mount -t ecryptfs ~/vault ~/vault 
Select key type to use for newly created files: 
1) openssl 
2) passphrase 
3) pkcs11-helper 
4) tspi 
Selection: 2 
....... (truncated) 
$ echo hello > ~/vault/encfile 
$ sudo umount ~/vault 
$ ls -a ~/vault 
. .. encfile 
$ cat ~/vault/encfile 
稖��)!x�"3DUfw`��ȿ_���E�����_CONSOLE�W�v0�+�'�hV���Q��VZ��eP�����l⟮j%����?O��V 
....... (truncated) 

Если вы заинтересованы в этом, а также проверка команды ecryptfs-setup-private, которая устраняет необходимость в Судо и позволяет автоматизировать все. Двигаемся дальше.

Лучшие другие варианты являются те, упомянутые PTS: TrueCrypt (который является кросс-платформенным) и dm-crypt, которая позволяет шифровать любой блок-устройства (например, разделы, логические тома, отдельные файлы) и то, конечно, вы бросаете fs поверх этого. Не используйте Cryptoloop (предшественник dm-crypt).

я в основном только имею опыт работы с Red Hat, Fedora, & друзьями, но те, которые вы можете использовать прекрасный графический интерфейс управления дисками palimpset для создания и редактирования зашифрованных дисков/разделы прямо из ворот без установки какого-либо дополнительное. Конечно, для этого используется команда командной строки: cryptsetup ... вот простой пример, чтобы дать вам представление о том, что возможно с помощью dm-crypt, используя cryptsetup, чтобы сделать зашифрованную файловую систему из расширяемого логического тома:

lvcreate -L 2G -n mybox volgroup 
cryptsetup luksFormat /dev/volgroup/mybox 
cryptsetup luksOpen /dev/volgroup/mybox mybox 
mkfs.ext4 /dev/mapper/mybox 
cryptsetup luksClose mybox 

После того, как вы это сделали, у Nautilus не должно возникнуть проблем с автоматическим определением его, а затем вы можете разблокировать его и сделать безопасное пользовательское крепление оттуда.

EDIT:Я чувствую себя глупо. Когда я столкнулся с этим вопросом, я просматривал теги gpg. Я не заметил, сколько лет прошло, пока я не закончил набирать все и не хотел его подавать. Ну что ж. Возможно, это будет полезно для потомков.

+0

** Приложение: ** Я думаю, что статья LJ, которую я связал, рассказывает о том, насколько важно иметь зашифрованный своп при использовании любой из этих схем шифрования. В любом случае, проверьте справочную страницу для вспомогательного инструмента ** 'ecryptfs-setup-swap' **, если вы не устанавливаете систему с нуля. (Проще простого.) – rsaw