Ранцевая криптосистема Меркла – Хеллмана
Ранцевая криптосистема Меркла -Хеллмана была одной из первых с открытым ключом криптосистем . Он был опубликован Ральфом Мерклем и Мартином Хеллманом в 1978 году. Полиномиальная атака по времени была опубликована Ади Шамиром в 1984 году. В результате криптосистема теперь считается небезопасной. [ 1 ] : 465 [ 2 ] : 190
История
[ редактировать ]Концепция криптографии с открытым ключом была введена Уитфилдом Диффи и Мартином Хеллманом в 1976 году. [ 3 ] В то время они предложили общую концепцию «односторонней функции с люком», функции, обратную для которой вычислительно невозможно вычислить без некоторой секретной «информации о люке»; но они еще не нашли практического примера такой функции. В течение следующих нескольких лет другие исследователи предложили несколько конкретных криптосистем с открытым ключом, таких как RSA в 1977 году и Меркл-Хеллман в 1978 году. [ 4 ]
Описание
[ редактировать ]Меркла-Хеллмана — это криптосистема с открытым ключом, что означает, что используются два ключа: открытый ключ для шифрования и закрытый ключ для дешифрования. В его основе лежит задача о сумме подмножеств (частный случай задачи о рюкзаке ). [ 5 ] Задача состоит в следующем: задан набор целых чисел и целое число , найдите подмножество что в сумме равно . В общем случае эта задача известна как NP-полная . Однако, если является супервозрастающим , что означает, что каждый элемент набора больше, чем сумма всех чисел в наборе, меньших его, проблема «легка» и разрешима за полиномиальное время с помощью простого жадного алгоритма .
В Меркле-Хеллмане расшифровка сообщения требует решения явно «сложной» задачи о рюкзаке. Закрытый ключ содержит супервозрастающий список чисел. , а открытый ключ содержит несупервозрастающий список чисел , что на самом деле является "замаскированной" версией . Закрытый ключ также содержит некоторую информацию о «лазейке», которую можно использовать для решения задачи о твердом рюкзаке с помощью в простую задачу о рюкзаке, используя .
В отличие от некоторых других криптосистем с открытым ключом, таких как RSA , два ключа в Меркле-Хеллмане не являются взаимозаменяемыми; закрытый ключ не может использоваться для шифрования. Таким образом, метод Меркла-Хеллмана не может напрямую использоваться для аутентификации посредством криптографической подписи , хотя Шамир опубликовал вариант, который можно использовать для подписи. [ 6 ]
Генерация ключей
[ редактировать ]1. Выберите размер блока . Целые числа до биты длиной могут быть зашифрованы с помощью этого ключа.
2. Выбрать случайную супервозрастающую последовательность положительные целые числа
- Требование сверхвозрастания означает, что , для .
3. Выберите случайное целое число такой, что
4. Выберите случайное целое число такой, что (то есть, и взаимнопросты ) .
5. Рассчитаем последовательность
- где .
Открытый ключ и закрытый ключ .
Шифрование
[ редактировать ]Позволять быть -битовое сообщение, состоящее из битов , с бит высшего порядка. Выберите каждый для чего не равно нулю, и сложите их вместе. Аналогично, вычислите
- .
Зашифрованный текст .
Расшифровка
[ редактировать ]Чтобы расшифровать зашифрованный текст , мы должны найти подмножество что в сумме равно . Мы делаем это, преобразуя задачу в задачу поиска подмножества . Эту задачу можно решить за полиномиальное время, поскольку супервозрастает.
1. Вычислите модульную обратную величину модуль используя расширенный алгоритм Евклида . Обратное будет существовать, поскольку взаимнопроста с .
- Вычисление не зависит от сообщения и может быть выполнено только один раз при генерации закрытого ключа.
2. Рассчитать
3. Решите задачу о сумме подмножеств для используя супервозрастающую последовательность , с помощью простого жадного алгоритма, описанного ниже. Позволять — результирующий список индексов элементов какая сумма . (То есть, .)
4. Создайте сообщение по 1 в каждом битовая позиция и 0 во всех остальных битовых позициях:
Решение проблемы суммы подмножества
[ редактировать ]Этот простой жадный алгоритм находит подмножество супервозрастающей последовательности что в сумме равно , за полиномиальное время:
- 1. Инициализируйте в пустой список.
- 2. Найдите самый большой элемент в что меньше или равно , сказать .
- 3. Вычтите: .
- 4. Добавить в список .
- 5. Если больше нуля, вернитесь к шагу 2.
Пример
[ редактировать ]Генерация ключей
[ редактировать ]Создайте ключ для шифрования 8-битных чисел, создав случайную супервозрастающую последовательность из 8 значений:
Их сумма равна 706, поэтому выберите большее значение для :
- .
Выбирать быть взаимно простым с :
- .
Создайте открытый ключ умножив каждый элемент в к модуль :
Следовательно .
Шифрование
[ редактировать ]Пусть 8-битное сообщение будет . Умножаем каждый бит на соответствующее число в и добавьте результаты:
0 * 295 + 1 * 592 + 1 * 301 + 0 * 14 + 0 * 28 + 0 * 353 + 0 * 120 + 1 * 236 = 1129
Зашифрованный текст это 1129.
Расшифровка
[ редактировать ]Чтобы расшифровать число 1129, сначала используйте расширенный алгоритм Евклида, чтобы найти модульное обратное число. против :
- .
Вычислить .
Используйте жадный алгоритм, чтобы разложить 372 в сумму ценности:
Таким образом , а список индексов . Теперь сообщение можно вычислить как
- .
Криптоанализ
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( сентябрь 2020 г. ) |
В 1984 году Ади Шамир опубликовал атаку на криптосистему Меркла-Хеллмана, которая может расшифровывать зашифрованные сообщения за полиномиальное время без использования закрытого ключа. [ 7 ] Атака анализирует открытый ключ и ищет пару чисел и такой, что является супервозрастающей последовательностью. пара, найденная атакой, может быть не равна в закрытом ключе, но, как и эта пара, ее можно использовать для преобразования задачи о жестком рюкзаке, используя в простую задачу с использованием супервозрастающей последовательности. Атака осуществляется исключительно с использованием открытого ключа; доступ к зашифрованным сообщениям не требуется.
Атака Шамира на криптосистему Меркла-Хеллмана работает за полиномиальное время, даже если числа в открытом ключе перетасованы случайным образом - шаг, который обычно не включается в описание криптосистемы, но может быть полезен против некоторых более примитивных атак.
Ссылки
[ редактировать ]- ^ Шнайер, Брюс (1996). Прикладная криптография . Нью-Йорк: Джон Уайли и сыновья. ISBN 0-471-12845-7 .
- ^ Стинсон, Дуглас Р. (1995). Криптография: теория и практика . Бока-Ратон: CRC Press. ISBN 0-8493-8521-0 .
- ^ Уитфилд Диффи; Мартин Хеллман (1976). «Новые направления в криптографии». Транзакции IEEE по теории информации . 22 (6): 644. CiteSeerX 10.1.1.37.9720 . дои : 10.1109/TIT.1976.1055638 .
- ^ Меркл, Ральф; Хеллман, Мартин (1978). «Сокрытие информации и подписей в рюкзаках с люками». Транзакции IEEE по теории информации . 24 (5): 525–530. дои : 10.1109/TIT.1978.1055927 .
- ^ Черовицо, Уильям (2 марта 2002 г.). «Рюкзачная криптосистема Меркла-Хеллмана» . Математика 5410 — Современная криптология . Проверено 18 августа 2019 г.
- ^ Шамир, Ади (июль 1978 г.). «Схема быстрой подписи». Технический меморандум Лаборатории компьютерных наук Массачусетского технологического института . 79 (MIT/LCS/TM–107): 15240. Бибкод : 1978STIN...7915240S .
- ^ Шамир, Ади (1984). «Алгоритм с полиномиальным временем для взлома базовой криптосистемы Меркла-Хеллмана». Транзакции IEEE по теории информации . 30 (5): 699–704. дои : 10.1109/SFCS.1982.5 .