Эффективными системами криптографической защиты данных являются асимметричные криптосистемы, называемые также криптосистемами с открытым ключом. В таких системах для зашифрования данных используется один ключ, а для расшифрования - другой ключ (отсюда и название - асимметричные). Первый ключ является открытым и может быть опубликован для использования всеми пользователями системы, которые зашифровывают данные. Расшифрование данных с помощью открытого ключа невозможно.
Для расшифрования данных получатель зашифрованной информации использует второй ключ, который является секретным. Разумеется, ключ расшифрования не может быть определен из ключа зашифрования.
Обобщенная схема асимметричной криптосистемы показана на рисунке 6.3.1.
Рисунок 6.3.1 – Общая схема работы асимметричной криптосистемы
В этой криптосистеме применяют два различных ключа: КB - открытый ключ получателя В, которым будет шифровать отправитель A; kВ - секретный ключ получателя В. Генератор ключей целесообразно располагать на стороне получателя В (чтобы не пересылать секретный ключ КВ по незащищенному каналу). Значения ключей КВ и kВ зависят от начального состояния генератора ключей.
Раскрытие секретного ключа kВ по известному открытому ключу КВ должно быть вычислительно неразрешимой задачей.
Характерные особенности асимметричных криптосистем:
Открытый ключ КВ и криптограмма С могут быть отправлены по незащищенным каналам, т.е. противнику известны КВ и С.
Алгоритмы шифрования и расшифрования ЕВ: М → С, DВ: C → M являются открытыми.
Защита информации в асимметричной криптосистеме основана на секретности ключа КВ. У. Диффи и М. Хеллман сформулировали требования, выполнение которых обеспечивает безопасность асимметричной криптосистемы:
Вычисление пары ключей (КВ, kВ) получателем В на основе начального условия должно быть простым.
Отправитель А, зная открытый ключ КВ и сообщение М, может легко вычислить криптограмму С=ЕКB(М)=ЕВ(М).
Получатель В, используя секретный ключ kВ и криптограмму С, может легко восстановить исходное сообщение М=DkВ(С)=DB(C)=DB[EB(M)].
Противник, зная открытый ключ КВ, при попытке вычислить секретный ключ kВ наталкивается на непреодолимую вычислительную проблему.
Противник, зная пару (КВ, С), при попытке вычислить исходное сообщение М наталкивается на непреодолимую вычислительную проблему.
Концепция асимметричных криптографических систем с открытым ключом основана на применении однонаправленных функций. Неформально однонаправленную функцию можно определить следующим образом. Пусть Х и Y - некоторые произвольные множества. Функция
f: X → Y
является однонаправленной, если для всех х Х можно легко вычислить функцию
y=f(x), где y Y.
И в то же время для большинства y Y достаточно сложно получить значение х Х, такое, что f(x)=y (при этом полагают, что существует по крайней мере одно такое значение х).
Основным критерием отнесения функции f к классу однонаправленных функций является отсутствие эффективных алгоритмов обратного преобразования Y → X.
В качестве первого примера однонаправленной функции рассмотрим целочисленное умножение. Прямая задача - вычисление произведения двух очень больших целых чисел Р и Q, т.е. нахождение значения
N = P * Q,
является относительно несложной задачей для ЭВМ.
Обратная задача - разложение на множители большого целого числа, т.е. нахождение делителей Р и Q большого целого числа N=P * Q является практически неразрешимой задачей при достаточно больших значениях N. По современным оценкам теории чисел при целом N ≈ 2664 и P ≈ Q для разложения числа N потребуется около 1023 операций, т.е. задача практически неразрешима на современных ЭВМ.
Следующий характерный пример однонаправленной функции - это модульная экспонента с фиксированными основанием и модулем. Пусть А и N - целые числа, такие, что 1≤ А< N. Определим множество ZN:
ZN = {0,1,2,:,N-1} .
Тогда модульная экспонента с основанием А по модулю N представляет собой функцию
,
где x - целое число, 1≤ x≤ N-1.
Существуют эффективные алгоритмы, позволяющие достаточно быстро вычислить значения функции .
Если , то естественно записать .
Поэтому задачу обращения функции называют задачей нахождения дискретного логарифма, или задачей дискретного логарифмирования.
Задача дискретного логарифмирования формулируется следующим образом. Для известных целых A, N, у найти целое число х, такое, что
Алгоритм вычисления дискретного логарифма за приемлемое время пока не найден. Поэтому модульная экспонента считается однонаправленной функцией.
По современным оценкам теории чисел при целых числах А ≈ 2664 и N ≈ 2664 решение задачи дискретного логарифмирования (нахождение показателя степени х для известного у) потребует около 1026операций, т.е. эта задача имеет в 103 раз большую вычислительную сложность, чем задача разложения на множители. При увеличении длины чисел разница в оценках сложности задач возрастает.
Следует отметить, что пока не удалось доказать, что не существует эффективного алгоритма вычисления дискретного логарифма за приемлемое время. Исходя из этого, модульная экспонента отнесена к однонаправленным функциям условно, что, однако, не мешает с успехом применять ее на практике.
Вторым важным классом функций, используемых при построении криптосистем с открытым ключом, являются так называемые однонаправленные функции с "потайным ходом" (с лазейкой). Дадим неформальное определение такой функции. Функция
f: X → Y
относится к классу однонаправленных функций с "потайным ходом" в том случае, если она является однонаправленной и, кроме того, возможно эффективное вычисление обратной функции, если известен "потайной ход" (секретное число, строка или другая информация, ассоциирующаяся с данной функцией).
В качестве примера однонаправленной функции с "потайным ходом" можно указать используемую в криптосистеме RSA модульную экспоненту с фиксированными модулем и показателем степени. Переменное основание модульной экспоненты используется для указания числового значения сообщения М либо криптограммы С.