Какое хорошее решение для шифрования некоторых файлов в Unix? [закрыто]

44

Я ищу утилиту для шифрования определенных каталогов в Linux. Я не ищу каких-либо служб полного шифрования диска, а просто зашифрую несколько каталогов для хранения файлов в облаке. Получив их, я должен расшифровать их, прежде чем они будут доступны. Нужно сделать это для пары каталогов (несколько сотен ГБ). Любые идеи? Предпочтительно на основе CLI.

Питер
источник

Ответы:

51

Я использую только GnuPG для этой задачи. Папки сначала упаковываются в архив TAR-GZ:

tar czf files.tar.gz /path/to/my/files

Если это еще не сделано, сначала необходимо создать пару закрытых / открытых ключей GPG:

gpg --gen-key

Следуй инструкциям. Значения по умолчанию должны быть достаточными для первого теста. Нечто подобное появится:

gpg (GnuPG) 2.0.18; Copyright (C) 2011 Free Software Foundation, Inc.
Это бесплатное программное обеспечение: вы можете свободно изменять и распространять его.
НЕ ПРЕДОСТАВЛЯЕТСЯ ГАРАНТИИ, если это разрешено законом.

Пожалуйста, выберите, какой ключ вы хотите:
   (1) RSA и RSA (по умолчанию)
   (2) DSA и Эльгамал
   (3) DSA (только подпись)
   (4) RSA (только подпись)
Ваш выбор? 1
Ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа вы хотите? (2048) 4096
Запрашиваемый размер ключа составляет 4096 бит
Пожалуйста, укажите, как долго ключ должен быть действительным.
         0 = срок действия ключа не истек
        = срок действия ключа истекает через n дней
      w = срок действия ключа истекает через n недель
      m = срок действия ключа истекает через n месяцев
      y = срок действия ключа истекает через n лет
Ключ действителен для? (0)
Ключ не истекает вообще
Это верно? (да / нет) у

GnuPG необходимо создать идентификатор пользователя для идентификации вашего ключа.

Настоящее имя: ключ шифрования файла
Адрес электронной почты: admin@company.org
Комментарий: ключ шифрования файла
Вы выбрали этот USER-ID:
    «Ключ шифрования файла (File Encryption Key)»

Изменить (N) ame, (C) omment, (E) mail или (O) kay / (Q) uit? о

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

Если все сделано, то на вашем экране появится что-то вроде этого:

Нам нужно сгенерировать много случайных байтов. Это хорошая идея для выполнения
какое-то другое действие (наберите на клавиатуре, переместите мышь, используйте
диски) во время первого поколения; это дает случайное число
Генератор больше шансов получить достаточно энтропии.
Нам нужно сгенерировать много случайных байтов. Это хорошая идея для выполнения
какое-то другое действие (наберите на клавиатуре, переместите мышь, используйте
диски) во время первого поколения; это дает случайное число
Генератор больше шансов получить достаточно энтропии.
gpg: ключ FE53C811 помечен как окончательно доверенный
открытый и секретный ключ создан и подписан.

gpg: проверка доверия
gpg: необходимо 3 маргинала (ов), 1 завершено (ий), модель доверия PGP
gpg: глубина: 0 действительно: 1 подписано: 0 доверие: 0-, 0q, 0n, 0m, 0f, 1u
паб ***** / ******** 2013-03-19
      Отпечаток ключа = **** **** **** **** **** **** **** **** **** ****
uid Ключ шифрования файла (File Encryption Key) 
суб ***** / ******** 2013-03-19

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

gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'

Это File Encryption Keyимя, которое я ввел во время процедуры генерации ключа.

Сейчас я использую GnuPG для вновь созданного архива:

gpg --encrypt --recipient 'File Encryption Key' files.tar.gz

Теперь у вас есть files.tar.gz.gpgфайл, который зашифрован.

Вы можете расшифровать его с помощью следующей команды (вам будет предложено ввести пароль):

