На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Размещение открытого и личного ключей

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


С другой стороны, можно (и нужно) поместить свой открытый ключ на наиболее известные кольца открытых ключей. Например, загруженная ранее бесплатная программа PGP 5.0 по умолчанию настроена на кольцоpgpkeys.mit.edu. Если кто-нибудь получит ваше письмо по электронной почте или захочет послать вам зашифрованное сообщение, то этому человеку понадобится ваш откры­тый ключ. Поэтому, как правило, лучше помещать открытый ключ в таком месте, где он будет доступен всем.
Однако если кодирование сообщений используется только в пределах корпо­рации, то вы должны избегать размещения открытого ключа на общедоступном сервере. Возможно, вместо этого лучше поместить его на сервере корпорации или отправлять при помощи электронной
ОСНОВНЫЕ понятия АЛГОРИТМА RSA
Как и любой другой алгоритм шифрования, RSA — это набор математических формул. Таким образом, каждый раз, когда вы зашифровываете свое сообще­ние, компьютер производит (при помощи этих формул) некоторые вычисления над полученными данными и выдает зашифрованный текст. Этот набор вычис­лений обычно называют алгоритмом шифрования. Один из наиболее удачных и важных алгоритмов шифрования с открытым ключом — это RSA. Более ранние версии PGP, а также некоторые другие программы шифрования используют именно этот алгоритм.
Сразу отметим, что существует огромная разница между математическим алго­ритмом и реализующей его программой (например, PGP). Если проводить ана-■ логию, то алгоритм — это топор без топорища. Таким топорищем является про­грамма, реализующая его.
Алгоритм RSA был создан тремя математиками из MIT. (Один из них - Рональд Ривест — имеет домашнюю страницу, расположенную по адресу http:// theory.lcs.mit.edu/~rivest). Сущность этого алгоритма заключается в следующем: во-первых, машина должна сгенерировать (случайно) большое простое число — открытый ключ. После этого при помощи некоторых математических операций вычисляется второе число — личный ключ. Более подробно эти операции будут
обсуждены в одном из последующих разделов текущей главы. Полученные та­ким образом ключи используются для дальнейшего кодирования и декодирова­ния текста.
Далее приводятся четыре основные принципа алгоритма RSA:
Расшифровка зашифрованной формы сообщения должна давать в результате
первоначальный текст. Этот принцип можно записать в следующей форме:
D(E(M))=M
В данном выражении D — это функция декодирования, Е — функция кодирования, а М - исходный текст сообщения. • 2. Е и D должны достаточно легко вычисляться.
3. Предоставление доступа к значению Е никоим образом не упрощает процесс
вычисления (взлома) D. Таким образом, зашифрованное при помощи Е сообщение может расшифровать только человек, обладающий значени­ем D.
4. Применение процедуры расшифровки к сообщению М и последующее применение процедуры шифрования должно привести к первоначальному значению. Этот принцип можно записать в следующей форме:
Ривест, Шамир и Эдлман доказали, что использование третьего принципа приво­дит к тому, что для взлома зашифрованного сообщения нужно перебирать все
возможные значения до тех пор, пока не будет найдено значение, удовлетворя­ющее требованию Задача кажется достаточно легкой при использовании десяти- и даже.двадцатиразрядных (в десятичном представлении) чисел. Однако в схемах RSA обычно используются числа, содержащие вплоть до 512 разрядов для открытого ключа (£) и 154 разрядов для личного ключа (D). Кроме того, оба этих числа должны быть простыми. На вычисление этих чисел затрачивается огромное количество компьютерного времени. К настоящему моменту никто так и не смог взломать при помощи прямых вычислений ключ.
Функция, удовлетворяющая критериям называется однонаправленной функцией с потайным ходом. Однонаправленной она называется потому, что ее можно вычислять только в одном направлении (кодировать) и практически нельзя в обратном. Словосочетание «с потайным ходом» означает то, что обратная фун­кция легко вычисляется при помощи некоторой дополнительной информации (личного ключа).
СУЩНОСТЬ  АЛГОРИТМА RSA
Как это ни странно, но для понимания алгоритма RSA не требуется глубокого знания математики. Для его реализации нужно выполнить все условия, описан­ные в предыдущей части главы, а также создать программу, производящую все необходимые действия для правильного кодирования файла. Ключ для кодиро­вания (обозначим его Е) содержит в себе константу которая задает предель­ную длину кодируемого блока (т. е. сколько байт данных может содержаться в одном блоке). Процесс кодирования заключается в следующем:
1. Программа, реализующая алгоритм RSA, преобразует текст в некоторое целое число, расположенное в интервале от 0 до (/г-1). Метод преобразо­вания зависит от каждой конкретной программы. Если текст настолько велик, что не может быть адекватно представлен значением меньше, чем (И-1), то его разбивают на несколько блоков, каждый из которых может быть представлен целым числом, лежащим между 0 и 2. После этого программа возводит полученные целые значения в степень Е (т. е. используется формула блок5). Результат этой операции делится на п, а в качестве закодированного сообщения используется остаток от деле­ния. Давайте обозначим закодированный таким образом текст буквой С.
3. Чтобы декодировать документ С, нужно возвести его в степень D, а затем взять остаток от деления на число п. Полученные целые значения нужно преобразовать в текст по правилу, обратному тому, что использовалось на первом этапе кодирования.
Таким образом, пользователь предоставляет общественности ключ для кодирова­ния ■ я), или открытый ключ, и хранит у себя ключ для декодирования (D, -личный ключ. приведен пример открытого ключа, располо­женного на сервере ключей PGP.
МАТЕМАТИКА   АЛГОРИТМА RSA
щя№__\ Итак, теперь читатель знает все основные этапы реализации ■;  алгоритма RSA. Однако это далеко не все. Ниже приводятся используемые в этом алгоритме математические формулы:
1. Найдите два очень больших простых числа, р и ц.
2. Найдите число п (открытый модуль) такое, что n=p*q. В 256-битной системе шифрования я содержит 300 и более разрядов.
3. Выберите ЧИСЛО Е (открытый показатель степени), чтобы Е<п и явля- \ лось простым.
4. Вычислите число D (личный показатель степени) так, чтобы E*D -1 mod I ((/>-! )*(?-!))•
Открытый ключ — это величина (Е, я), а личным ключом является величина (D, и). Пользователь никому не должен сообщать значения чиселр и q (луч­ше всего уничтожить их). PGP и многие другие программы кодирования с открытым хранят для того ускорить процесс
рования информации. Однако сами эти значения хранятся в зашифрован­ном файле и не могут быть прочитаны обычным методом.
Для получения более подробной информации об алгоритме RSA посетите Web-страницу, расположенную по адресу http://www.rsa.com.
ЗАГРУЗКА программно!  ОБЕСПЕЧЕНИЯ RSA
II ПУБЛИКАЦИЙ ОБ ЭТОМ АЛГОРИТМЕ
RSA Data Security (эта организация создана математиками, В разработавшими алгоритм, и является подразделением Security В' Dynamics) выпускает ряд прекрасных программ, включая и системы шифрования с открытым ключом, использующих алгоритм       и связанные с ним алгоритмы и протоколы. Я настоятельно рекомендую поработать с самым новым продуктом этой ком­пании - программой SecurPC. Онаработает под управлением Windows 95, 3.1, NT и Macintosh. Чтобы загрузить бесплатную копию, посетите Web-узел компании, расположенный по адресу http://www.securid.com.
Кроме того, RSA издала несколько бесплатных публикаций, доступных на Web в виде гипертекстовых изданий, таких, например, как «CryptoBytes» и «CipherText». В этих документах имеется описание продуктов RSA, а также указываются все изменения промышленных стандартов. Кроме того, здесь I вы найдете информацию о стандартах шифрования, связанных с разработан­ной RSA системой с открытым ключом, протоколом соглашений ключах Диффи—Хеллмана и т. д.
РАБОТЫ ДиФФи и ХЕЛЛМАНА
В 1976 году доктора У. Диффи и М. Е. Хеллман положили начало новому поко­лению систем шифрования, введя понятие кодирования с открытым ключом. С его пользователи могут пересылать ключи по электронной почте. В этой работе Диффи и Хеллман привели простейший пример системы кодиро­вания с открытым ключом, известной в настоящее время под названием обмена ключей Диффи-Хеллмана. Позже, в 1978 году, Ривест, Шамир и Эдлман со­здали более завершенный вариант подобной системы шифрования, которая и легла в основу алгоритма RSA. С помощью системы RSA можно как распростра­нять ключи, так и создавать цифровые подписи документов. Можно применять этот алгоритм и для шифрования сообщений, однако он работает гораздо мед­леннее обычных алгоритмов.
Оказывается, что приведенный Диффи и Хеллманом пример системы кодирова­ния содержит элементы завершенной системы шифрования с открытым клю­чом, открытой доктором Эль Гамалем. Кроме того, Эль Гамаль добавил воз­можность создания цифровых подписей. В 1994 году NIST (National Institute of Standards and Technology — Национальный институт стандартов и технологий) принял стандарт DSS (Digital Signature Standard — стандарт цифровых подпи­сей), основанный на модернизированном варианте цифровой подписи Эль Еа-маля. Таким образом, совместное использование обмена ключей Диффи-Хел­лмана и цифровой подписи Эль Гамаля (в форме стандарта DSS) предоставляет те же возможности, что и обычный алгоритм RSA.
БАЗОВЫЕ понятия ОБ АЛГОРИТМЕ Диффи-Хеллмана
Ранее я уже рассказывал читателю о сущности алгоритма RSA и о том, что пер­вое упоминание о подобном алгоритме встречается в опубликованной в 1976 году работе Диффи и Хеллмана. Авторы этой статьи предположили, что если ис­пользовать для кодирования информации большое простое число, то с его по­мощью можно получить другое простое число (тоже очень которое позволяет декодировать информацию, зашифрованную при помощи первого числа. Формула Диффн—Хеллмана — это базовое уравнение для модулярных методов кодирования.
С помощью протокола соглашений о ключах Диффи-Хеллмана две обменива­ющиеся данными стороны (предположим, Петя и Вася) могут передавать кон­фиденциальную информацию при помощи открытых каналов. Для этого они должны договориться о ключе — личном (для писем) или едином (для общения в реальном масштабе времени). Теперь допустим, что кто-то (например, Дима) хочет подслушать их беседу. Но он не сможет этого сделать потому, что ему неизвестно данное соглашение. В протоколе соглашений о ключах Диффи— Хеллмана используется простое число р — первичный модуль и генератор. Ра­боту системы кодирования можно представить в следующем виде:
Петя: Выбирает   и посылает Васе сигнал      mod p.
Вася: Выбирает   и посылает Пете сигнал      mod p.
Петя: Вычисляет ключ (у,)"' mod р = а*|й mod p.
Вася: Вычисляет ключ     mod р =    mod p.
Дима, который видит только сигналы у, и у2, для расшифровки сообщения дол­жен решить один из вариантов уравнения с начальными дан­ными       у2). Без значений а, р,     или    он никогда не сможет решить это уравнение (и, соответственно, расшифровать данные).
Проще всего понять алгоритм считая, что он полностью эквивалентен (с точки зрения математики) алгоритму RSA; при этом не стоит забывать, что алгоритмы реализуются совсем по-разному. Для простого челове­ка основное отличие алгоритма заключается в том, что срок действия патента, выданного на этот алгоритм, истек в сентябре 1997 года. В связи с этим авторы изобретения передали алгоритм в общее пользование (поме­стив его в доступный для всех домен).
СРАВНЕНИЕ АЛГОРИТМОВ        и Диффи-Хеллмана
Стойкость кодирования определяется тем, какое количество времени потребуется на то, чтобы расшифровать закодированное с его помо­щью сообщение. При этом подразумевается, что для расшифровки исполь­зуется только известный всем открытый ключ. Вся мощь RSA заключается в том, что до сих пор не найдено способов разложить число на простые сомно­жители. В то же время алгоритм построен на сложности дискретных логарифмов в ограниченном поле, при помощи простого числа.
Как известно, оба этих алгоритма шифрования относятся к «трудноразреши-математическим проблемам. ради стоит что математики считают проблему дискретных алгоритмов более сложной, чем на данном этапе развития вычислительной техники эта разница практически незаметна: обе проблемы требу­ют для своего решения невероятно огромного количества мени.
проблему взламывания алгоритмов с прикладной точки следует заметить, чтр оба алгоритма одинаковы по сложности. В зависимости от конкретных обстоятельств, один метод может превосходить при теперешней мощности процессоров эти различия практически незаметны для чисел длиной     512 до 1024 бит. Но при большей длине ключа алгоритм стойкостью к взлому.
Когда-то шифровальщики, математики и группы поддержки общественных интересов поломали немало копий, обсуждая свойства RSA и схемы DSS-подписи с открытым ключом. Несмотря на то что алгоритмы построены на абсолютно различных математических принципах, с практической точки ния они обладают почти одинаковой стойкостью к взлому.
ИДЕНТИФИКАЦИЯ СООБЩЕНИЯ
КАК ЧАСТЬ ПРОТОКОЛА С ОТКРЫТЫМ КЛЮЧОМ
Вам уже, наверное, известно, что в PGP и многих других системах кодирования широко используется идентификация сообщений. Идентификация сообщений -это метод, позволяющий получателю сообщения проверить авторство и неиз­менность переданного документа. При всей своей простоте он достаточно эффек­тивен. Итак, рассмотрим, в чем же он состоит. Прежде чем отправить сообще­ние, пользователь должен закодировать его при помощи специального ключа и таким образом подписать его. С помощью этого секретного ключа создается циф­ровая подпись, которую может проверить получатель (или любой другой человек — подпись служит только для подтверждения авторства документа, но не для" его кодирования). Мы более подробно поговорим о цифровых подписях в главе 5.
При помощи цифровой подписи получатель может легко проверить, действи­тельно ли автором переданного документа является человек, оставивший под­пись. Дело в том, что подобную подпись может создать только тот, кто обладает личным ключом. Таким образом, цифровая подпись однозначно идентифици­рует только этого человека. Кроме того, подпись зависит от таких факторов, как содержание документа, дата, время и т. д. Таким образом, она позволяет проверить, не изменялся ли файл во время передачи или после нее.
схематично показано, как создается цифровая подпись и как она декодируется на стороне получателя.
ОТНОСИТЕЛЬНОСТЬ БЕЗОПАСНОСТИ
Как уже отмечалось, и RSA, и алгоритм Диффи--Хеллмана (отметим, что оба эти алгоритма реализованы в PGP) достаточно устойчивы к взлому при помощи «грубой силы» (т. е. к прямому декодированию с использованием мощных ком­пьютеров). Дело в том, что количество возможных комбинаций ключей прибли­жается к бесконечности. Например, сто машин Pentium-100 смогут взломать 428-битный ключ RSA приблизительно в течение одного года. Напомним чита­телю, что в PGP 2.6.2используются ключи длиной от 512 до 2048 бит, а в PGP 5.0 длина ключа может достигать 4096 бит.
Однако все сказанное выше отнюдь не говорит о том, что эти методы шифрова­ния не будут взломаны в будущем (особенно учитывая быстрый рост производи­тельности Кроме того, существует вероятность, что новые от­крытия в теории чисел помогут найти зависящий от времени полиномиальный алгоритм, способный поставить под угрозу весь алгоритм RSA. Как будет рас­сказано далее, уже сейчас хакеры могут приблизительно вывести диапазон чи­сел, в котором находится значение ключа. Для этого им достаточно знать вре­мя, затрачиваемое на кодирование передаваемого сообщения.
Вы должны отчетливо представлять, что не существует абсолютных методов шифрования, а следовательно, ни один из них не может гарантировать полную
безопасность передаваемых сообщений. Вся мощь алгоритма RSA основана на сложности разложения числа на простые множители. Отсюда можно сделать вывод о том, что RSA — это один из наиболее стойких к взлому методов. На сегодняш­ний день он предоставляет наибольшую степень безопасности.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика