Стандарт шифрования данных DES и его практическая

Реализация

Стандарт шифрования данных DES (Data Encryption Standard) является одним из известных алгоритмов криптографической защиты данных, используемых до недавнего времени в США. Этот стандарт ‑ типичный представитель криптоалгоритмов, использующих симметричное шифрование. Благодаря таким качествам, как обеспечение высокого уровня защиты информации, простота и экономичность в реализации, он нашел широкое применение в различных областях государственной и военной деятельности. Рассмотрим детально принцип шифрования данных с помощью алгоритма DES

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

Логическая структура функционирования алгоритма DES иллюстрируется схемой обработки данных, изображенной на рис. 3.3.


 

 

 


Приведенная схема описывает как процесс шифрования, так и расшифровки информации. Алгоритм шифрования данных преобразует открытый текст в шифротекст или наоборот, в зависимости от режима использования. Как видно из структурной схемы, алгоритм имеет два входа по 64 бита каждый: один ‑ для шифруемого открытого текста (при дешифровке — для шифротекста), другой ‑ для ключа, и один 64-битный выход для полученного шифротекста (при расшифровке — для открытого текста). Из 64-х бит ключа непосредственно в процессе шифрования участвуют только 56 бит. Это связано с тем, что ключ представляется в виде восьмибитовых символов кода ASCII, каждый символ которого имеет один бит проверки на четность. Именно эти проверочные биты и не используются в алгоритме DES.

 

1 2 3 4 5 6 7 8 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5
Рис. 3.4. Порядок замены входных данных
63 55 47 39 31 23 15 7

57 58 59 60 61 62 63 64

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

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

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

Из правого регистра 32 бита поступают на вход блока расширенной перестановки, который производит их регулярное преобразование таким образом, что первый, четвертый, пятый и восьмой биты каждого из четырех октетов преобразуемых бит используются дважды. Таким образом, на выходе блока расширенной перестановки появляется уже не 32, а 48 бит. Правило преобразования данных в блоке расширенной перестановки представлено на рис. 4.8. Как видно из рисунка, при расширенной перестановке 1-й выходной бит соответствует 32-му входному биту, 2-й выходной бит ‑ 1-му входному и т. д.

С выхода блока расширенной перестановки полученные 48 бит данных поступают на сумматор по модулю 2, где складываются с 48 битами ключа шифрования. Полученные в результате этой операции 48 бит данных разделяются на 8 секстетов, поступающих на 8 соответствующих S-блоков замены. С выходов S-блоков 32 бита (8 раз по 4 бита) поступают на блок простой перестановки, задаваемой табл. 3.1, согласно которой в простой перестановке 1-й выходной бит равен 16-му входному, 2-й выходной бит ‑ 7-му входному и т.д.

Таблица 3.1. Правило простой перестановки

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

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

Блоки замены в алгоритме DES (в литературе обычно обозначаемые как S-блоки) имеют 6-битные входы и 4-битные выходы. Правило замены в каждом S-блоке определяется соответствующими таблицами S1—S8, представленными ниже.

Первый и последний биты 6-битного входа каждого S-блока задают число в диапазоне от 0 до 3, которое определяет номер строки в таблице замены, биты 2 ‑ 5 задают число в интервале 0 ‑ 15, определяя таким образом номер элемента таблицы замены в соответствующей строке. Каждый элемент таблицы замены, представленный в двоичном виде, определяет 4 бита на выходе соответствующего S-блока.

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

64 бита исходного ключа преобразуются в первом блоке сокращенной перестановки, где отбрасывается каждый восьмой бит. Если исходный ключ записан в виде 8-и символов кода ASCII, то каждый восьмой отбрасываемый бит является избыточным битом проверки на четность. Результат, полученный в блоке сокращенной перестановки 1 ‑ 56 бит, записывается в регистры С и D, содержащие по 28 бит каждый. Правило перестановки первого блока сокращенной перестановки, с учетом распределения выходных данных по регистрам, задается таблицами 3.2.

Согласно этим таблицам, первый бит регистра C соответствует 57-му биту исходного ключа шифрования, а первый бит регистра D ‑ 63-му биту ключа шифрования.

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

 

Цикл
Сдвиг

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

 

  Регистр C       Регистр D
       
       
       
       
                                   
S2
 
 
 
                                   
S3
 
 
 
                                   
S4
 
 
 
                                   
S5
 
 
 
                                   
S6
 
 
 
                                   
S7
 
 
 
                                   
S8
 
 
 

Таблица 3.2.

 

Таблица 3.3. Порядок второй сокращенной перестановки

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

 

Цикл
Сдвиг

Таким образом, процесс расшифрования является инверсным по отношению к шифрованию данных.

Одна из широко распространенных систем криптографической защиты, использующая стандарт DES, — разработанная в середине 80-х годов прошлого столетия система Kerberos, использование которой предполагает наличие высоконадежного сервера, хранящего исходные копии ключей для взаимодействия с каждым пользователем Эта система представляет собой часть спецификации открытой вычислительной среды DCE (Distributed Computing Environment) фонда OSF.

Среди предлагающих продукты на базе DCE такие компании, как IBM и Hewlett Packard. Kerberos должна стать также частью системы защиты Windows NT 5.0. На практике криптографические системы с секретными ключами, как правило, быстрее систем с открытыми ключами, обеспечивающими ту же степень защиты. Однако преимущество последних в том, что они не позволяют отказаться от авторства, а также обеспечивают проверку целостности сообщений любого сорта.

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

