Безопасность данных. Часть 1 «Шифрование данных на компьютере»

Управление паролями и шифрование файлов

Прежде чем подробно рассказать о шифровании файлов, нужно сделать важное замечание относительно паролей. Следует пользоваться хорошим менеджером паролей и следовать правильной практике использования паролей.

Для чего это нужно? Если вы потеряете или забудете пароль для доступа к зашифрованным файлам, они станут недоступными для вас. Именно поэтому так важен менеджер паролей. Среди популярных можно назвать 1Password, LastPass и некоторые другие.

Найти вирус шифровальщик

Процесс нахождения заражённого файла, излечения компьютера, делается с другого оборудования.

После отработки по шифрованию файлов, вам приходит сообщение, в котором предлагают оплатить восстановление. Чаще всего, пользователь теряет не только данные, но и деньги, если выполняет это требование.

Интересно то, что пользователь сам разрешает установку и активацию вируса на своем компьютере.

Это может быть открытие файла с расширением ехе – поступившего через электронную почту или согласите на обновление хорошо известного приложения (JavaScript или FlashPlayer). Вариантов маскировки для скрытного проникновения много.

После изменения расширения файлов на XTBL вы больше не сможете их открыть. Попытки восстановить изменением названия или расширения ни к чему не приведут.

Как зашифровать файлы и папки на Windows 10

Варианты шифрования файлов и папок в системе Windows 10 зависят от её версии. Windows 10 Pro и Enterprise обладают встроенным инструментом шифрования под названием Encrypting File System (EFS). Любой пользователь Windows 10, в том числе редакции Home, может использовать сторонние приложения вроде 7-zip для шифрования файлов и папок.

Кроме этих вариантов, приложения пакета Microsoft Office содержат простую функциональность шифрования файлов, как и программа Acrobat Reader.

Выбор хеш-функции и числа итераций

Для того чтобы зашифровать (ну, и расшифровать тоже) любые данные, криптоконтейнер не использует пароль. Для шифрования любым алгори) берется двоичный ключ фиксированной длины, так называемый Data Encryption Key или Media Encryption Key (MEK). Каким именно образом твой пароль (наверняка очень длинный и безопасный) превращается в MEK фиксированной длины? Откровенно говоря, никаким. Media Encryption Key для единожды созданного контейнера неизменен; он хранится в зашифрованном (точнее сказать, «обернутом», wrapped) виде прямо в составе контейнера, а в «развернутом» виде используется для доступа к данным.

Ключ шифрования данных MEK в обязательном порядке шифруется (прости за тавтологию) ключом шифрования ключа шифрования Key Encryption Key (KEK). Без KEK невозможно расшифровать MEK, а без MEK невозможно расшифровать данные. Для чего нужна такая сложная схема? Хотя бы для того, чтобы ты мог сменить пароль от криптоконтейнера без обязательной расшифровки и перешифровки всего содержимого. Однако роль пары ключей MEK/KEK этим сценарием не ограничивается. Так, достаточно будет затереть несколько десятков байтов в заголовке контейнера (перезаписав область, в которой хранится MEK), и контейнер никто и никогда больше расшифровать не сможет, даже если точно известен пароль. Возможность моментального и безвозвратного уничтожения данных — важная часть общей стратегии безопасности.

Итак, с парой ключей MEK/KEK разобрались. Каким образом из пароля получается ключ KEK? VeraCrypt проводит циклическую последовательность односторонних (это важно) математических преобразований — хеш-функций, причем количество циклов достаточно велико: по умолчанию преобразование выполняется 500 000 раз. Таким образом, с настройками «по умолчанию» на вычисление одного-единственного ключа KEK на основе введенного пароля VeraCrypt потратит от одной до пяти-шести секунд.

Здесь наступает важный момент. Помнишь, чуть выше я разобрал скорость работы алгоритмов шифрования и порекомендовал использовать AES как самый распространенный и самый быстрый вариант? Так вот, с выбором хеш-функции все обстоит с точностью до наоборот: тебе нужен самый нестандартный и самый медленный алгоритм.

