- •Криптографическая система rsa
- •14.1. Введение
- •Исходный текст / зашифрованный текст
- •Пример 14.3
- •Лазейка
- •Введение
- •Атака с выборкой зашифрованного текста
- •Атаки на показатель степени шифрования
- •Атаки показателя степени дешифрации
- •Атаки исходного текста
- •Атаки модуля
- •Атаки реализации
- •Рекомендации
- •Оптимальное асимметричное дополнение шифрования (oaep — Optimal Assimetric Encryption Padding)
- •Приложения
Исходный текст / зашифрованный текст
В отличие от криптографии с симметричными ключами, в асимметрично-ключевой криптографии исходный текст и зашифрованный текст обрабатываются как целые числа. Сообщение должно перед шифрованием кодироваться как целое число (или множество целых чисел). После дешифрования оно должно быть расшифровано как целое число (или множество целых чисел). Асимметрично-ключевая криптография обычно зашифровывает или расшифровывает маленькие части информации, определяемые длиной ключа шифра. Другими словами, асимметрично-ключевая криптография обычно имеет вспомогательные цели помимо шифровки сообщения. Однако эти вспомогательные цели сегодня играют в криптографии очень важную роль.
Шифрование/дешифрование
Шифрование и дешифрование в асимметрично-ключевой криптографии — математические функции, которые применяются к числам, представляющим исходный текст и зашифрованный текст. Зашифрованный текст можно представлять себе как C = f (K public, P). Исходный текст можно представлять себе как P = g (K private, С). Функция f шифрования используется только для шифрования; функция дешифрования g используется для дешифрования. Далее мы покажем, что функция f нуждается в "лазейке" односторонней функции, чтобы позволить Бобу расшифровывать сообщение, но препятствовать Еве делать то же самое.
Потребность в обеих криптосистемах
Есть очень важный факт, который иногда неправильно истолковывается. Появление асимметрично-ключевой криптографии (открытый ключ доступа) не устраняет потребность в криптографии с симметричными ключами (секретный ключ). Причина в том, что криптография с асимметричными ключами использует математические функции для шифрования и дешифрования намного медленнее, чем криптография с симметричными ключами. Для шифровки больших сообщений криптография с симметричными ключами необходима. С другой стороны, скорость криптографии с симметричными ключами не устраняет потребность в асимметрично-ключевой криптографии. Асимметрично-ключевая криптография необходима для установления подлинности цифровых подписей и работы станций по рассылке ключей засекречивания. Это означает способность системы использовать все аспекты безопасности. Сегодня мы нуждаемся в обеих системах криптографии. Одна криптосистема дополняет другую.
НИУ ВШЭ (Высшая Школа Бизнес-Информатики):
Менеджмент информационной безопасности
:
Математика криптографии и теория шифрования
[+]
Записаться
|
Вам нравится? Нравится 42 студентам
| Поделиться |
Поддержать программу
|
Поделиться |
|
Лекция 14:
Криптографическая система RSA
A
|
версия для печати
< Лекция 13 || Лекция 14: 12345 || Лекция 15 >
"Лазейка" в односторонней функции
Главная идея асимметрично-ключевой криптографии — понятие "лазейки" в односторонней функции.
Функции
Хотя понятие функции знакомо из математики, мы дадим неофициальное определение здесь. Функция — правило, по которому связывают (отображают) один элемент во множестве A, называемый доменом, и один элемент во множестве B, называемый диапазоном, как показано на рис. 14.3.
Рис. 14.3. Функция отображения домена в диапазон
Обратимая функция — функция, которая связывает каждый элемент в диапазоне с точно одним элементом в домене.
Односторонняя функция (OWF — One Way Function) — функция, которая обладает следующими двумя свойствами:
f вычисляется просто. Другими словами, при данном x может быть легко вычислен y = f (x).
f -1 вычисляется трудно. Другими словами, при данном y, вычислить x= f ~1 (y) неосуществимо.
"Лазейка" в односторонней функции
"Лазейка" в односторонней функции (TOWF — Trapdoor One Way) — односторонняя функция с третьим свойством:
3. При данном y и ловушке (секретной) x может быть легко вычислен.
Пример 14.1
Когда
n является большим,
—
односторонняя функция. Обратите внимание,
что в этой функции x — кортеж (p, q) двух
простых чисел, а y в данном случае — это
n. При заданных p и q всегда просто вычислить
n. При данном n очень трудно вычислить p
и q. Это — проблема
разложения на множители,
которую мы рассматривали в лекциях
12-13. В этом случае для нахождения функции
f
-1
нет решения с полиномиальным временем.
Пример 14.2
Когда
n является большим, функция y = xk
mod n — "лазейка" в односторонней
функции. При заданных x, k и n просто
вычислить y, используя алгоритм быстрого
возведения в степень, который мы обсуждали
в лекциях 12-13. При заданных y, k и n очень
трудно вычислить x. Это — проблема
дискретного логарифма,
которую мы обсуждали в лекциях 12-13. В
этом случае нет решения с полиномиальным
временем для функции f
-1.
Однако если мы знаем "лазейку" и
k’, такое, что
,
мы можем использовать x = yk
mod n, чтобы найти x. Это — известный
алгоритм (RSA — Riverst-Shamir-Adelman), который
будет рассмотрен позже в этой лекции.
Ранцевая криптосистема
Первая блестящая идея относительно криптографии открытого ключа доступа принадлежит Меркелю и Хеллману — она изложена в их ранцевой криптосистеме. Хотя эта система ненадежна в соответствии с сегодняшними стандартами, главная ее идея дает возможность понять современные криптосистемы с открытым ключом, которые будут рассматриваться позже в этой лекции.
Если нам говорят, какие элементы заранее определенного множества чисел мы имеем, то можно легко вычислить сумму чисел. Если нам говорят сумму, то трудно сказать, какие элементы "находятся в ранце".
Определение
Предположим, что нам даны два k -кортежа, a = [a1,a2, …,ak] и x = [x1,x2, …,xk]. Первый кортеж — заранее определенное множество; второй кортеж, в котором x равен только 0 или l, определяет, какие элементы a должны быть отброшены в ранце. Сумма элементов в ранце равна
s = knapsackSum (a, x) = x1 a1 + x2 a2 + • • • + xkak
По данным a и x просто вычислить s. Однако по данному s трудно найти x. Другими словами, s = knapsackSum (x, a) вычисляется просто, но x= inv_knapmi (s, a) труден. Функция knapsackSum — односторонняя функция, если a - общий k -кортеж.
Суперувеличение кортежа
Просто
вычислить knapsackSum и inv_knapsackSum, если - k
-кортеж суперувеличивается.
В суперувеличивающемся
кортеже
.
Другими словами, каждый элемент (кроме
a1
) больше или равен сумме всех предыдущих
элементов. В этом случае мы вычисляем
knapsackSum и inv_knapsackSum, как показано в Алгоритме
14.1.
Алгоритм inv_knapsackSum запускается от
наибольшего элемента и продолжает
процесс к наименьшему. В каждой итерации
он проверяет, находится ли элемент в
рюкзаке.
knapsackSum (x[1,…,k], a[1,…,k] )
{
s <- 0
for (i=1 to k)
{
s <- s + ai x xi
}
return x
}
Inv_knapsackSum (s, a[1,…,k])
{
for (i=k down to 1)
{
if s >= aj
{
xi <- 1
s <- s - ai
}
else xi <- 0
}
return x[1,…,k]
}
14.1. knapsacksum и inv_knapsackSum для суперувеличивающегося k-кортежа
