Шифрование сообщений различными методами

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

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

Помочь может система шифрования с открытым ключом, которая работает не с одним ключом, а c двумя — то, что зашифровано первым ключом (или секретным ключом — private key), может быть расшифровано только при помощи второго ключа (который называют публичным или открытым — public key). Секретный ключ известен только автору писем, а публичный доступен в Сети. Итак, ваши корреспонденты перед отправлением вам писем должны их зашифровать, используя ваш публичный ключ. Вам же для прочтения таких писем потребуется воспользоваться своим секретным ключом. В свою очередь, написав письма различным корреспондентам, вы должны зашифровать их с помощью их открытых ключей, прочитать которые корреспонденты смогут с помощью своих, известных только им, секретных ключей. Получается, что в случае использования системы с открытым ключом можно перехватить лишь публичный ключ, в то время как секретный ключ по Сети не передается и поэтому недоступен. Таким образом, схема с открытым ключом удачно решает проблему безопасной передачи самого ключа.

Одним из самых популярных криптографических решений для шифрования электронной почты с открытым ключом стала программа PGP (Pretty Good Privacy), ориентированная на массового пользователя и ставшая стандартом шифрования в Сети. Посредством PGP можно легко передавать и принимать любую информацию без опасения, что она станет достоянием третьих лиц. При этом программа шифрует не только текст, но и любые файлы.

Коротко о Pretty Good Privacy

Компоненты PGP

  • PGPdisk — шифрование данных на жестких дисках;
  • PGPkeys — доступ к таблице собственных ключей, а также открытых ключей корреспондентов;
  • PGPmail — шифрование и дешифрование данных;
  • PGPtray — шифрование и дешифрование данных в буфере обмена и управление основными приложениями PGP;
  • PGPAdmin — создание криптографической системы для организации;
  • PGP ICQ — шифрование текста сообщений ICQ;
  • PGP Net — реализация стека протоколов IPSec (Internet Protocol Security) и IKE (Internet Key Exchange).

Выпуски PGP

До выходаы версии 8.0 PGP являлась свободно распространяемым программным обеспечением (последняя бесплатная версия 7.0.3), а теперь программа полностью стала коммерческой и существует в следующих выпусках:

  • PGP Personal 8.0 PGP Freeware — для некоммерческого использования; представляет собой бесплатную PGPmail (шифрование-дешифрование файлов и почты через буфер обмена, цифровая подпись). В бесплатной версии недоступны надстройки (plugins) к почтовым программам;
  • PGP 8.0 Personal Products — для некоммерческого использования; включает в себя компоненты PGPdisk и PGPmail для защиты файлов, дисков и почты;
  • PGP Desktop 8.0 — для коммерческого использования; позволяет интегрировать функции шифрования в основные офисные и почтовые программы;
  • PGP Enterprise 8.0 — для коммерческого использования; более мощное ПО, позволяющее администрировать работу пользователей с ключами и реализовать политику безопасности.

Где и как приобрести PGP

Цены на различные выпуски PGP 8.0 на сайте https://store.pgp.com/ :

  • PGP Enterprise 8.0:
    • PGPM
  • Enterprise 8.0 — 125 долл.;
  • PGP Mobile Enterprise 8.0 — 155 долл.;
  • PGP Desktop 8.0:
  • PGP Desktop 8.0 — 80 долл.;
  • obile Desktop 8.0 — 110 долл.;
  • PGP 8.0 Personal Products:
    • PGP 8.0 Personal — 50 долл.;
    • PGP 8.0 Personal and Mobile — 70 долл.

Особенности работы с программой PGP

Установка

Инсталляция программа PGP 8.0 мало чем отличается от аналогичных процедур по установке любого нового программного обеспечения. Перед установкой лучше закрыть все открытые приложения, а затем запустить файл PGP8.exe.

Как и при установке других приложений, потребуется согласиться со стандартным лицензионным соглашением компании-продавца; ответить на вопрос о существовании старых keyrings — брелоков-ключей (естественно, что если вы раньше не использовали PGP, то никаких старых брелоков у вас нет). После этого нужно выбрать папку для установки и необходимые на вашем компьютере компоненты (рис. 1), при этом отказ от лишних компонентов позволит несколько сэкономить место на жестком диске. Далее нужно будет согласиться с перезагрузкой компьютера, после чего значок-«замочек», соответствующий компоненту PGPtray, появится на панели задач в правом нижнем углу экрана.

Настройка

Чтобы иметь возможность обмениваться секретными сообщениями с корреспондентами, также использующими PGP, необходимо сгенерировать пару ключей — открытый и секретный, которые будут использованы в дальнейшем для создания цифровой подписи. Для этого потребуется выбрать Пуск→Программы→PGP→PGPkeys и щелкнуть на кнопке Generate new keypair (создание новой пары ключей).

Затем следует щелкнуть на кнопке Expert для изменения параметров ключа Key type (тип ключа) — по умолчанию выбирается ключ Diffie-Hellman/DSS, как самый быстрый и надежный. Однако если среди ваших корреспондентов есть пользователи более ранних версий, нежели PGP 5.0, придется использовать ключ RSA. Здесь же можно определить параметр Key size (длина открытого ключа). По умолчанию при использовании метода Diffie-Hellman/DSS выбирается 2048-разрядный ключ, и при современном развитии компьютерной техники этого более чем достаточно (рис. 2). Затем можно установить Key еxpiration — крайний срок, до которого создаваемые ключи могут быть использованы для кодирования и подписи, хотя предпочтительнее вариант по умолчанию, когда данный срок ничем не ограничен. В этом же окне нужно указать Full name (полное имя) и Email address (адрес электронной почты). Следует отметить, что по умолчанию выбирается оптимальный вариант параметров ключа, поэтому менять параметры нужно лишь в случае необходимости.

Если кнопку Expert не нажимали (а это значит, что Full name и Email address не были введены), то в следующем окне появится соответствующий запрос. Затем нужно будет дважды ввести ключевую фразу в окна Passphrase и Confirmation. Для удобства можно убрать галочку из окна Hide Typing, чтобы вводимая фраза отображалась на экране. Длина ключевой фразы не может быть меньше 8 символов. После генерации ключей появится окно вида (рис. 3).