Kerberos имеет структуру типа «клиент-сервер» и состоит из клиентских частей, установленных на всех компьютерах сети (рабочие станции пользователей и серверы), и Kerberos-сервера (или серверов), располагающегося на каком-либо (не обязательно выделенном) компьютере. Kerberos-сервер, в свою очередь, делится на две равноправные части: сервер идентификации (authentication server) и сервер выдачи разрешений (ticket granting server). Следует отметить, что существует и третий сервер Kerberos, который, однако, не участвует в идентификации пользователей, а предназначен для административных целей. Область действия Kerberos (realm) распространяется на тот участок сети, все пользователи которого зарегистрированы под своими именами и паролями в базе Kerberos-сервера и где все серверы обладают общим кодовым ключом с идентификационной частью Kerberos. Эта область не обязательно должна быть участком локальной сети, поскольку Kerberos не накладывает ограничения на тип используемых коммуникаций. Упрощенно модель работы Kerberos можно описать следующим образом.

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

Пользователь (это клиентская часть Kerberos, установленная на рабочей станции пользователя) направляет запрос идентификационному серверу на выдачу «разрешения на получение разрешения» (ticket granting ticket), которое даст возможность обратиться к серверу выдачи разрешений. Идентификационный сервер адресуется к базе данных, хранящей информацию о всех пользователях, и на основании содержащегося в запросе имени пользователя определяет его пароль. Затем клиенту отсылается «разрешение на получение разрешения» и специальный код сеанса (session key), которые шифруются с помощью пароля пользователя, как ключа. При получении этой информации пользователь на его рабочей станции должен ввести свой пароль, и если он совпадает с хранящимися в базе Kerberos-сервера, «разрешение на получение разрешения» и код сеанса будут успешно расшифрованы. Таким образом решается проблема с защитой пароля ‑ в данном случае он не передается по сети.

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

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

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

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

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

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

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

Следует отметить также, что для всех описанных выше процедур идентификации необходимо обеспечить доступ к базе данных Kerberos только для чтения. Но иногда требуется изменять базу, например, в случае изменения ключей или добавления новых пользователей. Тогда используется третий сервер Kerberos — административный (Kerberos Administration Server). He вдаваясь в подробности его работы, отметим, что его реализации могут различаться (так, возможно ведение нескольких копий базы одновременно).

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

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

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

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

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

Система PGP (Pretty Good Privacy)

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

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

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

Программа PGP разработана в 1991 году Филиппом Зиммерманом (Philip Zimmermann). В ней применены сжатие данных перед шифрованием, мощное управление ключами, вычисление контрольной функции для цифровой подписи, надежная генерация ключей. В основе работы PGP лежат сразу два криптоалгоритма ‑ обычный алгоритм шифрования с закрытым ключом и алгоритм шифрования с открытым ключом (смешанный тип шифрования) (рис. 3.5). Зачем это нужно? Алгоритм шифрования с закрытым ключом требует защищенного канала для передачи этого самого ключа (ведь одним и тем же ключом можно как зашифровать, так и расшифровать сообщение). Система с открытым ключом позволяет распространять ключ для зашифровки сообщения совершенно свободно (это и есть открытый ключ), однако расшифровать сообщение можно при помощи второго, закрытого ключа, который хранится только у пользователя. Более того, это справедливо и в обратную сторону ‑ расшифровать сообщение, зашифрованное закрытым ключом, можно только при помощи открытого ключа. Недостатком данного алгоритма является крайне низкая скорость его выполнения.


Рис. 3.5. Принцип работы криптоалгоритма PGP

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

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

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

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

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

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

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

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

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

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

· напрямую в почтовой программе (самый удобный);

· через копирование текста в буфер обмена Windows;

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

Программа PGP предназначена, в первую очередь, для защиты электронной почты, хотя ее можно использовать и для защиты файлов на жестком диске. Особенно привлекательными чертами PGP являются многочисленные plug-ins для таких популярных почтовых программ, как Eudora, Netscape и Outlook. Plug-ins настраивают PGP для этих программ и дополняют их некоторыми приятными мелочами, например, дополнительными кнопками на панели инструментов. Пиктограмма в правом нижнем углу (tray), всплывающая панель инструментов (floating toolbox) и меню правой кнопки мыши (right-click menu) в PGP очень логичны и удобны, поэтому она проста в управлении.

Можно столкнуться с системой защиты PGP в программе Nuts & Bolts фирмы Helix Software. Это та же программа, только PGP ‑ более новой версии. Компания Network Associates поглотила Helix и завладела правами на продукт. Новая версия PGP for Personal Privacy совместима с предыдущими версиями, в том числе Nuts & Bolts.

Рекомендуется использовать связку популярной почтовой программы The Bat! (заодно поддержав производителей отечественного программного обеспечения) и PGP. Безусловным достоинством этой программы является то, что она позволяет использовать как внешнюю программу PGP (то есть оригинальную, непосредственно от разработчиков), так и установить специальное дополнение к программе, дающее возможность работать с PGP (основанное на популярной библиотеке SSLeay). Все основные возможности PGP поддерживаются в полной мере и достаточно просты в употреблении.

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

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

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

В настоящий момент программа доступна на платформах UNIX, DOS, Macintosh и VAX, Пакет программ PGP свободно распространяется по Internet для некоммерческих пользователей вместе с 75-страничным справочным руководством.

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