Как зашифровать файл или каталог в Linux?


26

Какая команда наиболее популярна для таких вещей, как шифрование файла или каталога в терминале в Linux?

Ответы:


31

Я думаю, что это будет GPG. Хотя синтаксис для файлов и каталогов отличается.

шифрование

Для файлов (выводит filename.gpg):

gpg -c filename

Для директоров:

gpg-zip -c -o file.gpg dirname

Дешифрирование

Для файлов (выводит filename.gpg):

gpg filename.gpg

Для директоров:

gpg-zip -d file.gpg

Редактировать: Исправлено как @ Mk12 указывает на ошибку сжатия / распаковки для шифрования / дешифрования.


Разве это не должно быть «Шифрование» и «Расшифровка»?
mk12

Никто не сказал, как зашифровать каталог.
Чови

1
@chovy Не то, что выше, он говорит: Для dirs: gpg-zip -c -o file.gpg dirname
celebdor

@celebdor пропустил это. Спасибо. редактировать: это не работает для меня. Я получаю какой-то странный зашифрованный вывод при расшифровке файла.
Чови

@chovy: Жаль это слышать. Я могу подтвердить, что шифрование и дешифрование каталогов, как показано выше, работает для меня, используя gpg-zip (GnuPG) 1.4.16 под Mint 17.
Майкл Шепер

10
  • с openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

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

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • зашифровать с помощью AES

aescrypt -e -p password file.jpg

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

aescrypt -d -p password file.jpg.aes


1
+1 за то, как показать, как это сделать с openssl, который, скорее всего, доступен из коробки.
DevSolar

Действительно, но 3DES считается небезопасным и его не следует использовать, AES (aescrypt) - гораздо лучший вариант, см .: stackoverflow.com/questions/1619212/…
jmng

2

Попробуйте GnuPG .

Для шифрования: gpg -c filename

Для расшифровки: gpg filename.gpg


2

Это мой метод с использованием openssl и tar

Открыть зашифрованный каталог:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Блокировка зашифрованного каталога:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault

1
rm -rне удаляет данные; это просто отменяет связь. Вам нужно будет использовать что-то вроде srmудаления данных с диска.
Jbindel

2

Я лично использую в aescryptосновном.

      aescrypt -e "File" 

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

      aescrypt -d "File"

Или есть Mcrypt:

      mcrypt "File" 

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

      mcrypt -d "File"

А для каталога я предлагаю смонтировать каталог и зашифровать его. Затем после дешифрования просто распакуйте файл:

      tar -cf "Dir.tar" Dir/

и распутать

      tar -xf "Dir.tar"

1

Если высокий уровень безопасности не является большой проблемой (на странице руководства zip сказано, что алгоритм шифрования, используемый утилитами zipfile, слабее, чем PGP), то я предпочитаю zip и unzip. Это архивирует мои каталоги и шифрует одновременно. Я предпочитаю zip, потому что вы можете иметь своего рода инкрементный zip и шифрование вместо того, чтобы снова зашифровать и зашифровать все это. Особенно это полезно, когда размеры каталогов очень велики.

ZIP и шифрование

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

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

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password

0

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

Разрезание логики исходного кода, хотя вот что происходит для каждого типа данных, которые могут быть обработаны вышеуказанным связанным проектом

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient user@host.domain"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

${_mapped_input}Переменная устанавливается путем считывания mkfifoимени файла трубы и установки ничего читать в массив с mapfile -t _lines < "${_file_to_map}"которой позже расширен и сохраняется в ${_mapped_input}... немного запутанным , но это позволяет экспериментальные возможности действовать на отдельных линиях. В результате вы получите каталог для хранения зашифрованных файлов или сжатых каталогов и файл с различными пакетами зашифрованных данных.

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

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

Если вы хотите увидеть, какие другие функции работают и протестированы публично проверяемым способом, то посмотрите журналы сборки Travis-CI (особенно ближе к концу журналов), и вы обнаружите, что есть некоторые другие интересные вещи, над которыми работают для шифрования и дешифрования практически любых данных.


0

Используйте FinalCrypt - Unbreakable Одноразовый Pad OpenSource File / Directory Encryption (GUI & CLI)

Он сам создает ключи One-Time Pad

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Пароль:

Всего зашифровано 4 файла 249,7 МБ

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 «/ главная / рон / My-Test-каталог / Видео / замок-waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" -> "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" 91,2% 🔒" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit»🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Главная / рон / My-Test-каталог / Brother dsmobile 700d_uke_usr.pdf.bit»🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Закончено шифрование [4/4] файлов полностью [249,7 МБ / 249,7 МБ] за 7,3 секунды (в среднем: 34,2 МБ / с)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Пароль:

Начал расшифровывать 4 файла всего 124,9 МиБ

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 «/ главная / рон / My-Test-Каталог / Видео / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 «/ главная / рон / My-Test -Directory / Brother dsmobile 700d_uke_usr.pdf "🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256:" 88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E "->" 8D718D20F5F0F5F6F5F6F5D6B5D5D5B5D5BD5F5D6B5D6B5D5B5D5B6D5B5D5B5D5B5D5B5D5B5D5B5D5B5D5B5D5B5D5D5B5D5B5D5D5D5D6D6D6D6D6D6D6D6D6D6DBDB/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf»🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Закончено дешифрование [4/4] файлов полностью [124,9 МБ / 124,9 МБ] за 3,4 секунды (в среднем: 36,3 МБ / с)

Он также имеет графический интерфейс

Просто пытаюсь помочь сообществу ...



FinalCrypt 5 добавил Auto Key и автоматически создает ключи OTP, поэтому обсуждение, на которое ссылается Скотт, больше не актуально
Рон де Йонг

Я хотел бы увидеть описание того, как это работает, это более технический и менее махающий рукой. Проблема в том, что одноразовые планшеты (1) отлично подходят для передачи данных и паршивые для  хранения, а (2) должны быть случайными.  Если OTP FinalCrypt действительно случайны, то они должны быть сохранены, что ставит под угрозу безопасность. Если они могут быть восстановлены, то они не случайные, а только псевдослучайные, и поэтому они не являются правильными OTP. … (Продолжение)
Скотт

(Продолжение)… На их странице «  Автоматическое управление ключами» указано, что OTP хранятся «на съемном внешнем (USB) диске. ОК, это может сработать. Но если вам необходимо подключать USB-накопитель каждый раз, когда вы хотите расшифровать файл (и учитывая, что размер OTP должен быть не меньше, чем файл, который он шифрует), вы можете просто сохранить свои файлы на съемном диске и не заморачиваться с шифрованием. … (Продолжение)
Скотт

(Продолжение)… Кроме того, на главной странице FinalCrypt говорится, что «большинство криптографических программ использует сломанный AES…», но утверждения о том, что AES «сломан», кажутся сильно преувеличенными. Связанный: Почему AES считается безопасным? (о  криптографическом стеке обмена ).
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.