В VeraCrypt доступен выбор из четырех хеш-функций: дефолтный SHA-512 (он достаточно медленный и достаточно безопасный, но дефолтный, что для нас минус), еще более медленный и тоже хорошо изученный Whirlpool, старенький SHA-256, который все еще безопасен, но смысла в использовании которого я не вижу, и «темная лошадка» «Стрибог», который в бенчмарке медленнее всех.

Впрочем, от использования хеш-функции «Стрибог» надежно отвращают слова из Википедии: «Разработан Центром защиты информации и специальной связи ФСБ России с участием ОАО „ИнфоТеКС“ на основе национального стандарта Российской Федерации ГОСТ Р 34.11—2012 и введен в действие с 1 июня 2020 года приказом Росстандарта № 1060-ст от 4 декабря 2020 года», а также некоторые тривиальные ошибки и найденные независимыми исследователями странности в таблицах перестановки.

Как правильно настроить преобразование пароля в ключ шифрования KEK? Вот три основных пункта.

  1. Не используй выбор по умолчанию. Весь софт для взлома криптоконтейнеров без исключений настроен на атаки с настройками «по умолчанию». У эксперта будет выбор настроек (по умолчанию, выбрать конкретную комбинацию параметром или пробовать все комбинации). Атака «по умолчанию» будет самой быстрой, вариант «пробовать все комбинации» — катастрофически медленным, а попытаться выбрать правильную комбинацию параметров шифрования вручную — все равно, что вручную подбирать пароль.
  2. Выбери самую медленную хеш-функцию (но не «Стрибог»). Да, с медленной хеш-функцией, да еще и отличной от «выбора по умолчанию», твой криптоконтейнер будет монтироваться не одну, а пять-шесть секунд — но и стойкость к атаке вырастет в те же пять-шесть раз (а с учетом «выбора не по умолчанию» — еще сильнее).
  3. Измени число итераций. Об этом ниже.

Итак, с настройками по умолчанию разобрались, с выбором хеш-функции определились. Однако есть еще один важнейший параметр, скрывающийся за малозаметной галочкой Use PIM. Что за PIM такой и зачем он нужен?

PIM (Personal Iterations Multiplier) напрямую влияет на количество итераций, которые будут использованы для преобразования твоего пароля в ключ шифрования KEK. Согласно документации, VeraCrypt вычисляет количество итераций (число преобразований) по формуле 15000 + (PIM · 1000). Для хеш-функций SHA-512 и Whirlpool значение PIM по умолчанию 485, что дает нам ровно 500 000 итераций.

Для чего нужен этот параметр? Дело в том, что вычислительные мощности, в том числе и у тех, кто будет взламывать твой криптоконтейнер, постоянно растут. Защита, эффективная двадцать лет назад, сегодня уже не кажется такой непробиваемой. Однако в случае с VeraCrypt ты можешь легко и изящно повысить стойкость защиты сколь угодно сильно, просто увеличив число итераций. Да, увеличение числа итераций (через кастомное значение PIM) немного снизит удобство использования (при монтировании криптоконтейнера тебе придется, помимо пароля, вводить еще и число PIM), несколько замедлится скорость монтирования. Поверь, однако, что любое, самое незначительное изменение PIM означает сильнейшую головную боль у любого, кто вздумает подобрать пароль.

Насколько сильно изменение PIM повлияет на скорость монтирования криптоконтейнера? Вот время с настройками PIM по умолчанию.

А вот я изменил PIM на значение 500 (с дефолтных 485).

А тут я использовал PIM, равный 1000.

