42702

Криптографические алгоритмы. Процесс формирования цифровой подписи

Лабораторная работа

Информатика, кибернетика и программирование

Криптографическая система PGP . Ознакомиться с программой PGP. Работа с программой PGP В консоли: Сгенерировать вашу собственную уникальную пару секретный открытый ключи. Проверка подлинности подписи В случае успешной верификации будет выведенно сообщение: Работа с криптографическими средствами программы PGP Pretty Good Privcy PGP выпущено фирмой Phil's Pretty Good Softwre и является криптографической системой с высокой степенью секретности.

Русский

2013-10-30

2.64 MB

20 чел.

Лабораторная работа № 3.4

Тема: Криптографические алгоритмы, которые|какие| используются для формирования подписи. Процесс формирования цифровой подписи с помощью|посредством| алгоритмов RSA| и DSA|. Работа с|с| программой| CrypTool|. Криптографическая система PGP|. Шифровка и подпись файлов. Организация доверительных отношений.

Цель: Ознакомиться с основными методами формирования цифровой подписи. Ознакомиься с принципом функционирования метода DSA. ознакомиться с программой CrypTool. Овладеть навыками формирования цифровой подписи и ее верификации средствами данной программы. Ознакомиться с программой PGP. Научиться управлять ключами (генерирование, импорт/экспорт). Научиться шифровать и подписывать файлы, с помощью сгенерированных ключей. Отработать навыки работы с консольной версией программы. Освоить GUI-интерфейс программы.

Задание

1. Работа с программой CrypTool

  1.  Создать текстовый файл «Ваша фамилия.txt».
  2.  Сгенерировать новую пару ключей.
  3.  Экспортировать пару ключей в файл «keys_Ваша фамилия.р12».
  4.  Подписать ваш текстовый файл, используя вашу пару ключей и передать его соседу.
  5.  Импортировать пару ключей вашего соседа.
  6.  Получить от соседа его подписанный файл.
  7.  Провести верификацию цифровой подписи.

2. Работа с программой PGP

В консоли:

  1.  Сгенерировать вашу собственную уникальную пару секретный/открытый ключи.
  2.  Экспортировать свой публичный ключ в файл «pub_Ваша фамилия.pgp».
  3.  Экспортировать свой секретный и публичный ключ в файл «sec_Ваша фамилия.pgp».
  4.  Передать файл «pub_Ваша фамилия.pgp», вашему соседу.
  5.  Получить файл «pub_Фамилия соседа.pgp», от вашего соседа.
  6.  Импортировать ключ соседа, к себе на компьютер.
  7.  Зашифровать файл «Hello1.txt», используя публичный ключ соседа.
  8.  Подписать файл «Hello2.txt», используя ваш секретный ключ.
  9.  Зашифровать файл «Hello3.txt», традиционным образом.
  10.  Зашифровать файл «Hello4.txt», используя публичный ключ соседа и подписать зашифрованный файл, используя свой секретный ключ.
  11.  Передать файлы «Hello1.txt.pgp», «Hello2.txt.pgp», «Hello3.txt.pgp», «Hello4.txt.pgp» вашему соседу.
  12.  Получить, от соседа его файлы.
  13.  Расшифровать полученные файлы.
  14.  Организовать доверительные отношения между двумя пользователями.

В GUI-приложении:

  1.  Создать новый ключ.
  2.  Установить, новый ключ, используемым по умолчанию.
  3.  Экспортировать свой публичный ключ в файл «pub_Ваша фамилия.pgp».
  4.  Передать файл «pub_Ваша фамилия.pgp», вашему соседу.
  5.  Получить файл «pub_Фамилия соседа.pgp», от вашего соседа.
  6.  Импортировать ключ соседа, к себе на компьютер.
  7.  Зашифровать файл «Hello1.txt», используя, новый, публичный ключ соседа.
  8.  Подписать файл «Hello2.txt», используя ваш, новый, секретный ключ.
  9.  Зашифровать файл «Hello3.txt», традиционным образом.
  10.  Зашифровать файл «Hello4.txt», используя, новый, публичный ключ соседа и подписать зашифрованный файл, используя свой, новый, секретный ключ.
  11.  Передать файлы «Hello1.txt.pgp», «Hello2.txt.pgp», «Hello3.txt.pgp», «Hello4.txt.pgp» вашему соседу.
  12.  Получить, от соседа, его файлы.
  13.  Расшифровать полученные файлы.
  14.  Организовать доверительные отношения между двумя пользователями.

3. Реализовать программно алгоритм формирования цифровой подписи DSA.

Структура отчета

  1.  Титульный лист.
  2.  Тема и цель работы.
  3.  Задание и номер варианта.
  4.  Краткие теоретические сведения.
  5.  Ход работы.
  6.  Выводы.

Теоретические сведения

Цифровая подпись

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

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

Например, предположим, что Джон посылает Мэри удостоверенное сообщение. Рассмотрим следующие конфликты, которые могут при этом возникать.

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

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

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

Возможность установить автора, а также дату и время подписи.

Возможность установить достоверность содержимого сообщения на время подписи.

Возможность проверки подписи третьей стороной на случай возникновения спора.

Таким образом, функции цифровой подписи охватывают, в частности, и функции аутентификации.

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

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

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

Цифровую подпись должно быть относительно просто произвести.

Цифровую подпись должно быть относительно просто распознать и проверить.

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

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

Защищенная функция хэширования, встроенная в соответствующую схему, удовлетворяет этим ебованиям.

Для реализации идеи цифровой подписи было предложено множество подходов, которые можно разбить на две категории: с непосредственной и арбитражной логикой.

Непосредственная цифровая подпись

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

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

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

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

Арбитражная цифровая подпись

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

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

В таких схемах арбитр играет исключительно важную роль, и все участвующие в обмене данными стороны должны иметь очень высокую степень доверия к механизму арбитражного устройства. В табл. 1 представлено несколько примеров схем арбитражных цифровых подписей. В первом примере используется традиционное шифрование. Предполагается, что отправитель X и арбитр А используют общий секретный ключ Кха, а А и У — общий секретный ключ Кау. Отправитель X создает сообщение М и вычисляет значение хэширования Н(М). Затем X передает сообщение с добавленной к нему подписью арбитру А. Подпись складывается из идентификатора X и значения хэширования, и все это шифруется с использованием Кха. Арбитр А дешифрует подпись и проверяет значение хэширования, чтобы убедиться в достоверности сообщения. Потом А передает сообщение адресату У в зашифрованном с помощью Кау виде. Это сообщение включает ІDх, оригинальное сообщение X и метку даты/времени. Получатель У может дешифровать его, чтобы восстановить сообщение и подпись. Метка даты/времени информирует У, что это сообщение получено своевременно и не является воспроизведением. Теперь У может сохранить М и подпись. В случае спора У, заявляющий, что получил М от X, отправит А сообщение следующего содержания:

ЕКау[ІDх || М || ЕК„[IDх || Н(М)]].

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

  •  X должен верить, что А не разгласит Кха и не будет генерировать фальшивые подписи вида ЕКxa[IDх || Н(М)].
  •  У должен верить, что А будет посылать ЕКay[IDх || М || ЕКха[IDх || Н(М)] || Т] только в тех случаях, когда значение хэширования оказывается правильным и подпись действительно была выполнена отправителем X.
  •  Обе стороны должны быть уверены, что А будет честно разрешать конфликты.
  •  Если арбитр действительно будет отвечать таким ожиданиям, то X может быть уверен, что никто не сможет фальсифицировать его подпись, а У может быть уверен, что X не сможет дезавуировать свою подпись.

Таблица 1. Методы использования арбитражной цифровой подписи

Обозначения:

