Лекция 4.3 Основы криптографии с открытым ключом
Симметричные криптосистемы обладают одним серьезным недостатком. Связан он с ситуацией, когда общение между собой производят не три-четыре человека, а сотни и тысячи людей. В этом случае для каждой пары, переписывающейся между собой, необходимо создавать свой секретный симметричный ключ. Это в итоге приводит к существованию в системе из N пользователей N2/2 ключей. А это уже очень «приличное» число.
Асимметричная криптография изначально задумана как средство передачи сообщений от одного объекта к другому (а не для конфиденциального хранения информации, которое обеспечивают только симметричные алгоритмы). Поэтому дальнейшее объяснение мы будем вести в терминах «отправитель» – лицо, шифруюшее, а затем отпраляющее информацию по незащищенному каналу и «получатель» – лицо, принимающее и восстанавливающее информацию в ее исходном виде. Основная идея асимметричных криптоалгоритмов состоит в том, что для шифрования сообщения используется один ключ, а при дешифровании – другой. [6]
Кроме того, процедура шифрования выбрана так, что она необратима даже по известному ключу шифрования – это второе необходимое условие асимметричной криптографии. То есть, зная ключ шифрования и зашифрованный текст, невозможно восстановить исходное сообщение – прочесть его можно только с помощью второго ключа – ключа дешифрования. А раз так, то ключ шифрования для отправки писем какому-либо лицу можно вообще не скрывать – зная его все равно невозможно прочесть зашифрованное сообщение. Поэтому, ключ шифрования называют в асимметричных системах «открытым ключом», а вот ключ дешифрования получателю сообщений необходимо держать в секрете – он называется «закрытым ключом».
В целом система переписки при использовании асимметричного шифрования выглядит следующим образом. Для каждого из N абонентов, ведущих переписку, выбрана своя пара ключей: «открытый» Ej и «закрытый» Dj, где j – номер абонента. Все открытые ключи известны всем пользователям сети, каждый закрытый ключ, наоборот, хранится только у того абонента, которому он принадлежит.
Как мы видим, во-первых, в асимметричных системах количество существующих ключей связано с количеством абонентов линейно (в системе из N пользователей используются 2*N ключей), а не квадратично, как в симметричных системах. Во-вторых, при нарушении конфиденциальности k-ой рабочей станции злоумышленник узнает только ключ Dk: это позволяет ему читать все сообщения, приходящие абоненту k, но не позволяет выдавать себя за него при отправке писем. (рисунок 11)
Рисунок 11 — Криптографическая система с открытым ключом
EK1(M)=C DK2(С)=M DK2(EK1(M))=M
Криптосистема с открытым ключом определяется тремя алгоритмами: генерации ключей, шифрования и расшифрования. Алгоритм генерации ключей открыт, всякий может подать ему на вход случайную строку r надлежащей длины и получить пару ключей (k1, k2). Один из ключей (например, k1) публикуется, он называется открытым, а второй, называемый секретным, хранится в тайне. Алгоритмы шифрования Ek1 и расшифрования Dk2 таковы, что для любого открытого текста т .
Рассмотрим теперь гипотетическую атаку злоумышленника на эту систему. Противнику известен открытый ключ k1. но неизвестен соответствующий секретный ключ k2. Противник перехватил криптограмму d и пытается найти сообщение т, где d = Ek1(m). Поскольку алгоритм шифрования открыт, противник может просто последовательно перебрать все возможные сообщения длины п. вычислить для каждого такого сообщения mi криптограмму di =Ek1(mi) и сравнить di с d. To сообщение, для которого di = d и будет искомым открытым текстом. Если повезет, то открытый текст будет найден достаточно быстро. В худшем же случае перебор будет выполнен за время порядка 2nT(n), где Т(п) - время, требуемое для шифрования сообщения длины n.
Чтобы гарантировать надежную защиту информации, к системам с открытым ключом предъявляются два важных и очевидных требования:
Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне.
Криптографические системы с открытым ключом используют так называемые необратимые или односторонние функции, которые обладают следующим свойством:
П о заданному аргументу x легко вычислить значение функции f(x), тогда как определение x из f(x) трудновычислимо. Здесь «трудновычислимость» понимается в смысле теории сложности.
О
легковычислимо
X f(x)
трудновычислимо
Упомянем по этому поводу, что ни одного примера криптографической односторонней функции неизвестно. Зато существует много криптографических функций f(x), таких, что:
Легко вычислить f(x)из x.
Определение x из f(x), вероятно, будет трудновычислимым.
Уточним определение односторонних функций. Задача называется трудновычислимой, если нет алгоритма для решения данной задачи с полиномиальным временем работы. Если же такой алгоритм существует, то задача называется вычислимой.
В качестве задач, приводящих к односторонним функциям, можно привести следующие.
1. Разложение числа на простые сомножители.
Вычислить произведение двух простых чисел очень просто. Однако, для решения обратной задачи - разложения заданного числа на простые сомножители, эффективного алгоритма в настоящее время не существует.
2. Дискретное логарифмирование в конечном простом поле (проблема Диффи-Хеллмана).
Допустим, задано большое простое число p и пусть g— примитивный элемент поля GF(p). Тогда для любого а вычислить ga (mod p) просто, а вычислить а по заданным k = ga(mod p) и р оказывается затруднительным.
Криптосистемы с открытым ключом основываются на односторонних функциях-ловушках. Функцией- ловушкой называется односторонняя функция, для которой обратную функцию вычислить проста если имеется некоторая дополнительная информация, и сложна если такая информация отсутствует.
При этом открытый ключ определяет конкретную реализацию функции, а секретный ключ дает информацию о ловушке. Любой, знающий ловушку, может легко вычислять функцию в обоих направлениях, но тот, у кого такая информация отсутствует, может производить вычисления только в одном направлении.