- •Методические материалы
- •1. Основные понятия
- •2. Традиционные криптосистемы
- •2.1. Некоторые особенности криптосистем. Примеры традиционных криптосистем
- •2.2. Теоретическая стойкость криптосистем 2
- •2.2.1. Системы с совершенной секретностью
- •2.2.2. Шифр Вернама
- •2.2.3. Элементы теории информации
- •2.2.4. Расстояние единственности шифра с секретным ключом
- •2.3. Современные криптосистемы с секретным ключом 4
- •2.3.1. Основные положения
- •2.3.2. Блоковые шифры
- •2.3.2.1. Общие положения
- •2.3.2.2. Блоковый шифр гост 28147-89
- •2.3.2.3. Режимы функционирования блоковых шифров
- •2.3.3. Потоковые шифры
- •2.3.3.1. Общие положения
- •2.3.3.2. Режим ofb блокового шифра
- •2.3.3.3. Режим ctr блокового шифра
- •2.3.3.4. Алгоритм rc4 6
- •3. Криптосистемы с открытым ключом 7
- •3.1. Основные положения
- •3.2. Криптосистема Диффи-Хеллмана
- •3.3. Шифр Шамира
- •3.4. Шифр Эль-Гамаля
- •3.5. Шифр rsa. Односторонняя функция с "лазейкой"
- •3.6. Цифровая (электронная) подпись
- •3.6.1. Криптографические хеш-функции
- •3.6.2. Цифровая подпись rsa
- •3.6.3. Цифровая подпись на базе шифра Эль-Гамаля
- •3.6.4. Стандарты на цифровую подпись
- •3.7. Криптографические протоколы
- •3.7.1. Протокол для доказательства с нулевым знанием
- •3.7.2. Протокол для поддержки электронных денег
- •Рекомендуемая литература
3.4. Шифр Эль-Гамаля
Пусть имеются абоненты A, B, C, ... , которые хотят передавать друг другу зашифрованные сообщения, не имея защищенных каналов связи. Шифр Эль-Гамаля решает эту задачу, используя в отличие от шифра Шамира только одну пересылку сообщения. Для каждого сообщения соответствующие секретные числа вычисляется заново.
Для всей группы абонентов открыто выбираются числа p и g с теми же свойствами, что и в системе Диффи-Хеллмана.
Затем каждый i-й абонент выбирает свое секретное число ci, 1 < ci < (p – 1) и вычисляет соответствующее ему открытое число di:
di = mod p (3.13)
В результате получаем таблицу вида табл. 3.3.
Таблица 3.3
-
Абонент
Секретный ключ
Открытый ключ
А
cA
dA
В
cB
dB
...
...
...
Полагем, что сообщение m, которое А должен передать В, удовлетворяет ограничению m<p. Тогда протокол передачи данных имеет вид:
Шаг 1. А формирует случайное секретное число k, 1 k (p – 2) и вычисляет числа
r = mod p (3.14)
e = m mod p (3.15)
и передает их абоненту В.
Шаг 2. Абонент В вычисляет:
m' = e mod p. (3.16)
Свойства шифра Эль-Гамаля:
m' = m, то есть в результате реализации протокола от А к В действительно передается сообщение m;
противник, зная p, g, dB, r и e, не может узнать, какое сообщение было передано.
Докажем, что шифр действительно обладает указанными свойствами.
Подставим в (3.16) значение e из (3.15), получим:
m' = m mod p.
Подставим сюда r из (3.14) и значение dB из (3.13), получим:
m' = m mod p = m mod p = m.
Последний переход осуществлен на основании теоремы Ферма:
mod p = 1k mod p = 1.
Таким образом, первое свойство доказано.
Для доказательства второго свойства учтем, что противник не может вычислить k из равенства (3.14), так как это задача дискретного логарифмирования. Следовательно, он не сможет вычислить m из равенства (3.15). Противник также не сможет воспроизвести действия абонента В, так как ему не известно секретное число cB – определение этого числа также является задачей дискретного логарифмирования.
Следует учитывать, что объем шифра в два раза превышает объем открытого сообщения, но требуется только одна передача данных.
3.5. Шифр rsa. Односторонняя функция с "лазейкой"
Разработчиками этого шифра являются Риверс, Шамир и Адлеман (1978 г.). Шифр до сих пор является одним из самых распространенных. Это шифр свободен от недостатков, присущих шифру Шамира (тройная пересылка сообщения) и шифру Эль-гамаля (удвоение объема сообщения). В шифре вместо (3.3) применяется другая односторонняя функция.
Шифр базируется на использовании следующих фактов из теории чисел:
задача проверки числа на простоту является относительно легкой;
задача разложения на множители числа вида n = pq, где p, q простые числа, при условии, что известно только n, является очень трудной (это так называемая задача факторизации).
Пусть имеются абоненты A, B, C, ... . Каждый абонент случайно выбирает два секретных простых числа P и Q. Затем он вычисляет открытое (доступное другим абонентам) число:
N = PQ. (3.17)
После этого он вычисляет другое число = (P1)(Q 1) и выбирает некоторое число d < , взаимно простое с , и, по обобщенному алгоритму Евклида, находит число с такое, что:
cd mod = 1. (3.18)
Таким образом, мы имеем табл. 3.4.
Таблица 3.4
Абонент |
Открытые параметры |
Секретные параметры |
А |
NA, dA |
PA, QA, cA |
В |
NB, dB |
PB, QB, cB |
... |
... |
... |
Полагая, что длина сообщения удовлетворяет условию m < NB, опишем протокол передачи данных от A к B:
Шаг 1. А шифрует сообщение по формуле:
e = mod NB. (3.19)
и пересылает е абоненту В по открытому каналу.
Шаг 2. В вычисляет:
m' = mod NB. (3.20)
Обратите внимание на то, что при направлении передачи А В используются параметры только абонента В.
Свойства шифра RSA:
m' = m, то есть в результате реализации протокола от А к В действительно передается сообщение m;
противник, перехватывающий зашифрованное сообщение и знающий открытые параметры, не может узнать, какое сообщение было передано.
Докажем, что шифр действительно обладает указанными свойствами. Для этого нам понадобятся дополнительные понятия и факты из теории чисел.
Теорема 3.3. (основная теорема арифметики)
Любое целое положительное число может быть представлено в виде произведения простых чисел, причем единственным образом.
Определение: пусть дано целое число N 1. Функцией Эйлера называется функция натурального аргумента, значение которой (N), N ℕ равно количеству чисел в ряду 1,2, ..., N – 1, взаимно простых с N.
Теорема 3.4. Если p – простое число, то (p) = p – 1.
Теорема 3.5. Пусть p и q – различные простые числа. Тогда (pq) = (p – 1)(q – 1).
Теорема 3.6. (Эйлер). Пусть a и b – взаимно простые числа. Тогда:
a(b) mod b = 1.
Теорема 3.7. Пусть p и q – простые числа и p q и k – произвольное целое число. Тогда:
ak(pq)+1 mod (pq) = a.
Вернемся к анализу свойств шифра RSA.
По построению протокола m' = mod NB = mod NB. Равенство (3.18) означает, что для некоторого k: cBdB = kB + 1.
Согласно (3.17) и теореме 3.5 B = (PB – 1)(QB – 1) = (NB). Отсюда по теореме 3.7 получим:
m' = mod NB = m.
Таким образом, первое свойство доказано.
При доказательстве второго свойства учтем, что противник знает только открытые параметры. Для того, чтобы найти секретный параметр cB, он должен знать значение B = = (PB – 1)(QB – 1), то есть необходимо знать параметры PB и QB. Для этого ему нужно решить задачу разложения на множители числа N, а это трудная задача (в отличие от того, что выбор больших случайных чисел PB и QB возможен за приемлемое время).
Второе свойство также доказано.
Применяемая в системе RSA односторонняя функция y = xd mod N обладает так называемой "лазейкой", позволяющей легко вычислять обратную функцию x = mod N, если известно разложение N на простые множители. Действительно, в этом случае легко вычислить = (P – 1)(Q – 1), а затем с = d 1 mod . Следовательно, противник, зная PB и QB, то есть "лазейку, может вычислить секретный параметр cB, а значит, используя (3.20), определить исходное сообщение.
Если же P и Q не известны, то вычисление обратной функции практически невозможно, поскольку найти P и Q, то есть "лазейку" ("потайной ход"), за приемлемое время невозможно. Таким образом односторонность данной функции порождается трудностью задачи факторизации.
Такие односторонние функции находят применение и в других разделах криптографии.
Следует учитывать, что для шифра RSA важно, чтобы каждый абонент выбирал собственную уникальную пару простых чисел P и Q, то есть чтобы модули NA, NB, ... были различны. В противном случае данный абонент мог бы читать зашифрованные сообщения, предназначенные для другого абонента. Однако это не требуется для второго открытого параметра d. Он может быть одинаковым у всех абонентов. Часто рекомендуют выбирать d = 3, при соответствующем выборе P и Q. Тогда шифрование осуществляется очень быстро – всего за два умножения.
Рассмотренная система невскрываема при больших P и Q, но обладает следующим недостатком:
А передает сообщение В, используя открытую информацию абонента В (числа NB и dB). Противник не может читать сообщения. предназначенные для В, но он может передать сообщение к В от имени А.
Избежать этого можно, используя более сложны протоколы, например, такой:
пусть А должен передать В сообщение m. Сначала А вычисляет число
e = mod NA.
Противник не сможет этого сделать, так как cA секретно. Затем А вычисляет число
f = mod NB
и передает его в В. Абонент В вычисляет числа
u = mod NB и w = mod NA. (*)
В результате абонент В получает сообщение w = m.
Обратите внимание на то, что в этой версии протокола мы встречаемся с новой ситуацией: В знает, что сообщение пришло именно от А, так как правильная расшифровка получится, только если в (*) использовано число NA. То есть А как будто "подписал" свое сообщение секретным словом cA. Это пример, так называемой электронной подписи. Далее этот аспект рассматривается подробнее.