Цифры отнюдь не запредельные: подождать при монтировании зашифрованного тома лишние секунды несложно, а вот у того, кто будет пытаться подобрать пароль к тому, возникнет масса проблем. Общий алгоритм работы взломщиков будет выглядеть так.

  1. Сначала попробуют все возможные атаки со стандартными настройками. Это — время, часто существенное.
  2. Если понятно, что значение PIM нестандартное, а число PIM точно известно, атака будет вестись сразу с корректной настройкой. При этом увеличение PIM с 485 до 1000 увеличит время, необходимое для атаки, примерно вдвое. Так себе повышение безопасности, но лучше, чем ничего.
  3. А вот если значение PIM атакующему неизвестно, то атаку придется проводить для всего ряда значений PIM. То есть если ты выставишь значение PIM = 1000, то КАЖДЫЙ вариант пароля атакующему придется проверять со значениями PIM = 1, 2, 3, …, 1000 (или 485, 486, 487, …, 1000, если атакующий убежден, что значение PIM ты не уменьшал, а исключительно увеличивал). Иными словами, сложность атаки возрастает кратно значению (твой PIM — 485), если атакующий использует только варианты, превышающие значение по умолчанию, либо в (твой PIM) раз, если атакующий решит перебирать всю область значений PIM.

Логичный вопрос: разве увеличение длины пароля на два-три знака из расширенного набора символов не даст схожий (и даже лучший) результат? Если подходить с чисто вычислительной точки зрения, то даст. Реальность же такова, что большая часть атак проводится с настройками по умолчанию; программы, способные использовать атаки с нестандартным значением PIM, можно пересчитать по пальцам одной руки, а программ, которые способны автоматизировать атаки с кастомным рядом значений PIM, и того меньше.

Рассмотрим скриншот свежей сборки Elcomsoft Distributed Password Recovery с поддержкой VeraCrypt (кстати, даже не вышедшей еще официально).

На нем мы видим атаку в стандартной конфигурации: алгоритм шифрования AES, хеш-функция — SHA-512. Никаких сюрпризов. Скорость атаки — 170 паролей в секунду (это с загрузкой всех ядер процессора и с использованием вычислительных ресурсов видеокарты; без видеокарты мы бы увидели скорость порядка 0,5 пароля в секунду).

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

Что мы видим на втором скриншоте? Во-первых, скорость перебора резко упала до одного пароля в секунду — это с использованием GPU-ускорителя.

А чего мы не видим на втором скриншоте? Мы не видим возможности провести атаку на число итераций PIM. Число итераций PIM в большинстве программ для взлома паролей можно указать вручную. Таким образом, нестандартное число итераций сделает атаку неэффективной: даже если твой пароль — 123, найти его не получится, не указав точного числа итераций.

Разумеется, если есть проблема, для нее найдется и решение. В свежей бете небезызвестного инструмента hashcat заявлены два любопытных параметра: —veracrypt-pim-start и —veracrypt-pim-stop (commit с изменением). А что будет со скоростью перебора? Если неизвестны точные параметры шифрования (комбинация из алгоритма шифрования и хеш-функции), то скорость перебора уже достаточно низкая: всего один пароль в секунду на компьютере с аппаратным ускорителем GPU. А теперь подели эту цифру на количество возможных вариантов PIM, и получишь исключительно медленный перебор. В реальности же перебор будет еще медленнее: если с низкими значениями PIM проверка пароля займет доли секунды, то большое число итераций замедлит перебор в несколько раз по сравнению со стандартным значением.

Как зашифровать файлы и папки при помощи Encrypting File System (EFS)

Encrypting File System (EFS) есть в редакциях Professional и Enterprise. Это считается продвинутой возможностью Windows. Неопытные пользователи при работе с данной системой могут утратить доступ к файлам.

EFS шифрует файлы в фоновом режиме, включая автоматическое создание ключа File Encryption Key (FEK). Только тот аккаунт, в котором файл был зашифрован, может расшифровать его. Всё это происходит автоматически.

Кроме символа замка, который появляется в проводнике рядом с зашифрованным файлом или папкой, невозможно на глаз определить, что они зашифрованы при помощи EFS.

К сожалению, EFS обладает недостатками, которые делают этот вариант неидеальным.

  • EFS работает только с дисками с форматированием NTFS
  • Если перенести зашифрованный EFS файл на диск с форматированием FAT32 или exFAT, он расшифровывается
  • Если перенести зашифрованный EFS файл через сеть или отправить по электронной почте, он расшифровывается

