Математическая основа криптографических систем с открытым ключом
Системы шифрования с симметричным ключом имеют существенный недостаток. Если ключ и сообщение эквивалентны по длине, то возникает вопрос,не проще ли отправить сообщение по секретной почте. Был разработан математический аппарат для шифрования с открытым распределением ключей. Идея метода основана на использовании односторонних математических функций. Это такие функции, когда по аргументу х легко вычислить f(x), когда известно f(x) , то х найти сложно.
1. Выбираем одностороннюю математическую функцию такую, что по х-f(x) легко найти, а f(x) по x сложно. Функцию f(x) объявляем открытой.
2. Находится такая подзадача для этой односторонней функции, для которой значения х по f(x) определяется легко
3. Значения открытого ключа (f(x)) перемешиваются так, чтобы для криптоаналитика она выглядела труднорешимой. Для легального получения используем способ приведения к легкой подзадаче
Показательным примером являются «рюкзачные» криптосистемы.
А=(a1,a2,an) ai – целые положительные числа
Нам известно k
Задача состоит в том, чтобы среди элементов вектора Ai выбрать такие суммы, которые будут равняться k=∑ ai , i=n
Например
k=3231
А(43,129,215,473,903,302,561,1165,697,1523)
Методом перебора определяем 129+473+903+561+1165=3231
В=(0,1,0,1,1,1,0,1,1,0,0) A*B=k Sm=k1, k2…km
Под задачей имеющей однозначное обратное решение понимается сверхрастущий вектор (каждый последующий элемент больше суммы всех предыдущих). Для сверхрастущего вектора и рюкзака k существует однозначный алгоритм нахождения столбца В. Такого, что А*В=k
Рюкзачные криптосистемы
Проблема рюкзака" (или "ранца") может быть сформулирована следующим образом. Пусть задано множество натуральных чисел А = (a1, а2,..., аn) и натуральное число k. Требуется установить, имеется ли такое подмножество множества А, сумма элементов которого была бы равна S.
Данная проблема получила свое название в связи с тем, что поставленная задача может быть переформулирована также в следующем виде. Имеется набор предметов с известными весами и рюкзак, который может выдержать вес, не превышающий заданной величины. Можно ли выбрать набор предметов для погрузки в рюкзак так, чтобы они в точности имели максимально возможный вес.
Идея построения системы шифрования на основе проблемы рюкзака заключается в выделении некоторого подкласса задач об укладке рюкзака. Параметры подкласса определяют секретный ключ, а параметры модифицированной задачи – открытый ключ. В качестве легко решаемой задачи. Меркль и М. Хеллман в 1978 г. предложили задачу об укладке "супервозрастающего" рюкзака.
А=(a1,a2,an) ai – целые положительные числа
Нам известно k
Задача состоит в том, чтобы среди элементов вектора Ai выбрать такие суммы, которые будут равняться k=∑ ai , i=n
Например
k=3231
А(43,129,215,473,903,302,561,1165,697,1523)
Методом перебора определяем 129+473+903+561+1165=3231
В=(0,1,0,1,1,1,0,1,1,0,0) A*B=k Sm=k1, k2…km
Под задачей имеющей однозначное обратное решение понимается сверхрастущий вектор (каждый последующий элемент больше суммы всех предыдущих). Для сверхрастущего вектора и рюкзака k существует однозначный алгоритм нахождения столбца В. Такого, что А*В=k
Алгоритмы шифрования рюкзачной криптосистемы.
1. Строим сверхрастущий вектор. Размеры сверх растущего вектора равны количеству бит для кодирования каждого символа исходного сообщения.
2. Переходим от сверхрастущего вектора А к вектору В. Для того найдем секретные коэффициенты m и t таким образом, что
1) m>суммы всех элементов вектора А
2) а1*t>m
3. НОД (m,t)=1
4. bi=ai*t mod m
5. Шифруем сообщение. B-открытый ключ для шифрования
W=(w1,w2,…wn) – исходный текст (wi – битовая маска символа)
6. k=B*W = k1, k2, …kn
7. Передадим в открытый канал k и открытый ключ B.
8. Для расшифровки сообщения будем пользоваться открытым ключом B и m и t, известными только легальному получателю