Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Филин С.А. Информационная безопасность, 2006

.pdf
Скачиваний:
144
Добавлен:
11.03.2016
Размер:
12.87 Mб
Скачать

тым ключом. С его помощью пользователи могут пересылать клю­ чи по электронной почте. В работе [67] Диффи и Хеллман привели простейший пример системы кодирования с открытым ключом, из­ вестной в настоящее время под названием обмена ключей Диффи— Хеллмана. Позже, в 1978 г., Ривест, Шамир и Эдлман создали более завершенный вариант подобной системы шифрования, которая и легла в основу алгоритма RSA. С помощью системы RSA можно как распространять ключи, так и создавать цифровые подписи до­ кументов. Можно применять этот алгоритм и для шифрования сооб­ щений, однако он работает гораздо медленнее обычных алгоритмов.

Приведенный Диффи и Хеллманом пример системы кодирова­ ния содержит элементы завершенной системы шифрования с от­ крытым ключом, открытой доктором Эль Гамалем. Кроме того, Эль Гамаль добавил возможность создания цифровых подписей. National Institute of Standards and Technology (NIST) — Национальный инсти­ тут стандартов и технологий в 1994 г. принял стандарт DSS (Digital Signature Standard — стандарт цифровых подписей), основанный на модернизированном варианте цифровой подписи Эль Гамаля. Таким образом, совместное использование обмена ключей Диффи— Хеллмана и цифровой подписи Эль Гамаля (в форме стандарта DSS) предоставляет те же возможности, что и обычный алгоритм RSA.

Диффи и Хеллман предположили, что если использовать для ко­ дирования информации большое простое число, то с его помощью можно получить другое простое число (тоже очень большое), ко­ торое позволяет декодировать информацию, зашифрованную при помощи первого числа. Формула Диффи—Хеллмана — это базовое уравнение для модулярных методов кодирования.

С помощью протокола соглашений о ключах Диффи—Хеллмана две обменивающиеся данными стороны (А и В) могут передавать конфиденциальную информацию при помощи открытых каналов. Для этого они должны договориться о ключе — личном (дли писем) или едином (для общения в реальном масштабе времени). Допустим, что кто-то (например, С) хочет подслушать их беседу. Но он не смо­ жет этого сделать потому, что ему неизвестно данное соглашение. В протоколе соглашений о ключах Диффи— Хеллмана используется простое число р — первичный модуль и генератор. Работу системы кодирования можно представить в следующем виде [66]:

А: Выбирает X] и посылает В сигнал = axi mod р. В: Выбирает х2и посылает А сигнал у?=аХ2 m°d р- А: Вычисляет ключ (у2) X1 mod р = аХ1Х2 mod р .