Далее нужно закрыть окно PGPkeys, хотя это удастся сделать не сразу, так как программа предложит сохранить резервную копию файлов с ключами (pubring.pkr и secring.scr). Сохранять копии лучше на дискете, чтобы проблемы с жестким диском не привели к потере доступа к информации (рис. 4 , ).

Теперь вам следует отправить свой открытый ключ всем потенциальным получателям зашифрованной корреспонденции. Для этого необходимо пометить мышью строку с вашим ключом в окне PGPkeys и перетащить, удерживая левую клавишу мыши, строку с ключом в окно текстового сообщения почтовой программы, а затем разослать это письмо по адресам (рис. 6). Можно поступить и по-другому: выделить свой ключ в окне “PGPkeys”, выбрав из меню команды Keys→Export, сохранить ключ на диске в виде файла с расширением.asc. Полученный файл вы можете затем отправить своим корреспондентам как обычное приложение к письму.

Наконец, на последнем этапе настройки вам будет необходимо включить открытые ключи корреспондентов в свой брелок ключей, для чего потребуется воспользоваться пунктом меню Keys→Import. Однако предварительно файлы с чужими открытыми ключами должны быть каким-то образом получены, например по электронной почте, и сохранены на диске. После добавления ключей корреспондентов все они появятся в списке ключей в окне PGPkeys (рис. 7).

Затем ключи корреспондентов нужно подписать: следует выделить ключ в окне PGPkeys, нажать правую кнопку мыши, выбрать команду Sign, подсветить подписываемый ключ и в следующем окне ввести свою ключевую фразу. После этого рядом с ключом загорится вместо серой зеленая лампочка, свидетельствующая о том, что отныне с этим корреспондентом можно вести переписку (рис. 8).

Кроме того, если открытые ключи всех пользователей вашей компании хранятся на корпоративном сервере, нужно отправить свой ключ на сервер, на котором в этом случае можно найти и открытые ключи потенциальных корреспондентов. Чтобы отправить свой ключ на сервер компании вам достаточно будет щелкнуть на кнопке Send key to server в окне PGPkeys и выбрать адрес сервера. Для получения открытых ключей корреспондентов потребуется в том же окне щелкнуть на кнопке Open key search window и ввести слово для поиска (можно, например, искать адресатов, в имени которых присутствует слово «alex»).

Следует знать, где конкретно на вашем диске хранятся ключи PGP. Чтобы получить ответ на этот вопрос, нужно выбрать в PGPkeys пункт меню Edit→Options и далее закладку Files — в результате вы увидите полный путь к связкам открытых и закрытых ключей, который при необходимости можно изменить.

Запуск программы

Существует четыре варианта запуска PGP на компьютере:

  • через Пуск→Программы→PGP. Таким образом можно получить доступ к основным ресурсам PGP: PGPdisk, PGPkeys, PGPmail и документации;
  • из панели задач, щелкнув левой или правой кнопками на значок замочка в правом нижнем углу рабочего экрана. Этот вариант удобен для шифрования/расшифрования данных в буфере обмена;
  • непосредственно из почтового клиента (например, MS Outlook, MS Outlook Express, Eudora и др.), что и предпочитают большинство пользователей.
  • в проводнике через строку PGP после правого клика на иконке файла или папки, что является самым быстрым вариантом вызова программы.

Как отправить зашифрованное сообщение с подписью

Действовать можно двумя путями: шифровать прямо из окна почтовой программы или через буфер обмена (в случае бесплатной версии 8.0 будет работать только этот вариант).

Рассмотрим вначале второй вариант — он хотя и менее удобен, но зато всегда работает. В этом случае нужно обычным образом напечатать текст письма (рис. 9), потом скопировать его в буфер обмена (например, Ctrl+C) и, активировав окно PGPtray щелчком по его значку-«замочку», выбрать Clipboard→Encrypt&Sign (рис. 10). При этом потребуется указать программе открытый ключ корреспондента для шифрования (рис. 11) и ввести свою ключевую фразу для формирования электронной подписи письма, а затем вставить в письмо на место обычного текста его зашифрованный аналог. В результате вы увидите примерно такой текст, как на рис. 12 . Далее письмо отправляют обычным образом.

Однако, как уже было сказано выше, намного удобнее воспользоваться возможностью кодирования непосредственно из окна почтового клиента, с которым вы работаете, например MS Outlook. В этом случае письмо пишется обычным образом, а затем нужно выбрать команду PGP→Encrypt and Sign now (рис. 13). Теперь введите ключевую фразу — и текст письма зашифруется.

Теоретически можно шифровать сообщения без добавления подписи или только заверять текст письма своей электронной подписью. Последовательность действий в обоих этих случаях полностью совпадает с указанной выше за исключением того, что вместо команды Encrypt and Sign now нужно будет выбирать соответственно Encrypt (при шифровании) или Sign (при добавлении подписи).

Как прочитать полученное зашифрованное сообщение с подписью

Если использовать буфер обмена, то, открыв письмо, следует скопировать в буфер обмена зашифрованный текст письма, активировав окно PGPtray, выбрать Clipboard→ Decrypt&Verify и ввести свою ключевую фразу. После этого в окне программы появится расшифрованный текст как на рис. 14 .

Вариант расшифровки из почтового клиента удобнее и быстрее, поскольку для дешифрования потребуется лишь открыть письмо, выбрать из командного меню команду PGP→Decrypt/Verify и ввести свою ключевую фразу. В результате на экране зашифрованный текст сменится на его расшифрованный аналог (рис. 15).

Если в полученном письме были использованы только шифрование или только добавление подписи (это видно по тексту письма), то для получения исходной копии письма потребуется воспользоваться командами Decrypt или Verify соответственно (или Decrypt&Verify — результат будет тот же).

Рис. 16 рис. 17 строки — это обеспечит автоматическое шифрование и подписывание писем при отправлении, а также их расшифровку при открытии.

Можно еще немного облегчить себе работу, установив кэширование ключевой фразы при расшифровке в течение указанного времени — вкладка General, опция Cache passphrases for. Это будет полезно при чтении огромного количества корреспонденции, так как в течение данного промежутка времени не придется каждый раз при открытии письма вводить ключевую фразу. Однако данный вариант не совсем надежен, поскольку на время кэширования ключевая фраза станет доступной для перехвата.