Если это вас не пугает, ниже описан процесс шифрования файлов и папок при помощи EFS:

  1. Запустите проводник и откройте место расположения нужного файла или папки.
  2. Нажмите на них правой кнопкой мыши.
  3. В контекстном меню нажмите на команду «Свойства».
  4. На вкладке общие нажмите на кнопку «Другие».

  5. В окне «Дополнительные атрибуты» поставьте галочку напротив команды «Шифровать содержимое для защиты данных».

После этого файл или папка будут отображаться как зашифрованные для всех, кроме этого аккаунта.

Шифрование диска при помощи BitLocker

При необходимости шифрования дисков или съемных накопителей следует воспользоваться встроенной утилитой BitLocker, которая позволит провести шифрование большого объема данных. Чтобы начать работу с BitLocker, необходима максимальная, профессиональная или корпоративная версия Windows.

Для доступа к BitLocker следует нажать ПКМ по кнопке «Пуск», выбрать пункт «Панель управления» и зайти в первый раздел «Система и безопасность».

В открывшемся окне переходим к пункту «Шифрование диска Bitlocker».

Теперь необходимо активировать утилиту напротив системного диска или необходимого тома.

Программа автоматически проведет анализ диска и предложит выбрать способ разблокировки.

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

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

Данный ключ можно распечатать, сохранить в виде документа на съемный носитель или сохранить на сервере Microsoft. Стоит отметить, что этот этап является очень важным, поскольку без экстренного ключа и при утере других средств разблокировки диск останется заблокированным.

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

После этого компьютер будет перезагружен, а при новой загрузке в системе будет присутствовать указатель процесса шифрования.

Как зашифровать файлы и папки при помощи 7-zip

7-zip представляет собой бесплатную программу архивирования файлов, которая заодно умеет шифровать файлы и папки при помощи алгоритма AES-256. Это современный стандарт шифрования в большинстве систем.

Если вы планируете использовать 7-zip для шифрования файлов или папок, необходимо помнить, что создаются зашифрованные копии файла или папки. Оригиналы остаются незашифрованными.

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

Установка GPG

Windows
Скачайте и установите Gpg4win.
GNU/Linux
В большинстве дистрибутивов GNU/Linux GPG уже установлен. Если же он у вас не установлен, установите пакет gnupg с помощью своего пакетного менеджера или соберите его из исходников.
Android
Для Android существуют программы GnuPG for Android и OpenKeychain. Создатели GnuPG for Android рекомендуют использовать OpenKeychain.

Официальный сайт OpenKeychain OpenKeychain в F-Droid OpenKeychain в Google Play

Официальный сайт GnuPG for Android Исходники GnuPG for Android на GitHub

Спасибо товарищу под ником sormon за то, что напомнил!

Что делать после шифрования 7-zip

В результате вы получите зашифрованный при помощи алгоритма AES-256 архив. Дальнейшие действия зависят от того, что вы собираетесь делать с зашифрованным файлом или папкой.

Если вы создали архив, чтобы поделиться копиями файла или папки, отправьте архив получателю. Если у них есть программа 7-zip или аналогичная и вы каким-то безопасным способом передали им пароль на доступ, они смогут распаковать архив, затем дважды кликнуть на файл для ввода пароля в диалоговое окно.

После ввода пароля операционная система должна открыть соответствующее файлу приложение. Получатель сможет просматривать его, сохранять, редактировать. Зашифрованный вариант файла также будет оставаться в системе.

Если вы создали архив для защиты файлов или папок на вашей системе, незашифрованные оригиналы следует удалить, чтобы они не попали в посторонние руки.

Простое шифрование

Некоторые читатели, конечно, слышали о шифре Цезаря, который также называют циклическим. Этот метод изобретен более 2000 лет назад, а принцип его действия основывается на шифровании и дешифровании с использованием 26 букв алфавита.

Чтобы закодировать сообщение, буквы заменяли на другие, которые в алфавите сдвинуты от заменяемой на «x» позиций, например, на 3. Если шифруемая буква последняя в алфавите, мы возвращаемся в начало. В таком случае ключом шифрования будет значение «x».