X — тправитель, У — получатель, А — арбитр, М — сообщение.

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

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

Все только что упомянутые сложности могут быть преодолены с помощью схемы с открытым ключом, один из вариантов которой показан в табл .1(в). В этом случае X дважды шифрует сообщение М — сначала с помощью личного ключа X (ключа КRх), а потом с помощью открытого ключа У (ключа КRу). Это будет подписанная секретная версия сообщения. Данное подписанное сообщение наряду с идентификатором X шифруется снова с помощью КRх и вместе с IDх посылается А. Внутреннее, дважды шифрованное сообщение защищено от арбитра (и любого другого лица, кроме У). Однако можно снять внешнее шифрование и убедиться, что сообщение наверняка пришло от X (поскольку только X имеет КRх). Арбитр А должен убедиться в том, что пара личный/открытый ключи X еще действительна и, если это так, проверить само сообщение. Затем А передает сообщение У, шифруя его с помощью КRa. Сообщение включает IDх, дважды шифрованное сообщение и метку даты/времени.

Эта схема имеет ряд преимуществ по сравнению с двумя предыдущими. Во-первых, в совместном распоряжении сторон до начала обмена данными нет никакой информации, что предотвращает возможность сговора с целью обмана. Во-вторых, некорректно датированное сообщение не может быть передано, даже если КRх скомпрометирован, если только не скомпрометирован КRa. Наконец содержимое сообщения от X к У является секретом для А, как и для всех остальных.

Стандарт цифровой подписи

Национальный институт стандартов и технологии (NIST) опубликовал реальный стандарт обработки информации FIPS PUB 186, известный также как DSS (Digital Signature Standard — стандарт цифровой подписи). Стандарт DSS основан на алгоритме хэширования SHA (Secure Hash Algorithm защищенный алгоритм хэширования) и представляет новую технолою использования цифровой подписи — алгоритм DSA (Digital Signature Alhorithm — алгоритм цифровой подписи). Стандарт DSS был предложен в 1991 г., а его исправленная версия — в 1993 г. в ответ на возникшие сомнения в безопас ности соответствующей схемы. В 1996 году в него были внесены незначительные изменения.

Подход DSS

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

На рис. 1 сравниваются схемы генерирования цифровых подписей с пользованием DSS и RSA.

Подход RSA

Подход DSA

Рис. 1. Два подхода к использованию цифровой подписи

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

Подход DSS также основан на функции хэширования. Хэш-код подаетсл вход функции создания подписи вместе со случайным числом k, специально генерируемым для данной подписи. Функция создания подписи зависит также от личного ключа отправителя KRa и ряда параметров, известных группе сообщающихся сторон. Можно считать, что это множество составляет глобмльный окрытый ключ KUG. В результате получается подпись, складывающаяся из двух компонентов, обозначаемых s и r.

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

Обратимся теперь к рассмотрению деталей алгоритма.

Алгоритм цифровой подписи

Алгоритм цифровой подписи (DSA Digital Signature Algorithm) создан с учетом трудностей вычисления дискретных логарифмов и опирается на схемы, предложенные Эль-Гамалем (ElGamal) и Шнорром (Schnorr).

Алгоритм схематически представлен на рис. 2. В нем имеется три параметра, которые являются открытыми и предполагаются известными группе пользователей. Выбирается 160-битовое простое число q. Затем выбирается простое такое число р длиной между 512 и 1024 битами, что q делит (р - 1). Наконец, выбирается число g вида h(р-1)/q mod р , где h является целым числом между 1 и (р - 1) с тем ограничением, что g должен быть больше 1.

Имея эти числа, каждый пользователь выбирает личный ключ и генерирует открытый ключ. Личный ключ х должен быть числом от 1 до (q-1) и должен выбираться случайным или псевдослучайным образом. Открытый ключ вычисляется на основе личного ключа по формуле у = gх mod р. Вычислить у по имеющемуся значению х относительно просто. Однако при имеющемся значении открытого ключа у задача определения значения х по значению у считается нереальной, поскольку для этого требуется вычислить дискретный логарифм у по основанию g и по модулю р.

Чтобы создать подпись, пользователь вычисляет две величины, r и s, являюющиеся функциями компонентов открытого ключа (р, q, g), личного ключа пользователя (х), хэш-кода сообщения (Н(М)) и некоторого целого числа k, которое должно выбираться случайным или псевдослучайным образом и быть уникальным для каждого выполнения подписи.

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

На рис. 3 представлены функции выполнения подписи и верификации.

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

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

Рис. 2. Алгоритм DSA

Защищенный алгоритм хэширования SHA 

Защищенный алгоритм хэширования (SHA Secure Hash Algorithm) был разработан Национальным институтом стандартов и технологии (NIST) и опубликован в виде федерального стандарта обработки информации в 1993 году (PUB FIPS 180), пересмотренная версия вышла в 1995 году в виде документа PUB FIPS 180-1, и обычно на эту версию ссылаются с помощью аббревиатуры SHA-1. Алгоритм SHA базируется на алгоритме MD4, и вся его структура очень близка к MD4.

Логика  SНА-1

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

Рис.3. Процедуры выполнения подписи и верификации

Процесс обработки складывается из следующих шагов.

Шаг 1. Добавление битов заполнителя. Сообщение дополняется так, чтобы его общая длина в битах была сравнима со значением 448 по модулю 512 (т.е. длина ≡ 448 mod 512 ). Операция дополнения выполняется всегда, даже если сообщение уже оказывается требуемой длины. Поэтому число добавляемых битов должно быть от 1 до 512. Структура битов заполнителя следующая: первый бит равен 1, а все остальные равны 0.

Шаг 2. Добавление значения длины. К сообщению добавляется 64-битовый блок. Этот блок интерпретируется как 64-битовое целое число без знака (наиболее значимый байт идет первым) и содержит значение длины исходного сообщения (перед добавлением заполнителя).

Шаг 3. Инициализация буфера МD. Для того чтобы хранить промежуточные и конечные результаты функции хэширования, используется 160-битовый буфер. Буфер можно представить в виде пяти 32-битовых регистров (А, В, С, D, Е). Эти регистры инициализируются следующими 32-битовыми целыми значениями (в шестнадцатеричном представлении):

А = 67452301,

В = ЕFСDАВ89,

С = 98ВАDСFЕ,

D = 10325476,

Е = СЗD2Е1F0.

Обратите внимание, что первые четыре значения совпадают со значениями, используемыми в МD5. Однако в случае SНА-1 эти значения сохраняются в формате обратного порядка следования байтов, когда наиболее значимый байт слова хранится в младшей адресной позиции. Как 32-битовые строки, значения инициализации (в шестнадцатеричной записи) будут выглядеть так:

слово А: 01 23 45 67,

слово В: 8 9 АВ CD EF,

слово С: FE DC ВА 98,

слово D: 76 54 32 10,

слово Е СЗ D2 El F0.

Шаг 4. Обработка сообщения 512-битовыми блоками (блоками по 16 слов). Сердцем алгоритма является модуль, состоящий из четырех раундов обработки по 20 шагов каждый. Логика модуля показана на рис. 4. Все четыре раунда имеют подобную структуру, но в каждом применяется своя примитивная логическая функция. Эти функции обозначены f1, f2, f3, f4 соответственно.

Рис. 4. Обработка одного блока в SHA-1

В каждом раунде на вход подается текущий 512-битовый блок (Yq) и 160-битовое значение буфера АВСDЕ, а также обновляется содержимое буфера. Кроме того, на каждом шаге используется добавляемая к текущему значению константа Кi, где 0  і ≤ 79 соответствует номеру шага для всех 80шагов всех четырех раундов. На самом деле применяется только четыре константы. Их значения в шестнадцатеричном и десятичном представлениях показаны в следующей таблице.

