- Как шифровать файлы в Linux с помощью GPG, Ccrypt, Bcrypt и 7-Zip
- bcrypt и ccrypt
- Заключение
- Шифрование и расшифровка файлов в Linux
- Общие сведения о шифровании и расшифровке
- OpenSSL
- Используем GPG для шифрования сообщений и файлов
- Установка GPG
- Использование
- Создание ключа
- Конфигурация
- Команды и опции
- Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей
- Где вы можете столкнуться с использованием GPG
Как шифровать файлы в Linux с помощью GPG, Ccrypt, Bcrypt и 7-Zip
В системе Linux есть несколько различных утилит командной строки, которые могут зашифровывать и расшифровывать файлы с использованием пароля, задаваемого пользователем. Такие средства шифрования можно применять во многих случаях, в том числе для шифрования файлов, подготавливаемых для безопасной отправки через интернет, с тем, чтобы не беспокоиться о том, что кто-то третий получит доступ к файлам в случае, если передача данных будет перехвачена.
Прежде чем рассматривать отдельные инструментальные средства, вам нужно убедиться в том, что установлены все соответствующие пакеты. В Ubuntu, вы для установки программ должны использовать следующую команду:
Пакет GNU Privacy Guard (GPG) является инструментальным средством, предназначенным в первую очередь для шифрования и подписи данных с использованием криптографии с открытым ключом. Тем не менее в нем также есть также возможность выполнять шифрования данных просто с использованием пароля, введенного пользователем, и в нем поддерживаются различные криптографические алгоритмы.
Чтобы с помощью gpg зашифровать файл, в данном случае файл big.txt, введите следующую команду:
Вам будет предложено ввести пароль (дважды). В процессе шифрования создается новый файл, который называется big.txt.gpg . Исходный файл также останется, так что вам потребуется его удалить в случае, если вы намереваетесь сохранить только зашифрованную копию. Если сравнивать размеры исходного и зашифрованный файлов, то вы увидите, что зашифрованный файл будет по размеру меньше. Это происходит потому, что команда gpg сжимает файл во время шифрования. Если файл уже сжат (например, файл .zip или файл .tgz), то зашифрованный файл может, на самом деле, оказаться несколько большим.
Чтобы расшифровать файл, используйте команду:
По умолчанию файлы, зашифрованные с помощью gpg, будут использовать алгоритм шифрования cast5 , который одобрен национальным криптологическим агентством правительства Канады. Однако в утилите gpg также поддерживает ряд других встроенных алгоритмов шифрования, в том числе Triple DES (3DES), который используется в индустрии электронных платежей; Advanced Encryption Standard (AES) — технология шифрования, одобренная Американским национальным институтом стандартов и технологии (NIST); и Camellia — шифр совместно разработанный фирмами Mitsubishi и NTT, который одобрен Европейским союзом и Японией.
Чтобы увидеть список доступных алгоритмов, наберите:
Список доступных алгоритмов приведен в выданных данных в разделе «Supported algorithms» («Поддерживаемые алгоритмы») ниже тега «Cipher» («Шифр»). Чтобы использовать другой алгоритм, добавьте параметр -crypto-algo , за которым укажите алгоритм, который вы хотите использовать, например, -crypto-algo=3DES
Тогда полная команда будет иметь следующий вид:
bcrypt и ccrypt
Пакет gpg — это не единственный инструмент шифрования, доступный в системе Linux. В оригинальных системах Unix, была команда под названием crypt, однако уровень безопасности, который она обеспечивала, был очень низким. По аналогии с ней были созданы некоторые другие команды, которыми ее можно заменить, в том числе bcrypt и ccryrpt.
В команде bcrypt используется алгоритм blowfish, в то время как команда ccrypt базируется на шифре Rijndael, который является алгоритмом, используемый для AES. Многие криптоаналитики не рекомендуют далее использовать алгоритм blowfish, т. к. опубликованы некоторые теоретические описания атак, которые его ослабляют, однако для повседневного шифрования, для которого не требуется обеспечить шифрование уровня государственной безопасности (NSA, MI5, FSA), он все еще полезен.
Для шифрования с использованием команды bcrypt:
В отличие от команды gpg, команда bcrypt заменит оригинальный файл зашифрованным файлом и добавит в конце имени файла .bfe. Точно также, как и в случае с командой gpg, полученный файл также сжимается и поэтому для несжатых файлов размер файла должен быть значительно меньше. Сжатие может быть отключено с помощью параметра -c .
Для расшифровки файла используйте:
Файл .bfe будет заменен исходным незашифрованным файлом.
Есть два возможных способа вызова команды ccrypt:
- непосредственный вызов команды ccrypt с параметрами -e или -d
- использовать для шифрования и дешифровки команды ccencrypt и ccdecrypt , соответственно.
Чтобы зашифровать файл введите:
Исходный файл будет заменен файлом big.txt.cpt . В отличие от gpg и bcrypt, выходной файл сжат не будет. Если сжатие необходимо, то можно использовать такие инструменты, как gzip. Предлагаемые расширения для сжатых и зашифрованных файлов — .gz.cpt или .gzc.
Для расшифровки файла используйте:
В архиваторе 7-Zip также есть шифрование AES. Чтобы создать зашифрованный архив используйте в команде 7z параметр -p :
Вам будет предложено ввести пароль (дважды). Затем файл будет сжат и зашифрован. Исходный файл останется, точно также, как и с командой gpg, поэтому вам нужно удалить его в случае, если вы хотите сохранить только зашифрованную копию. Преимуществом использования пакета 7-Zip является то, что в одном архиве можно сохранять и зашифровывать несколько файлов и папок.
Заключение
С помощью этих методов сжатия можно зашифровать конфиденциальные данные с достаточной стойкостью с тем, чтобы даже агентства, спонсируемые правительствами, не смогли получить доступ к файлам. Как и во всех случаях использования паролей (используемых в сети или вне сети), применение более длинных паролей обеспечивает лучшую безопасность, чем при использовании коротких паролей.
Источник
Шифрование и расшифровка файлов в Linux
Общие сведения о шифровании и расшифровке
Всегда стоит использовать только надежные, не скомпрометированные методы шифрования . Криптостойкость — также важна, но в этом случае уже следует балансировать между скоростью выполнения шифрования/расшифровки и надежностью. Определить, какой метод шифрования более надежен и можно ли его вообще использовать (не скомпрометирован ли он) помогут поисковые системы интернета.
Если нет времени искать информацию о методах шифрования, то на момент написания статьи вполне надежным, и одним из самых распространенных является алгоритм шифрования AES. Цифры после названия метода, например AES128, обозначают длину ключа (бит), чем больше число, тем надежнее шифр, но дольше будут идти процессы шифрования и расшифровки. Но тут тоже есть нюансы: посмотрите, как легко обнаружить изображение пингвина после шифрования файла в режиме шифрования ECB. Вывод прост — если требуется надежность, необходимо понимание, как работают современные методы шифрования.
В этой статье рассматривается только симметричное шифрование с использованием парольной фразы. Использование ключей и/или асимметричного шифра более надежно, но требует за собой хранения файлов-ключей. Главный недостаток симметричного шифрования заключается только в том, что чтобы передать пароль или ключ нужно использовать исключительно надежные каналы связи. Если передача паролей через интернет не планируется, то это метод вполне надежен.
Чтобы зашифровать все содержимое директории, необходимо сначала её сжать, например, при помощи Zip или Tar, а после расшифровки провести обратный процесс распаковки:
OpenSSL
OpenSSL — программное обеспечение для криптографии с открытыми исходными кодами, присутствует практически на всех UNIX-ОС (Linux, CentOS, Ubuntu, FreeBSD и др.) из коробки, также можно установить и на Windows, но это потребует некоторых усилий.
Как видно здесь содержимое файла files.tar.gz, находящегося в той же директории, из которой запускается OpenSSL шифруется в файл files.tar.gz.aes и следующей командой содержимое файла files.tar.gz.aes расшифровывается в файл files_decrypt.tar.gz.
Если процесс шифрования и расшифровки производится вручную из командной строки, то из команд лучше убрать параметр -pass (-pass pass:111MYSUPERPASS), в этом случае пароль (111MYSUPERPASS) будет запрашиваться после запуска команды и такой способ более безопасен, так как не оставляет следов — в истории запускаемых команд не будет виден пароль.
Источник
Используем GPG для шифрования сообщений и файлов
Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.
GPG может использоваться для симметричного шифрования, но в основном программа используется для ассиметричного шифрования информации. Если кратко — при симметричном шифровании для шифровки и расшифровки сообщения используется один ключ (например, какой символ соответствует той или иной букве). При ассиметричном шифровании используются 2 ключа — публичный и приватный. Публичный используется для шифрования и его мы можете дать своим друзьям, а приватный — для расшифровки, и его вы должны хранить в безопасности. Благодаря такой схеме расшифровать сообщение может только владелец приватного ключа (даже тот, кто зашифровывал сообщение, не может произвести обратную операцию). Подробнее про асимметричное шифрование вы можете прочитать в Википедии.
Установка GPG
Скачайте и установите Gpg4win.
В большинстве дистрибутивов GNU/Linux GPG уже установлен. Если же он у вас не установлен, установите пакет gnupg с помощью своего пакетного менеджера или соберите его из исходников.
Для Android существуют программы GnuPG for Android и OpenKeychain. Создатели GnuPG for Android рекомендуют использовать OpenKeychain.
Спасибо товарищу под ником sormon за то, что напомнил!
Использование
Здесь будет приведено только использование в Linux (на момент написания статьи последней версией GPG является 2.2.6)
Для начала стоит уточнить, что в большинстве дистрибутивов Linux есть два бинарных файла: gpg и gpg2 . Насколько я помню, это были две разные версии: 1.4.x и 2.0.x, и для удобного использования я делал alias, чтобы при запуске gpg выполнялся gpg2. Сейчас же в Debian и Arch Linux /bin/gpg2 является символической ссылкой на /bin/gpg и потребность в таких манипуляциях пропала. Проверить это можно выполнив file /bin/gpg2 .
Введя gpg без аргументов он создаст необходимые ему файлы (если они ещё не созданы) и будет ждать ввода шифруемой информации.
При наличии ключа мы можем ввести текст, нажать сочетание клавиш Ctrl + D и получить порцию кракозябр прямо в консоль. Но пока что у нас нет ключа.
Создание ключа
Чтобы создать ключ, нужно запустить GPG с аргументом «—full-generate-key» (можно и с «—gen-key», но в этом случае у нас не будет выбора некоторых важных параметров).
UPD: Если запустить GPG ещё и с аргументом —expert , то выбор типа ключа будет намного шире. За дополнение спасибо товарищу nikitasius!
Вы можете выбрать любой вариант, но учтите, что выбрав третий или четвёртый вариант вы не сможете шифровать сообщения и файлы!
Для RSA ключа размером 2048 бит вполне достаточно, но вы можете выбрать размер до 4096 бит (использовать ключи размера меньше 2048 бит небезопасно).
Если вы выберете ограниченный срок действия ключа, то по истечению его срока ключ будет признан недействительным. Вы можете продлить срок действия ключа, пока он не истечёт.
GPG спросит, верно ли мы указали срок, и если да, то нужно будет указать имя, адрес электронной почты и примечание (всё это опционально, но нужно указать хотя бы что-то одно).
Здесь вы можете сделать правки либо продолжить.
Дальше gpg попросит указать пароль (рекомендую освежить память и почитать о правилах выбора стойкого пароля). Если у вас запущен X сервер, то у вас вылезет диалоговое окно, куда нужно ввести пароль. Если же нет, то пароль вводится прямо в консоль.
Добавьте в файл
/.gnupg/gpg-agent.conf данную строчку:
pinentry-program /usr/bin/pinentry-tty
Pynentry — это те самые диалоговые окна. Помимо tty-версии (консольной) есть ещё несколько версий (графических), которые вы можете попробовать.
Затем перезапустите gpg-agent. На системах с systemd это делается так:
systemd —user reload gpg-agent
В терминале вводимый пароль никак не отображается!
Также тут есть полезный совет, который ускорит создание ключа. Следовать ему желательно, но необязательно (и очень аккуратно, чтобы не натыкать лишнего).
На этом этапе ключ генерируется и добавляется в связку ключей. В связке ключей может находится множество ключей. Также на этом этапе создаётся сертификат отзыва — файл, с помощью которого созданный ключ можно отозвать (признать недействительным). Рекомендуется хранить его в безопасном месте, т.к. если к нему получат доступ злоумышленники, то они смогут отозвать ваш ключ.
Итак, что же означают все эти странные последние строки?
rsa — Алгоритм шифрования RSA.
2048 — Длина ключа.
1970-01-01 — Дата создания ключа.
2BB680. E426AC — Отпечаток ключа. Его следует сверять при импортировании чужого публичного ключа — у обоих сторон он должен быть одинаков.
uid — Идентификатор (User-ID).
pub и sub — Типы ключа:
pub — Публичный ключ.
sub — Публичный подключ.
sec — Секретный ключ.
ssb — Секретный подключ.
[SC] и [E] — Предназначение каждого ключа. Когда вы создаёте ключ, вы получаете аж 4 криптоключа: для шифрования, расшифровки, подписи и проверки подписи:
S — Подпись (Signing).
C — Подпись ключа (Certification). Об этом пойдёт речь чуть позже.
E — Шифрование (Encryption).
A — Авторизация (Authentication). Может использоваться, например, в SSH.
Зачем нужно подписывать сообщения? Для того, чтобы подтвердить, что сообщение написано именно вами и не изменилось в процессе передачи. Если сообщение будет изменено, то при проверке подписи это будет указано.
Конфигурация
Файл конфигурации хранится в файле
/.gnupg/gpg.conf
Вот, например, пример моего файла конфигурации, который я рекомендую себе поставить:
keyid-format 0xlong — формат вывода идентификатора ключа. У каждого ключа и подключа есть свой идентификатор. По умолчанию он не выводится, раньше выводилась его короткая версия.
Доступные форматы:
none — Не выводить (По умолчанию).
short — Короткая запись.
0xshort — Короткая запись с префиксом «0x».
long — Длинная запись.
0xlong — длинная запись с префиксом «0x».
throw-keyids — Не включать информацию о ключе в зашифрованное сообщение. Эта опция может быть полезна для анонимизации получателя сообщения.
no-emit-version — Не вставлять версию GPG в зашифрованное сообщение.
no-comments — Убирает все комментарии из зашифрованного сообщения.
Всё это — опции, которые можно найти в man-странице. В файле конфигурации они записываются без префикса » — «.
Команды и опции
Я опишу только самое основное.
—armor
-a — Создаёт ASCII (символьный) вывод. При шифровании GPG по умолчанию создаёт бинарный вывод. При использовании этой опции GPG кодирует информацию кодировкой Radix-64 (Разновидность Base64). Этот текстовой вывод можно, например, отправить в мессенджере или по электронной почте, а также вывести на экран.
—encrypt
-e — Зашифровать сообщение.
—recipient
-r — Указать ключ, который будет использоваться для шифрования. Можно использовать информацию идентификатор пользователя (имя, почта), идентификатор ключа, отпечаток ключа.
—decrypt
-d — Расшифровать сообщение.
—sign
-s — Подписать сообщение. Подпись при этом будет распологаться отдельно от самого сообщения.
—clear-sign
—clearsign — Подписать сообщение. Подпись при этом сохраняется вместе с сообщением.
—local-user
-u — Указать ключ, который будет использоваться для подписи. Схож с опцией —recipient , но это не одно и то же.
—verify — Проверить подпись.
—list-keys
-k — Вывести список публичных ключей.
—list-secret-keys
-K — Вывести список приватных ключей.
—export — экспортировать публичный ключ в файл, который потом можно куда нибудь отправить.
—import — импортировать публичный ключ.
—edit-key — Редактировать ключ.
—expert — «Режим эксперта».
Примеры
gpg -a -r 0x12345678 -e decrypted.txt > encrypted.gpg
Зашифровать файл decrypted.txt в файл encrypted.gpg ключом 0x12345678 . При этом готовый файл будет текстовым, а не бинарным.
gpg -r 0x12345678 -d encrypted.gpg > decrypted.txt
Расшифровать файл encrypted.gpg ключом 0x12345678 и сохранить его в файл decrypted.txt .
gpg -u 0x12345678 -s message.txt > sign.asc
Подписать файл message ключом 0x12345678 и сохранить подпись в файл sign.asc .
gpg -r 0x12345678 —clearsign message.txt > message.gpg
Подписать файл message.txt ключом 0x12345678 и записать сообщение с подписью в файл message.gpg .
gpg —verify message.asc message.txt
Проверить подпись файла message.txt , которая записана в файле message.asc .
gpg —import pubkey.gpg
Импортировать публичный ключ из файла pubkey.gpg .
Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей
Ключ редактируется командой gpg —edit-key .
После ввода этой команды вы увидите это:
Доступные команды вы можете узнать, введя help .
Здесь мы можем добавить различные подключи, добавить идентификаторы пользователя, а также подписать чужие публичные ключи.
Для чего нужно подписывать ключи? Так вы можете подтвердить то, что владелец подписываемого ключа является тем, за кого он себя выдаёт. Таким образом вы создаёте так называемую «Сеть Доверия». Пример: Алиса подписала публичный ключ Боба, а Боб подписал публичный ключ Чарли. Если Алиса получит публичный ключ Чарли, она сможет ему доверять, потому что ключ подписан тем, кому Алиса доверяет, т.е. Бобом. Для того, чтобы получить подписи для своего ключа, люди даже устраивают специальные встречи, где они обмениваются своими публичными ключами и подписывают их.
Теперь о серверах ключей. Сервер ключей — это специальный сервер, хранящий публичные ключи. Сервера ключей используются для распространения публичных ключей.
Внимание! Ключи, отправленные на сервер ключей, невозможно удалить! Их можно только отозвать, импортировав сертификат отзыва на сервер, при этом ключ всё равно остаётся на сервере.
Отправить публичный ключ на сервер:
gpg —keyserver —send-keys
Получить публичный ключ с идентификатором ключа с сервера :
gpg —keyserver —recv-keys
Получить обновления ключей с сервера:
gpg —keyserver —refresh-keys
Найти ключ на сервере:
gpg —keyserver —search-keys
Для удобства можно прописать адрес сервера ключей в gpg.conf , чтобы не прописывать его в командах:
keyserver
Где вы можете столкнуться с использованием GPG
Git
Вы можете использовать GPG для подписи ваших коммитов. Так вы подтверждаете, что коммит сделали именно вы. В GitHub можно импортировать свой публичный ключ и коммиты, подписанные вашим ключом, получат «галочку».
UPD: О конфигурации Git для использования GPG вы можете прочитать в документации по Git.
Вот пример файла конфигурации Git`а от товарища nikitasius:
Загрузка дистрибутивов и прочих файлов
Большинство установочных образов дистрибутивов распространяются подписанными разработчиками. Если вы загрузите модифицированный образ, то при проверке подписи вы сразу заметите, что образ не оригинальный. Примером служит популярный дистрибутив Tails.
Пакетные менеджеры
Все пакеты подписываются разработчиками для защиты от изменений. При установке пакетов эти подписи проверяются. Делается это всё автоматически без вмешательства пользователя.
Источник