Как знают давние читатели, хотя я стараюсь оставаться осведомленным во многих суб-дисциплинах информационных технологий, моя страсть — это информационная безопасность. Поскольку я давно не делился ноу-хау InfoSec, я хотел исправить это. Я не мог бы лучше рассчитать время этого осознания, потому что (как вы увидите) представленные методы идеально подходят для защиты вашего потока документов налогового сезона.
В этой статье я стремлюсь предоставить ряд простых, но эффективных опций для шифрования небольшого количества файлов. В частности, эти параметры важны для таких случаев использования, как налоговая декларация, когда пользователи отправляют конфиденциальные документы получателям с неизвестной степенью технических навыков. Как бы я ни любил PGP, готов поспорить, что ваш чек на возврат средств не имеет никакого отношения к его использованию.
Прежде чем идти дальше, отмечу, что все эти методы шифрования файлов требуют использования дополнительного канала для передачи общих секретов, в первую очередь паролей. Файл будет отправлен по одному заранее согласованному каналу, а средства его расшифровки будут отправлены по другому.
Слишком много жизнеспособных вспомогательных каналов, чтобы их перечислить, но просто убедитесь, что вы предприняли разумные шаги, чтобы выбрать тот, который нелегко взломать. Тот факт, что вы используете дополнительный канал, сам по себе является защитой от компрометации файла: без него отправка зашифрованного файла и его пароля для дешифрования по одному и тому же каналу создает единую точку отказа. Использование двух каналов требует от ваших противников двух успешных атак.
Давайте начнем с техники наименьшей сложности (и безопасности) и перейдем к высшей. Некоторые более поздние записи относятся к хардкорным типам безопасности, но есть что-то для всех.
Содержание статьи
Зашифрованный ZIP, стиль командной строки
Моя жизнь навсегда изменилась, когда я узнал, что могу шифровать ZIP-архивы. Что делает шифрование ZIP таким полезным, так это его повсеместное распространение. Практически каждая система может обрабатывать ZIP-файлы, и все те, которые это делают, могут обрабатывать шифрование.
Интерфейс для их расшифровки потрясающе прост: пользователь нажимает на ZIP-архив, всплывает окно с запросом пароля, пользователь вводит пароль, и ZIP начинает извлечение (при условии, что пароль, конечно, правильный). Это делает шифрование ZIP идеальным для передачи файлов получателям, чья техническая компетентность не может быть установлена.
Конечно, есть графический интерфейс для архивирования файлов, но интерфейс командной строки (CLI) делает этот процесс более простым и эффективным. Вы буквально запускаете команду «zip» с флагом «-e», именем, которое вы хотите, чтобы архив имел, и одним или несколькими существующими файлами, которые вы хотите зашифровать и сжать, все они разделены пробелами:
zip ‐e архив файл1 файл2
После запуска команды появится запрос на ввод и подтверждение пароля дешифрования. Запишите его, потому что это то, чем вам нужно будет поделиться с получателем, чтобы открыть ZIP. Вы можете уничтожить / сжечь бумагу позже, просто запишите ее.
Есть некоторые технические моменты, которые стоит затронуть. Во-первых, исходные файлы не изменяются. Команда «zip» автоматически сжимает и шифрует копии. Во-вторых, имена заархивированных файлов читаются при открытии архива еще до расшифровки. Следовательно, шифрование не защитит конфиденциальные имена файлов от тех, кто получит ZIP, пароль или номер.
Если вы согласны с этими предостережениями и выполнили описанные выше действия, последний шаг — отправить получателю файл и пароль отдельными способами. Злоумышленнику нужны обе части, поэтому постарайтесь сделать это как можно сложнее.
OpenSSL: больше не только для браузеров
Для тех, кому нужна безопасность, превосходящая скромные зашифрованные ZIP-файлы, вы можете использовать OpenSSL. Пользователи Linux могут легко это сделать с помощью предустановленного пакета «openssl». Как и в случае зашифрованного архивирования, вы можете зашифровать свой файл с помощью OpenSSL с помощью одной команды:
openssl aes ‐ 256 ‐ cbc ‐a ‐salt ‐in file ‐out файл .enc
Давайте разберемся с этим.
- «aes ‐ 256 ‐ cbc» — используемый шифр. Если у вас нет твердого мнения о шифрах, используйте его.
- Флаг «-a» кодирует вывод в base64, что важно, если мы хотим, чтобы другие программы корректно работали с зашифрованным файлом вывода. Альтернативой является двоичный файл, который почтовые службы и другие программы помечают как угрозу безопасности (по иронии судьбы в данном случае).
- Флаг «-salt» добавляет к смеси случайное значение, чтобы снизить вероятность того, что злоумышленник, который что-то знает о ваших методах шифрования, сможет его взломать. «Openssl» также предупреждает вас никогда не использовать соль, так что это тоже; и,
- Как вы понимаете, «-in» указывает входной файл, а «-out» задает имя целевого выходного файла. Вы можете технически назвать выходной файл как хотите, вплоть до расширения файла. Однако просто убедитесь, что он не назовет то же самое, что и входной файл, иначе ваш вывод перезапишет ваш ввод.
При запуске команды она дважды запрашивает пароль. Опять же, запишите это где-нибудь, чтобы кто-нибудь мог расшифровать ваш файл. Расшифровка так же проста. Просто удерживайте соль и передайте флаг «-d» для расшифровки. Очевидно, на этот раз зашифрованный файл является входом, а расшифрованное имя файла является выходом:
openssl aes ‐ 256 ‐ cbc ‐d ‐a ‐in файл .enc — out файл .new
Опять же, вы можете назвать выходной файл как хотите. Как и в случае с зашифрованными ZIP-файлами, вам понадобится соответствующий вторичный канал для передачи пароля дешифрования.
Для успешных: всегда есть PGP
Для тех, кто не возражает против дополнительной работы (и у которых нет друзей), есть PGP. Таким образом, эти шаги предполагают, что вы и получатель файла знаете, как с ним работать. Я не буду вдаваться в подробности здесь, но, к счастью для вас, я уже делал это раньше.
Чтобы использовать шифрование файла PGP, у получателя должна быть пара ключей PGP. Технически нет, просто чтобы отправить файл. Но если вы ожидаете получить взамен файл, то вам понадобится пара ключей PGP самостоятельно.
В отличие от зашифрованных файлов ZIP и OpenSSL, где отправитель выполняет шифрование, а затем передает файл и общий секрет получателю; с PGP получатель файла должен отправить отправителю свой открытый ключ, прежде чем может произойти какое-либо шифрование. Если отправитель хочет подписать файл, ему потребуется собственная пара ключей, чтобы он мог предоставить получателю свой открытый ключ.
Каким бы сложным ни был этот танец, есть одно большое преимущество: его асимметричная структура ключей делает обмен ключами более безопасным, поскольку злоумышленники не могут взломать ваше шифрование с помощью открытого ключа. Это дает вам гибкость при обмене ключами. Вы можете как загрузить свои открытые ключи на сервер ключей, так и прекратить работу.
Если вы предпочитаете, чтобы весь мир не знал, что у вас есть ключи PGP, вы можете обмениваться открытыми ключами через другую зашифрованную платформу. Конечно, если вы действительно не хотите, чтобы ваши открытые ключи касались Интернета, вы можете обменяться ими лично. Опять же, если вы могли это сделать, то почему бы просто не обменять свой файл на этом этапе?
С учетом всего этого, пора действительно зашифровать. Здесь есть поток флагов, которые нужно расшифровать:
gpg ‐o Outfile ‐e ‐a ‐r получатель infile
- Флаг «-o» и связанный с ним «Outfile» указывают имя файла готового продукта. Назовите его как хотите, но я предлагаю добавить суффикс, чтобы напомнить вам, что он зашифрован.
- Флаг «-e» указывает GPG на выполнение операции шифрования.
- Флаг «-a» заставляет GPG кодировать зашифрованный вывод в base64, точно так же, как этот флаг делает в openssl.
- «-r» и его «получатель» определяют, чей открытый ключ будет использоваться. Это важно, потому что PGP использует открытый ключ всякий раз, когда он шифрует, и только владелец родственного закрытого ключа открытого ключа может расшифровать это шифрование. Укажите получателя по адресу электронной почты, связанному с его открытым ключом. Наконец, вы должны указать файл, который нужно зашифровать.
Команда дешифрования намного проще:
gpg ‐o Outfile ‐d infile
Получатель передает флаг «-d» для расшифровки, выбирает, что называть выходом, и устанавливает вход. Вот и все.
Благодаря этим трем методам у вас есть все необходимое для часов криптографических забав… и крепкого сна, зная, что ваши файлы в безопасности. Удачного шифрования!