Номер шага

Шестнадцатеричное представление

Целая часть числа

0<t<19

Кt= 5А827999

[230 ]

20 < t < 39

Кt= D9ЕВА1

[230 ]

40 < t < 59

Кt= 8FВВСDС

[230 ]

60 < t < 79

Кt= СА62СD6

[230 ]

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

Шаг 5. Вывод. После обработки всех L 512-битовых блоков на выходе Lстадии обработки получается 160-битовый профиль сообщения.

В целом работу алгоритма SНА-1 можно описать следующими формулами:

СV0 =IV,

СVq+1= SUM32Vq, АВСDЕq),

МD = СVL,

где

IV – начальное значение буфера АВСDЕ, задаваемого на шаге 3,

АВСDЕq – выход последнего раунда обработки д-го 512-битового блока сообщения,

L – общее число блоков сообщения (с учетом битов заполнителя и полей длины сообщения),

SUM32 – сложение по модулю 2й , выполняемое отдельно для каждого слова пары вводимых значений,

МD – выходное значение профиля сообщения.

Функция сжатия SНА-1

Давайте рассмотрим детали логики любого из 80 раундов обработки одного 512-битового блока. Каждый раунд имеет вид (рис. 6):

А, В, С, D, Е ← (Е + f(t, В, С, D) + S5(А) + Wt + Кt), А, S30(В), С, D ,

где

А, В, С, D, Е – пять слов буфера,

t – номер шага, 

f(t, В, С, D) – примитивная логическая функция для шага t,
           
Sk – циклический сдвиг влево (вращение) 32-битового аргумента на k битов,

Wt – 32-битовое слово, извлеченное из текущего 512-битового блока ввода,

Кt –  добавляемая константа; как уже отмечалось, используетсячетыре различных значения,

+ - сложение по модулю 232.

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

Шаг

Функция

Значение функции

0≤ t≤19

f1 = f(t, В, С, D)

(ВС)(ВD)

20  t  39

f2 = f(t, В, С, D)

ВСD

40 t  59

f3 = f(t, В, C, D)

(ВС)(ВD)(СD)

60  t  79

f4 = f(t, В, C, D)

ВСD

Здесь логические операции AND, OR, XOR представляются символами , ,  соответственно. Как можно заметить, используется только три различные функции. Для 0≤t19 функция является условным выражением: если В, то С, иначе D. Для 20t39 и 60t79 функция дает бит четности. Для 40t59 функция является истинной, когда истинны не менее двух ее аргументов. Значения всех функций представлены в табл. 2.

Остается указать, как из 512-битового блока сообщения извлекаются 32-битовые значения слов Wt. Соответствующая схема показана на рис. 5. Первые 16 значений Wt являются непосредственно 16 словами текущего блока. Остальные значения определяются формулой

Рис. 5. Элементарная операция SHA (один шаг раунда)

Таблица 9.2. Значения логических функций SНА-1

B

C

D

f1..19

f20..39

f40..59

f60..79

0

0

0

0

0

0

0

0

0

1

1

1

0

1

0

1

0

0

1

0

1

0

1

1

1

0

1

0

1

0

0

0

1

0

1

1

0

1

0

0

1

0

1

1

0

1

0

1

0

1

1

1

1

1

1

1

Итак, на первых 16 шагах обработки значение Wt, равно соответствующему слову в блоке сообщения. Для остальных 64 шагов значение Wt является результатом циклического сдвига влево на один бит результата связывания операцией ХOR четырех из предшествующих значений. В SНА-1 16 слов блока расширяются до 80 слов для использования с функцией сжатия. Это порождает немалую избыточность и взаимосвязь блоков сжимаемого сообщения, что усложняет задачу нахождения блоков сообщения, порождающих одинаковый вывод функции сжатия.

Формирование цифровой средствами программы СrypTool

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

Данная программа предлаагет следующие возможности:

  1.  Реализацию процедуры шифрования и дешифрования с использованием криптографических алгоритмов:
    1.  Простейшие традиционные шифры: код Цезаря, код Вижинера, шифр Хилла, код Вернама, побтовое сложение, сложение по модулю, подстановочное и перестановочное шифрование ипроч.
    2.  Симметричные шифры: DES, AES, IDEA, Triple DES, RC2, RC4 и проч.
    3.  Ассиметричные шифры: RSA, методы, основанные на использовании эллиптических кривых.
  2.  Формирование цифровой подписи документа и его последующую верификацию.
  3.  Генерация ключей для ассметрических алгоритмов шифрования.
  4.  Реализация процедуры хэширования с использованием стандартов: SHA, SHA-1, MD5, MD4, MD2, RIPEMD-160 и проч.
  5.  Широкий набор инструментов для криптоанализа.
  6.  Генератор паролей, механизмы для проверки стойкости пароля, генераторы случайных чисел, средства архивации и множество других полезных функций.

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

Прежде всего запустим программу CrypTool, для чего выполним команду Пуск→Программы→CrypTool→CrypTool. 

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

Прежде чем приступить непосредственно к подписи документа, необходимо произвести генерацию пары ключей для шифрования хэша. Для этого используем команду Digital Signatures/PKIPKIGenerate/Import Keys (Рис. 1).

Рис. 1. Вызов процедуры генерации ключей

В появившемся диалоговом окне задаем следующий параметры:

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

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

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

После установки необходимых параметров можно начать процедуру генерации пары ключей путем нажатия кнопки Generate new key pair (Рис. 2).

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

Можно также добавить в хранилище PSE ключи, сформированные ранее, нажав кнопку PKCS #12 Import. В открывшемся диалоговом окне выберите доступные для импорта файлы с расширение .р12.

После генерации для ключей будет создана учетная запись в хранилище PSE, в чем можно убедиться выполних команду Digital Signatures/PKIPKIDisplay/Export keys (Рис. 3).

Рис. 3. Перечень доступных ключей

При желании можно экспортировать ключи, находящиеся в хранилище в отдельный файл. Для этого в окне необходимо выбрать нужный ключ и нажать кнопку Export PSE. По умолчанию ключ сохранится в виде [LastName][FirstName][KeyType][ID][KeyIdentifier].p12.

После генерации ключей можно приступать к процедуре формирования цифровой подписи. Убедитесь, что окно, в котором содержиться текст для подписи, активно. Выполните команду Digital Signatures/PKISign Document. В появившемся диалоговом окне заадются следующие параметры (Рис. 4):

  1.  В блоке Choose hash function выбирается один из стандартов хэширования: SHA, SHA-1, MD5, MD2 или RIPEMD-160.
  2.  В блоке Choose signature alhoritm указывается механизм шифрования хэша: RSA, DSA или метод эллиптических кривых.
  3.  В окне ниже выбирается одна из доступных пар ключей шифрования.

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

После проведения всех необходимых настроек нажимаем кнопку Sign.

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

1. Значение подписи.

2. Длину подписи.

3. Алгоритм шифрования.

4. Механизм хэширования.

5. Идентификатор ключа шифрования.

6. Подписываемый текст.

Рис. 4. Формирование цифровой подписи

Рис. 5. Подписанный файл

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

Программа CrypTool предусматривает также возможность осуществления верификации подписанного документа.

Для этого прежде всего необходимо импортировать в программную среду подписанный документ с расширением  с помощью .hex команды FileOpen.

Далее выполним Digital Signatures/PKIVerify Document.

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

Нажимаем кнопку Verify Signatuire (Рис. 6).

Рис. 6. Проверка подлинности подписи

В случае успешной верификации будет выведенно сообщение:

Работа с криптографическими средствами программы PGP