gpg --output files.tar.gz --decrypt files.tar.gz.gpg

Вот и вся магия.

Убедитесь, что вы зарезервировали свой ключ! И никогда не забывайте свой пароль! Если вы не создали резервную копию или забыли, у вас есть гигабайты мусора данных!

Сделайте резервную копию вашего закрытого ключа с помощью этой команды:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'

преимущества

  • Ни один из шифровальщиков не должен знать конфиденциальную информацию о шифровании - шифрование выполняется с помощью открытого ключа. (Вы можете создать пару ключей на своей локальной рабочей станции и передать только открытый ключ на свои серверы)
  • В файлах сценариев или заданиях пароли не отображаются
  • Вы можете иметь столько шифровальщиков в любой системе, сколько захотите
  • Если вы держите свой секретный ключ и секретную фразу в секрете, все в порядке и очень, очень трудно взломать
  • Вы можете расшифровать с помощью закрытого ключа на платформах Unix, Windows и Linux, используя специальную реализацию PGP / GPG
  • Нет необходимости в особых привилегиях для систем шифрования и дешифрования, нет монтирования, нет контейнеров, нет специальных файловых систем
zero0
источник
1
Обратите внимание, что в зависимости от данных, может быть быстрее работать tarбез zпереключателя, чтобы избежать его сжатия.
10
28

Со своей стороны, я в основном использую два метода:

Первый метод: tar и openssl

Tar каталог

tar cvf backup.tar /path/to/folder

Вы можете удалить переключатель [v] из команды tar, чтобы отключить подробный режим.

шифровать

openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword

Вы можете изменить aes-128-cbc на любой другой метод шифрования, поддерживаемый openssl (openssl --help).

Расшифровать

openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar

Он попросит пароль.

Второй метод: зашифрованный почтовый индекс

zip -r -0 -e backup.zip /path/to/folder

Он попросит пароль.

  • -r означает рекурсивно (целое дерево папок)
  • -0 означает хранить только (не сжимает, быстрее)
  • -e означает зашифровать архив

Одно из преимуществ этого: он будет лучше работать с системой на базе Windows.

Жюльен Р.
источник
3
Предоставление пароля в командной строке не очень хорошая идея. Пароль остается в истории оболочки.
pbies
1
Следует отметить, что, zipпо слухам , шифрование может быть взломано.
Acumenus
22

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

gpg --symmetric --cipher-algo aes256 files.tar.gz

Вам будет предложено ввести пароль. После этого создается зашифрованный файл с именем files.tar.gz.gpg.

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

gpg --decrypt files.tar.gz.gpg > files.tar.gz
chiborg
источник
2

Вы можете использовать truecrypt очень простое и приятное решение. Он имеет пакет только для консольного использования. Это очень просто для изучения и использования. http://www.truecrypt.org

B14D3
источник
4
По состоянию на 28 мая 2014 года TrueCrypt больше не существует. См. En.wikipedia.org/wiki/TrueCrypt
Брайс
2

Для этой цели я бы предложил FUSE-шифрование (например, encfs ) - для небольших данных я бы использовал gpg.

Он реализован в пользовательском пространстве, поэтому вам не нужны никакие специальные привилегии.

Мацей Печотка
источник
1

Существует несколько файловых систем Linux, предназначенных для шифрования данных. Вы уже думали о LUX например?

блюститель
источник
1

Очень простой способ зашифровать один файл:

gpg -c filename.ext

Вас дважды попросят ввести фразу-пароль, и gpg создаст filename.ext.gpg. Загрузите зашифрованный файл в облачный сервис. Для восстановления файла используйте:

gpg filename.ext.gpg

Который воссоздаст filename.ext. Обратите внимание, что незашифрованные файлы не защищены, и соответствующие данные останутся на вашем носителе даже после удаления. Только контейнер gpg безопасен. EncFS - более практичная альтернатива для облачного шифрования на уровне файлов.

Брайс
источник