- •Тема 11. Системы шифрования с открытым ключом.
- •11.1. Понятие об односторонних функциях.
- •11.2. Система шифрования методом укладки рюкзака. (Ранцевая система шифрования).
- •11.3. Система шифрования rsa.
- •0920 1900 0112 1200 0718 0505 1100 2015 0013 0500.
- •0948 2342 1084 1444 2663 2390 0778 0774 0229 1655.
- •11.4. Криптосхема Диффи–Хэллмана.
- •11.5. Пример распределения ключей в системе мобильной связи.
11.2. Система шифрования методом укладки рюкзака. (Ранцевая система шифрования).
Классическая задача о рюкзаке формулируется следующим образом. Пусть имеется множество предметов с указанием их веса, некоторые представители которого укладываются в рюкзак. Зная вес наполненного рюкзака (без учета веса самого рюкзака), необходимо определить содержимое рюкзака.
Опишем задачу о
рюкзаке с использованием вектора рюкзака
и вектора данных. Вектор рюкзака
представляет собой набор из n
различных чисел (аналогично множеству
различных предметов, укладываемых в
рюкзак), т.е.
.
Вектор данных – множество двоичных
символов, т.е.
,
где
.
Вес
наполненного рюкзака есть сумма
подмножества компонентов вектора
рюкзака, определяемая как
.
Тогда задачу о
рюкзаке можно сформулировать следующим
образом: при заданном S
и известном
определить
.
Пример
11.2.1. Пусть
.
Пусть
.
Требуется определить
.
Методом проб можно установить, что
.
Тогда
.
В этом простом
примере решение было найдено методом
проб и ошибок, однако если в заданном
множестве
не 10, а 100 и более различных чисел, то
задача может стать вычислительно
неосуществимой. Следовательно, при
заданном векторе
нахождениеS
по известному
осуществляется просто, как
.
Однако решение обратной задачи, т.е.
нахождение
по известному
и заданномуS
представляет собой трудную в вычислительном
плане задачу, и, значит,
может рассматриваться как односторонняя
функция.
Для организации
схемы шифрования на основе этой задачи
необходима не просто односторонняя
функция, а функция с лазейкой, в качестве
которой выступает быстровозрастающая
последовательность компонентов вектора
.
Вектор
будетбыстровозрастающим,
если для его компонентов выполняется
соотношение
,
т.е. каждый компонент
вектора
больше суммы предшествующих ему
компонентов. Тогда если
является быстровозрастающим, то последний
элемент
,
т.е.
принимает значение единица, если
,
и
– в противном случае. Все предшествующие
элементы
находятся согласно соотношению
(11.3)
где
.
Пример
11.2.2. Пусть
,
а
.
Очевидно, что
является быстровозрастающим. Тогда из
(11.3) следует, что
.
Из примера очевидным
образом следует, что в случае наличия
быстровозрастающего
,
т.е. лазейки, определение
осуществляется достаточно просто, в
противном же случае задача отыскания
становится трудно осуществимой.
Следовательно, в качестве части секретного
ключа необходимо использовать
быстровозрастающую последовательность
и именно с учетом этого замечания строить
схему шифрования.
Данная схема
шифрования, известная также как схема
Меркла–Хэллмана,
основана на образовании вектора
,
который не является быстровозрастающим.
Следовательно, задача отыскания
по
при известномS
не является легкоразрешимой. При этом
схема обязательно должна содержать
лазейку в виде быстровозрастающего
вектора
,
который позволит разрешенным пользователям
легко решить задачу.
Первоначально
образуем быстро возрастающий вектор
и выберем простое числоP,
при котором выполняется следующее
неравенство
.
Затем случайным
образом выберем число
и вычислим
,
такое что
. (11.4)
Вектор
и числа
являются секретными. Затем из элементов
сформируем вектор
,
компоненты которого определяются как
.
Формирование
вектора
согласно последнему соотношению
знаменуют собой формирование вектора
рюкзака слазейкой.
Так, если нужно передать сообщение,
описываемое вектором
,
то первоначально
умножается на
,
что дает числоS,
вычисляемое как
,
которое и передается по открытому каналу связи.
Санкционированный
пользователь получает S
и, используя соотношение (11.4), превращает
его в
вида
![]()
.
Поскольку разрешенный
пользователь знает засекреченный
быстровозрастающий вектор
,
для отыскания
он может использовать
.
Пример
11.2.3.
Предположим, что абонент A
хочет создать общедоступную и
конфиденциальную схему шифрования.
Первоначально он создает быстровозрастающий
вектор
,
размерность которогоn
определяются потребностями абонента.
Затем он определяет число P
из условия
![]()
и число W,
такое что
,
при котором
.
Пусть, например,
,
,
так, что
,
которые и образуют секретный ключ
пользователя.
Образовав секретный
ключ, абонент A
переходит к формированию общедоступного
ключа, в качестве которого выступает
вектор
,
содержащий «лазейку»:
,
так что
.
Предположим, что
пользователь B
собирается послать сообщение абоненту
A.
Если
,
то пользовательB
создает следующее число
![]()
и передает его
пользователю A.
Последний преобразует его в
по алгоритму
,
которое, в свою
очередь, определяется как
.
Учитывая, что вектор
является быстровозрастающим, на основании
алгоритма (11.3) абонентA
легко восстановит вектор
.
Поскольку
,
то
.
Далее
,
следовательно,
.
Аналогично для
:
,
то
.
Продолжая следовать алгоритму (11.3),
получаем
.
Так что в итоге имеем
.
Схем Меркла–Хэллмана в настоящее время считается взломанной, поэтому для реализации криптосистем с открытыми ключами используется алгоритм RSA.