Pretty Good Privacy (PGP) выпущено фирмой Phil's Pretty Good Software и является криптографической системой с высокой степенью секретности.

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

Шифрование с открытым ключом

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

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


Рис. 1


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


Рис. 2

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

Дополнительная информация:

PGP хранит ключи в зашифрованном виде. Они содержатся в двух файлах на жёстком диске; один файл для открытых ключей, другой – для закрытых. Эти файлы называются связками (keyrings). Используя PGP, вы, время от времени, будете добавлять открытые ключи своих корреспондентов на связку открытых. Ваши закрытые ключи находятся на связке закрытых. Если вы потеряете (удалите) связку закрытых ключей, то уже никаким образом не сможете расшифровать информацию, зашифрованную для ключей с этой связки. Следовательно, сохранение пары резервных копий этого файла является полезной практикой.

Цифровые подписи

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

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

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

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


Рис. 3

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

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

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

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


Рис. 4


ЭЦП играют важнейшую роль в удостоверении и заверении ключей других пользователей PGP.

Цифровые сертификаты

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

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

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

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

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

Цифровой сертификат состоит из трёх компонентов:

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

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

Таким образом, сертификат, обычно, – это открытый ключ с прикреплёнными к нему одной или несколькими формами ID плюс отметка подтверждения от доверенного лица, «связывающая» ID и открытый ключ.


Рис. 5

Распространение сертификатов

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

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

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

Серверы-депозитарии

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

Инфраструктуры открытых ключей (PKI)

PKI, как и простой сервер-депозитарий, имеет базу данных для хранения сертификатов, но, в то же время, предоставляет сервисы и протоколы по управлению открытыми ключами. В них входят возможности выпуска (издания), отзыва (аннулирования) и системы доверия сертификатов. Главной же особенностью PKI является наличие компонентов, известных как Центр сертификации (Certification Authority, CA) и Центр регистрации (Registration Authority, RA).

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

Как правило, Центром регистрации (ЦР) называется система людей, механизмов и процессов, служащая целям зачисления новых пользователей в структуру PKI и дальнейшего администрирования постоянных пользователей системы. Также ЦР может производить «веттинг» – процедуру проверки того, принадлежит ли конкретный открытый ключ предполагаемому владельцу.

ЦР – это человеческое сообщество: лицо, группа, департамент, компания или иная ассоциация. С другой стороны, ЦС – обычно, программа, выдающая сертификаты своим зарегистрированным пользователям. Существуют и защищённые от взлома аппаратные реализации ЦС, сооружённые из пуленепробиваемых материалов и снабжённые «красной кнопкой», аннулирующей в критической ситуации все выданные ключи.

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

Формат сертификатов

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

PGP поддерживает два формата сертификатов:

  •  Сертификаты OpenPGP (чаще называемые просто ключами PGP)
  •  Сертификаты X.509

Формат сертификата PGP

Сертификат PGP содержит, в частности, следующие сведения:

  •  Открытый ключ владельца сертификата – открытая часть ключевой пары и её алгоритм: RSA v4, RSA Legacy v3, DH или DSA.
  •  Сведения о владельце сертификата – информация, идентифицирующая личность пользователя: его имя, адрес электронной почты, номер ICQ, фотография и т.д.
  •  ЭЦП владельца сертификата – подпись ключевой пары, связанной с сертификатом (т.н. автоподпись).
  •  Период действия сертификата – дата начала действия сертификата и дата окончания его действия; указывает на то, когда сертификат станет недействительным (аналогично сроку действия водительских прав). Если ключевая пара содержит дополнительные подключи шифрования, то здесь будет указан период действия каждого из них.
  •  Предпочтительный алгоритм шифрования – указывает на то, зашифрованную каким алгоритмом информацию предпочитает получать владелец сертификата. Поддерживаются следующие: CAST, AES, IDEA, Triple-DES и Twofish.

Вы можете представить сертификат PGP в виде открытого ключа с одной или несколькими привязанными к нему «бирками» (рис. 6). На этих «бирках» указана информация, идентифицирующая владельца ключа, а также подпись этого ключа, подтверждающая, что ключ и идентификационные сведения взаимосвязаны. (Этот вид подписи называется автоподписью (self-signature); её содержит каждый сертификат OpenPGP.)


Рис. 6

Уникальный аспект формата сертификатов PGP в том, что каждый сертификат может содержать множество подписей. Любой человек может подписать идентификационно-ключевую пару, чтобы заверить, полагаясь на своё личное убеждение, что открытый ключ принадлежит именно указанному в ID пользователю. Если поищете на общественных серверах-депозитариях, то можете обнаружить некоторые ключи, как, например, принадлежащий автору PGP Филу Циммерману, содержащие огромное количество подписей.

Некоторые PGP-сертификаты состоят из открытого ключа с несколькими «бирками», каждая из которых содержит собственные сведения, идентифицирующие владельца ключа (например, имя владельца и его рабочий e-mail, прозвище владельца и его домашний e-mail, фотография владельца – всё на одном сертификате). Список подписей на каждой из «бирок» может быть различным; подписи указывают на достоверность определённой «бирки» и её принадлежность открытому ключу, а не на то, что все «бирки» достоверны. (Учтите, что «достоверность» зависит от установившего её: подписи – это мнения, и разные люди уделяют разную степень внимания проверке подлинности перед подписанием ключа.)

Формат сертификата Х.509

Х.509 – это другой очень распространённый формат. Все сертификаты Х.509 соответствуют международному стандарту ITU-T X.509; таким образом (теоретически), сертификат Х.509, созданный для одного приложения, может быть использован в любом другом, поддерживающем этот стандарт. На практике, однако, сложилась ситуация, что разные компании создают собственные расширения для Х.509, не все из которых между собой совместимы.

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

Сертификат Х.509 – это набор стандартных полей, содержащих сведения о пользователе или устройстве, и их соответствующий открытый ключ. Стардарт Х.509 определяет, какие сведения входят в сертификат и как они кодируются (формат данных).


Сертификат Х.509 содержит следующие сведения:

  •  Версия Х.509 – указывает, на основе какой версии стандарта Х.509 построен данный сертификат, что определяет, какая информация может в нём содержаться.
  •  Открытый ключ владельца сертификата – открытый ключ наряду с идентификатором используемого алгоритма (указывающим криптосистему, к которой принадлежит данный ключ) и прочая информация о параметрах ключа.
  •  Серийный номер сертификата – организация-издатель сертификата обязана присвоить ему уникальный серийным (порядковый) номер для его опознавания среди прочих сертификатов, выданных данной организацией. Эта информация применяется в ряде случаев; например, при аннулировании сертификата, его серийный номер помещается в список аннулированных сертификатов (Certificate Revocation List, CRL).
  •  Уникальный опознаватель владельца ключа (или DN, distinguished name – уникальное имя) – это имя должно быть уникальным и единственным во всём Интернете. DN состоит из нескольких подпунктов и может выглядеть примерно так:

CN=Bob Davis, EMAIL=bdavis@pgp.com, OU=PGP Engineering,
O=PGP Corporation, C=US
(Что обозначает Понятное имя субъекта, Электронную почту, Подразделение организации, Органицию и Страну соответственно.)

  •  Период действия сертификата – дата начала действия сертификата и дата окончания его действия; указывает на то, когда сертификат станет недействителен.
  •  Уникальное имя издателя – уникальное имя организации, подписавшей сертификат. Обычно, это наименование Центра сертификации. Использование сертификата подразумевает доверие организации, его подписавшей. (В случаях с корневыми сертификатами выдавшая организация – этот же ЦС – подписывает его сама.)
  •  ЭЦП издателя – электронная подпись, созданная закрытым ключом организации, выдавшей сертификат.
  •  Идентификатор алгоритма подписи – указывает алгоритм, использованный ЦС для подписания сертификата.

