Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзмен-бэи.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
826.19 Кб
Скачать

12. Система Меркли-Хеллмана

Ранцевая криптосистема Меркля-Хеллмана, основанная на «задаче о рюкзаке», была разработана Ральфом Мерклем и Мартином Хеллманом в 1978 году.Ralph Merkle and Martin Hellman, Hiding Information and Signatures in Trapdoor Knapsacks, IEEE Trans. Information Theory, 24(5), September 1978, pp525–530. Это была одна из первыхкриптосистем с открытым ключом, но, к сожалению, она оказалась криптографически нестойкой и, как следствие, не приобрела популярности.Adi Shamir, A Polynomial Time Algorithm for Breaking the Basic Merkle-Hellman Cryptosystem. CRYPTO 1982, pp279–288. 

Описание

«Задача о рюкзаке» заключается в следующем: зная подмножество грузов, уложенных в ранец, легко подсчитать суммарный вес, но, зная вес, непросто определить подмножество грузов. Более подробно, пусть задана последовательность из n положительных чисел (n - "размер" рюкзака)

w = (w1w2, ..., wn) и s.

Задача состоит в том, чтобы найти такой бинарный вектор

x = (x1x2, ..., xn), (xi = 0 или 1),

чтобы

<math>s=\sum_{i = 1}^n x_iw_i</math>.

Если каждому двоичному числу x поставить в соответствие некоторую букву алфавита, то её можно было бы передавать в зашифрованном виде просто как сумму s. Для произвольного набора чисел wi задача восстановления x по s является NP-трудной.

Р.Мерклю удалось получить обратную к числу s функцию, которая давала бы вектор x, зная только некий «секретный» ключ, и он предложил $100 тому, кто сможет раскрыть ранцевую систему Меркля-Хеллмана.

Рассмотрим её подробнее.

Меркль использовал не произвольную последовательность wi, а супервозрастающую (superincreasing), то есть такую, что

wk+1<math>>\sum_{i = 1}^k w_i</math>.

Нетрудно убедиться, что для такого набора чисел решение задачи является тривиальным. Чтобы избавиться от этой тривиальности и понадобилось ввести «секретный ключ», а именно два числа: q такое, что <math>q>\sum_{i = 1}^n w_i</math> и r такое, что НОД(r,q) =1. И теперь вместо первоначального набора чисел wi будем использовать числаbi=rwi mod q. В оригинальных статьях Меркль рекомендовал использовать n порядка 100, где n - число элементов супервозрастающей последовательности ("размер" рюкзака).

В итоге получаем: открытый ключ – (b1b2, ..., bn), закрытый ключ - (w1w2, ..., wnqr).

  • Шифрование

– сообщение x = (x1, x2, ..., xn)

- вычисляем y = b1x1 + b2x2 + bnx

  • Расшифровка

- вычисляем s = y'r-1 mod q

- решаем задачу для s для супервозрастающей последовательности (w1, w2, ..., 'wn), т.е. находим двоичное число x

Награда досталась А. Шамиру (Adi Shamir) после публикации им в марте 1982 года сообщения о раскрытии ранцевой системы Меркля-Хеллмана с одной итерацией. Заметим, что Шамир сумел построить ключ, не обязательно равный секретному, но позволяющий раскрыть шифр.

Итак, это была одна из неудачных, но очень интересных попыток построения криптосистемы на основе задачи о рюкзаке.

Генерация ключа

В системе Меркля-Хеллмана ключи состоят из последовательностей. Открытый ключ представляет собой «сложную» последовательность, закрытый ключ состоит из «простой» или супервозрастающей последовательности, а также двух дополнительных чисел – множителя и модуля, которые используются как для преобразования супервозрастающей последовательности в «сложную» (генерация открытого ключа), так и для преобразования суммы подмножества «сложной» последовательности в сумму подмножества «простой» (расшифровка). Последняя задача решается за полиномиальное время.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]