Современным примером такого шифра является ROT13, используемый когда-то, например, в почтовой программе Outlook Express. Это, однако, уже история, отлично иллюстрирующая обсуждаемый механизм.

Перейдём к способам, которые мы можем использовать каждый день. Если под рукой нет приложений для шифрования, а мы хотим защитить файл или папку, мы можем использовать встроенный в Windows архиватор ZIP. К сожалению, с появлением седьмой версии Windows из компрессора исчезла возможность защиты архивов паролем. Но ничего не потеряно, потому что само сжатие данных приводит к изменению организации отдельных байтов в непонятный набор символов.

Некоторые пользователи отсутствие пароля пытаются заменить изменением расширения файла с *.ZIP на другой, например,*.DLL. Этот метод вполне уместен, но нет никакого смысла в повторном сжатии, которое якобы должно затруднить считывание информации. Если же вы хотите защитить архив паролем, в распоряжении у вас есть бесплатный инструмент – 7-ZIP.

Как шифровать файлы Microsoft Office на Windows 10

Некоторые приложения позволяют внутри себя шифровать файлы тех типов, с которыми они работают. Можно шифровать файлы в Microsoft Word, а Adobe Acrobat шифрует файлы формата PDF.

  1. В приложении Word откройте раздел Меню > Файл > Информация.
  2. В этом окне выберите «Защитить документ».
  3. В появившемся меню выберите «Защитить паролем».

  4. Появится диалоговое окно, когда нужно ввести пароль.

Теперь при просмотре этого документа всегда нужно будет вводить пароль.

Файлы на компьютере зашифрованы в xtbl

Один из последних вариантов вируса-вымогателя шифрует файлы, заменяя их на файлы с расширением .xtbl и именем, состоящим из случайного набора символов.

Заодно на компьютере размещается текстовый файл readme.txt с примерно следующим содержанием: «Ваши файлы были зашифрованы. Чтобы расшифровать их, Вам необходимо отправить код на электронный адрес [email protected], или [email protected] Далее вы получите все необходимые инструкции. Попытки расшифровать файлы самостоятельно приведут к безвозвратной потере информации» (адрес почты и текст могут отличаться).

К сожалению, способа расшифровать .xtbl на данный момент нет (как только он появится, инструкция будет обновлена). Некоторые пользователи, у которых на компьютере была действительно важная информация, сообщают на антивирусных форумах, что отправили авторам вируса 5000 рублей или другую требуемую сумму и получили дешифратор, однако это очень рискованно: вы можете ничего не получить.

Что делать, если файлы были зашифрованы в .xtbl? Мои рекомендации выглядят следующим образом (но они отличаются от тех, что есть на многих других тематических сайтах, где, например, рекомендуют немедленно выключить компьютер из электросети или не удалять вирус. На мой взгляд — это лишнее, а при некотором стечении обстоятельств может быть даже вредным, однако решать вам.):

  1. Если умеете, прервать процесс шифрования, сняв соответствующие задачи в дисптечере задач, отключив компьютер от Интернета (это может быть необходимым условием шифрования)
  2. Запомнить или записать код, который злоумышленники требуют выслать на электронный адрес (только не в текстовый файл на компьютере, на всякий случай, чтобы он тоже не оказался зашифрован).
  3. С помощью Malwarebytes Antimalware, пробной версии Kaspersky Internet Security или Dr.Web Cure It удалить вирус, шифрующий файлы (все перечисленные инструменты с этим хорошо справляются). Я советую по очереди использовать первый и второй продукт из списка (правда, если у вас установлен антивирус, установка второго «сверху» нежелательна, так как может привести к проблемам в работе компьютера.)
  4. Ожидать, когда появится дешифратор от какой-либо антивирусной компании. В авангарде тут Kaspersky Lab.
  5. Можно так же отправить пример зашифрованного файла и требуемый код на, если у вас есть копия этого же файла в незашифрованном виде, пришлите ее тоже. В теории, это может ускорить появление дешифратора.

Чего делать не следует:

  • Переименовывать зашифрованные файлы, менять расширение и удалять их, если они вам важны.