Существует ряд фундаментальных различий между форматами сертификатов Х.509 и PGP:

  •  вы можете лично создать собственный сертификат PGP; вы должны запросить и получить сертификат Х.509 от Центра сертификации;
  •  сертификаты Х.509 содержат только одно имя владельца сертификата;
  •  сертификаты Х.509 содержат только одну ЭЦП, подтверждающую подлинность сертификата.

Чтобы получить сертификат Х.509, вы должны попросить ЦС выдать его вам. Вы предоставляете системе свой открытый ключ, чем доказываете, что обладаете соответствующим закрытым, а также некоторые идентифицирующие вас сведения. Затем вы электронно подписываете эти сведения и отправляете весь пакет – запрос сертификата – в Центр сертификации. ЦС выполняет определённый процесс по проверке подлинности предоставленной информации и, если всё сходится, создаёт сертификат, подписывает и возвращает вам.

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


Рис. 7

Вероятно, наибольшая польза от сертификатов Х.509, это их применение в Веб-браузерах.

PGP & парольная фраза

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

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

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

Симметричные алгоритмы

PGP располагает набором различных алгоритмов с тайным ключом, шифрующих само сообщение. Под алгоритмами с тайным ключом мы подразумеваем симметричные блочные шифры, использующие один и тот же ключ как для зашифрования, так и для расшифрования. Симметричные блочные шифры, предлагаемые PGP, это CAST, Triple-DES, IDEA, Twofish, а также AES. Все эти алгоритмы не были написаны «на коленке» – это результаты серьёзных научных исследований криптологических групп с выдающейся репутацией.

Для интересующихся криптографией мы можем рассмотреть эти алгоритмы немного более детально. CAST, Triple-DES и IDEA оперируют с 64-битовыми блоками данных. CAST и IDEA имеют ключи длиной 128 бит, Triple-DES использует 168-битовый ключ. Как и Data Encryption Standart (DES), эти алгоритмы могут работать в режимах гаммирования с обратной связью по шифртексту (cipher feedback, CFB) и последовательного сцепления блоков шифртекста (cipher block chaining, CBC). PGP использует их в 64-битовом режиме CFB.

Филипп Циммерман добавил в PGP алгоритм CAST по ряду причин: он подаёт надежды как стойкий блочный шифр со 128-битовым ключом, он очень быстр, и он бесплатный. Его название происходит от инициалов разработчиков, Карлайсла Адамса и Стаффорда Тавареса, из Northern Telecom (Nortel). Nortel запатентовал CAST, но дал письменное обязательство оставить его доступным для каждого без выплат патентных гонораров. CAST представляется очень удачным шифром, спроектированным людьми с хорошей репутацией в своей профессиональной сфере. Дизайн основан на сугубо формальном подходе с рядом формально доказуемых положений; всё это даёт веские основания заключить, что для взлома его 128-битового ключа потребуется лобовая атака. CAST не имеет пространства слабых и полуслабых ключей. Есть серьёзные аргументы в пользу того, что CAST совершенно неподвержен линейному и дифференциальному криптоанализу, двум мощнейшим формам криптоанализа, описанным в открытой литературе, обе из которых оказались эффективны при взломе DES. Формальная DES-подобная архитектура CAST и хорошая репутация его авторов привлекли к алгоритму внимание и попытки криптоаналитических атак со стороны всего научного сообщества, которые он выстоял достойно. Как говорит, Филипп Циммерман, него проявляется почти то же чувство уверенности в CAST, какое было несколько лет назад от IDEA, шифра, который он избрал для ранних версий PGP. На то время IDEA был слишком молод, чтобы иметь серьёзное доверие, но и поныне он демонстрирует себя очень хорошо.

Блочный шифр IDEA (International Data Encryption Algorithm) основан на концепции «смешения операций из различных алгебраических групп». Он был разработан в ETH, Цюрих, Джеймсом Мэсси и Суэджа Лай, и опубликован в 1990 г. В первых публикациях алгоритм назывался IPES (Improved Proposed Encryption Standart), но позднее его переименовали в IDEA. IDEA гораздо более стоек против атак, нежели ранние шифры FEAL, REDOC-II, LOKI, Khufu и Khafre. Также, IDEA оказался гораздо устойчивей DES к очень удачной дифференциальной криптоатаке Бихама и Шамира, равно как и к линейному криптоанализу. Уверенность в IDEA растёт с каждым годом. К сожалению, самым большим препятствием к применению IDEA как стандарта шифрования стал тот факт, что держатель патента на его дизайн – AscomSystec – не предоставляет его для свободного применения без выплат роялти, как в случаях с DES и CAST.

Также, в числе прочих, в арсенал блочных шифров PGP включён и трёхключевой Triple-DES. DES был изобретён в IBM в середине 70-х. Хотя он и имеет эффективный дизайн, его 56-битовый ключ слишком мал по сегодняшним меркам. Triple-DES же крайне надёжен; за многие годы он был хорошо изучен, так что может быть это более удачный выбор в сравнении с относительно молодыми CAST и IDEA. Triple-DES – это DES, применяемый трижды на одном блоке данных, используя три разных ключа, за исключением того, что вторая операция проходит в обратном порядке в режиме расшифрования. Несмотря на то, что Triple-DES гораздо медленней, чем CAST или IDEA, скорость обычно не играет критической роли в email-приложениях. Хотя Triple-DES имеет длину ключа в 168 бит, эффективная стойкость составляет по меньшей мере 112 бит против взломщика с невероятно огромным вычислительным потенциалом, используемым в атаке. В соответствии с расчётами, представленными Майклом Винером на Crypto96, любые хотя бы удалённо правдоподобные ресурсы для хранения промежуточных вычислений, доступные взломщику, позволят провести атаку, требующую практически столько же времени/средств, сколько понадобится для лобового взлома 129-битового ключа. Применение Triple-DES не ограничено никакими патентами.

Начав с версии PGP 7.0, Филипп Циммерман добавили алгоритм Брюса Шнайера Twofish. Twofish, который стал одним из пяти финалистов в проекте NIST «Улучшенный стандарт шифрования» (AES). AES представляет собой новую архитектуру блочного шифра, работающего на 128-битовых блоках, с размерами ключа в 128, 192 или 256 бит. Пятнадцать криптографических групп со всего света подали свои разработки, когда в 1996 году NIST объявил о начале конкурса, из которых в 1998 выбрал пять.

Пятью финалистами стали Twofish, Serpent, Rijndael, RC6 и MARS. Все пять прошли через серьёзнейшее криптоаналитическое испытание лучшими криптографами мира, многие из которых представляли на AES собственные работы, соревновавшиеся с другими. NIST из этих пяти превосходных алгоритмов в качестве победителя избрал Rijndael («рэйн долл»). Rijndael – это блочный шифр, разработанный Джоан Даймен и Винсентом Рижменом. Rijndael был включён в PGP, начиная с версии 7.1. За более подробной информацией об AES см. http://www.nist.gov/aes.

Открытые ключи, сгенерированные в PGP 5.0 и выше, несут в себе сведения о том, какие блочные шифры распознаются программой получателя с тем, чтобы программа отправителя знала, какие алгоритмы можно применять для зашифрования. Открытые ключи типа Diffie-Hellman/DSS поддерживают CAST, IDEA, AES (Rijndael), Triple-DES и Twofish в качестве блочных шифров с AES, установленным по умолчанию (в версиях 8.0 и выше). С целью обратной совместимости, ключи RSA не обладают такой возможностью. PGP ограничен алгоритмом IDEA для шифрования сообщений ключами RSA, поскольку старые версии PGP поддерживают только RSA и IDEA.