Хотелось бы вам иметь возможность шифровать ваши переписки в социальной сети Вконтакте? Для чего? У каждого из нас могут быть свои причины:

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

    Что же, если вы являетесь счастливым обладателем устройства под управлением Android 4.0+, то вам сможет помочь приложение "Вк Шифр".

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

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

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

    Переходим к главной функции приложения, а именно - к шифрованию сообщений. Почувствовать себя шпионом также оказалось нетрудно: всплывающий экран объяснил, что необходимо кликнуть по пустому квадрату внизу экрана, после чего в нем должна появиться галочка. И это все! В этом режиме все сообщения будут отправляться зашифрованными. В вашем приложении ВК это будет выглядеть приблизительно так: "3q4eqd!NB?+8LsaZLs". Одинаковые слова в разных диалогах шифруются по-разному, что оставило приятное впечатление о технической части проекта.

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

    Теперь несколько слов о вложениях. К сообщению можно прикрепить ваши аудио, видео (или использовать поиск) или фото из любой галереи вашего телефона. Именно здесь я заметил одну из самых интересных функций приложения - шифрование вложений. В браузере или ВК-приложении это будет выглядеть, как 3-4 строки непонятного текста, но прикрепленной картинки, аудио или видео вы не увидите! Таким образом, к списку причин в начале статьи присоединится шифрование фотографий, которые будут видны только вам и собеседнику, уверен, именно эта функция будет чаще всего использоваться.

    Ну а сейчас несколько слов о минусах (по крайней мере, о тех, которые я заметил). Видно, что приложение разрабатывала не профессиональная команда, что проявляется:

    (объективно)

  • в довольно резких переходах и загрузках (на телефонах 2012-), которые можно было бы устранить "мягкими" анимациями;
  • скорость работы приложения ниже, чем у ВК. То ли это из-за экономии ресурсов телефона и интернет-трафика, то ли из-за ограничений ВК - не знаю; больше всего это заметно в оповещениях, когда разница (между официальным приложением и "Вк Шифр") составляет от 3 до 5 секунд;
  • в отсутствии функции восстановления пароля (ах да, для особо скрытных людей в приложении есть функция установки пароля, абсолютно не связанного с аккаунтом ВК, который запрашивается при входе в приложение);

    (субъективно, чего лично мне не хватает)

  • в отсутствии поиска по диалогам, истории переписок;
  • в нехватке некоторых других функций ВК, которые сделали бы приложение альтернативой классического ВК;
  • в наличии рекламы (не баннерной, а полноэкранной), но где ее сейчас нет?
  • в отсутствии возможности создания своего ключа шифрования.

    В завершение скажу, что по обновлениям приложения заметил, что команда старается и добавляет новые функции, так что есть надежда, что со временем они и до моих минусов доберутся (не считая предпоследнего, конечно). Думаю, проект смело можно назвать интересным, т.к. аналогов для Android я так и не нашел.

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

    В связи с этим я бы поставил твердые 8 баллов из 10 возможных, 4 звезды из 5, 12,8 бит из их 16-битного ключа (см. описание на Google Play, и да, я знаю, что бит - "неделимая частица" для программистов), как хотите.

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

    Спасибо за терпение, благодаря которому вы дочитали мой обзор! Всего вам доброго!

  • Основные понятия криптографии

    Проблема защиты информации от несанкционированного (самовольного) доступа (НСД) заметно обострилась в связи с широким распространением локальных и особенно глобальных компьютерных сетей.

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

    Проблема защиты информации волнует людей несколько столетий.

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

    Одним из самых первых шифровальных приспособлений была скитала, которая применялась в V в. до н.э. во время войны Спарты против Афин. Скитала - это цилиндр, на который виток к витку наматывалась узкая папирусная лента (без пробелов и нахлестов). Затем на этой ленте вдоль оси цилиндра (столбцами) записывался необходимый для передачи текст. Лента сматывалась с цилиндра и отправлялась получателю. Получив такое сообщение, получатель наматывал ленту на цилиндр такого же диаметра, как и диаметр скиталы отправителя. В результате можно было прочитать зашифрованное сообщение.

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

    Шифры появились в глубокой древности в виде криптограмм (по-гречески - тайнопись). Порой священные иудейские тексты шифровались методом замены. Вместо первой буквы алфавита записывалась последняя буква, вместо второй- предпоследняя и т. д. Этот древний шифр назывался атбаш. Известен факт шифрования переписки Юлия Цезаря (100-44 до н. э.) с Цицероном (106-43 до н. э.).

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

    В Древней Греции (II в. до н.э.) был известен шифр, который создавался с помощью квадрата Полибия. Таблица для шифрования представляла собой квадрат с пятью столбцами и пятью строками, которые нумеровались цифрами от 1 до 5. В каждую клетку такой таблицы записывалась одна буква. В результате каждой букве соответствовала пара цифр, и шифрование сводилось к замене буквы парой цифр.

    Идею квадрата Полибия проиллюстрируем таблицей с русскими буквами. Число букв в русском алфавите отличается от числа букв в греческом алфавите, поэтому и размер таблицы выбран иным (квадрат 6 х 6). Заметим, что порядок расположения символов в квадрате Полибия является секретной информацией (ключом).

    Зашифруем с помощью квадрата Полибия слово КРИПТОГРАФИЯ:

    26 36 24 35 42 34 14 36 11 44 24 63

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

    В настоящее время проблемами защиты информации занимается криптология (kryptos - тайный, logos - наука). Криптология разделяется на два направления - криптографию и криптоанализ. Цели этих двух направлений криптологии прямо противоположны.

    Криптография - наука о защите информации от несанкционированного получения ее посторонними лицами. Сфера интересов криптографии - разработка и исследование методов шифрования информации.

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

    Сфера интересов криптоанализа противоположная - разработка и исследование методов дешифрования (раскрытия) шифрограммы даже без знания секретного ключа.

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

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

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

    Существует несколько классификаций шифров.

    По характеру использования ключа алгоритмы шифрования делятся на два типа: симметричные (с одним ключом, по-другому - с секретным ключом) и несимметричные (с двумя ключами или с открытым ключом). Несимметричные алгоритмы шифрования и дешифрования порой называют асимметричными.

    В первом случае в шифраторе отправителя и дешифраторе получателя используется один и тот же ключ (Ключ 1, см. рис). Шифратор образует шифрограмму, которая является функцией открытого текста. Конкретный вид функции преобразования (шифрования) определяется секретным ключом. Дешифратор получателя сообщения выполняет обратное преобразование по отношению к преобразованию, сделанному в шифраторе. Секретный ключ хранится в тайне и передается по каналу, исключающему перехват ключа криптоаналитиком противника или коммерческого конкурента.

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

    При оценке эффективности шифра обычно руководствуются правилом голландца Огюста Керкхоффа (1835-1903), согласно которому стойкость шифра определяется только секретностью ключа, т. е. криптоаналитику известны все детали процесса (алгоритма) шифрования и дешифрования, но неизвестно, какой ключ использован для шифрования данного текста.

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

    Алгоритмы шифрования с открытым ключом используют так называемые необратимые или односторонние функции. Эти функции обладают следующим свойством: при заданном значении аргумента х относительно просто вычислить значение функции f(x). Однако если известно значение Функции у =f(x), то нет простого пути для вычисления значения аргумента х.

    Все используемые в настоящее время криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований.

    1. Разложение больших чисел на простые множители (алгоритм RSA, авторы - Райвест, Шамир и Адлеман - Rivest, Shamir, Adleman).

    2. Вычисление логарифма или возведение в степень (алгоритм DH, авторы - Диффи и Хелман).

    3. Вычисление корней алгебраических уравнений.

    Рассмотрим простейший пример «необратимых» функций. Легко в уме найти произведение двух простых чисел 11 и 13. Но попробуйте быстро в уме найти два простых числа, произведение которых равно 437. Подобные трудности возникают и при использовании вычислительной техники для отыскания двух простых сомножителей для очень большого числа: найти сомножители можно, но потребуется много времени.

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

    Заметим, что по операцию разложения простого числа на множители порой называют факторизацией.

    Термин «необратимые» функции неудачен. Правильнее было бы их назвать быстро (или просто) необратимые функции. Однако этот термин устоявшийся, и с неточностью приходится мириться.

    В 40-х годах XX в. американский инженер и математик Клод Шеннон предложил разрабатывать шифр таким образом, чтобы его раскрытие было эквивалентно решению сложной математической задачи. Причем, сложность задачи должна быть такой, чтобы объем необходимых вычислений превосходил бы возможности современных ЭВМ.

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

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

    В США для передачи секретных сообщений наибольшее распространение получил стандарт DES (Data Encryption Standard).

    Стандарт DES является блочным шифром. Он шифрует данные блоками по 64 бита. При шифровании используется ключ длиной 56 битов. Данный стандарт подвергался многократному детальному криптоанализу. Для его взлома были разработаны специализированные ЭВМ стоимостью, достигавшей 20 миллионов долларов. Были разработаны способы силового взлома стандарта DES на основании распределенных вычислений с использованием множества ЭВМ. Для увеличения криптостойкости впоследствии был разработан способ DES-шифрования с использованием трех ключей - так называемый «тройной DES».

    Можно утверждать, что на протяжении многих лет дешифрованию криптограмм помогает частотный анализ появления отдельных символов и их сочетаний. Вероятности появления отдельных букв в тексте сильно различаются. Для русского языка, например, буква «о» появляется в 45 раз чаще буквы «ф» и в 30 раз чаще буквы «э». Анализируя достаточно длинный текст, зашифрованный методом замены, можно по частотам появления символов произвести обратную замену и восстановить исходный открытый текст. В таблице приведены относительные частоты появления русских букв.

    Буква Частота Буква Частота Буква Частота Буква Частота
    о 0.09 в 0.038 з 0.016 ж 0.007
    е, ё 0.072 л 0.035 ы 0.016 ш 0.006
    а 0.062 к 0.028 б 0.014 ю 0.006
    и 0.062 м 0.026 ь, ъ 0.014 ц 0.004
    н 0.053 д 0.025 г 0.013 щ 0.003
    т 0.053 п 0.023 ч 0.012 э 0.003
    с 0.045 у 0.021 и 0.01 ф 0.002
    р 0.04 я 0.018 х 0.009

    Относительная частота появления пробела или знака препинания в русском языке составляет 0,174. Приведенные цифры означают следующее: среди 1000 букв текста в среднем будет 174 пробелов и знаков препинания, 90 букв «о», 72 буквы «е» и т. д.

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

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

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

    Рассмотрим еще одну классификацию шифров.

    Множество современных методов шифрования можно разделить на четыре большие группы: методы замены (подстановки), перестановок, аддитивные (гаммирования) и комбинированные методы.

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

    Следующая простейшая «шифровка» получена методом перестановки двух соседних букв РКПИОТРГФАЯИ.

    В этом «секретном» сообщении легко узнать слово КРИПТОГРАФИЯ.

    Более сложный алгоритм перестановок сводится к разбиению сообщения на группы по три буквы. В каждой группе первую букву ставят на третье место, а вторую и третью буквы смещают на одну позицию влево. В результате получится криптограмма: РИКТОПРАГИЯФ.

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

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

    Метод замены часто реализуется многими пользователями случайно при работе на ЭВМ. Если по забывчивости не переключить на клавиатуре регистр с латиницы на кириллицу, то вместо букв русского алфавита при вводе текста будут печататься буквы латинского алфавита. В результате исходное сообщение будет «зашифровано» латинскими буквами. Например, rhbgnjuhfabz - так зашифровано слово криптография.

    В аддитивном методе буквы алфавита вначале заменяются числами, к которым затем добавляются числа секретной псевдослучайной числовой последовательности (гаммы). Состав гаммы меняется в зависимости от использованного ключа. Обычно для шифрования используется логическая операция «Исключающее ИЛИ». При дешифровании та же гамма накладывается на зашифрованные данные. Метод гаммирования широко используется в военных криптографических системах. Шифры, получаемые аддитивным методом, порой называют поточными шифрами.

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

    Существует еще один подход к передаче секретных сообщений. Он сводится к сокрытию самого факта передачи информации. Такими способами шифрования занимается наука стеганография.

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

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


    Шифрование сообщений различными методами

    Вместо хвоста - нога, А на ноге - рога.

    Л. Дербенеёв.

    Рассмотрим, как зашифровать сообщение методом замены (другими словами методом подстановки). Вначале используем шифр Цезаря. Предположим, что требуется зашифровать сообщение «ГДЕ АББА».

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

    В результате проведенного преобразования получится шифрограмма:

    ЁЖЗ ГДДГ.

    В данном случае ключом является величина сдвига (число позиций между буквами). Число ключей этого шифра невелико (оно равно числу букв алфавита). Не представляет труда вскрыть такую шифрограмму перебором всех возможных ключей. Недостатком шифра Цезаря является невысокая криптостойкость. Объясняется это тем, что в зашифрованном тексте буквы по-прежнему располагаются в алфавитном порядке, лишь начало отсчета смещено на несколько позиций.

    Замена может осуществляться на символы другого алфавита и с более сложным ключом (алгоритмом замены). Для простоты опять приведем лишь начальные части алфавитов. Линии показывают порядок замены букв русского алфавита на буквы латинского алфавита. Зашифруем фразу «ГДЕ АББА»

    В результате такого шифрования получится криптограмма:

    Рациональнее использованный в последнем случае ключ записать в виде таблицы:

    А Б В Г Д Е
    Е F А С D В

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

    Замена символов открытого текста может происходить на специальные символы, например, на «пляшущих человечков», как в рассказе К. Дойла или с помощью флажков, как это делается моряками.

    Более высокую криптостойкость по сравнению с шифром Цезаря имеют аффинные криптосистемы.

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

    Аффинные криптосистемы задаются при помощи двух чисел а и b. Для русского алфавита эти числа выбираются из условия а ≥ 0, b ≤ 32. Максимальное число символов в используемом алфавите обозначаются символом γ. Причем числа а и γ = 33 должны быть взаимно простыми. Если это условие не будет выполняться, то две разные буквы могут отображаться (превращаться) в одну. Каждый код буквы открытого текста μ заменяется кодом буквы криптограммы по следующему правилу. Вначале вычисляется число α= a∙μ + b, a затем выполняется операция целочисленного деления числа αна число γ = 33, то есть α= β(mod (γ)). В качестве кода символа Шифрограммы используется остаток от целочисленного деления. Для определенности выберем такие числа: а = 5 и b =3. Фрагмент процедуры, иллюстрирующей порядок шифрования, приведен в таблице.

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

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

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

    Ниже приведен фрагмент ключа многоалфавитной замены:

    А Б В Г Д Е

    С помощью многоалфавитного шифра сообщение «ГДЕ АББА» можно зашифровать несколькими способами:

    19-83-32-48-4-7-12,

    10-99-15-12-4-14-12 и т. д.

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

    Рассмотрим еще один шифр многоалфавитной замены, который был описан в 1585 г. французским дипломатом Блезом де Виженером. Шифрование производится с помощью так называемой таблицы Виженера. Здесь, как и прежде, показана лишь часть таблицы для того, чтобы изложить лишь идею метода.

    Каждая строка в этой таблице соответствует одному шифру простой замены (типа шифра Цезаря). При шифровании открытое сообщение записывают в строчку, а под ним помещают ключ. Если ключ оказывается короче сообщения, то ключ циклически повторяют. Шифровку получают, находя символ в матрице букв шифрограммы. Символ шифрограммы находится на пересечении столбца с буквой открытого текста и строки с соответствующей буквой ключа.

    Предположим, что нужно зашифровать сообщение «ГДЕ АББА». В качестве ключа выберем слово «ДЕВА». В результате получим:

    ЯЯГ АЭЬЮ.

    Система Плейфейра создает многоалфавитные шифры. Рассмотрим основную идею этой системы.

    Шифрование производится с помощью квадрата (или прямоугольника), в который занесены буквы соответствующего национального алфавита. Буквы записываются в квадрат или прямоугольник в произвольном порядке. Этот порядок записи букв и конфигурация таблицы являются секретным ключом. Для определенности возьмем прямоугольную таблицу размером 8x4, в качестве букв алфавита - кириллицу, а буквы расположим в алфавитном порядке. Так как число русских букв 33, а число клеток - 32, исключим из таблицы букву Ё.

    Предположим, что требуется зашифровать слово КРИПТОГРАФИЯ. Рассмотрим правила шифрования.

    1. Открытый текст делится на блоки по две буквы. Буквы в одном блоке не должны быть одинаковыми. Произведем разделение исходного слова на блоки по две буквы КР-ИП-ТО-ГР-АФ-ИЯ.

    2. Если буквы шифруемого блока находятся в разных строках и столбцах, то в качестве заменяющих букв используются буквы, расположенные в углах прямоугольника, охватывающего буквы открытого текста. На пример, блок КР заменяется символами ИТ.

    3. Если буквы открытого текста попадают в одну строку, то шифрограмма получается путем циклического сдвига вправо на одну клетку. Например, блок ИП будет преобразован в ЙИ. Еще один пример к этому правилу. Если, предположим, требуется преобразовать блок КН, то получится ЛО.

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

    Блок ЖЦ будет преобразован в символы ОЮ, а блок ТЪ в символы ЪВ.

    В соответствии с описанными правилами слово КРИПТОГРАФИЯ будет преобразовано в криптограмму ИТЙИЦКАУДРПШ.

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

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

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

    Первоначально открытый текст методом замены следует преобразовать в совокупность чисел. Предположим, что шифруется текст, написанный с использованием 26-ти латинских букв. Выберем следующий алгоритм замены букв на числа: латинские буквы А, В, С, D, ..., Z будем заменять соответственно числами 1, 2, 3, 4,..., 26. Другими словами: пронумеруем буквы в порядке их расположения в алфавите, и при замене будем использовать их порядковые номера. В данном случае выбран такой алгоритм замены, но понятно, что он может быть любым.

    Предположим, что нужно зашифровать немецкое слово ZEIT. Заменим буквы в соответствии с их порядковыми номерами в алфавите четырьмя числами: 26 - 5 - 9 - 20.

    Далее следует выбрать некоторое число d > 2. Это число показывает, порядок разбиения открытого текста на группы символов (определяет, сколько букв будет в каждой группе). С математической точки зрения число d показывает, сколько строк должно быть в векторах-столбцах. Примем d = 2. Это означает, что числа 26 - 5 - 9 - 20 нужно разбить на группы по два числа в каждой группе и записать их в виде векторов-столбцов:

    Рассмотрим примеры шифрования сообщения методом перестановок.

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

    Для пояснения идеи возьмем квадратную таблицу (матрицу) 8x8. Будем записывать текст последовательно по строкам сверху вниз, а считывать по столбцам последовательно слева направо.

    Предположим, что требуется зашифровать сообщение:

    НА ПЕРВОМ КУРСЕ ТЯЖЕЛО УЧИТЬСЯ ТОЛЬКО ПЕРВЫЕ ЧЕТЫРЕ ГОДА ДЕКАНАТ.

    н А _ П Е Р в О
    м к У Р С Е _
    т Я ж Е Л О _ У
    ч И т Ь С Я _ т
    О Л ь К О _ П Е
    р в ы Е _ Ч Е Т
    ы р Е _ г О д А
    _ д Е К А н А Т

    В таблице символом «_» обозначен пробел.

    В результате преобразований получится шифровка

    НМТЧОРЫ_А_ЯИЛВРД_КЖТЬЫЕЕПУЕЬКЕ_КЕРЛСО_ГАРСОЯ_ЧОНВЕ_

    ПЕДАО_УТЕТАТ.

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

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

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

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

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

    Рассмотрим пример дешифрации криптограммы, полученной методом перестановок. Известно, что при шифровании использованы матрица 6x6, ключ записи 352146 и ключ считывания 425316. Текст шифрограммы таков:

    ДКАГЧЬОВА_РУААКОЕБЗЕРЕ_ДСОХТЕСЕ_Т_ЛУ

    Разобьем шифрограмму на группы по 6 символов:

    ДКАГЧЬ ОВА_РУ ААКОЕБ ЗЕРЕ_Д СОХТЕС Е_Т_ЛУ

    Затем первую группу символов запишем в столбец 4 матрицы 6x6, так как первая цифра ключа считывания - 4 (см. рисунок а). Вторую группу из 6 символов запишем в столбец 2 (см. рисунок б), третью группу символов - в столбец 5 (см. рисунок в), пропустив две фазы заполнения матрицы, изобразим полностью заполненную матрицу (см. рисунок г).

    Считывание открытого текста в соответствии с ключом записи начинаем со строки 3, затем используем строку 5 и т.д. В результате дешифрования получаем открытый текст:

    ХАРАКТЕР ЧЕЛОВЕКА СОЗДАЕТ ЕГО СУДЬБУ

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


    Д
    К
    А
    Г
    ч
    ь
    О д
    В к
    А А
    Г
    Р ч
    У ь

    О Д А
    В К А
    А А К
    Г О
    Р ч Е
    У ь Б
    С О д А Е
    О В Е к А
    X А Р А К Т
    т Е Г О
    Е Р ч Е Л
    С У д ь Б У

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

    ©2015-2019 сайт
    Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
    Дата создания страницы: 2016-04-11

    Всем нам иногда приходится пересылать в переписке ту или иную секретную информацию. Ну, возможно, не секретную, но такую, которая определенно не предназначена для чужих глаз. Самый надежный способ ее защиты - это шифрование. А самый простой способ зашифровать сообщения в вашей переписке в Skype, Viber, «ВКонтакте» и в любом другом месте - это кроссплатформенное приложение PGPTools.

    Зачем это нужно?

    Самый простой пример использования шифрования - это отправка защищенных сообщений, которые содержат важную информацию. Скажем, вы хотите переслать свои платежные реквизиты, общаясь с приятелем «ВКонтакте». Зашифрованное сообщение представляет собой беспорядочный набор символов, который можно смело пересылать через социальные сети, Skype, Viber, Telegram и любые другие мессенджеры. Даже если его перехватят злоумышленники, без специального ключа они увидят просто абракадабру.

    Как это работает?

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

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

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

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

    Плюсы и минусы

    Пользоваться PGPTools удобно еще и потому, что приложение доступно на всех популярных платформах, включая не только iOS и Mac, но и Android, Windows Phone и Windows. Независимо от устройств, которые используют ваши друзья или коллеги, вы сможете совершенно безопасно отправлять им важную личную информацию любым удобным для вас путем, будь то email, sms, социальные сети, мессенджеры и так далее.

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

    Итоги

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

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

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

    Иными словами, в криптографической защите почты сочетаются методы противодействия НСД и атаке посредника, имеющие принципиально разные решения. К сожалению, их часто путают и пытаются использовать не самые подходящие методы. Я предлагаю тебе небольшой рассказ о двух известных криптографических персонажах, который должен расставить все по своим местам и наглядно продемонстрировать проблемы с шифрованием почты. Как говорится, нет повести секретнее до гроба, чем повесть про Алису и про Боба!

    В два клика Боб шифрует его ключом, известным Алисе. Он надеется, что правильно ввел его по памяти при настройке CryptoData на общедоступном компе. Иначе важное сообщение так и останется мешаниной символов, которую он вставил в тело письма, скопировав из окна CryptoData.

    Алиса получает странное письмо, видит в нем знакомое начало S3CRYPT и понимает, что надо использовать CryptoData с тем ключом, которым они когда-то обменялись с Бобом. Вот только с тех пор много всего произошло, и каким был этот ключ - она может не вспомнить.

    Попытка расшифровать письмо

    Если Алиса проявит чудеса мнемотехники и все-таки введет верный ключ, сообщение от Боба примет читаемый вид.

    Письмо расшифровано

    Однако девичья память далеко не EEPROM, поэтому Боб получает неожиданный ответ.

    Конечно, Боб знает, как пользоваться PGP. Вот только последний раз он это делал в почтовом клиенте The Bat, который был установлен на взорванном ноутбуке. Как проверить присланный ключ? Вдруг прямо сейчас Алису пытают, а ему отвечают с ее адреса и пытаются выведать секреты? Поэтому Боб просит дополнительных гарантий подлинности ключа. Например, можно попросить Джека проверить и подписать его.

    Сеть доверия PGP

    Алиса реагирует немного странно. Она сообщает новость о внезапном исчезновении Джека и предлагает альтернативный способ верификации. Впрочем, не слишком надежный. Простейшая цифровая подпись S/MIME подтвердит лишь адрес отправителя, но не его личность. Поэтому Боб прибегает к хитрости: он просит подтвердить ключ по другому каналу связи, заодно проверяя общий с Алисой секрет, который знали только они.

    Использование отпечатка ключа и общего секрета

    Спустя некоторое время ему приходит СМС с верным отпечатком ключа и новое письмо от Алисы.

    Отпечаток ключа и ответ на секретный вопрос

    Письмо выглядит убедительно, отпечаток ключа совпадает, но Боб - тертый калач. Прочитав ответ на секретный вопрос, он понимает, что беседует не с Алисой.

    Последнее сообщение Боба псевдо Алисе

    ГЕОМЕТРИЯ ШИФРОВАНИЯ

    В этой истории Алиса и Боб пытались использовать два принципиально разных типа криптографической защиты. В CryptoData для шифрования и расшифровки по алгоритму AES используется один и тот же ключ. Поэтому такую криптосистему называют симметричной.

    В отличие от AES-CTR, в PGP используется пара разных, но математически связанных ключей. Это асимметричная система, устроенная по принципу замка с защелкой: захлопнуть дверь (зашифровать сообщение) может кто угодно, а вот открыть ее (расшифровать текст) - только владелец ключа.

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

    Асимметричные системы как раз решают проблему передачи ключа через ненадежную среду, используя пару ключей. Открытый ключ служит для шифрования сообщений, отправляемых конкретному адресату, и проверки криптографической подписи в принятых от него письмах. Секретный - для расшифровки полученного письма и подписывания отправляемого. При организации защищенной переписки собеседникам достаточно обменяться своими открытыми ключами, а их перехват (почти) ни на что не повлияет. Поэтому такую систему называют еще шифрованием с открытым ключом. В почтовых клиентах поддержка PGP реализована давно, а вот при использовании почты через веб-интерфейс понадобятся браузерные аддоны.

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

    CryptoData доступен для браузера Firefox в качестве аддона. Также он поддерживает почтовые клиенты Thunderbird и SeaMonkey. Текст шифруется по алгоритму AES. Несмотря на его блочную природу, в режиме счетчика (CTR) с его помощью реализуется потоковое шифрование.

    К плюсам CryptoData можно отнести известную реализацию AES-CTR через JavaScript. Главный же недостаток CryptoData (как и любой симметричной системы) - безопасно обмениваться ключами невозможно.

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

    Менее значимый минус - узнаваемое начало всех зашифрованных текстов. После стандартного начала «S3CRYPT:BEGIN» открытым текстом указывается используемый алгоритм и режим шифрования (AESCTR или RC4). Это упрощает выборочный перехват зашифрованных сообщений (обычно в них пишут все самое важное) и их взлом.

    Подобно CryptoData работали CryptFire, Encrypted Communication и многие другие расширения.

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

    ОТ АЛГОРИТМОВ К СТАНДАРТАМ ШИФРОВАНИЯ ПОЧТЫ

    Для работы с зашифрованной перепиской собеседники должны использовать одинаковые криптографические методы. Поэтому любая защита почты на уровне приложения или сервиса использует какую-то криптографическую систему в рамках общепризнанного стандарта шифрования. Например, клиент Thunderbird поддерживает через аддон Enigmail форк GnuPG как открытую реализацию криптосистемы PGP по стандарту OpenPGP.

    В свою очередь, PGP и любая другая криптосистема базируется на нескольких алгоритмах шифрования, которые используются на разных этапах работы. Самым распространенным среди алгоритмов асимметричного шифрования остается RSA. Он же используется в оригинальной криптосистеме PGP Филиппа Циммерманна. В ней RSA применяется для шифрования 128-битного хеша MD5 и 128-битного ключа IDEA.

    У различных форков PGP (например, у того же GnuPG) есть свои алгоритмические отличия. Но если криптосистемы удовлетворяют требованиям общего стандарта OpenPGP, то они остаются совместимыми друг с другом. Собеседники могут вести защищенную переписку с помощью разных версий криптографических программ, в том числе и предназначенных для разных платформ. Поэтому составленное в Thunderbird для Linux письмо, зашифрованное PGP, может быть прочитано в The Bat для Windows и даже через браузер с поддержкой OpenPGP на уровне дополнений.

    ШИФРОВАНИЕ ПОЧТЫ С ПОМОЩЬЮ OPENPGP

    OpenPGP был предложен в 1997 году, но развитие стандарта было сложным из-за судьбы самого алгоритма PGP. Права на него последовательно переходили от Циммерманна и PGP Inc. к Network Associates (McAfee), PGP Corporation и Symantec. Каждый из новых правообладателей менял конечную реализацию алгоритма. Не исключено, что в McAfee и Symantec ослабляли его криптографическую стойкость по требованию властей. Например, снижая качество генератора псевдослучайных чисел, эффективную длину ключа или даже внедряя программные закладки.

    Поэтому в 1999 году появилась открытая реализация GnuPG. Считается, что за ней стоит фонд FSF, но на деле GnuPG разработал всего один человек - немецкий программист Вернер Кох, который когда-то впечатлился речью Столлмана и решил сделать «правильный, открытый PGP». Позже он неоднократно намеревался забросить поддержку GnuPG, но в решающий момент находил новые стимулы продолжать ее.

    Сейчас Коху 53 года, он безработный и много раз находился на пороге нищеты до того момента, как сумел собрать более 300 тысяч долларов с помощью разных краудфандинговых кампаний. Ему перечисляли деньги из Linux Foundation и от простых пользователей, давали гранты Facebook и Stripe - просто потому, что судьба GPGTools, Enigmail, Gpg4win и многих других популярных проектов в мире СПО целиком зависит от его желания продолжать развитие GnuPG.

    С таким шатким фундаментом стандарт OpenPGP до сих пор имеет известные слабости. Их проще было объявить «не багами, а фичами», чем устранять. Например, в нем есть только один способ подтвердить отправителя зашифрованного сообщения - криптографическая подпись. Однако проверить ее может кто угодно открытым ключом отправителя (вот почему я сделал оговорку «почти», указывая на безопасность перехвата открытого ключа). Следовательно, подпись, помимо аутентификации, обеспечивает и не всегда нужную неотрицаемость сообщения.

    Что это значит на практике? Представь, что ты отправил Ассанжу очередную порцию интересных данных о первых лицах сильно демократической страны. Письмо перехватили, IP узнали и за тобой приехали. Даже не раскрывая содержимое зашифрованного письма, ты привлек к себе внимание самим фактом переписки с человеком, за которым давно следят. Сослаться на подделку письма или козни почтового червя уже не получится - сообщение было подписано твоим секретным ключом. Без этой же подписи Ассанж не станет читать сообщение, считая его фальшивкой или провокацией. Получается замкнутый круг: криптографические подписи лишают возможности отрицать авторство писем перед третьими лицами, а без подписей для самих собеседников не будет гарантии подлинности сообщений друг к другу.

    Еще один недостаток PGP заключается в том, что зашифрованные сообщения имеют очень узнаваемый вид, поэтому сам факт обмена такими письмами уже делает собеседников потенциально интересными для спецслужб. Они легко выявляются в сетевом трафике, а стандарт OpenPGP не позволяет скрыть ни отправителя, ни получателя. Для этих целей вместе с PGP пытаются использовать или стеганографию как дополнительные слои защиты, но у луковичной маршрутизации и методов сокрытия файлов одного формата внутри другого полно своих нерешенных проблем. К тому же система получается слишком сложной, а значит, она также не будет популярной и останется уязвимой к человеческим ошибкам.

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

    S/MIME

    Если у OpenPGP столько принципиальных недостатков, то есть ли ему альтернатива? И да и нет. Параллельно развиваются другие стандарты шифрования почты, в том числе и с использованием открытого ключа. Вот только пока что они устраняют одни недостатки ценой появления других. Яркий пример тому - S/MIME (Secure/Multipurpose Internet Mail Extensions). Начиная со второй версии, появившейся еще в 1998 году, S/MIME стал общепринятым стандартом. Настоящая популярность пришла к нему годом позже, когда третью версию S/ MIME стали поддерживать такие почтовые программы, как Microsoft Outlook (Express) и Exchange.

    S/MIME упрощает задачу распространения публичных ключей в недоверенной среде, поскольку контейнером для открытого ключа служит цифровой сертификат, который обычно имеет одну или несколько цифровых подписей. С тяжелой руки Microsoft современная концепция криптографии с открытым ключом часто реализуется именно посредством цифровых сертификатов и цепочек доверия. Сертификаты выдаются конкретному субъекту и содержат его открытый ключ. Подлинность самого сертификата гарантируется (обычно за деньги) его эмитентом - то есть выпустившей организацией, которой изначально доверяют все участники переписки. Например, это может быть Thawte, VeriSign, Comodo или другая крупная компания. Простейший сертификат, подтверждающий только адрес электронной почты, можно получить бесплатно.

    Теоретически цифровой сертификат решает сразу две проблемы: он позволяет легко найти открытый ключ нужного пользователя и убедиться в его подлинности. Однако на практике в механизме доверенных сертификатов и стандарте S/MIME до сих пор есть серьезные уязвимости, делающие возможными дополнительные векторы атак помимо тех, что актуальны для OpenPGP. Так, в 2011 году была произведена атака на сертификационные центры DigiNotar и Comodo, в результате чего были выпущены сотни поддельных сертификатов от имени самых популярных сетевых узлов: addons.mozilla.com, login.skype.com, login.yahoo.com, mail.google.com и других. В дальнейшем они использовались в разных сценариях атак, включая MITM, рассылку фишинговых писем и распространение зловредов, подписанных сертификатами известных фирм.

    ШИФРОВАНИЕ ВЕБ-ПОЧТЫ И МОБИЛЬНЫЕ КЛИЕНТЫ

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

    Многие помнят Hushmail - первый веб-сервис электронной почты с шифрованием по стандарту OpenPGP на стороне сервера. Уверен, кто-то пользуется им до сих пор, считая надежным. Ведь все письма, как утверждается, в нем хранятся на собственном защищенном сервере и передаются на внешние адреса через другой сервер с поддержкой SSL. Почти десять лет компания уверяла, что расшифровать письма ее клиентов невозможно. Однако в 2007 году Hushmail была вынуждена признать, что имеет такую техническую возможность и предоставляет ее по требованию властей, а также протоколирует IP-адреса своих клиентов и собирает о них «другую статистику» - вдруг компетентные органы ее запросят.

    Впрочем, черт бы с Hushmail. Большинство людей сегодня пользуется Gmail, который активно развивается. «Очень активно, - подсказывает Мэттью Грин, профессор криптографии из Университета Джонса Хопкинса. - Скоро исполнится два года, как Google обещала внедрить сквозное шифрование почты. Ну и где оно?»

    Любопытно, что, помимо Google, в разное время это обещали сделать Yahoo, Microsoft и другие. Есть очевидное объяснение тому, почему компании с ежегодной прибылью на уровне миллиардов долларов до сих пор не смогли внедрить сквозное шифрование. Оно подразумевает выполнение криптографических операций в доверенной среде и передачу сообщений через недоверенные узлы только в зашифрованном виде. Реализовать это без контроля над устройствами практически невозможно.

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

    Именно так взломали итальянскую Hacking Team: атакующий получил удаленный доступ к одному из компьютеров в локальной сети компании, а затем просто дождался, когда кто-то из сотрудников сам откроет контейнер TrueCrypt со всей секретной перепиской и документацией. Без доверенной среды хоть шифруй, хоть не шифруй - все равно получишь лишь иллюзию защиты.

    Приложения для шифрования почтовой переписки.

    Mailvelope - одно из самых продвинутых расширений для шифрования почты в Google Chrome. Мы уже ранее о нем, и уже тогда это была качественная разработка.

    Управление ключами в Mailvelope

    Базовую функциональность PGP в браузере обещают и другие расширения, но у них полно своих недостатков. У аддона Pandor логика работы вообще странная. По замыслу, пользователи регистрируются на сайте pandor.me и генерируют ключи PGP. Все они хранятся на сервере и автоматически используются для шифрования и дешифрования. При этом обмениваться ключами не надо. Удобно? Может быть. Однако те, кто жертвуют удобством ради безопасности, в итоге лишаются и того и другого. Секретный ключ неспроста называется так, а безопасно сгенерировать пару ключей можно только локально.

    Шифрование почты с помощью Keybase.io

    Открытые ключи можно не только вручную переслать всем собеседникам, но и загрузить на специализированный сервер. Так их проще будет находить и подписывать, расширяя сеть доверия. Об одном из таких репозиториев открытых ключей - Keybase.io мы уже писали. После быстрого старта интерес к развитию этого сервера открытых ключей у его разработчиков угас. Репозиторий вот уже два года находится в стадии бета-тестирования, но это не препятствует его использованию.

    Keybase.io подтверждает не только валидность открытого ключа собеседника и адрес его электронной почты, но и URL личного сайта, а также аккаунты пользователя в Twitter и GitHub, если они есть. Одним словом, если твои собеседники загружают свои открытые ключи на Keybase.io, то ты всегда сможешь отыскать их там вместе с актуальными контактными данными.