Это, пожалуй, всё, что я могу сказать по поводу зашифрованных файлов с расширением .xtbl на данный момент времени.

Удаление незашифрованных копий файла

Если вы пользуетесь 7-zip или Microsoft Office для шифрования файлов, Windows 10 может сохранять одну или больше временных копий незашифрованных версий файлов. Нужно удалить эти копии после шифрования.

  1. Нажмите на кнопку «Пуск», в поиске наберите «временные». В появившемся меню выберите «Удалить временные файлы». Откроются настройки в разделе «Хранилище».

  2. Windows 10 просканирует систему и отобразит список типов файлов, которые хранятся на разных дисках. Выберите «Временные файлы» для просмотра списка типов файлов, доступных для удаления.
  3. В этом списке поставьте галочки напротив команд «Временные файлы» и «Корзина», нажмите на кнопку «Удалить файлы» наверху списка. Это удалит незашифрованные копии файлов из вашей системы.

Расшифруем вирус шифровальщик

Для дешифровки требуется приватный ключ, который вам якобы и предлагают купить.

В настоящее время, для некоторых типов вирусов-шифровальщиков (ransomware), существуют программные средства дешифровки файлов.

Для этого требуется определение, какому конкретному типу шифрования подверглись файлы с применением сервисов NoMoreRansom или IDRansomware.

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

  • поступившее от вымогателя предложения,
  • один из измененных файлов с расширением XTBL.

Кроме тематических форумов, стоит попробовать указанные дешифровальные сервисы.

Расшифровка вирусов шифровальщиков

Русифицированный сервис в активной стадии развития NoMoreRansom. При благоприятном стечение обстоятельств он полностью решит ваши проблемы связанные с шифровальщиком.

Для этого на сайте сервиса nomoreransom.org выбираете «Да» и на открывшейся странице загружаете измененный файл (без конфиденциальных данных!).

Есть ограничение по размеру – не больше 1 мегабайта. Указывайте e-mail адрес или url сайта, сообщенные вам хакерами или загружаете сам файл полученный от них. Запускаете «Проверку».

У них же можно и скачать необходимую утилиту для дешифровки (после определения типа).