О процедуре сжатия данных в PGP

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

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

Для технически любознательных можно добавить, что программа использует алгоритмы сжатия ZIP, написанные Жаном Лу Галли, Марком Адлером и Ричардом Уэйлсом. Программа ZIP использует алгоритмы сжатия, функционально эквивалентные тем, что применяются в PKZIP 2.x от PKWare. Эта программа сжатия была избрана для PGP в первую очередь из-за своей неплохой степени сжатия и быстроты работы.

О случайных числах и сеансовых ключах

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

Генератор «пересеивает» файл при каждом его использовании, частично смешивая старый материал с новым, полученным от конкретного времени суток и иных произвольных показателей. В качестве гамма-генератора применяется симметричный алгоритм шифрования. Файл содержит как случайные данные выхода генератора, так и случайные данные ключа, используемого для задания исходного внутреннего состояния генератора.

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

О дайджестах сообщений

Дайджест сообщения – это компактная 160- или 128-битовая свёртка вашего сообщения-прообраза, или контрольная сумма файла. Вы можете представить его как отпечаток (fingerprint) сообщения или файла. Дайджест сообщения – это «отражение» прообраза: если исходные данные будут как-либо изменены, из них будет вычислен совершенно иной дайджест. Это позволяет обнаружить даже самые незначительные изменения, внесённые злоумышленником в сообщение. Дайджест генерируется посредством криптографически стойкой односторонней хэш-функции. В вычислительном плане невозможно создать такое подставное сообщение, которое бы производило дайджест, идентичный дайджесту оригинального сообщения. В этом отношении дайджест сообщения гораздо лучше контрольной суммы (CRC32 или CRC64), поскольку довольно просто создать два различных сообщения, производящих одинаковую контрольную сумму. Но, как и в случае с контрольной суммой, не существует никакого способа восстановить из дайджеста исходные данные прообраза.

Алгоритм стойкой односторонней хэш-функции, используемый в PGP 5.0 и выше, называется SHA-1, что означает Secure Hash Algorithm; он был разработан в АНБ для Национального Института Стандартов и Технологий (NIST) США. SHA-1 – это 160-битовый хэш-алгоритм. Некоторые люди ко всем разработкам АНБ относятся с подозрением, поскольку именно АНБ «заведует» электронной и радиотехнической разведкой и взломом кодов. Но имейте в виду, что АНБ не заинтересовано в подделке подписей; правительство и его силовые структуры получат гораздо больше выгоды от хорошего стандарта неподделываемых ЭЦП, не позволяющих никому от них отрекаться. Кроме того, SHA-1 был опубликован в открытой литературе и, после тщательнейшего исследования лучшими криптографами мира, специализирующимися на хэш-функциях, получил единодушную высочайшую оценку своего крайне удачного дизайна. Он имеет некоторые архитектурные инновации, благодаря которым преодолевает все наблюдавшиеся прежде проблемы односторонних хэш-функций, когда-либо созданных гражданским криптографическим сообществом. Все последние версии PGP используют SHA-1 в качестве хэш-алгоритма для генерации подписей новыми ключами DSA, соответствующими Стандарту Цифровых Подписей (DSS) NIST. Для нужд обратной совместимости новые версии PGP всё ещё используют MD5 для подписания ключами RSA [Legacy v3], т.к. старые версии PGP используют для работы с ЭЦП только алгоритм MD5.

В ранних версиях PGP в качестве алгоритма хэш-функции применялся MD5, Message Digest Algorithm, опубликованный для свободного применения компанией RSA Data Security. MD5 представляет собой хэш-алгоритм со 128-битовым выходом. В 1996 году MD5 был практически взломан немецким криптографом Гансом Доббертином. Хотя алгоритм не поддался окончательно, в нём выявились столь серьёзные недостатки (тенденция сжимающей функции алгоритма к коллизиям), что теперь никому более не рекомендуется использовать его для генерации ЭЦП. Дальнейшая работа в этой области наверняка позволит полностью его взломать, что сделает возможной свободную подделку электронных подписей. Если вы не желаете в один прекрасный день обнаружить свою электронную подпись на подставных признательных показаниях, переходите к применению новых ключей DSA и RSA v4 как предпочтительного метода генерации цифровых подписей, поскольку они в качестве криптографически стойкой односторонней хэш-функции используют SHA-1.

Краткий справочник команд PGP

Зашифровать текстовый файл с открытым ключом получателя:

pgp -e textfile her_userid

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

pgp -s textfile [-u your_userid]

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

pgp -es textfile her_userid [-u your_userid]

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

pgp -c textfile

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

  •  AES
  •  CAST
  •  TripleDES
  •  IDEA
  •  Twofish

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

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

pgp ciphertextfile [-o plaintextfile]

Для шифрования сообщения, предназначенного для нескольких адресатов:

pgp -e textfile userid1 userid2 userid3

Команды для работы с ключами

Сгенерировать вашу собственную уникальную пару секретный/открытый ключи:

pgp –kg

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

pgp -ka keyfile [keyring]

Для извлечения (копирования) ключа из каталога ключей:

pgp -kx userid keyfile [keyring]

или:

pgp -kxa userid keyfile [keyring]

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

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

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

pgp -kvc [userid] [keyring]

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

pgp -kc [userid] [keyring]

Для редактирования идентификатора пользователя или фразы пароля для вашего секретного ключа:

pgp -ke userid [keyring]

Для редактирования параметров доверия для открытого ключа:

pgp -ke userid [keyring]

Удалить ключ или только идентификатор пользователя из вашего каталога открытых ключей:

pgp -kr userid [keyring]

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

pgp -ks her_userid [-u your_userid] [keyring]

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

pgp -krs userid [keyring]

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

pgp -kd your_userid

Для отмены или восстановления открытого ключа в

вашем каталоге открытых ключей:

pgp -kd userid

Сложные команды

Для дешифровки сообщения, оставляя подпись на нем нетронутой:

pgp -d ciphertextfile

Для создания удостоверяющей подписи отдельно от документа:

pgp -sb textfile [_u your_userid]

Для отделения удостоверяющей подписи от подписанного сообщения:

pgp -b ciphertextfile

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

Для получения зашифрованного файла в формате ASCII radix_64 добавьте опцию -a при шифровании или подписании сообщения или извлечения ключа:

pgp -sea textfile her_userid

или:

pgp -kxa userid keyfile [keyring]

Для полного удаления оригинального текстового файла после создания зашифрованного файла просто добавьте опцию -w (wipe) при шифровании или подписании сообщения:

pgp -sew her_userid message.txt

Для указания того, что что текстовый файл содержит текст ASCII, а не двоичный, и должен быть преобразован в локальный текстовый файл получателя, добавьте опцию

-t (text) к другим:

pgp -seat message.txt her_userid

Для просмотра выводимого расшифрованного текста на вашем экране (подобно команде "more" в Unix), без записи его в файл, используют опцию -m (more) при расшифровке:

pgp -m ciphertextfile

Для задания возможности просмотра распакованного текста ТОЛЬКО на экране без возможности записи на диск, добавьте опцию -m:

pgp -steam her_userid message.txt

Для восстановления оригинального имени файла в процессе дешифровки, добавьте опцию -p:

pgp -p ciphertextfile

Для использования режима фильтра (как в Unix), читая из стандартного потока ввода и записывая в стандартный поток вывода, добавим опцию -f:

pgp -feast her_userid <inputfile >outputfile

Работа с PGP

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

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