В: Вычисляет ключ (у^5(2 mod р = аХ1Х2 mod р.

С, который видит только сигналы у, и у2, для расшифровки со­ общения должен решить один из вариантов уравнения Диффи—

263

Хеллмана с начальными данными (уь у2). Без значений а, р, лс1; или он никогда не сможет решить это уравнение (и соответственно рас­ шифровать данные).

Проще всего понять алгоритм Диффи—Хеллмана, считая, что он полностью эквивалентен (с точки зрения математики) алгоритму RSA; при этом не стоит забывать, что алгоритмы реализуются совсем по-разному.

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

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

Если рассматривать проблему взламывания алгоритмов с при­ кладной точки зрения, то оба алгоритма приблизительно одинаковы по сложности. В зависимости от конкретных обстоятельств, один метод может превосходить другой, однако при теперешней мощ­ ности процессоров эти различия практически незаметны для чисел длиной от 512 до 1024 бит. Но при большей длине ключа алгоритм Диффи—Хеллмана обладает большей стойкостью к взлому. И RSA, и алгоритм Диффи—Хеллмана, несмотря на то что их алгоритмы построены на абсолютно различных математических принципах, с практической точки зрения обладают почти одинаковой доста­ точно высокой устойчивостью к взлому при помощи «грубой силы» (т. е. к прямому декодированию с использованием мощных компью­ теров). Дело в том, что количество возможных комбинаций ключей приближается к бесконечности.

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

264

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

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

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

2.Необходимо закодировать одноразовый ключ при помощи открытого ключа получателя. Закодированный одноразовый ключ

39 Специалисты по шифрованию и защите данных изобрели интересный способ взлома систем кодирования. Обладая информацией о времени, за­ траченном на расшифровку/шифрование при помощи личного ключа, мож­ но вычислить показатели степени алгоритма Диффи— Хеллмана и множите­ ли — ключи алгоритма RSA. Этот способ взлома распространяется и на другие системы шифрования, В этом случае взломщику не потребуется огромная вы­ числительная мощность — достаточно одного компьютера и зашифрованного послания. Этот метод ставит под угрозу сетевые системы шифрования и дру­ гие приложения, которые предоставляют хакеру возможность достаточно точ­ но вычислить время, затраченное на операции шифрования и расшифровки. Различные кодирующие системы затрачивают различное количество времени на работу с ключами разной длины. Таким образом, зная время, затраченное на расшифровку сообщения, хакер может определить длину ключа и тем самым значительно уменьшить время поиска нужной комбинации. Обладая достаточ­ но точными данными о затрачиваемом на расшифровку времени, в большин­ стве случаев хакер с большой вероятностью сможет определить и сам ключ. Для обеспечения подобной точности измерения взломщику нужен физиче­ ский доступ к системе, что не всегда возможно. Большинство передаваемых сообщений зашифрованы при помощи метода единого ключа, так как боль­ шинство серверов обеспечивают безопасность транзакций сообщения именно при помощи метода с единым ключом. Таким образом, если хакер сможет до­ статочно точно вычислить время расшифровки на обеих сторонах соединения, ему не составит труда определить длину одноразового ключа. Опасность вы­ числения времени кодирования приблизительно равна опасности кражи лич­ ного ключа из вашей системы.

265

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

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

4.После этого адресат быстро расшифровывает послание при по­ мощи полученного одноразового ключа.

В программных продуктах для шифрования с открытым клю­ чом для работы с ключами используется идентификатор ключа (key ID). Идентификатор ключа — это крайние (расположенные в конце числа) соответствующего n-го (например, 64-го) разряда открытого ключа. Если документ или ссылка отображает открытый иденти­ фикатор (на сервере ключей, как добавку к зашифрованному фай­ лу или как часть цифровой подписи), то этот идентификатор будет представлен только последними 32 битами. Многие ключи обладают одинаковыми пользовательскими идентификаторами (у пользовате­ ля может быть столько ключей, сколько он захочет), однако не суще­ ствует двух ключей с одинаковыми идентификаторами.

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

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

Кольца ключей [66] — это базы данных, содержащие сертификаты открытых или личных ключей различных пользователей.

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

266

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

Некоторые программы шифрования самостоятельно создают сертификаты личных ключей. Подобный сертификат содержит данные о личном ключе пользователя и хранится на его компьюте­ ре. Например, во время генерации пары ключей при помощи PGP программа создаст в своем каталоге два файла: pubring.skr и secring. skr. Кроме того, PGP предложит пользователю сохранить копии этих файлов также и вне компьютера. В файле pubring.skr находится сертификат открытого ключа. Этот файл можно оставлять в любом сайте Интернет. В файле secring.skr содержится сертификат личного ключа; этот файл нужно тщательно оберегать от посторонних.

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

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

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

PGP и другие программы шифрования с открытым ключом от­ носятся к категории Privacy Enhanced Mail (РЕМ) — набору процедур идентификации и шифрования сообщений. Он разработан группа­ ми PSRG (Privacy and Security Research Group) — одним из подраз­ делений IRTF (Интернет Research Task Force) — и РЕМ WG (PrivacyEnhanced Electronic Mail Working Group) — подразделением IETF (Internet Engineering Task Force). Стандарты РЕМ отображены в RFC

267

(Request for 1 Comments) 1421, 1422, 1423 и 1424. Стандарты РЕМ позволяют пользователям работать с различными методами шифро­ вания, предоставляющими конфиденциальность, идентификацию и проверку целостности передаваемой информации. Целостность передаваемой информации (согласно стандарту РЕМ) позволяет пользователям проверить ее неизменность с момента отправки, т. е. пользователю предоставляется возможность удостовериться в том, что никто не изменял текст передаваемого сообщения в процессе его транспортировки. Идентификация отправителя помогает устано­ вить авторство РЕМ-сообщения. Конфиденциальность сообщения подразумевает секретность информации, т. е. она не должна быть из­ вестна никому, кроме получателя.

Схема идентификации РЕМ определена в документе RFC 1422,

«Privacy Enhancementfor Интернет Electronic Mail. Part II: CertificateBased Key Management». Эта схема предусматривает основные кон­ цепции иерархической идентификации. В их основе лежат серти­ фикаты, в которых содержится описание используемого алгоритма цифровых подписей, четко определенное имя (distinguished пате) объекта, имя создателя сертификата, период его действия, а также открытый ключ и создавший его алгоритм. Подобный иерархиче­ ский подход к сертификатам позволяет пользователю удостоверить­ ся, что полученный сертификат принадлежит именно тому человеку, чье имя стоит в сертификате. Эта схема сильно усложняет подделку сертификатов — среди пользователей найдется не так уж много же­ лающих воспользоваться сертификатом с неизвестным создателем.

Для реализации конфиденциальности сообщений в РЕМ исполь­ зуются стандартизированные алгоритмы шифрования. RFC 1423,

«Privacy Enhancementfor Интернет Electronic Mail, Part III: Algorithms, Modes, and Identifiers» описывает используемые для кодирования РЕМ-сообщений алгоритмы шифрования с единым ключом и ал­ горитмы шифрования с открытым ключом. Основным алгоритмом шифрования является алгоритм DES (Data Encryption Standard) в ре­ жиме СВС (Cipher Block Chaining). В RFC 1423 указано, что DES яв­ ляется стандартом как для ECB (Electronic Block Book), так и для ре­ жима EDE (Encrypt-Decrypt-Encrypt). В РЕМ используется алгоритм RSA.

4. Алгоритмы профиля сообщения [66]. Для обеспечения целост­ ности данных в РЕМ реализована концепция, известная под назва­ нием профиля сообщения.

Профиль сообщения [66] — это зашифрованная посредством од­ нонаправленной функции смешивания данных контрольная сумма.

268

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

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

Наиболее распространенными формами профилей в режимах управления симметричным и асимметричным ключом являют­ ся схемы RSA-MD2 и RSA-MD5. Существенно, что оба алгоритма используют «сообщения» с заранее установленной длиной. В каче­ стве такого сообщения может выступать любой файл или документ. Результатом действия алгоритма является некоторое 16-байтное зна­ чение. После этого (согласно РЕМ) оно зашифровывается при помо­ щи любого современного метода управления ключами. Получатель подобного сообщения может использовать его для вычисления но­ вого значения профиля.

40 CRC — это число, полученное в результате простого сложения всех име­ ющихся в документе значений. Зашифрованные контрольные суммы обеспе­ чивают большую безопасность, чем простые арифметические контрольные суммы. Искусство шифрования контрольных сумм часто называют зашифро­ ванной печатью.

269

5* Uuencode и SMTP [66]. Для пересылки электронной почты по Интернету пользователи наиболее часто используют протокол

SMTP (Simple Mail Transfer Protocol). Это достаточно эффективный протокол, однако с его помощью нельзя передавать зашифрованные сообщения —• ведь они по сути представляют собой двоичные дан­ ные, а не текст. Таким образом, для передачи шифровок придется «превратить» их в текст.

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

6. Microsoft CryptoAPI [66]. CryptoAPI — это интерфейс приклад­ ного программирования, при помощи которого можно добавить функции шифрования к любой программе. В CryptoAPI, как и в PGP, используются базы данных с ключами: к исходным данным приме­ няется набор ключей, затем полученное зашифрованное сообщение сохраняется (или пересылается). В CryptoAPI имеется три основных набора функций: функции сертификата, упрощенные функции шифро­ вания и базовые функции шифрования. Для их реализации необходимо воспользоваться моделью, показанной на рис. 4.12 [66].

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

(CSP — Cryptographic Service Providers), необходимости использова­ ния определенного CSP и т. д.

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

270

функции СгурЮАИ подразделяются на четыре основные категории: СБР, ключи, объекты смешивания и подписи.

7. Шифрование с помощью эллиптических кривых [66]. Как извест­ но, все современные методы шифрования построены на базе взятия по модулю (использование остатка от целочисленного деления), под­ робно обсуждавшегося в предыдущих частях этой главы. Однако в середине 1980-х гг. появился мощный алгоритм шифрования — эл­ липтические кривые. Это обширные математические структуры, сде­ лавшие неоценимый вклад в некоторых приложениях, включая ана­ лиз простых чисел (т. е. определения, является ли число простым)

и разбиение чисел на множители. Одним из возможных применений эллиптических кривых являются системы шифрования с открытым ключом. Эллиптические кривые могут привести к открытию новых разновидностей современных систем шифрования, которые основа­ ны на какой-либо сложной математической проблеме. Рассмотрим различия между системами шифрования, основанных на эллипти­ ческих кривых (ЕСС — Elliptic-Curve Cryptography), и обычными сис­ темами (основанными на операции взятия по модулю).

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

Рис. 4.12. Модель шифрования для использования интерфейса CiyptoAPI

 

API шифрования

 

 

 

Функция

Упрощенная

 

 

Незашифрованный

функция

 

 

документ

сертификата

шифрования

Поставщик услуг

 

 

 

шифрования

 

Базовая функция

П |

Основной по-

 

Стандарт-

ставшик услуг

 

шифрования

ный

 

 

 

постав-

шифрования

 

 

 

щик услуг

по алгоритму

 

 

 

цифровых Ривеста—Ша-

 

 

 

подписей

мира—Эдлмана

271

большие простые числа), а второй — на поле с математически чет­ ными характеристиками. На первый взгляд все это кажется лишь техническими различиями, но на самом деле выбор поля может по­ влиять как на безопасность, так и на эффективность системы шиф­ рования. Это различие очень напоминает то, которое встречается в системах с дискретными логарифмами.

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

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

известные под названием экспоненциального времени.

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

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

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

272