Шифрование и сжатие

28

Есть ли лучший способ сжать и затем зашифровать файлы, отличные tarот opensslили gpg?

user75027
источник
3
Это зависит от. Каковы ваши требования? Как вы оцениваете «лучшее»? Какие инструменты у вас есть в наличии? Рассматривали ли вы уже какие-либо другие варианты, которые могут быть полезны для упоминания?
Грег Хьюгилл
Не считал других. Это просто базовое шифрование, при котором кто-то не может прочитать содержимое файла, и желательно поддерживать хорошую степень сжатия.
user75027
1
Обычно ответом будет нет. Одна из основных философий Unix - «делай одно и делай это хорошо». tar -zэто небольшое исключение, потому что это очень распространенная практика.
Патрик
1
Более новые tarверсии поддерживают сжатие xz (флаг -J), степень сжатия которого обычно лучше, чем более традиционное сжатие gzip ( -z) или bzip2 ( -j).
Джофель
Я заметил, что xzэто отлично. Я помню, как я загружал ядро, и оно было упаковано примерно в 1/7 от его первоначального размера. Я думаю, что я буду tar cvJf out.tar.xz file1 [file2...]использовать gpg или openssl для шифрования. Я также заметил, что XZ очень быстро. Как добиться лучшего сжатия, чем bz2, и при этом быть быстрым?
user75027

Ответы:

24

tarэто обычный инструмент для связывания файлов. tarСама равнина не сжимает. Существуют отдельные инструменты, такие как gzip , bzip2 и xz (в порядке увеличения степени сжатия в типичных файлах), которые сжимают один файл. Многие tarреализации, включая GNU tar (нормальная реализация в Linux), могут автоматически сжиматься с опцией ( -zдля gzip, -jдля bzip2, -Jдля xz):

tar -cJf myarchive.tar.xz file1 file2 file3

Чтобы зашифровать файл, используйте gpg . Создайте ключ и свяжите его с вашим адресом электронной почты (идентификаторы ключей GPG / PGP обычно содержат адрес электронной почты, хотя это и необязательно). Зашифруйте свои файлы, указав адрес электронной почты в качестве получателя. Чтобы расшифровать файл, вам нужно будет ввести фразу-пароль, чтобы разблокировать ваш закрытый ключ.

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

Не используйте opensslинструмент командной строки. Это витрина для библиотеки OpenSSL, не предназначенная для производственного использования. Хотя с ним можно кое-что сделать (в частности, у него есть все примитивы, необходимые для базового центра сертификации), его сложно использовать правильно, и в нем нет всего, что нужно для правильной работы. Где GPG дает вам велосипед, OpenSSL дает вам несколько металлических стержней различных размеров и пару резиновых камер (винты и насос не входят в комплект). Используйте GPG.

Жиль "ТАК - перестань быть злым"
источник
Я понимаю tar как упаковщик и методы сжатия. ключи gpg, однако, являются новыми для меня. Я не совсем понимаю, как его использовать, хотя у меня есть ключ. Я думаю. Я думаю, что у меня также есть ключи SSH.
user75027 15.07.14
Это то, что я искал, чтобы сжать и зашифровать с помощью одной команды (используя tarи gpgв трубе).
CGFoX
12

Вы можете использовать 7zip:

7z a -p -mhe=on stuff.7z MyStuff
   ^  ^     ^      ^        ^
   |  |     |      |        `--- Files/directories to compress & encrypt.
   |  |     |      `--- Output filename
   |  |      `--- Encrypt filenames
   |  `---- Use a password
   `---- Add files to archive

Он попросит вас ввести пароль. По-видимому, он использует AES-256 для шифрования и SHA-256 пароля и счетчик, повторенный 512K раз для получения ключа.

Изменить : Это не шифрует имена файлов, так что вы tarвсе равно можете сначала все.

Редактировать 2 : Добавлено -mhe=on.

Timmmm
источник
5
Если вы используете, 7zaвы можете зашифровать имена файлов с -mhe=onопцией.
SilverlightFox
3

Таким образом, вы можете использовать 7zip шифрование имен файлов тоже:

7z a -p -mhe=on stuff.7z MyStuff
Виктор
источник