355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Максим Левин » PGP: Кодирование и шифрование информации с открытым ключом » Текст книги (страница 2)
PGP: Кодирование и шифрование информации с открытым ключом
  • Текст добавлен: 12 октября 2016, 01:14

Текст книги "PGP: Кодирование и шифрование информации с открытым ключом"


Автор книги: Максим Левин



сообщить о нарушении

Текущая страница: 2 (всего у книги 10 страниц)

Дешифровка и проверка подписей.

Для дешифровки зашифрованного файла или проверки целостности подписи подписанного файла используется команда:

pgp ciphertextfile [-o plaintextfile]

Обратите внимание, что скобки [ ] просто обозначают необязательное поле, не вводите сами скобки.

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

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

Работа с ключами.

Со времен Юлия Цезаря работа с ключами всегда была наиболее трудной частью криптографии. Одной из принципиально выдающихся особенностей PGP является сложная работа с ключами.

Генерация ключа RSA.

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

pgp -kg

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

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

Это поможет вам в том случае, если вы помещаете ваш адрес в электронной почте в <угловые скобки> после вашего имени, например:

Robert M. Smith

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

PGP также запросит "фразу пароля" для зашиты вашего секретного ключа на случай, если он попадет в чужие руки. Никто не сможет использовать ваш файл секретного ключа без этой фразы пароля. Фраза пароля – это обычный пароль, за исключением того, что это может быть целая фраза или предложение с большим количеством слов, пробелов, знаков пунктуации, или любых других символов. Не потеряйте эту фразу пароля, так как нет никакого способа восстановить ее при утрате. Эта фраза пароля будет необходима каждый раз при использовании вашего секретного ключа. Фраза учитывает регистр, и не должна быть слишком короткой или простой настолько, что ее можно было бы предположить. Она никогда не отображается на экране. Не оставляйте ее в записанном виде нигде, где кто-либо может ее увидеть и не храните ее на вашем компьютере. Если вы не хотите использовать фразу пароля (и тогда вы просто дурак!), просто нажмите ENTER в ответ на запрос PGP.

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

Имейте ввиду, что генерация ключей RSA – ОЧЕНЬ длительный процесс. На это может потребоваться от нескольких секунд для маленького ключа на быстром процессоре, до нескольких минут для большого ключа на старой IBM PC/XT.

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

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

Добавление ключа в ваш каталог ключей.

Для добавления содержимого файла открытого или секретного ключа в ваш каталог открытых или секретных ключей наберите (помните, что [скобки] обозначают необязательный параметр):

Pgp –ka keyfile [keyring]

Для keyfile по умолчанию берется расширение ".pgp". Необязательные имена файлов каталогов keyring по умолчанию имеют значения "pubring.pgp" или "secring.pgp" в зависимости от того, содержит ли файл открытый или секретный ключ. Вы можете задавать и другие имена файлов с расширением по умолчанию ".pgp".

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

Удаление ключа из вашего каталога ключей.

Для удаления ключа из вашего каталога открытых ключей наберите:

pgp –kr userid [keyring]

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

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

Извлечение (копирование) ключа из вашего каталога ключей.

Для извлечения (копирования) ключа из вашего каталога открытых или секретных ключей, наберите:

pgp –kx userid keyfile [keyring]

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

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

Если вы хотите получить извлеченный ключ в виде печатаемых символов ASCII для пересылки по E-mail, используйте опции -kxa.

Просмотр содержания вашего каталога ключей.

Для просмотра содержания вашего каталога открытых ключей наберите:

pgp -kv[v] [userid] [keyring]

По этой команде на экран будет выводиться список всех ключей из каталога, у которых хотя бы частично совпадает идентификатор пользователя с параметром userid в командной строке. Если этот параметр опущен, выводятся все ключи из каталога. В качестве имени файла каталога ключей keyring по умолчанию принимается "pubring.pgp". Оно может быть опущено, либо вы можете задать "secring.pgp" для просмотра оглавления каталога секретных ключей. Кроме того, вы можете определить любое другое имя файла каталога. Расширение имени файла по умолчанию ".pgp".

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

pgp -kvv [userid] [keyring]

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

pgp keyfile

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

Как защищать открытые ключи от подделки.

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

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

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

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

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

Таким образом будет создано подписанное удостоверение открытого ключа, и будет показано, что ключ Алисы не был подделан. Но для этого требуется, чтобы вы имели заведомо верную копию открытого ключа Давида для проверки его подписи. При этом возможно, чтобы Давид обеспечил также и Алису подписанной копией вашего открытого ключа. Таким образом, Давид служит как бы "поручителем" между вами и Алисой.

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

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

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

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

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

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

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

Неважно, как вас соблазнят – а вас будут соблазнять – никогда , НИКОГДА не признавайте целесообразность и не доверяйте открытому ключу, который вы переписали с BBS, если он не подписан кем-либо, кому вы доверяете. Такой никем не удостоверенный ключ вполне мог быть поделан кем-то, возможно даже администратором BBS.

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

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

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

Достоверный ключ не то же самое, что доверие к его владельцу.

Доверие не обязательно передается; у меня есть друг, я ему доверяю и считаю, что он говорит правду. Он – доверчивый человек, который доверяет Президенту и считает, что тот говорит правду. Это отнюдь не значит, что я доверяю Президенту и считаю, что он говорит правду. Это просто здравый смысл. Если я доверяю подписи Алисы на ключе, а она, в свою очередь, доверяет подписи Чарли на ключе, это не означает, что я должен доверять подписи Чарли на ключе.

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

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

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

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

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

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

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


    Ваша оценка произведения:

Популярные книги за неделю