Примечание: Для работы с консольной версией программы Вам понадобится запуск «командной строки», а также установка текущего каталога C:\Program Files\Network Associates\PGPNT. Для того, чтобы не набирать таких длинных имен, проделайте следующую операцию:

  •  щелкните правой кнопкой на ярлыке «Командная строка» (Пуск-Программы-Стандартные), выберите пункт «Свойства», далее нажмите кнопку «Найти объект»;
  •  Вы попадете в папку C:\WINDOWS\system32. Скопируйте из нее файл cmd.exe в папку, где установлена программа PGP (по умолчанию – это папка C:\Program Files\Network Associates\PGPNT);
  •  запустите скопированный файл cmd.exe из новой папки.

Чтобы создать пару (открытый/закрытый) ключей – нужно выполнить команду:

pgp -kg

  •  Первым делом, Вас попросят выбрать тип ключей Diffie Hellman/DSS или RSA:

  •  Выбираем вариант 1 и нажимаем <Enter>.
  •  В следующем меню:

  •  Выбираем так же вариант 1 и нажимаем <Enter> (Пункт 2, выбирается в том случае, если мы хотим создать дополнительную пару ключей, для уже существующего ID-пользователя).
  •  Далее, Вас попросят выбрать размер ключа, который будет использоваться для «подписи» файлов, сообщений, etc (максимальный размер ключа  - 1024):

  •  Ставим 1, выбрав тем самым значение по умолчанию (размер ключа в 1024 бит).
  •  В следующем меню, нас попросят ввести идентификатор (желательно Ваше имя с последующим адресом электронной почты) открытого ключа, к которому будет привязана наша пара (открытый/закрытый) ключ:

  •  Вводим и нажимаем <Enter>.
  •  Далее нас просят указать срок действия ключа:

  •  Ставим «0», тем самым говоря, что ключ будет действителен неограниченное время. Жмем <Enter>.
  •  Далее, нас просят ввести пароль, который будет защищать наш закрытый ключ, чтобы посторонние люди не могли им воспользоваться:

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

  •  Вводим «Y», тем самым подтверждая наше желание сгенерировать ключи для шифрования файлов. Жмем <Enter>.
  •  В следующем меню, программа покажет рекомендуемые значения ключей:

  •  Нам стоит выбрать размер ключей. Вводим «2». Жмем <Enter>.
  •  Далее, нас спросят, сколько времени, ключи, должны быть действительны:

  •  Вводим «0», тем самым говоря, что время действия ключей – неограниченно. Жмем <Enter>.
  •  Далее, нас просят, понажимать случайные клавиши на клавиатуре. Это нужно для генерации ключей.

  •  последний вопрос на данном этапе - не хотим ли мы установить только что созданную пару ключей, как используемые по умолчанию?
  •  Вводим «Y», тем самым подтверждая наше желание установить, только что созданную пару ключей, как используемые по умолчанию. Жмем <Enter>.
  •  После этого программа, скажет «спасибо». Тем самым говоря, что создание ключей завершилось и их можно использовать.

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

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

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

Работа с ключами (экспорт/импорт)

Экспорт

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

pgp -kx userid keyfile [keyring],

где:

  •  userid – ваш идентификатор, например, «Jenya Konovlov O.»;
  •  keyfile – файл, который будет создан и в который  будет произведен экспорт ключа(ей);
  •  keyring – путь, к файлу ключей, т.е. тому файлу, где хранятся ваши ключи и из которого будет произведен экспорт ключей.

Примечание: Публичные ключи хранятся в файле «PGPNT\PGP Keyrings\pubring.pkr». А в файле «PGPNT\PGP Keyrings\secring.pkr», хранятся как публичные, так и секретные.

Если, Вам понадобится передать ключ, допустим публичный, по e-mail, то стоит воспользоваться такой командой:

pgp -kxa userid keyfile [keyring]

Она позволяет сохранить ключ, в виде ANSI-последовательности.

Пример, копирования «публичного» ключа в файл, для последующего переноса на другой компьютер:

После выполнения команды, был создан файл «pub_Ваша фамилия.pgp».  Данный файл содержит ваш публичный ключ.

Пример, копирования «публичного» и «секретного» ключа в файл, для последующего переноса на другой компьютер:

После выполнения этой команды, в файле «sec_Ваша фамилия.pgp», будут находиться ваши «секретный» и «публичный» ключи.

Импорт

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

pgp -ka keyfile [keyring]

Программа проверит, не был ли ранее установлен данный ключ и спросит Вас, добавить его или нет в ваш каталог публичных ключей. Нажимаем <Enter>.

В данном примере, после выполнения выше указанной команды, на компьютер импортируется публичный ключ, находящийся в файле «pub_konovalov.pgp»

Шифрование и подпись.

Шифрование с использованием публичного (открытого) ключа

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

pgp -e textfile her_userid

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

Ниже приведен пример:

После выполнения, выше указанной, команды – будет произведено шифрование файла «Hello.txt». На выходе, Вы, получите зашифрованный файл «Hello.txt.pgp».

Примечание: Если Вы захотите послать «тело» файла по электронной почте, то при шифровании следует использовать дополнительный параметр “–a”, который преобразует сообщение в формат Radix-64 (Печатаемые ANSI-символы).

Шифрование традиционным способом (без использования ключей)

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

pgp -c textfile

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

Ниже приведен пример:

После выполнения, выше указанной, команды - на выходе, Вы, получите из файла «Hello3.txt» зашифрованный файл «Hello3.txt.pgp».

Примечание: Стоит заметить, что PGP, не будет шифровать файл одним и тем же способом дважды. Это не произойдет даже, если парольная фраза у Вас НЕ изменилась.

Подпись

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

pgp -s textfile [-u your_userid]

Ниже приведен пример:

После выполнения, выше указанной, команды - на выходе, Вы, получите из файла «Hello2.txt» – контейнер «Hello2.txt.pgp», содержащий текст файла «Hello2.txt + подпись».

 

Шифрование + Подпись

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

pgp -es textfile her_userid [-u your_userid]

Ниже приведен пример:

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

Дешифрование и проверка целостности

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

pgp ciphertextfile [-o plaintextfile]

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

Ниже приведен пример, для «зашифрованного + подписанного» файла:

После выполнения, выше указанной команды, мы из файла «hello4.txt.pgp» – получим расшифрованный файл «hello4.txt».


Работа с PGP в графическом режиме

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

Создание ключей сводится к выбору во вкладке “Keys” пункта меню “New”. Откроется мастер создания ключей.

Пройдемся по этому мастеру и создадим новые ключи. Жмем «Далее».

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

В этом окне нас просят указать, какой алгоритм мы хотим использовать. Оставляем, выбранный, по умолчанию и жмем «Далее».

В этом окне нас просят указать размер ключа. Оставляем по умолчанию и жмем «Далее».

В этом окне нас просят указать «время жизни» ключа. Оставляем по умолчанию (неограниченный) и жмем «Далее».

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

Это окно сообщает, что создание ключа прошло успешно. Жмем «Далее».

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

Данное окно сообщает, что мастер успешно завершил все работы по созданию ключей. Жмем «Готово».

После того как мы нажали «Готово», Вы, попадаете в окно «Управления ключами»

В этом окне мы можем видеть, что Ваш ключ, в данном случае «Jenya Konovalov 3», был успешно создан, а значит, Вы, можете его использовать для дальнейшего Шифрования и Подписи.

Для того, что бы использовать ново-созданный ключ – его нужно установить используемым по умолчанию.

Для этого, нажмем правой кнопкой мыши, на ключ который мы хотим использовать по умолчанию, и выберем в появившемся контекстном меню, пункт, «Set as Default».

Импорт/Экспорт ключей

