Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Криптография / ОБУЧАЮЩИЕ ПРОГРАММЫ / Пояснительная записка.doc
Скачиваний:
39
Добавлен:
01.05.2014
Размер:
411.65 Кб
Скачать
      1. Умножение многозначных чисел

Умножение также происходит аналогично умножению в столбик. Первый множитель последовательно умножается на отдельные 32-битовые слова второго множителя, а результаты умножения, сдвинутые на соответствующее число разрядов, складываются. Для умножения используется команда mul, которая позволяет не потерять результат умножения, если его длина превышает 32 бита, записывая произведение в регистрыEDX:EAX.

      1. Деление многозначных чисел

Деление числа произвольного размера на число произвольного размера выполнить с помощью команды divвыполнить невозможно. Используется деление в столбик с помощью последовательных вычитаний делителя (сдвинутого влево на соответствующее число разрядов) из делимого, увеличивая соответствующий разряд частного на 1 при каждом вычитании, пока не останется число меньшее делителя.

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

    1. Особенности реализации симметричных алгоритмов

      1. Дополнение сообщений

Блочные алгоритмы обрабатывают блоки фиксированного размера, например, 8 байт, но длина открытого текста часто не кратна 8. С этой целью производится дополнение последнего неполного блока нулевыми байтами. Затем добавляется еще один блок, в котором все байты кроме первого нулевые, а первый байт содержит количество байтов в последнем неполном блоке. Этот блок также шифруется и добавляется в конец зашифрованного текста. Он необходим, чтобы при дешифрации открытый текст не содержал лишних нулей в конце. Эта процедура дополнения используется и в том случае, когда длина открытого текста кратна 8. При этом длина зашифрованного текста на 16 байт больше, чем длина открытого.

      1. Таблицы подстановки для алгоритма шифрования ГОСТ 28147-89

Согласно стандарту таблицы подстановок служат дополнительным ключом и должны держаться в секрете [2]. Этот долговременный ключ является общим для всех пользователей сети связи и поставляется в установленном порядке. Стандарт объясняет это тем, что стойкость данного алгоритма критически зависит от качества используемых таблиц подстановок. При правильном выборе даже в случае известных таблиц подстановки стандарт обеспечивает высокую стойкость. Однако критерии выбора таблиц подстановки для этого шифра не приводятся в официальных документах. Такой подход имеет серьезные недостатки.

  1. Требования секретности таблиц подстановок не согласуется с общепринятым принципом Керхкоффа, поскольку данные элементы относятся скорее к алгоритму шифрования, а не к легко сменяемому секретному ключу.

  2. При уходе хотя бы одного пользователя из коллектива, в котором используются секретные таблицы подстановки, требуется смена таблиц подстановки.

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

      1. Подключи и таблицы подстановки для алгоритмаBlowfish

Подключи и таблицы подстановки для Blowfishгенерируются следующим образом [3].

  1. В порядке возрастания номера элемента заполнить массив подключей, а затем таблицы подстановки строкой, состоящей из 16-ричных цифр записи числа .

  2. Произвести операцию исключающего ИЛИ с K1и первыми 32 битами ключа и результат занести вK1, повторить ту же операцию сK2и вторыми 32 битами ключа. Повторять эти действия для всехKi.

  3. Зашифровать строку из 64 нулевых бит алгоритмом Blowfish, используя подключи, сгенерированные на шаге 1 и 2.

  4. Заменить K1иK2результатом шифрования на шаге 3.

  5. Зашифровать результат шага 3, используя алгоритм Blowfishс модифицированными подключами.

  6. Заменить K3иK4результатом шага 5.

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

Такой алгоритм позволяет создать подключи и таблицы подстановки, которые сильно зависят от ключа. Использование числа упрощает реализацию алгоритма, т.к. в противном случае пришлось бы отдельно определять значения для инициализации.

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