Шифрование с помощью PGP
Эта статья родилась из простой задачи, мне нужно было передать файл с паролями с одного компьютера на другой через интернет. Можно сколько угодно говорить о шифровании в мессенджере и безопасных сервисах, которые “упрощают” нашу жизнь. Но факт остается фактом, если вы хотите действительно безопасно передать данные через интернет, придется погрузиться в шифрование. Я не специалист по информационной безопасности, мой интерес чисто обывательский. Первое правило здесь — каналы передачи данных всегда небезопасны. Второе — любой сервис с пользователями всегда будет целью для взломов и поиска уязвимостей.
PGP (Pretty Good Privacy) — одна из первых популярных реализаций шифрования с открытым ключом. У нее интересная история, особенно в части как правительство США пыталось запретить её экспорт. В итоге PGP стала коммерческим продуктом. Доступна бесплатная версия, основанная на том же стандарте, что и PGP. Она называется GnuPG (или GPG). Поскольку стандарт одинаковый, пользователи часто говорят «PGP-ключ» и «PGP-сообщение», хотя на самом деле используют GnuPG.
В виду своего возраста и распространенности, PGP одна из самых критикуемых реализаций. Но именно из-за этих двух факторов PGP является своего рода стандартом. Куча ошибок в нем уже были найдены и устранены и многие уже привыкли/знают как с ним работать. При использовании современных алгоритмов он дает неплохую криптоустойчивость, а к минусам можно отнести не самое простое управление, для которого требуется небольшое погружение.
Предположим, вы хотите отправить кому-то сообщение, содержащее деликатную информацию и не хотите, чтобы кто-то еще мог его прочитать. Лучший способ будет зашифровать сообщение специальным ключом, который будете знать только вы и получатель. Если атакующий перехватит сообщение, он не сможет ничего расшифровать. В наше время мы считаем “условно не сможет” потому что компьютерные мощности растут и, например, устаревшие алгоритмы шифрования могут быть взломаны как через уязвимости, так и методом перебора. Такой вариант называется системой с симметричным ключом. Они работают нормально, но есть проблема курицы и яйца, прежде чем отправить сообщение, нужно поделиться ключом, а как это сделать без секретного канала?
PGP решает именно эту проблему. Криптография открытого ключа позволяет безопасно делиться информацией, независимо на каком расстоянии и за какими границами вы находитесь и не требует установки изначального безопасного канала.
Шифрование и Дешифрование
Шифрование и дешифрование в криптографии публичным ключом опирается на пару математически уникальных ключей. Один называется публичный, а другой приватный. Публичный ключ предоставляет однонаправленную функцию, подобно висячему замку. Любой человек может его закрыть, но открыть только владелец закрытого ключа. Критическим моментом является защита приватного ключа, который используется для расшифровки сообщения, зашифрованного публичным ключом. Он должен всегда оставаться секретным, известным только владельцу. Картинка ниже иллюстрируется пример шифрования и дешифрования.
Если Ваня хочет послать зашифрованное сообщение Пете, ему нужен Петин публичный ключ. Это значит, что Петя должен им как-то поделиться, например в социальных сетях. Тогда Ваня сможет взять этот публичный ключ, зашифровать им сообщение и отправить любым, в том числе ненадежным каналом связи Пете. А Петя в свою очередь расшифрует сообщение своим приватным ключом.
Отпечатки
Одна из проблем с публичным ключами это самозванство. Нет легкого способа гарантировать, что определенный публичный ключ, опубликованный онлайн действительно принадлежит конкретному человеку. Атакующий может сгенерировать пару ключей и “подсунуть” свой публичный ключ, прикидываясь другим человеком.
Чтобы справиться с этой проблемой, в PGP существует механизм отпечатков. Отпечатки (Fingerprints) — это уникальный идентификатор, они генерируются в результате односторонней математической функции называемой хэширование. Односторонней значит что из отпечатка нельзя получить исходный ключ выполнив обратную процедуру (хэшировать можно любые данные, не только ключи). Результатом является цифробуквенная строка фиксированной длинны. Пользователи публикуют свои отпечатки на различных платформах. Например в социальных сетях, email подписях или даже печатают на визитках. Одним из способов также является публикация на специальном сервере-справочнике (например keybase.io).
У меня в блоге есть отдельная страница, на которой можно скачать мой публичный PGP ключ и найти отпечаток. Этот же отпечаток указан в био в моем Twitter аккаунте. Скачав публичный ключ и импортировав его к себе (об этом еще будет позже), можно повторить процесс генерации отпечатка самостоятельно и сравнить его с тем, что указан публично. Таким образом вы убедитесь что публичный ключ действительно принадлежит этому человеку. Но будьте внимательны, злоумышленник может подменить отпечатки тоже.
Публикация отпечатка в разных источниках увеличивает стоимость атаки для злоумышленника, который пытается прикинуться другим человеком. Ему придется взломать каждую платформу, на которой опубликован настоящий отпечаток, чтобы подменить его своим собственным. Выложив отпечаток на разных платформах, можно также легко идентфицировать, если какая-то из них была скомпрометирована.
Подпись сообщений
Другой компонент PGP — подпись сообщений. Это процесс удостоверения сообщения уникальной цифровой подписью.
Ваня хочет отправить сообщение Пете и подтвердить, что сообщение действительно пришло от него, а также, что оно не было модифицировано по пути. Для этого он подписывает его. Чтобы подписать сообщение PGP хэширует его, чтобы длина подписи не зависела от размера сообщения, затем шифрует хэш используя приватный ключ. Расшифровать подпись можно только публичным ключом Вани, т.е. если у Пети получилось это сделать, он будет уверен, что сообщение пришло именно от Вани. Затем, Петя может сам создать хэш сообщения и сравнить его с тем, что получился в результате дешифрования подписи, таким образом убедившись, что сообщение не было изменено в процессе передачи.
Будьте внимательны, подписывание сообщения позволяет убедиться в аутентичности и целостности данных, но не защищает само сообщение. Другими словами, если вы только подписали сообщение, оно будет передано в открытом виде и кто угодно сможет его прочитать. Чтобы сообщение было конфиденциальным, после подписания его надо зашифровать публичным ключом получателя и отправить в шифрованном виде.
Сочетание подписания с шифрованием гарантирует:
- Конфиденциальность — гарантия того, что ни одна сторона, кроме предполагаемого получателя, не сможет получить доступ к содержимому сообщения
- Целостность — гарантия того, что сообщение не было изменено при передаче
- Аутентификация — гарантия того, что личность отправителя может быть проверена
- Неотрицание — гарантия того, что отправитель не сможет обоснованно отрицать факт отправки сообщения
Как генерировать PGP ключи
Как я уже упоминал, существует бесплатная библиотека и ПО, которые реализуют PGP протокол — GnuPG. Есть несколько способов как ими пользоваться, я предпочитаю использовать терминал. Команды, приведенные ниже, подходят для операционных систем MacOS и Linux, а также, скорее всего, Linux подсистемы в Windows — WSL.
Если работать с PGP в терминале вам некомфортно, я советую посмотреть в сторону инструкций Surveillance Self-Defense от Electronic Frontier Foundation. Они доступны в том числе на русском языке.
На MacOS GnuPG может быть установлен через Homebrew.
Сначала выбираем тип ключа, который хотим создать. Можно нажать Enter чтобы выбрать тип по умолчанию, на MacOS это ECC (sign and encrypt) . Если вы не видите такой тип в списке, а по умолчанию предлагается RSA, воспользуйтесь параметром —expert , чтобы увидеть больше опций.
Дальше нам предлагается выбрать эллептическую кривую. Берем Curve 25519 и переходим к сроку действия. Можно создать ключи с ограниченным сроком действия, это хорошая, но продвинутая практика, придется перегенерировать ключи до даты истечения, чтобы начать работать с PGP это не нужно, поэтому выбираем key does not expire .
Для RSA будет предложен выбор размера, если вы, по какой-то причине не можете использовать ECC, а доступен только RSA, я бы рекомендовал как минимум 4096.
Дальше нам нужно будет заполнить идентификационные данные, такие как имя и email. В поле комментарий можно ввести любую информацию.
На следующем шаге нужно будет дважды ввести пароль для ключа, тут как всегда, он должен быть достаточно сложным, но если вы его забудете/потеряете, то уже никогда не сможете пользоваться приватным ключом из этой пары. Сгенерировать хороший случайный пароль можно в специальном Telegram боте.
Вот и все! Теперь у вас есть приватный и публичный ключи, которые можно использовать для шифрования и подписывания. Чтобы просмотреть список доступных публичный ключей, можно использовать команду:
А чтобы посмотреть доступные приватные ключи, команду:
Используйте параметр —fingerprint чтобы отобразить отпечатки ключей. Это длинная строка из 10 блоков с 4 цифрами и буквами в каждом.
Чтобы поделиться вашим публичным ключом его нужно экспортировать в текстовый файл. Для этого можно воспользоваться следущей командой, заменив и на те, что были указаны при генерации ключей. Вместо имени можно также использовать email.
Как импортировать публичный ключ и зашифровать им сообщение
Представим, что кто-то хочет отправить мне сообщение зашифровав его моим публичным ключом. Для этого ему НЕ нужно иметь собственные ключи, но необходимо иметь установленной GnuPG.
Первым делом нужно скачать мой публичный ключ со специальной страницы. Это можно сделать через браузер или в том же терминале, с помощью команды:
Чтобы зашифровать короткое сообщение прямо в терминале, можно воспользоваться следующей командой:
Если вы уверены в каком-то конкретном ключе, вы можете изменить его уровень доверия в GnuPG и тогда предупреждения не будет. Для этого можно воспользоваться параметром —edit-key .
gpg --edit-key KEY_ID> gpg> trust
Далее вам будет предложен выбор уровня доверия.
1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu
После подтверждения выбора можно выйти из редактирования ключа командой quit .
Дополнительные материалы
Примеры критики PGP:
- Operational PGP
- Using OpenPGP subkeys in Debian development
- signify: Securing OpenBSD From Us To You
- Поблагодарить автора
- Telegram канал
Расшифровка.
Открываем полученное зашифрованное сообщение и нажимаем на второй справа значок на панели Outlook Express, либо на команду меню PGP decrypt message. Через несколько секунд сообщение будет расшифровано и появится в окошке.
Существует еще один способ использования PGP, который чуть-чуть сложнее, чем шифрование через Outlook Express. Этот способ можно применять в том случае, если не удается установить PGP вместе с программой Outlook Express.
Создаем сообщение в Outlook Express, затем выделяем его через команды edit — select all и копируем в буфер Windows через команду copy.
После этого ставим мышку на значок PGP в панели задач, нажимаем на мышку и исполняем команду encrypt clipboard.
Появляется окно диалога с PGP под названием key selection dialog.
Необходимо выделить адрес (открытый ключ) корреспондента (ключ получателя сообщения) в этом окне и щелкнуть по нему мышкой два раза, чтобы он появился внизу, потом нажимаем на OK и программа зашифрует все содержимое clipboard.
После этого заходим в сообщение с текстом, который был ранее выделен, ставим мышку на поле сообщения, нажимаем на правую кнопку мышки и исполняем команду paste.
В результате зашифрованное содержимое clipboard заменяет предыдущее сообщение и на этом процесс шифровки закончился. Теперь можно отправлять сообщение обычным образом.
Расшифровывать полученные сообщения можно таким же образом: т.е. выделяем полученный зашифрованный текст, копируем его в буфер Windows clipboard, заходим мышкой в меню PGP через панель задач Windows и выбираем команду decrypt and verify clipboard.
Появляется окно программы PGP, в которое необходимо ввести пароль, вводим пароль в это окно, нажимаем на OK и перед нами предстает расшифрованное сообщение.
Естественно, перед тем, как это сделать, необходимо создать пару ключей, как было описано ранее.
Также кроме этого способа можно применить еще один способ шифрования (третий способ).
Можно создать текст в каком-либо редакторе, например блокноте, и сохранить его в виде файла. После этого в проводнике выделяем файл, нажимаем на правую кнопку мышки и видим, что в нижней части команды опций появилась еще одна команда под названием PGP, после чего, поставив мышку на PGP, мы увидим раскрывающееся меню, состоящее из 4 команд:
• encrypt and sing
Нажимаем на первую команду и перед нами появляется диалог выбора открытого ключа корреспондента, выбираем ключ, нажимаем на OK, вводим пароль и файл зашифрован.
После этого рекомендуется выполнить еще одну команду в меню PGP: wipe (стереть, уничтожить оригинальный файл). Иначе, какой смысл шифровать файл, если на диске компьютера остался первоначальный файл?
После этой операции у файла остается то же самое имя, но меняется тип расширения на
Теперь этот файл можно прикрепить к сообщению и отправить вместе с ним.
В результате мы узнали, что существует три основных способа шифрования информации:
• Первый — самый удобный, напрямую в почтовой программе;
• Второй — через копирование текста в буфер обмена Windows;
• Третий — через шифрование всего файла, который затем прикрепляется к сообщению.
При работе с программой PGP появляется следующая проблема: при шифровании исходящих сообщений открытым ключом своего корреспондента, отправитель сообщений не может их потом прочитать, ввиду того, что исходящее сообщение шифруется с помощью закрытого ключа отправителя и открытого ключа его корреспондента, т.е. только получатель может прочитать такое сообщение. В результате получается, что отправитель не может впоследствии прочитать свои сообщения, отправленные им ранее.
В настройках PGP есть опция, позволяющая зашифровывать свои исходящие сообщения таким образом, чтобы их можно было потом прочитать (взять из архива и прочитать).
Для этого надо щелкнуть мышкой по символу PGP на панели задач, исполнить команду PGP preferences, зайти в General и поставить галочку напротив команды Always encrypt to default key.
Кроме этого нужно зайти в PGP keys, выбрать мышкой свой ключ, зайти в меню keys и исполнить команду set as default key.
Здесь же можно изменить свою парольную фразу: выделить мышкой свой ключ, нажать на правую кнопку мышки, исполнить команду key properties , change passphrase и поменять свою парольную фразу.
Парольную фразу рекомендуется менять, по крайней мере, раз в полгода, хотя если вы постарались создать надежную парольную фразу и исключили какую-либо возможность разгадки этой фразы, кем бы то ни было, то этого можно и не делать.
Кроме того, там же (в key properties) можно увидеть fingerprint или своеобразные «отпечатки пальцев», состоящие из комбинации цифр и букв.
Эти отпечатки пальцев (идентификатор ключа) хороши тем, что можно предотвратить незаконное вторжение какими-либо людьми в вашу переписку. Т.е. кто-либо может перехватить ваш открытый ключ при отправке вашему корреспонденту или кому-либо еще и заменить своим открытым ключом. Когда ваш корреспондент получит этот ключ, то он будет думать, что это ваш ключ, когда в действительности это ключ третьего лица. Вы зашифровываете свое сообщение этим открытым ключом и в результате получается, что ваше сообщение не доходит до вашего корреспондента, а прочитывается другой третьей стороной, которая затем меняет это сообщение и отсылает вам под видом ответа от вашего корреспондента.
Для того чтобы исключить такие проблемы, владельцы открытых ключей созваниваются по телефону и зачитывают друг другу отпечатки своих ключей. В таком случае достигается 100% надежность того, что информация не попала в чужие руки.
Расшифровка файлов с помощью PGP
Поддержка этой версии Orchestrator завершена. Рекомендуется выполнить обновление до Orchestrator 2019.
Действие PGP Decrypt File расшифровывает файл или все дерево папок с помощью созданного файла ключа PGP и парольной фразы. При расшифровке всей папки дерево папок сохраняется ниже корневой папки. Например, при расшифровке C:\Documents and Settings\Administrator\My Documents\*.* и всех вложенных папок будут расшифрованы все файлы в папке «Мои документы», а также все файлы в папке «Мои документы». Все файлы во вложенных папках будут находиться в одной вложенной папке в папке Output.
Вы можете использовать действие расшифровки файлов с помощью PGP для расшифровки файлов, которые были зашифрованы при выполнении резервного копирования. Чтобы использовать это действие, необходимо установить исполняемый файл gpg.
Установка GnuPG
GnuPG — это программа с открытым исходным кодом, используемая в стандартных действиях шифрования и расшифровки с помощью PGP для шифрования и расшифровки файлов. Следующие процедуры описывают способы установки этого исполняемого файла и связанного файла на сервер Runbook или компьютер, на котором выполняется Runbook Designer.
Установка GnuPG версии 1.x и 2.0.x
Выполните указанные ниже действия.
- Загрузите файлы gpg.exe и iconv.dll версии 1.4.10 или более поздней из GnuPG.
- Сохраните gpg.exe и iconv.dll в папку :\Program Files (x86)\Common Files\Microsoft System Center \Orchestrator\Extensions\Support\Encryption на каждом сервере Runbook и компьютере с Designer Runbook.
Установка GnuPG версии 2.x
Выполните указанные ниже действия.
- Загрузите файлы gpg.exe, gpg-agent.exe, iconv.dll, libassuan-0.dll, libgcrypt-20.dll, libgpg-error-0.dll, libnpth-0.dll, libsqlite3-0.dll и zlib1.dll версии 2.x или более поздней из GnuPG.
- Сохраните gpg.exe, gpg-agent.exe, iconv.dll, libassuan-0.dll, libgcrypt-20.dll, libgpg-error-0.dll, libnpth-0.dll, libsqlite3-0.dll и zlib1.dll в папку :\Program Files(x86)\Common Files\Orchestrator\Extensions\Support\Encryption на каждом сервере Runbook и компьютере, на котором запущена Designer Runbook.
Настройка действия расшифровки с помощью PGP
Используйте следующие сведения для настройки действия расшифровки файлов с помощью PGP.
Вкладка «Подробные сведения»
Параметры | Инструкции по настройке |
---|---|
Путь | Введите путь к файлам, которые требуется расшифровать. Вы можете использовать подстановочные знаки ? и * для указания файлов, которые вы расшифровываете. В этом поле можно ввести только символы из текущего языкового стандарта системы. Если вы используете другие символы, произойдет сбой. |
Включая вложенные каталоги | Выберите этот параметр, чтобы найти все файлы, которые соответствуют указанному имени, во всех вложенных каталогах в папке, указанной в пути. |
Выходная папка | Введите путь к папке, в которой должны храниться расшифрованные файлы. |
Skip | Выберите этот параметр, чтобы пропустить расшифровку файла, если файл с таким именем найден в папке выходных данных. |
Overwrite | Выберите этот параметр, чтобы перезаписать все файлы с тем же именем, что и у полученного расшифрованного файла. |
Создать уникальное имя | Выберите этот параметр, чтобы дать расшифрованному файлу уникальное имя, если файл с таким именем уже существует. |
Вкладка «Дополнительно»
Параметры | Инструкции по настройке |
---|---|
Папка набора ключей | Введите расположение папки keyring, содержащей файл секрета, который будет использоваться для расшифровки файлов. Файл секретных ключей (*.skr) можно переименовать с расширением *.gpg. |
Парольная фраза | Введите парольную фразу, связанную с файлом keyring. |
Опубликованные данные
В следующей таблице перечислены опубликованные элементы данных.
Элемент | Описание |
---|---|
Папка набора ключей | Путь к папке набора ключей, содержащей ключ, используемый для расшифровки файлов. |
Папка выходных данных | Путь к папке, где сохранены расшифрованные файлы. |
Файлы для расшифровки | Количество файлов, которые Orchestrator попытался расшифровать. |
Расшифрованные файлы | Количество успешно расшифрованных файлов. |
Имя расшифрованного файла | Путь и имя полученного расшифрованного файла. |
Обратная связь
Были ли сведения на этой странице полезными?
Расшифровка pgp сообщения. Программа шифрования PGP. Оповещение адресатов об использовании PGP
13.5. Использование программы PGP для шифрования сообщений электронной почты
PGP (Pretty Good Privacy) – это криптографическая (шифровальная) программа с высокой степенью надежности, которая позволяет пользователям обмениваться информацией в электронном виде в режиме полной конфиденциальности.
И если у вас есть секретный способ отправки ключей декодирования, почему вы не используете это для всех своих секретных сообщений? Для этого используется криптография с открытым ключом. У каждого человека в разговоре есть способ создать два ключа. Один из них — их секретный ключ, который они хранят для себя и никогда не позволят кому-либо еще знать. Другой — открытый ключ, который они раздают всем, кто хочет общаться с ними. Не важно, кто может видеть открытый ключ. Вы можете разместить его в Интернете, где каждый может его увидеть.
«Ключи» сами по себе, на самом деле, очень большие числа, с определенными математическими свойствами. Открытый ключ и закрытый ключ связаны. Если вы кодируете что-то с помощью открытого ключа, то кто-то еще может его декодировать с помощью соответствующего секретного ключа.
Главное преимущество этой программы состоит в том, что для обмена зашифрованными сообщениями пользователям нет необходимости передавать друг другу тайные ключи, т.к. эта программа построена на принципе публичной криптографии или обмене открытыми (публичными) ключами.
Пользователи могут в открытом виде посылать друг другу свои публичные ключи с помощью сети Интернет и при этом не беспокоиться о возможности несанкционированного доступа каких-либо третьих лиц к их конфиденциальным сообщениям.
Давайте посмотрим, как это может работать. Он может его декодировать, потому что у него есть соответствующий закрытый ключ, но никто другой не может. Криптография с открытым ключом избавляет от проблемы контрабанды ключа декодирования человеку, которому вы хотите отправить сообщение, потому что у этого человека уже есть ключ. Вам просто нужно овладеть подходящим общедоступным ключом кодирования, который получатель может раздавать всем, включая шпионов. Поскольку это полезно только для кодирования сообщения, это бесполезно для любого, кто пытается декодировать сообщение.
В PGP применяется принцип использования двух взаимосвязанных ключей: открытого и закрытого. К закрытому ключу имеете доступ только вы, а свой открытый ключ вы распространяете среди своих корреспондентов.
PGP шифрует сообщение таким образом, что никто кроме получателя сообщения, не может ее расшифровать. Создатель PGP Филипп Циммерман открыто опубликовал код программы, который неоднократно был исследован специалистами-криптоаналитиками высочайшего класса и ни один из них не нашел в программе каких-либо слабых мест
Если вы кодируете сообщение с определенным открытым ключом, его можно декодировать только соответствующим личным ключом. Но верно и обратное. Если вы кодируете сообщение с определенным личным ключом, его можно декодировать только с помощью соответствующего открытого ключа.
Оповещение адресатов об использовании PGP
На первый взгляд, не кажется, что есть какое-то преимущество в создании секретного сообщения с вашим личным ключом, которое могут взломать все в мире. Подписание также делает сообщения защищенными от несанкционированного доступа. Таким образом, подписанное сообщение, как гарантируется, исходит из определенного источника и не должно быть запущено в пути.
Как работает PGP
Когда пользователь шифрует сообщение с помощью PGP, то программа сначала сжимает текст, что сокращает время на отправку сообщения (например, через модем) и увеличивает надежность шифрования. Большинство приемов криптоанализа (взлома зашифрованных сообщений) основаны на исследовании «рисунков», присущих текстовым файлам, что помогает взломать ключ. Сжатие ликвидирует эти «рисунки» и таким образом повышает надежность зашифрованного сообщения.
Затем PGP генерирует сессионный ключ, который представляет собой случайное число, созданное за счет движений вашей мышки и нажатий на клавиши клавиатуры.
Таким образом, криптография с открытым ключом позволяет безопасно шифровать и отправлять сообщения всем, чей открытый ключ вам известен. Если другие знают ваш открытый ключ, они могут отправлять вам сообщения, которые вы можете расшифровать. И если люди знают ваш открытый ключ, вы можете подписывать сообщения, чтобы эти люди знали, что они могли бы только прийти от вас. И если вы знаете открытый ключ другого человека, вы можете декодировать подписанное ими сообщение и знать, что оно только от них.
Теперь должно быть ясно, что криптография с открытым ключом становится более полезной, чем больше людей знают ваш открытый ключ. Также должно быть очевидно, что вам необходимо сохранить секретный ключ в безопасности. Если кто-то еще получит копию вашего закрытого ключа, они могут притворяться вами и подписывать сообщения, утверждающие, что они были написаны вами. Самая важная часть использования криптографической системы с открытым ключом — очень осторожно защищать ваш секретный ключ.
Как только данные будут зашифрованы, сессионный ключ зашифровывается с помощью публичного ключа получателя сообщения и отправляется к получателю вместе с зашифрованным текстом.
Расшифровка происходит в обратной последовательности. Программа PGP получателя сообщения использует закрытый ключ получателя для извлечения временного сессионного ключа, с помощью которого программа затем дешифрует зашифрованный текст.
Он также позволит вам загружать открытые ключи других людей и загружать открытые ключи в «,», которые являются хранилищами, в которых другие люди могут найти ваш ключ. Если есть одна вещь, которую вам нужно убрать из этого обзора, это так: вы должны хранить секретный ключ в безопасном месте и защищаться длинным паролем. Вы можете предоставить свой открытый ключ всем, с кем хотите общаться с вами, или кто хочет узнать, действительно ли сообщение появилось от вас.
Возможно, вы обнаружили потенциальный недостаток в том, как работает криптография с открытым ключом. Если бы люди поверили мне, они могли бы начать отправлять секретные сообщения Бараку, зашифрованные с помощью ключа. Или они могут полагать, что все, что подписано с этим ключом, является присяжным заявлением Барака.
Ключ — это число, которое используется криптографическим алгоритмом для шифрования текста. Как правило, ключи — это очень большие числа. Размер ключа измеряется в битах. Число, представленное 1024 битами — очень большое. В публичной криптографии, чем больше ключ, тем его сложнее взломать.
В то время как открытый и закрытый ключи взаимосвязаны, чрезвычайно сложно получить закрытый ключ исходя из наличия только открытого ключа, однако это возможно при наличии большой компьютерной мощности. Поэтому крайне важно выбирать ключи подходящего размера: достаточно большого для обеспечения безопасности и достаточно малого для обеспечения быстрого режима работы. Более большие ключи будут более надежными в течение более длительного срока времени. Поэтому если вам необходимо зашифровать информацию с тем, чтобы она хранилась в течение нескольких лет, то необходимо использовать более длинный ключ.
Это довольно редко, но на самом деле это произошло с некоторыми людьми в реальной жизни, в том числе с некоторыми из авторов этого документа — некоторые люди, которые писали им, были обмануты! Еще одна подлая атака заключается в том, что злоумышленник сидит между двумя людьми, разговаривающими в Интернете, подслушивая их всю беседу и иногда вставляя злоумышленников собственные вводящие в заблуждение сообщения в разговор. Благодаря дизайну Интернета как системы, которая отправляет сообщения на разных компьютерах и частных вечеринках, эта атака вполне возможна.
Ключи хранятся на жестком диске вашего компьютера в зашифрованном состоянии в виде двух файлов: одного для открытых ключей, а другого — для закрытых. Эти файлы называются «кольцами» (keyrings). В течение работы с программой PGP вы, как правило, будете вносить открытые ключи ваших корреспондентов в открытые «кольца». Ваши закрытые ключи хранятся в вашем закрытом «кольце».
В этих условиях обмен ключами без предварительного соглашения может стать очень рискованным. «Вот мой ключ», — объявляет человек, который звучит как Барак Обама, и отправляет вам файл с открытым ключом. Но что сказать, что кто-то не дождался этого момента, пронзил передачу Обамы ключом и затем вставьте его?
Я слышал и обеспокоен тем, что исходные тексты последних версий PGP не предоставляются для свободного доступа. Это правда?
Как мы доказываем, что определенный ключ действительно принадлежит определенному человеку? Один из способов — получить ключ от них напрямую, но это не намного лучше, чем наша первоначальная задача получить секретный ключ, если кто-то не заметил нас. Тем не менее, люди обмениваются открытыми ключами, когда они встречаются, в частном порядке и в публичных криптопартиях.
Цифровая подпись
Огромным преимуществом публичной криптографии также является возможность использования цифровой подписи, которая позволяет получателю сообщения удостовериться в личности отправителя сообщения, а также в целостности (верности) полученного сообщения.
Цифровая подпись исполняет ту же самую функцию, что и ручная подпись. Однако ручную подпись легко подделать. Цифровую же подпись почти невозможно подделать.
Для определения целостности полученного сообщения используется хеш-функция. В чем-то она похожа на «контрольную сумму», или код проверки ошибок CRC, который компактно представляет сообщение и используется для проверки сообщения на наличие изменений.
Эти ключевые серверы будут передавать подписанные ключи всем, кто их запрашивает. Но пока, если вам нужна альтернатива передаче ключей друг другу лично, использование сети доверия и сети серверов с открытым ключом — ваш лучший вариант. Как мы уже отмечали, информация о ваших сообщениях может быть столь же показательной, как и их содержимое.
Действительно, в некоторых странах вы можете столкнуться с тюремным заключением просто за отказ в расшифровке зашифрованных сообщений. Действительно, если вы загружаете свой открытый ключ на серверы ключей или подписываете ключи других людей, вы эффективно показываете миру, какой ключ принадлежит вам, и кто вы знаете.
«Хэш-функция» действует таким образом, что в случае какого-либо изменения информации, пусть даже на один бит, результат «хэш-функции» будет совершенно иным. С помощью «хэш-функции» и закрытого ключа создается «подпись», передаваемая программой вместе с текстом.
При получении сообщения получатель использует PGP для восстановления исходных данных и проверки подписи.
Цифровая подпись и шифрование сообщений
Вам не нужно прикреплять свое имя к ключу. Скрывать то, что вы общаетесь с конкретным человеком, сложнее. Версия 52 Версия 45 Версия 38 Версия 31 Версия 24 Версия 17. Инфраструктура электронной почты, которую каждый использует, по своей конструкции не защищена. В то время как большинство людей подключаются к своим почтовым серверам с использованием безопасного соединения, некоторые серверы обеспечивают незащищенный доступ. Кроме того, поскольку сообщение перемещается по пути передачи от отправителя к получателю, соединения между каждым сервером не обязательно безопасны.
При условии использования надежной формулы «хэш-функции» невозможно вытащить подпись из одного документа и вложить в другой, либо каким-то образом изменить содержание сообщения. Любое изменение подписанного документа сразу же будет обнаружено при проверке подлинности подписи.
Парольная фраза
Еще одним средством защиты в PGP является парольная фраза.
Парольная фраза — это сочетание нескольких слов, которое теоретически более надежно, чем парольное слово. Парольная фраза должна быть такой, чтобы ее потом не забыть и чтобы третьи лица не могли ее разгадать.
Если вы забудете свою парольную фразу, то уже никогда не сможете восстановить свою зашифрованную информацию. Ваш закрытый ключ абсолютно бесполезен без знания парольной фразы.
Возможно, третьи стороны могут перехватывать, читать и изменять сообщения электронной почты по мере их передачи. Используя сильные протоколы шифрования, вы можете убедиться, что ваши данные безопасны от посторонних глаз и что только люди, которых вы решаете, должны видеть, что ваша информация имеет к нему доступ. Шифрование — это то, что может выиграть каждый пользователь компьютера.
Но это также вполне безопасно, так как сообщения могут быть дешифрованы только с помощью секретных ключей, защищенных паролем. Подписывая ваше зашифрованное сообщение своим личным ключом, вы предоставляете получателю сообщения сообщение о том, было ли изменено содержимое сообщения. Если даже одна буква в сообщении будет изменена до того, как она будет расшифрована, подпись будет признана недействительной, предупреждая получателя о нарушении игры.
Генерация ключей
1. Нажмите кнопку «ПУСК» и выберете команду «Выполнить». Выберете программу PGPKEYS.
2. Зайдите в меню KEYS и выполните команду NEW KEY.
Нажмите на «Далее»
Введите свое имя и электронный адрес
Нажмите на «Далее»
Выберите размер ключа 2048 или 1024 и нажмите на «Далее»
Выделите фразу key pair never expires (срок действия ключевой пары никогда не истекает) и нажмите на «Далее»
Два раза введите секретный пароль и нажмите на «Далее»
И если это достаточно хорошо для Сноудена, это достаточно хорошо для большинства, если не для всех, других людей, которым нужно зашифровать вещи. Вам также необходимо убедиться, что у вас есть подходящие инструменты для вашего почтового клиента. Создайте свои общедоступные и закрытые ключи.
В зависимости от используемого вами программного обеспечения вы будете использовать разные методы для генерации новых ключей. Вам также придется решить, следует ли публиковать открытый ключ на ключевом сервере. В общем, это хорошая идея, так как это позволит другим людям найти ваш открытый ключ и отправить вам зашифрованные сообщения, даже если вы ранее не общались.
Программа начнет генерировать пару ключей. Если программе не хватает информации, то она может попросить нажать на несколько клавиш наугад и подвигать мышку. Это необходимо выполнить.
Затем программа сообщит, что процесс генерации ключей закончен.
Нажмите на «Далее»
Потом еще раз нажмите на «Далее»
Затем нужно нажать на команду Done
Вы будете делать это по-разному в зависимости от вашего почтового клиента; лучший способ узнать, что именно делать, — это посмотреть в файлы справки для вашего приложения. Получите открытые ключи для своих контактов. Однако есть еще один важный шаг. Для того, чтобы кто-то расшифровывал отправленное им электронное письмо, вам нужно иметь открытый ключ.
Вы также можете искать своего друга на сервере ключей. После того, как вы нашли ключ для своего контакта, его необходимо загрузить и импортировать в свое приложение, используя требуемые процедуры. Все это может показаться большой работой, и это, безусловно, может быть. К счастью, как только вы получите систему и начнете привыкать к этому процессу, все начнет работать немного плавно, и вы мгновенно отпустите зашифрованные электронные письма. Некоторые группы пытаются сделать весь процесс проще для пользователей, одним из которых является то, о чем мы говорили ранее.
На этом процесс создания пары ключей закончился и можно начинать пользоваться программой.
3. Обменяйтесь со своими корреспондентами открытыми ключами. Для этого необходимо исполнить команду LAUNCH PGP KEYS, выделить свой ключ (файл со своим именем) в окошке, нажать на правую кнопку мышки и выбрать команду EXPORT.
Появится окошко, с помощью которого можно указать путь, где сохранить файл с названием.
И вам не обязательно быть гениальным компьютером, чтобы использовать его для шифрования ваших электронных писем и файлов, что значительно увеличивает вашу электронную и электронную безопасность. Примечание. Инструкции, приведенные здесь, относятся к версиям 6 и 6.
По завершении создания ключа вы увидите следующее окно. Здесь вы можете видеть, с кем вы обменяли ключи, все ли они действительны и имеют обзор силы и типа ключей. На данный момент все выглядит немного мрачно, у вас есть только один ключ: ваш собственный. Для обмена зашифрованными электронными письмами с партнером необходим его открытый ключ. Вы получаете его либо прямо от него, либо с ключевого сервера. Это компьютеры в Интернете, на которые каждый может отправлять свой открытый ключ. Оттуда партнер по связям может загрузить ключ, даже если владелец находится в отпуске.
Этот файл необходимо выслать своему корреспонденту, в обмен на его открытый ключ.
Как только вы получите открытый ключ своего корреспондента, надо его запустить, нажав на него двойным щелчком мышки, выделить его в окошке и выполнить команду IMPORT.
4. Теперь можно пересылать друг другу зашифрованные сообщения, которые шифруются открытым ключом получателя сообщения.
Для начала вы можете скачать открытый ключ Алисы и написать ей электронное письмо: Нажмите. Первая версия уже имела место при выполнении алгоритмов шифрования, на которые даже американская разведывательная служба кусает зубы. Обычные методы используют один и тот же ключ для кодирования и декодирования. Получатель может прочитать сообщение только в том случае, если он знает ключ, который использует отправитель. Этот метод имеет большой недостаток: отправитель и получатель должны согласовать общий ключ и обменять его.
Получение открытого ключа с сервера ключей
Это, конечно, не зашифровано, поэтому существует вероятность того, что эта связь будет контролироваться. Затем злоумышленник мог прочитать все остальные сообщения: у него уже есть ключ. У каждого коммуникационного партнера есть два ключа: частный и публичный. Открытый ключ можно распределять произвольно, по электронной почте, через веб-сайт или даже на дискете. С помощью этого открытого ключа вы можете только шифровать сообщения, но не читать их. И если текст был закодирован таким образом, используя открытый ключ, только владелец соответствующего закрытого ключа может расшифровать текст.
Свой открытый ключ можно поместить на специальном сервере, тогда он будет доступен всем желающим вести с вами переписку. Программа PGP сама предлагает вам выбрать, как сообщить корреспондентам свой общедоступный ключ — храня его на сервере или послав письмом.
Как послать зашифрованное сообщение
После того, как открытый (публичный) ключ вашего корреспондента будет установлен на вашем компьютере, сообщение можно отправлять получателю.
Существует три основных способа шифрования информации:
— напрямую в почтовой программе;
— через копирование текста в буфер обмена Windows;
— через шифрование всего файла, который затем прикрепляется к сообщению.
Рассмотрим второй способ.
1. Составить сообщение в почтовой программе.
2. Выделить сообщение и скопировать в буфер Windows.
3. Запустить PGP. Появляется окно диалога с PGP под названием PGPkeys.
4. Выделить адрес (открытый ключ) корреспондента (ключ получателя сообщения) и щелкнуть по нему мышкой два раза, чтобы он появился внизу, потом нажать OK и программа зашифрует все содержимое clipboard.
5. После этого зайти в сообщение с текстом, который был ранее выделен, установить мышку на поле сообщения, нажать на правую кнопку мышки и исполнить команду Paste.
В результате зашифрованное содержимое clipboard заменяет предыдущее сообщение, и на этом процесс шифровки закончился. Теперь можно отправлять сообщение обычным образом.
Рассмотрим третий способ.
1. Создать текст в каком-либо редакторе, например, Блокноте, и сохранить его в виде файла.
2. В проводнике выделить файл и нажать на правую кнопку мышки. В нижней части команды опций появится команда под названием PGP. Поставив мышку на PGP, увидим раскрывающееся меню, состоящее из 4 команд:
encrypt
sign
encrypt and sign
wipe
3. Выбрать команду encrypt. Появится диалог выбора открытого ключа корреспондента.
4. Выбрать ключ, нажать на OK, ввести пароль. В результате получим зашифрованный файл.
После этого рекомендуется выполнить еще одну команду в меню PGP: wipe (стереть, уничтожить оригинальный файл).
После этой операции у файла остается то же самое имя, но меняется тип расширения на.
Теперь этот файл можно прикрепить к сообщению и отправить вместе с ним.
Как расшифровать полученное сообщение
Расшифровать полученное сообщение можно так. Выделить полученный зашифрованный текст, скопировать его в буфер Windows clipboard, зайти мышкой в меню PGP через панель задач Windows и выбрать команду decrypt and verify clipboard. Появляется окно программы PGP, в которое необходимо ввести пароль и нажать на OK. Сообщение будет расшифровано.
При работе с программой PGP появляется следующая проблема: при шифровании исходящих сообщений открытым ключом своего корреспондента отправитель сообщений не может их потом прочитать. Только получатель может прочитать такое сообщение. В результате получается, что отправитель не может впоследствии прочитать свои зашифрованные сообщения, отправленные им ранее.
В настройках PGP есть опция, позволяющая зашифровывать свои исходящие сообщения таким образом, чтобы их можно было потом прочитать (взять из архива и прочитать).
Для этого надо щелкнуть мышкой по символу PGP на панели задач, исполнить команду PGP preferences, зайти в General и поставить галочку напротив команды Always encrypt to default key.
Кроме этого нужно зайти в PGPkeys, выбрать мышкой свой ключ, зайти в меню keys и исполнить команду set as default key.
Здесь же можно изменить свою парольную фразу:
— выделить мышкой свой ключ,
— нажать на правую кнопку мышки, исполнить команду key properties, change passphrase и поменять свою парольную фразу.
Краткий справочник команд PGP
Зашифровать текстовый файл с открытым ключом получателя:
pgp -e textfile her_userid
Подписать текстовый файл вашим секретным ключом:
pgp -s textfile [-u your_userid]
Подписать текстовый файл вашим секретным ключом и, затем, зашифровать его с открытым ключом получателя:
pgp -es textfile her_userid [-u your_userid]
Для шифрования текстового файла стандартным криптографическим методом:
pgp -c textfile
Для расшифровки зашифрованного файла или для проверки целостности подписи подписанного файла:
pgp ciphertextfile [-o plaintextfile]
Шифрование данных — непременный хакерский ритуал, в котором каждый применяет свой набор утилит. Если для десктопных ОС выбор предлагается большой, то в мобильных операционках пока доступны единичные приложения. Мы обратили внимание на новое творение разработчика SJ Software — PGPTools. Первая версия этой программы вышла в апреле. За полгода список поддерживаемых платформ существенно расширился. Теперь он включает Windows 10, Windows Phone, iOS (8.0 и выше), OS X (начиная с 10.9) и Android (4.0 и новее). Для тестирования была выбрана последняя версия PGPTools v.1.10 под ОС Android. Скачать программу можно зарегистрировашись на форуме 4Pda.ru в этой теме .
Еще до установки программы становит ся очевидно, что ее авторы придерживаются минималистических взглядов. В инсталляционном пакете PGPTools занимает полтора мегабайта, а после установки — всего пять с половиной. Радует и то, что список запрашиваемых разрешений состоит ровно из одного пункта — записи на карту памяти. Никакой отправки СМС, доступа в интернет и к личным сведениям ей не требуется.
Интерфейс утилиты тоже крайне прост и легок в освоении. С одной стороны, это позволяет быстро в ней разобраться, а с другой — вызывает легкую тоску по привычным менюшкам с длинными списками настроек. В текущей версии PGPTools можно только задать пароль и выбрать длину ключа. Зато программа позволяет создать несколько пар ключей и управлять ими из отдельной вкладки. Здесь можно выбрать текущий ключ и желаемые действия с ним. Поддерживается экспорт (через буфер обмена или функцию «передать»), а также возможен импорт ранее созданных PGP-ключей.
приятно что программе не требуется каких либо дополнительных разрешений.
ИСПОЛЬЗОВАНИЕ PGPTOOLS
Начинается работа в программе с простого шага — создания пары ключей. Для этого нужно ввести свое имя или никнейм, адрес электронной почты (он будет использоваться для отправки зашифрованных и/или подписанных писем) и пароль.
В схеме PGP все ключи генерируются парами, поскольку их математически связывает общая парольная фраза. Ее стоит сделать длинной и сложной, но без фанатизма — забытый пароль не восстановят. Ключи в парах генерируются разные по своей структуре — асимметричные. Публичный ключ назван так потому, что его можно свободно передавать кому угодно. Он служит
для проверки подписи его владельца и обеспечивает возможность отправить ему зашифрованное сообщение. Расшифровать такое послание можно только парным ему секретным ключом. На то он и секретный, чтобы знал его лишь создатель этой пары ключей.
Упрощенно говоря, публичным ключом письмо шифруют перед отправкой, а секретным дешифруют после получения. Это как бы цифровая реализация замка с защелкой: захлопнуть дверь с ним может любой, а вот открыть — только владелец ключа. Мы сделали на пробу две пары ключей: минимально (1024 бита) и максимально (4096 бит) возможной длины.
Основная панель в PGPTools носит такое же название. Она переключается между двумя режимами: шифрованием и дешифрованием. Ее вид зависит от того, какой ключ был ранее выбран на панели key list — публичный или секретный. Зашифровать любой текст с помощью PGPTools можно в пару кликов. Для этого достаточно вставить его в поле с подсказкой Enter source из любого источника и нажать кнопку Encrypt. Шифрование будет выполнено с использованием выбранного ранее публичного ключа.
Расшифровать его чуть сложнее. Нужно выбрать секретный ключ (парный использованному для шифрования публичному) и ввести пароль, заданный при их совместной генерации. Блок зашифрованного текста также вставляется в поле источника, а результат дешифровки отображается ниже после нажатия кнопки Decrypt. Основное назначение PGPTools как программы с асимметричной схемой шифрования состоит в защите переписки (в частности, почты) с возможностью передать ключ собеседнику по ненадежному каналу. Если бы один
и тот же ключ использовался для шифрования/дешифрования сообщений, то его перехват скомпрометировал бы всю переписку. Перехват открытых ключей практически бесполезен. Обменявшись ими, можно сразу начать обмен зашифрованными сообщениями. После создания их не открыть даже отправителю. Это может сделать только получатель — своим секретным ключом и после ввода парольной фразы.
Передавая зашифрованные письма, убедись, что блок шифротекста вставляется как есть — без разрывов и переносов. Иначе его нельзя будет дешифровать из-за появления искажений.
ПАРА (ТЫСЯЧ) СЛОВ ОБ АЛГОРИТМЕ
В классической реализации Циммермана схема PGP использует одну хеш-функцию и два криптографических алгоритма: один с симметричным и один с асимметричным ключом. Также в ней применяется сеансовый ключ, создаваемый при помощи генератора псевдослучайных чисел. Такой сложный процесс обеспечивает более надежную защиту данных, то есть математическую сложность восстановления секретного ключа из парного ему публичного.
Выбор алгоритмов сейчас доступен очень широкий. Именно он в большой степени влияет на качество конкретной реализации PGP. Обычно используют AES и RSA, а из хеш-функций выбирают ту, что, по современным представлениям, наименее подвержена коллизиям (RIPEMD-160, SHA-256). В PGPTools для шифрования данных используется алгоритм IDEA, для управления ключами и цифровой подписи — RSA. Хеширование происходит с помощью функции MD5.
Сам многостадийный процесс (де)шифрования данных у любой программы реализован в одном
из наборов общедоступных криптографических библиотек. Все создаваемые PGPTools ключи содержат в названии версии BCPG, что косвенно указывает на использование Bouncy Castle OpenPGP API. При проверке этого предположения в файле com.safetyjabber.pgptools.apk было обнаружено прямое указание на библиотеки Bouncy Castle.
Они реализуют схему OpenPGP согласно RFC 4880, но имеют свои особенности. Одна из них состоит в том, что (в зависимости от выбранной версии) в них может не применяться подключ шифрования. Также в этих библиотеках замечены ограничения эффективной длины ключа. Это означает, что выше некоего предела (обычно 1024 бита) попытка создать ключ большей длины не будет иметь практического смысла. Алгоритм не сможет обеспечить высокое качество ключей, поскольку в парах появится слишком много совпадающих блоков.
Для проверки мы экспортировали публичный и секретный PGP-ключ каждой пары в текстовый файл и сравнили их. У пары ключей с длиной 1024 бита повторяющихся фрагментов нет, как и должно быть в качественной реализации.
Повторяющиеся блоки в ключах
С четырехкилобитными ключами ситуация выглядит иначе. Отличающихся фрагментов в паре слишком мало (они выделены красным), а совпадающих -чересчур много.
Строго говоря, отличий у них еще меньше, чем видно на скриншотах. Просто используемая программа сравнения не умеет игнорировать смещение блоков, а проверяет построчно. Первые тринадцать строк совпали почти полностью, да и концовка идентична процентов на семьдесят. Если ты сгенерировал пару ключей с большим числом совпадений, то просто удали ее и создай другую.
УТЕШИТЕЛЬНЫЙ ВЫВОД
Выявленные в ходе тестирования недостатки носят общий характер. Они типичны для многих программ, поскольку касаются кода не самого приложения, а используемых в нем популярных библиотек. Криптографическое сообщество рекомендует разработчикам избегать Bouncy Castle OpenPGP. Мы надеемся, что в следующих версиях авторы PGPTools возьмут за основу более продвинутые реализации.
В текущем виде программа уже способна обеспечить базовый уровень приватности и может быть рекомендована как утилита, добавляющая функционал PGP на мобильные устройства. Она поможет создать или прочесть зашифрованные тексты практически на любом современном смартфоне, а также скрыть тайную переписку от любопытных глаз. Любая защита может считаться стойкой ровно до тех пор, пока затраты на ее преодоление оказываются существенно выше, чем предполагаемая стоимость оберегаемых данных.
По данным NIST, ключи PGP с длиной 1024 бита и менее считались ненадежными еще несколько лет назад. Тогда они вскрывались за приемлемое время на мощных серверах, а сегодня щелкаются как семечки в сетях распределенных вычислений. Помимо выбора длины ключа, уровень защиты определяется также сложностью парольной фразы и самим механизмом реализации PGP.
Last updated by at Ноябрь 18, 2016 .