Филин С.А. Информационная безопасность, 2006
.pdfтым ключом. С его помощью пользователи могут пересылать клю чи по электронной почте. В работе [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