Для импорта и экспорта ключей можно использовать соответствующие пункты меню: «Keys => Import» и  «Keys => Export»

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

Ниже представлен пример импортирования ключа, указанным выше способом:

Очень часто ключи присылают в e-mail сообщениях и они имеют вид обычного текста. В этом случае можно также достаточно легко и без лишних манипуляций, с созданием файла (*.pgp) – импортировать ключи. Для этого нужно просто выделить ключ и скопировать его в «буфер обмена» нажав «Ctrl+C», а потом в окне «Управления Ключами» нажать «Ctrl+V». И ключ будет успешно импортирован.

Шифрование, Дешифрование и Подпись

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

Пример, приведен ниже:

Организация доверительных отношений

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

Для помещения ключа, в базу данных сервера – сервер проделывает такие операции:

  •  Получает открытый ключ от пользователя;
  •  Подписывает ключ, своим, секретным ключом;
  •  Добавляет, подписанный ключ, в свою базу данных.

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

Первый способ (изображен, на рисунке, ниже):

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

Второй способ, применяется в том случае, если Вы не доверяете «Первому способу»:

  •  Позвонить по телефону, своему соседу (другу, коллеге).
  •  Попросить собеседника выполнить на своем компьютере такую команду:

pgp -kvc [userid] [keyring]

  •  Так же выполнить, эту же команду, у себя на компьютере;
  •  Продиктовать в трубку, поле «Key fingerprint», и если ваш собеседник скажет, что его поле не совпадает, с тем, что Вы ему только что продиктовали – значит ваши опасения подтвердились, и публичный ключ, который находится сейчас у Вас на компьютере – является подделкой.

Реализуем доверительные отношения, например, между двумя пользователями.

В организации доверительных отношений принимают участие:

  1.  Доверенное лицо – выполняющее роль сервера.
  2.  Два и более студентов.

Функции «Доверенного лица» и «Студентов» опишем на примере.

Пример «передачи и проверки подписанного файла»:

  •  Есть сервер.
  •  Два студента.
  •  Первому студенту (Студент 1) нужно передать подписанный файл другому.
  •  Второму студенту (Студент 2) нужно принять подписанный файл и проверить подпись.

Реализация:

  •   «Студент 1» и «Студент 2» передают на сервер свои открытые ключи.
  •  «Сервер» подписывает каждый полученный открытый ключ своим секретным ключом.
  •  «Студент 1» подписывает файл своим секретным ключом и передает его «Студенту 2».
  •  «Студент 2»:
    •  Сохраняет полученный файл;
    •  Производит запрос на «Сервер», для получения открытого, подписанного, ключа «Студента 1»;
    •  Получает ключ «Студента 1» от «Сервера»;
    •  Производит проверку подписи у ключа «Студента 1» с помощью открытого ключа «Сервера»;
    •  Если подпись не нарушена ключ «импортируется» в PGP;
    •  После того как ключ «Студента 1» добавлен в PGP, осуществляется проверка подписи присланного файла.

Контрольные вопросы

  1.  Охарактеризуйте понятие цифровая подпись.
  2.  Перечислите возможности цифровой подписи.
  3.  Какие требования, выдвигаемые к цифровой подписи, вам известны?
  4.  Какие виды цифровой подписи вы знаете? В чем заключается их суть?
  5.  Опишите алгоритм формирования цифровой подписи согласно стандарту DSS.
  6.  Перечислите возможности программы СrypTool.
  7.  Каким образом можно произвести подпись файла средствами СrypTool?
  8.  Как осуществить формирование пары ключей для ассиметричного шифрования?
  9.  Перечислите параметры учетной записи пары ключей пользователя.
  10.  Каким образом осуществляется импорт иэкспорт ключей с использованием СrypTool?
  11.  Как провести верификацию цифровой подписи файла с помощью СrypTool?
  12.  Как происходит шифрование (c открытым ключем) или какие действия выполняет PGP, для шифрования файлов?
  13.  Как происходит дешифровка или какие действия выполняет PGP, для дешифровки файлов?
  14.  В каком виде и где хранятся ключи (открытые/закрытые)?
  15.  Каковы сновные компоненты "Цифровых сертификатов"?
  16.  Что, собой, представляет "PKI"?
  17.  Перечислите компоненты "PKI".
  18.  В чем заключается роль "Центра сертификации(ЦС)" и "Центр регистрации(ЦР)"?
  19.  Для чего производится сжатие данных в PGP?
  20.  Охарактеризуйте понятие "Дайджест сообщения".
  21.  Приведите пример команды, шифрования файла открытым ключом получателя (соседа).
  22.  Приведите пример команды шифрования файла стандартным криптографическим методом.
  23.  Приведите пример команды подписания файла вашим секретным ключом.
  24.  Приведите пример команды одновременного подписания и шифрования файла.
  25.  Приведите пример команды расшифровки файла.
  26.  Опишите последовательность действий, выполняемых при генерации новой пары (открытый/закрытый) ключей.
  27.  Приведите пример команды расшифровки файла.
  28.  Какой командой можно просмотреть "Отпечаток файла"?
  29.  Какой командой можно произвести импорт ключей (ча)?
  30.  Какой командой можно произвести экспорт ключей (ча)?
  31.  Какой командой можно вывести полный список имеющихся ключей? Как осуществить вывод расширенной информации?
  32.  Какую опцию нужно добавить для работы с файлами в формате ASCII (radix_64)?
  33.  Как гарантировать подлинность имеющихся у Вас открытых ключей других пользователей?


 

А также другие работы, которые могут Вас заинтересовать

80349. ЗУПИНЕННЯ І ЗАКІНЧЕННЯ ДОСУДОВОГО РОЗСЛІДУВАННЯ 43.58 KB
  Підстави і процесуальний порядок зупинення та відновлення досудового розслідування. Форми закінчення досудового розслідування. Про затвердження Інструкції з організації взаємодії органів досудового слідства з оперативними підрозділами ОВС на стадіях документування злочинних дій реалізаціїоперативних матеріалів розслідування кримінальної справи та її розгляді в суді : наказ МВС України від 07 верес.
80352. Використання результатів негласних слідчих (розшукових) дій у кримінальному судочинстві 51.98 KB
  Правові засади використання результатів негласних слідчих розшукових дій у кримінальному судочинстві Використання результатів негласних слідчих розшукових дій для формування доказів у кримінальному судочинстві – це проблема яка виникла з прийняттям нового Кримінального процесуального кодексу України та розглядається на стику кримінального процесу та оперативнорозшукової діяльності а також має як теоретичний так і прикладний аспект. 254 КПК України – якщо у протоколі про проведення негласної слідчої дії міститься інформація щодо...
80353. СУДОВИЙ РОЗГЛЯД 59.35 KB
  Поняття суть і значення стадії судового розгляду. Загальні положення судового розгляду у кримінальному провадженні. Межі судового розгляду. Процедура судового розгляду.
80354. МІЖНАРОДНЕ СПІВРОБІТНИЦТВО ПІД ЧАС КРИМІНАЛЬНОГО ПРОВАДЖЕННЯ 72.33 KB
  Поняття, завдання та правова основа міжнародного співробітництва під час кримінального провадження. Процесуальний порядок надання міжнародної правової допомоги під час проведення процесуальних дій. Сутність видачі (екстрадиції) особи, яка вчинила злочин.
80355. ОСОБЛИВІ ПОРЯДКИ КРИМІНАЛЬНОГО ПРОВАДЖЕННЯ 81.85 KB
  Кримінальне провадження на території дипломатичних представництв консульських установ України, на повітряному, морському чи річковому судні, що перебуває за межами України під прапором або з розпізнавальним знаком України, якщо це судно приписано до порту, розташованого в Україні.