Установка VeraCrypt

  1. Потребуется USB-флешка для создания VeraCrypt Rescue Disk. Отформатируйте флешку в файловую систему FAT или FAT32.
  2. Нужна программа для разархивирования файлов. Можно воспользоваться 7-zip.
  3. Откройте страницу для скачивания VeraCrypt и ищите установки для Windows.
  4. Запустите программу установки VeraCrypt и используйте настройки по умолчанию.
  5. Должно появиться сообщение об успешной установке.
  6. Нажмите OK и «Завершить» для окончания процесса установки. Будет показано следующее диалоговое окно.

  7. Если вы раньше не пользовались VeraCrypt, рекомендуется ознакомиться с руководством. Нажмите «Да» для просмотра руководства.
  8. Запустите приложение. В меню выберите раздел Система > Шифровать системный раздел диска.

  9. Появится VeraCrypt Volume Creation Wizard. Будет задан вопрос, какой тип системного шифрования вы хотите использовать: нормальный или скрытый. В первом случае шифруется системный раздел, что нам в данном случае и нужно. Выберите нормальный и нажмите «Далее».
  10. Дальше появится вопрос, хотите вы шифровать системный раздел Windows или весь диск. Если у вас несколько разделов с важными данными, можно зашифровать весь диск. Если у вас один раздел, можно выбрать «Шифровать системный раздел Windows». После выбора нажмите «Далее».

  11. Появится окно «Число операционных систем». Если у вас на компьютере больше одной операционной системы, выберите вариант «Мультизагрузка». В противном случае вы выберете вариант «Одна система». Нажмите «Далее».
  12. Появится окно «Опции шифрования». Рекомендуется выбрать алгоритм шифрования AES и алгоритм хеша SHA-256. Нажмите «Далее».
  13. Появится окно «Пароль». Нужно выбрать сложный пароль, если вы хотите обеспечить безопасность данных. Многие менеджеры паролей включают в себя генератор паролей. VeraCrypt предлагает создать пароль не короче 20 символов. Нажмите «Далее».
  14. Появится окно «Сбор случайных данных». Нужно будет проводить мышью в окне. Это увеличивает надёжность ключей шифрования. Когда панель внизу окна заполнена, можно нажать «Далее».
  15. Появится окно «Сгенерированные ключи». Нажмите «Далее».
  16. Потребуется создать VeraCrypt Rescue Disk (VRD). На изображении появится объяснение. Если вы готовы рискнуть, можно поставить галочку напротив команды «Пропустить подтверждение диска восстановления», чтобы не создавать физический диск восстановления. Обратите внимание, где VeraCrypt сохраняет образ zip, затем нажмите «Далее».
  17. Если вы не выбрали вариант «Пропустить подтверждение диска восстановления», создайте физический диск и позвольте VeraCrypt проверить его. Нужно вставить чистую флешку в компьютер и открыть адрес, где приложение VeraCrypt в предыдущем пункте хранило диск восстановления. Используйте 7-zip или аналогичное приложение для извлечения файлов из VeraCrypt Rescue Disk.zip в корень флешки. Нажмите «Далее».
  18. Если всё прошло правильно, появится окно подтверждения диска восстановления. Вытащите флешку из компьютера и нажмите «Далее».
  19. Появится окно Wipe Mode. Установите значение «Нет» и нажмите «Далее».
  20. Появится окно System Encryption Pretest. Здесь выполняется проверка процесса шифрования. Изображение ниже подробно показывает, что произойдёт. Нажмите «Тест». Приложение может выдать ещё нескольких предупреждений, прежде чем тест будет запущен.
  21. Если всё прошло как положено, может появиться следующее окно после перезагрузки компьютера и прохождения проверки шифрования системы.

  22. VeraCrypt рекомендует создать резервные копии важных файлов, прежде чем шифровать систему. Это позволит восстановить их, если случится что-то непредвиденное, вроде отключения электричества и системной ошибки в процессе шифрования. После этого нажмите «Шифровать». Приложение покажет документацию, которую вы можете распечатать. Тут описывается, когда использовать диск восстановления после завершения процесса шифрования. После этого начинается само шифрование. Вы можете отслеживать прогресс.

  23. Когда шифрование завершено, нужно вводить пароль при каждом запуске компьютера.

Использование

Здесь будет приведено только использование в 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 без аргументов он создаст необходимые ему файлы (если они ещё не созданы) и будет ждать ввода шифруемой информации.

[email protected]:~$ gpg gpg: создан каталог ‘/home/user/.gnupg’ gpg: создан щит с ключами ‘/home/user/.gnupg/pubring.kbx’ gpg: Внимание: команда не отдана. Пытаюсь угадать, что имелось в виду … gpg: Пишите сообщение …

При наличии ключа мы можем ввести текст, нажать сочетание клавиш Ctrl + D и получить порцию кракозябр прямо в консоль. Но пока что у нас нет ключа.

Создание ключа

Чтобы создать ключ, нужно запустить GPG с аргументом «—full-generate-key» (можно и с «—gen-key», но в этом случае у нас не будет выбора некоторых важных параметров).

UPD: Если запустить GPG ещё и с аргументом —expert, то выбор типа ключа будет намного шире. За дополнение спасибо товарищу nikitasius!

[email protected]:~$ gpg —full-generate-key gpg (GnuPG) 2.2.6; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Выберите тип ключа: (1) RSA и RSA (по умолчанию) (2) DSA и Elgamal (3) DSA (только для подписи) (4) RSA (только для подписи) Ваш выбор? [email protected]:~$ gpg —full-generate-key —expert gpg (GnuPG) 2.2.6; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (9) ECC and ECC (10) ECC (sign only) (11) ECC (set your own capabilities) (13) Existing key Your selection?

Вы можете выбрать любой вариант, но учтите, что выбрав третий или четвёртый вариант вы не сможете шифровать сообщения и файлы!

