Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
асимметричные криптоалгоритмы.doc
Скачиваний:
8
Добавлен:
08.09.2019
Размер:
133.12 Кб
Скачать

Создание открытого ключа из закрытого.

Рассмотрим работу алгоритма, не углубляясь в теорию чисел: чтобы получить нормальную последовательность рюкзака, возьмем сверхвозрвстающую последовательность рюкзака, например, А={2, 3, 6, 13, 27, 52}.

Выберем целое . Пусть m=105. Так как А сверхрастущий, то m велико по сравнению со всеми числами из А. Выберем другое целое t, не имеющее общих множетелей c m. Например, 31. Теперь образуем произведения , и сведем их по модулю m: пусть bi — наименьший положительный остаток t.ai по модулю m.

2*31 mod 105=62

3*31 mod 105=93

6*31 mod 105=81

13*31 mod 105=88

27*31 mod 105=102

52*31 mod 105=37

Итого- {62, 93, 81, 88, 102, 37}.

Результирующий вектор

В = (b1, b2, ... , bn) открывается как ключ зашифрования.

Сверхвозрастающая последовательность рюкзака является закрытым ключом, а нормальная последовательность – открытым.

Шифрование

Для шифрования сообщение сперва разбивается на блоки, равные по длине числу элементов последовательности рюкзака. Затем, считая, что единица указывает на присутствие члена последовательности, а ноль – на его отсутствие, вычисляем полные веса рюкзаков – по одному для каждого блока сообщения.

Например, если сообщение в бинарном виде выглядит как 011000110101101110, шифрование, использующее предыдущую последовательность рюкзака, будет происходить следующим образом:

сообщение = 011000 110101 101110

011000 соответствует 93 + 81 = 174

110101 соответствует 62 + 93 + 88 + 37 = 280

101110 соответствует 62 + 81 + 88 + 102 = 333

Шифротекстом будет последовательность 174, 280, 333.

Дешифрирование

Законный получатель данного сообщения знает закрытый ключ: оригинальную сверхвозрастающую последовательность, а также значения n и m, использованные для превращения ее в нормальную последовательность рюкзака. Для дешифрирования сообщения получатель должен сначала определить n-1, такое что n (n-1)  1(mod m). Каждое значение шифртекста умножается на n-1 mod m, а затем разделяется с помощью закрытого ключа, чтобы получить значения открытого текста.

В нашем примере сверхвозрастающая последовательность A= (2, 3, 6, 13, 27, 52), m = 105, а n = 31. Шифротекстом служит 174, 280, 333.

В этом случае n-1 равно 61, поэтому значения шифротекста должны быть умножены на 61 mod 105.

174*61 mod 105=9=3 + 6, что соответствует 011000

280*61 mod 105=70=2 + 3 + 13 + 52, что соответствует 110101

333*61 mod 105=48=2 + 6 + 13 + 27, что соответствует 101110

Расшифрованным открытым текстом является 011000 110101 101110.

Не сверхрастущие, или нормальные, рюкзаки представляют собой трудную проблему – быстрого алгоритма для них не найдено. Единственным известным способом определить, какие предметы кладутся в рюкзак, является методическая проверка возможных решений, пока вы не наткнетесь на правильное.

Алгоритм Меркла – Хеллмана основан на этом свойстве. Закрытый ключ является последовательностью весов сверхрастущего рюкзака. Открытый ключ – это последовательность весов проблемы нормального рюкзака с тем же решением. Меркл и Хеллман, используя модульную арифметику, разработали способ преобразования проблемы сверхрастущего рюкзака в проблему нормального рюкзака.

Практические реализации

Для последовательности из шести элементов нетрудно решить задачу рюкзака, даже если последовательность не является сверхрастущей. Реальные рюкзаки должны содержать не менее 250 элементов. Длина каждого члена сверхрастущей последовательности должна быть где-то между 200 и 400 битами, а длина модуля от 100 до 200 битов. Для получения этих значений практические реализации используют генераторы случайной последовательности.

Вскрывать подобные рюкзаки при помощи грубой силы бесполезно.

Безопасность метода рюкзака

Взломали систему, основанную на проблеме рюкзака, не миллион машин, а пара криптографов. Сначала был раскрыт единственный бит открытого текста. Затем Шамир показал, что в определенных обстоятельствах рюкзак может быть взломан. Были и другие достижения, но никто не мог взломать систему Мартина – Хеллмана в общем случае.