Обычным пользователям компьютеров простительно то, что они не имеют представления о том, что такое PGP. Под поверхностью современного компьютерного опыта происходит так много всего, что даже критически важные инструменты безопасности, такие как PGP, спрятаны.
Безусловно, есть специализированные круги, которые регулярно и явно используют PGP. Прилежные пользователи Linux хотя бы мельком знакомы с PGP, поскольку тот факт, что производители не установили нашу ОС для нас, означает, что мы должны сами проверить ее целостность.
В противном случае, если ваша работа не касается Что касается информационной безопасности, то понятное дело, что PGP будет для вас загадкой. Но, как я уже сказал, для этой реальности это не менее важно. Фактически, PGP сыграла значительную роль в обеспечении безопасного общения в Интернете. На самом деле это не так, потому что он широко используется, хотя он определенно используется в утилитах для установки программного обеспечения по всему миру. Скорее, его значение проистекает из его вызывающего вызова чрезмерно усердному правительству, которое стремилось взломать шифрование задолго до того, как большинство американцев регулярно использовали Интернет.
Моя цель в лечении PGP здесь двоякая. Первый — пролить свет на это для непосвященных. Второй и более важный — научить смелых из вас владеть этим мощным инструментом. Надеюсь, вы нашли здесь свой путь после прочтения моего руководства по безопасности. Если нет, ознакомьтесь с последним выпуском, и вы увидите, что PGP может быть полезен в определенных сценариях угроз с высокими ставками.
Прежде чем мы продолжим, имейте в виду, что, как и с любым другим инструментом, полезность PGP придерживается сетевого эффекта. Его практическая возможность чрезвычайно ограничена из-за ограниченности кругов разработчиков программного обеспечения. Если вы стремитесь применить PGP к межличностному общению, те, с кем вы общаетесь, должны делать то же самое.
Содержание статьи
У каждого героя есть своя история
Крипто-войны были мрачными временами … и до сих пор, в зависимости с вашей точки зрения. Как и в случае с большинством попыток правительства коренным образом изменить технологические реализации, первая криптовалютная война произошла в результате моральной паники, охватившей Вашингтон. Избранные официальные лица были напуганы тем, что Интернет станет царством беззакония, где злодеи охотятся на невиновных. Чтобы исправить это, они отчаянно искали способ сделать так, чтобы правоохранительные органы могли вглядываться в деятельность оскорбительных пользователей сети. Шифрование сделало это невозможным.
Эта склонность понятна, потому что Интернет был таким новым и опасным для их избирателей. Также не следует забывать, что люди действительно пострадали от взаимодействий, которые полностью или частично происходили в сети.
Их ответом была попытка ослабить шифрование, чтобы правоохранительные органы могли быть уверены в соблюдении, когда оно обслуживает ордер. Шифрование по определению эффективно только в том случае, если содержимое сообщения не поддается расшифровке для всех, кроме предполагаемых отправителя и получателя. Предложение, хотя и было благонамеренным, полностью нарушало этот принцип.
Именно тогда Фил Циммерман предложил миру PGP. Он написал PGP, что означает «Хорошая конфиденциальность», еще до криптовалютных войн, еще в 1991 году. Но когда вспыхнули военные действия, под его знаменем сплотились сторонники нерушимого шифрования. По мнению Циммермана, если правительство будет стремиться скомпрометировать все шифры, которыми оно владело, он сделает свой собственный и откажется играть в мяч.
Правительство быстро открыло ответный огонь, начав уголовное расследование в отношении него в 1993 году. за нарушение правила, которое помогло продвинуть их кампанию по ослаблению шифрования: экспортные ограничения. В соответствии с этими ограничениями правительство США сделало незаконным экспорт программного обеспечения для шифрования в другие страны, которое было столь же мощным, как программное обеспечение для шифрования США, без лицензии на торговлю оружием. У Фила Циммермана не было ни одной из них.
Именно тогда Циммерман проявил творческий подход: он опубликовал свою программу в виде книги, которую мог свободно купить любой в любой точке мира. По желанию этих покупателей книги они могли бы транскрибировать ее содержимое в редактор кода и сохранить в виде файла. Фактически, это именно то, что некоторые люди сделали. Когда правительство сказало Циммерману прекратить забавный бизнес, он указал на его права Первой поправки и постановления суда, устанавливающие, что компьютерный код является речью.
Между PGP и другим давлением правительство в конечном итоге оставило криптовалюту для всех. в одиночестве. К счастью, правительство в основном воздерживалось от попыток узаконить разбавление шифрования, по крайней мере, до недавнего времени.
PGP (теоретически) остается жизнеспособным и сегодня. Несмотря на достижения в области суперкомпьютеров и криптоанализа, основной шифр, который PGP использует по умолчанию, остается надежным. Всякий раз, когда создается суперкомпьютер, способный взламывать ключ, пользователям нужно делать только более длинные ключи.
Итак, как работает PGP?
Как и в большинстве случаев шифрования, технические детали сложно уловить вокруг, но основы довольно просты. PGP — это программа шифрования, которая использует шифры RSA или DSA. В любом случае PGP генерирует так называемые «асимметричные» ключи, то есть пару ключей.
«Главный» ключ — это закрытый ключ. Закрытый ключ (или, как его называют в некоторых реализациях, «секретный ключ»), как следует из названия, остается закрытым. После создания пары ключей пользователь должен охранять свой закрытый ключ как свой самый глубокий, самый темный секрет.
Другой ключ в паре — это открытый ключ. В отличие от закрытого ключа, этот по замыслу обходится. Пользователь передает этот ключ всем, кто хочет безопасно отправить им вещи. Предоставление доступа другим не представляет реальной угрозы безопасности.
Каждый ключ в ключевой паре может отменить криптографическую операцию, выполняемую с использованием другого ключа. Когда ключ применяется к открытому тексту (нормальному, читаемому содержимому файла), он становится зашифрованным текстом (фактически тарабарщиной). Применение дополнения к ключу, создавшему зашифрованный текст, восстановит открытый текст. Таким образом, на практике, если пользователь взаимодействует с PGP, у него будет один закрытый ключ и много открытых ключей: их собственный закрытый ключ, их собственный открытый ключ и по одному открытому ключу для каждого человека, с которым они общаются.
Поскольку он не связан ни с одним клиентом обмена сообщениями, с PGP можно делать много интересных вещей. Для начала вы можете зашифровать любой «необработанный» открытый текст. Поскольку ваш компьютер представляет все в виде битов, и все, что делает PGP, это шифрует и расшифровывает их, PGP способна шифровать содержимое электронной почты или чата, аудио- и видеофайлы и даже сообщения, размещенные в Интернете.
Обычно вы зашифровать открытый текст открытым ключом, чтобы владелец закрытого ключа мог его расшифровать, но есть трюк, который можно сделать, если инвертировать процесс. Если вы «зашифруете» свой закрытый ключ, чтобы люди, использующие его открытый ключ, «расшифруют» его, вы сможете создать так называемую криптографическую подпись. Эти подписи позволяют вам доказать, что все, что вы подписали, однозначно было создано вами.
На самом деле PGP используется для проверки программного обеспечения. Разработчики подписывают свое программное обеспечение своим закрытым ключом, а затем передают открытый ключ всем, кто хочет проверить подлинность программного обеспечения. Если кто-то подделает ключ или подпись (но не обе сразу), уловка будет обнаружена. Атака могла сработать, если бы подпись и открытый ключ были изменены правильным образом, но это достаточно сложно с точки зрения логистики, поэтому маловероятно.
Надев маску на себя
На этом этапе вы наверняка готовы протестировать этого плохого парня, так что давайте приступим.
Для всех последующих примеров я буду использовать инструмент под названием GPG (Gnu Privacy Guard), бесплатный и открытый исходный код реализация PGP в командной строке. Обоснование этого состоит в том, что, поскольку безопасность — это главная цель PGP, более простой, открытый и зрелый инструмент работает лучше всего.
В этом руководстве также предполагается, что вы используете какой-то компьютер с интерфейсом Unix. , то есть Linux, BSD или macOS. GPG должен работать точно так же в Windows, но, не тестировав его, я не буду клясться, что это правда.
И последнее предостережение: все эти команды основаны на моем тестировании с GPG 2.2. 19, как в пакете Linux Mint 20. Я постараюсь отметить, где вы можете столкнуться с несовпадающим поведением, но, тем не менее, держите это в памяти.
Вы начнете с создания пары ключей, которая включает простую однострочную команду:
gpg ‐‐gen-key
В тестируемой мной версии GPG это оптимизированный вариант генерации ключей, в отличие от настраиваемой опции «& дефис; & дефис; полный ген-ключ». Если вы любитель приключений, обязательно изучите последнее, но я не буду здесь вдаваться в подробности.
Перед запуском команды вам нужно будет выяснить некоторые детали для экранных подсказок, которые появляются, когда он выполняется.
Во-первых, убедитесь, что у вас есть адрес электронной почты, который нужно связать с вашим ключом. Во-вторых, выберите имя, которое хотите ввести. Введите свое настоящее имя, только если вы уверены, что хотите, чтобы ваш открытый ключ идентифицировал вас. В-третьих, выберите пароль для вашего ключа. Я уверен, что вы не упускаете из виду важность этого шага.
Следующее, что мы должны сделать, это создать сертификат отзыва. Это делается с помощью следующей команды:
gpg ‐‐gen-revoke ‐‐armor key_name > privkey_rev.asc
«& Дефис; & дефис; gen-revoke» говорит само за себя, но вы можете задаться вопросом, что делает опция «& дефис; & дефис; броня». Это выводит ключ с битами, представленными в виде символов ASCII, вместо исходного формата, который выглядит так, как будто ваш терминал повторяет заклинание вызова старейшины.
Сертификаты отзыва позволяют людям знать, что ваш закрытый ключ был скомпрометирован, и не доверять ему больше. Они вступают в силу только тогда, когда вы их публикуете, но рекомендуется подготовить их до того, как они вам понадобятся.
После этого немедленно создайте резервную копию вашей пары ключей и сертификата отзыва на зашифрованном внешнем носителе. . Ничто не мешает вам иметь дубликаты файлов с одним и тем же ключом или сертификатом для дополнительной безопасности, просто убедитесь, что вы можете учесть все копии этих файлов.
Для выполнения этого резервного копирования вам нужно будет экспортировать свои ключи как файлы. По умолчанию это просто байты в базе данных ключей, которые могут быть проанализированы только GPG.
Экспортируйте свои ключи, выполнив следующие команды:
gpg & hyphen; & hyphen ; экспорт & дефис; & дефис; броня имя_ключа > pubkey.asc
gpg & дефис; & дефис; экспорт-секретные-ключи & дефис; & дефис; броня имя_ключа > privkey.asc
Скопируйте свой закрытый ключ, открытый ключ и сертификат отзыва в свое зашифрованное хранилище.
Теперь все, что вам нужно, это открытые ключи для людей, с которыми вы хотите поговорить, и вы занимаетесь бизнесом. По существу, есть два способа получить эти
Первый — это импортировать открытые ключи из файла, переданного непосредственно на вашу машину локально. В большинстве случаев это означает, что ваш друг передает вам флэш-накопитель, чтобы вы могли скопировать открытый ключ прямо на свой компьютер. Такой подход имеет существенные преимущества.
Самым большим плюсом является высокий уровень безопасности: поскольку вы не отправляете ключ через Интернет, вероятность того, что ключ был взломан, значительно снижается. Ваш друг также под рукой, чтобы подтвердить вам, что ключ является действительным, поскольку он может взглянуть на ваш экран и сказать: «Ага, вот он».
Шаги для этого довольно просты :
1. Проверьте удостоверение личности владельца ключа, выданное государственным органом. Шутки в сторону. Это освященная веками традиция шифропанка, и она укрепляет идею о том, что эти биты подтверждают личность так же авторитетно, как и настоящий идентификатор, поэтому я призываю вас принять участие в этом священном ритуале.
2. Загрузите файл с носителя на свой компьютер. Ваше устройство, ОС и носитель будут определять, как это будет происходить.
3. На своем терминале импортируйте открытый ключ в связку ключей GPG, выполнив следующую команду.
gpg & hyphen; & hyphen; import pub_key.asc
4. Затем запустите эту команду, чтобы отобразить отпечаток ключа, строку текста, однозначно идентифицирующую ключ, но не ставящую под угрозу его безопасность.
gpg & hyphen; & hyphen; fingerprint pub_key_name
5. Попросите человека, которого вы идентифицируете, проверить, что отпечаток его открытого ключа, показанный в вашей системе, совпадает с тем, который на самом деле производит его открытый ключ.
Плюсы безопасности на этом не заканчиваются. Пока вы переносите только открытые ключи через USB-накопитель, в сети нет записи об обмене ключами. Это может быть огромным операционным преимуществом.
Еще одна хорошая вещь в методе локального обмена ключами — это то, что вам не нужно возиться с серверами ключей. В великой схеме GPG серверы ключей не так уж сложны в использовании, но взаимодействие с ними по-прежнему немного неудобно.
Это, однако, другой важный метод передачи: загрузка открытых ключей из сервер ключей в Интернете. Серверы ключей, которые, как следует из названия, поддерживают ключи, существуют уже компьютерную эру. Эти серверы, обслуживаемые такими организациями, как Массачусетский технологический институт, синхронизируются друг с другом, что позволяет пользователям широко распространять свои открытые ключи.
Серверы ключей имеют явное преимущество, так как они позволяют вам получать открытые ключи от людей, с которыми вы не можете встретиться лично. В конце концов, Интернет полезен именно потому, что обеспечивает мгновенную удаленную связь. Однако, поскольку владелец открытого ключа не может лично заверить вас в целостности ключа, существует вероятность того, что ключ был скомпрометирован при передаче.
Обычно эту проблему решают владельцы открытых ключей, размещающие отпечаток своего ключа в другом месте на общедоступная сеть. Однако в зависимости от возможностей вашего злоумышленника вы не можете быть уверены, что опубликованный в Интернете отпечаток пальца не был изменен таким образом, чтобы он соответствовал фальшивому отпечатку пальца, который вы получаете от взломанного ключа на сервере ключей. Вероятно, вам не стоит беспокоиться об этом по ночам, но это риск.
Вы можете импортировать ключ с сервера ключей, выполнив следующие действия:
1. Введите эту команду для поиска на сервере ключей, где «ключевое слово» — это некоторая часть имени или адреса электронной почты владельца ключа.
gpg & hyphen; & hyphen; search-keys keyword
2. Теперь вам будут представлены результаты поиска на страницах из 10. Просмотрите результаты, выберите желаемый ключ, соответствующий номер и нажмите Enter. Теперь ваше устройство загрузит ключ.
3. Выполните следующую команду, чтобы вывести отпечаток ключа:
gpg & hyphen; & hyphen; fingerprint pub_key_name
4. Наконец, найдите опубликованный отпечаток владельца открытого ключа и сравните его с отпечатком, выданным предыдущей командой.
Теперь вы готовы зашифровать все данные! Начните с поиска файла, который вы хотите зашифровать (здесь «файл» — это файл).
Затем запустите команду шифрования GPG, которая выглядит так:
gpg -e файл
Операция спросит, какой открытый ключ использовать при шифровании файла, который вы указываете, используя последовательность цифр и букв во второй строке ввода ключа — чтобы увидеть эту запись, вы должны запустить gpg & hyphen; & hyphen; list-keys. Когда команда encrypt завершается, она создает зашифрованный файл с именем, идентичным исходному файлу, с добавлением «.gpg». Отправьте его создателю открытого ключа, и они будут знать, что делать.
Расшифровать отправленные вам файлы так же просто. Найдите зашифрованный файл и выполните следующую команду:
gpg -d file> outfile
Введите пароль вашего закрытого ключа, и вы получил расшифрованный файл.
По умолчанию флаг расшифровки просто выводит содержимое расшифрованного файла на консоль. Так как вы, вероятно, захотите сохранить расшифрованный открытый текст на будущее, часть команды '> outfile ' включена для вывода операции в файл.
Два закрытых ключа лучше, чем Один
Что может быть безопаснее одного закрытого ключа? Как насчет двух?
Требуются некоторые пояснения. Я не имею в виду создание двух полноценных приватных ключей. Скорее, этот подход использует две части вашего закрытого ключа: одна может расшифровывать только сообщения, зашифрованные с помощью открытого ключа, другая может подписывать файлы.
Итак, что это дает вам? Разделение ключа позволяет хранить главный ключ исключительно на зашифрованном внешнем хранилище до тех пор, пока он вам не понадобится.
Поскольку подключ может расшифровывать отправленные вам сообщения, вы можете поддерживать свою обычную переписку, сохраняя только подключ на вашем устройстве. Если ваш компьютер когда-либо заразится (что вы, возможно, никогда не обнаружите), ваши злоумышленники не смогут подделать ваши подписи, что упростит вам отозвать украденный ключ и начать все заново.
Без сомнения, отдельные закрытые ключи с отдельными мерами безопасности вызывают гораздо большую головную боль. Для начала вы должны уметь отличать их друг от друга, потому что, если вы позволите своему мастер-ключу находиться на вашем компьютере, когда он подключен к сети, с точки зрения операционной безопасности, ваш главный ключ будет отравлен, подвергнут опасности непроверяемая степень опасности, которая определяет его целостность.
Но даже если вы держите их в нужном месте, у вас должна быть операционно безопасная процедура для подписи PGP — как минимум, это отключение вашей сети на уровне ОС (желательно на аппаратном уровне), подключение зашифрованного хранилища, импорт копии главного ключа, выполнение операции подписи, удаление копии главного ключа на вашем устройстве и его данных в вашем связке ключей GPG, извлечение зашифрованного хранилища и повторное включение вашей сети.
Моя версия GPG фактически разделяет ключ на эти две части по умолчанию, но связывает их вместе, как в вашем связке ключей, так и в экспорте закрытого ключа.
Однако , я Если вы хотите разделить ключи, выполните следующие действия:
1. Отключите вашу сеть. В противном случае ваш главный закрытый ключ будет изначально испорчен.
2. Выполните такой же экспорт закрытого ключа, как и раньше.
3. С помощью этой команды экспортируйте свой личный подключ в соответствующий файл.
gpg & hyphen; & hyphen; export-secret-subkeys –armor key_name > sub_key.asc
4. Переместите файлы личного ключа и подключей на защищенное внешнее хранилище.
5. Выполните эту команду, следуя подсказкам, чтобы удалить из связки ключей главный секретный ключ, но не подключ.
gpg & дефис; & дефис; delete-secret-keys
6. Убедитесь, что все копии файлов вашего основного закрытого ключа удалены с вашего устройства.
На вашем компьютере теперь нет следов вашего «главного» закрытого ключа, но ваш подключ надежно хранится в связке ключей для расшифровка
А вот и криптонит
При работе с PGP следует иметь в виду некоторые серьезные ограничения. В конце концов, если бы он был идеальным, все бы его использовали.
Одна из проблем заключается в том, что у серверов ключей есть явный недостаток, который, кажется, не поддается устранению, когда злоумышленники могут сделать сертификат слишком массивным для функциональной обработки. Если ваш открытый ключ не станет горячим билетом, вы, вероятно, не попадете под удар. Однако это способствует всеобщему пренебрежению к PGP.
Однако на самом деле это еще одна проблема: громоздкий пользовательский интерфейс, который возлагает на пользователя значительную нагрузку на ручную проверку, близок к смертному приговору для программного обеспечения безопасности. Если инструмент безопасен только для тех, кто кропотливо выполняет легко испорченную процедуру, высока вероятность, что кто-то, вы или ваш получатель, ошибетесь.
Все это означает, что я бы не стал полагаться на PGP, если у вас не было большой практики, и более эффективных альтернатив не существует. Тем не менее, я бы сказал, что PGP достаточно ценен, чтобы оценить шифрование и поддержание ключей, лежащих в его основе. Так что, если вы реалистично оцениваете свои ожидания, вы можете получить полезный опыт от PGP.