… Ваш выбор? 1 длина ключей RSA может быть от 1024 до 4096. Какой размер ключа Вам необходим? (2048)

Для RSA ключа размером 2048 бит вполне достаточно, но вы можете выбрать размер до 4096 бит (использовать ключи размера меньше 2048 бит небезопасно).

… Какой размер ключа Вам необходим? (2048) 2048 Запрошенный размер ключа — 2048 бит Выберите срок действия ключа. 0 = не ограничен = срок действия ключа — n дней w = срок действия ключа — n недель m = срок действия ключа — n месяцев y = срок действия ключа — n лет Срок действия ключа? (0)

Если вы выберете ограниченный срок действия ключа, то по истечению его срока ключ будет признан недействительным. Вы можете продлить срок действия ключа, пока он не истечёт.

GPG спросит, верно ли мы указали срок, и если да, то нужно будет указать имя, адрес электронной почты и примечание (всё это опционально, но нужно указать хотя бы что-то одно).

… Ключ действителен до Чт 01 января 1970 00:00:00 +00 Все верно? (y/N) y GnuPG должен составить идентификатор пользователя для идентификации ключа. Ваше полное имя: Habrahabr User Адрес электронной почты Примечание: My own key Вы выбрали следующий идентификатор пользователя: «Habrahabr User (My own key) » Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход?

Здесь вы можете сделать правки либо продолжить.

Дальше gpg попросит указать пароль (рекомендую освежить память и почитать о правилах выбора стойкого пароля). Если у вас запущен X сервер, то у вас вылезет диалоговое окно, куда нужно ввести пароль. Если же нет, то пароль вводится прямо в консоль.

Если вы не любите окошки

Добавьте в файл ~/.gnupg/gpg-agent.conf данную строчку: pinentry-program /usr/bin/pinentry-tty Pynentry — это те самые диалоговые окна. Помимо tty-версии (консольной) есть ещё несколько версий (графических), которые вы можете попробовать. Затем перезапустите gpg-agent. На системах с systemd это делается так: systemd —user reload gpg-agent
… Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. Введите фразу-пароль для защиты нового ключа Фраза-пароль:
В терминале вводимый пароль никак не отображается!

Также тут есть полезный совет, который ускорит создание ключа. Следовать ему желательно, но необязательно (и очень аккуратно, чтобы не натыкать лишнего).

… Фраза-пароль: Повторите: Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. gpg: /home/user/.gnupg/trustdb.gpg: создана таблица доверия gpg: ключ 5699884482E426AC помечен как абсолютно доверенный gpg: создан каталог ‘/home/user/.gnupg/openpgp-revocs.d’ gpg: сертификат отзыва записан в ‘/home/user/.gnupg/openpgp-revocs.d/2BB6803FCF82316969619C155699884482E426AC.rev’. открытый и секретный ключи созданы и подписаны. pub rsa2048 1970-01-01 [SC] 2BB6803FCF82316969619C155699884482E426AC uid Habrahabr User (My own key) sub rsa2048 1970-01-01 [E]

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

Итак, что же означают все эти странные последние строки?

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 throw-keyids no-emit-version no-comments

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 . После ввода этой команды вы увидите это:

[email protected]:~$ gpg —edit-key CCA230DA07929EB7 gpg (GnuPG) 2.2.6; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Секретный ключ доступен. sec rsa2048/CCA230DA07929EB7 создан: 2018-05-08 годен до: никогда назначение: SC доверие: абсолютное достоверность: абсолютное ssb rsa2048/7859E2A888E31276 создан: 2018-05-08 годен до: никогда назначение: E [ абсолютно ] (1). Habrahabr User (My own key) gpg>

Доступные команды вы можете узнать, введя 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:

[commit] gpgsign = true [user] signingkey = [gpg] program = /bin/gpg

Загрузка дистрибутивов и прочих файлов Большинство установочных образов дистрибутивов распространяются подписанными разработчиками. Если вы загрузите модифицированный образ, то при проверке подписи вы сразу заметите, что образ не оригинальный. Примером служит популярный дистрибутив Tails.

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

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]