Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Криптография.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
591.33 Кб
Скачать

Пример 14.3

Как очень тривиальный пример, предположим, что даны a = [17, 25, 46, 94, 201, 400] и s = 272. Таблица 14.1 показывает, как найти кортеж, используя процедуру inv_knapsackSum в алгоритме 14.1.

В этом случае x = [0, 1, 1,0, 1,0], — это означает, что в рюкзаке находятся 25, 46 и 201.

Таблица 14.1. Значения i, a и x в примере 14.3

i

ai

s

s

xi

s s - ai x xi

6

400

272

false

x6=0

272

5

201

272

true

x5=1

71

4

94

71

false

x4=0

71

3

46

71

true

x3=1

25

2

25

25

true

x2=1

0

1

17

0

false

x1=0

0

Секретная связь с использованием ранца

Посмотрим, как Алиса может передать секретное сообщение Бобу, использующему ранцевую криптосистему. Идея показана на рис. 14.4.

Рис. 14.4. Секретная связь с использованием ранцевой криптосистемы

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

Этот процесс:

  • Создает суперувеличивающийся k -кортеж b = [b1, b2,..., bk].

  • Выбирает модуль n, такой, что n > b 1 + b2 + • • • + bk.

  • Выбирает случайное целое число r, которое является взаимно простым с n и .

  • Создает временный k -кортеж t = [t1, t2,…….. tk], в котором .

  • Выбирает перестановку k -объектов и находит новый кортеж a = liermute(t).

  • Открытый ключ k -кортежа — a. Секретный ключ — n, r и k -кортеж b.

Шифрация

Предположим, что Алисе надо послать сообщение Бобу.

  • Алиса преобразует свое сообщение в k -кортеж x=[x1, x2,…. xk], в котором xi — не 0 и не 1. Кортеж представляет собой исходный текст.

  • Алиса использует knapsackSum для вычисления s в качестве исходного текста.

Дешифрация

Боб получает зашифрованный текст s.

Боб вычисляет .

Боб переставляет x’ для того, чтобы найти x. Кортеж x есть восстановленный исходный текст.

Пример 14.4

Это тривиальный (очень легко раскрываемый пример). Он приводится только для того, чтобы показать процедуру.

  1. Генерация ключей:

    • Боб создает суперувеличивающийся кортеж b = [7, 11, 19, 39, 79, 157, 313].

    • Боб выбирает модуль n = 900 и r = 37, и [4 2 5 3 1 7 6] как таблицу перестановок.

    • Боб теперь вычисляет кортеж t = [259, 407, 703, 543, 223, 409, 781].

    • Боб теперь вычисляет кортеж a = перестановка (t)= [543, 407, 223, 703, 259, 781, 409].

    • Боб объявляет a ; он сохраняет в тайне n, r и b.

  2. Предположим, что Алиса хочет передать единственный символ "g" Бобу.

    • Она использует представление ASCII на 7 битов "g", (1100111) 2 и создает кортеж x = [1,1,0,0, 1, 1, 1]. Это — исходный текст.

    • Алиса вычисляет s = knulisackSum (a, x) = 2399. Это — зашифрованный текст, передаваемый Бобу.

  3. Боб может расшифровать зашифрованный текст, s = 2165.

    • a. Боб вычисляет .

    • Боб вычисляет x’ = inv_knalisackSum (s', b) = [1, 1, 0, 1, 0, 1, 1].

    • Боб вычисляет x = перестановка (x’) = [1, 1, 0, 0, 1, 1, 1]. Он интерпретирует строку (1100111) 2 как символ "g".