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

Программа курса содержит 2 алгоритма электронной цифровой подписи: RSAиDSA. Кроме того, решено добавить алгоритм цифровой подписи Эль-Гамаля и алгоритм стандарта ГОСТ Р 34.10 – 94. Стойкость всех этих алгоритмов, кромеRSA, основана на вычислительной сложности решения задачи дискретного логарифмирования. Российский алгоритм цифровой подписи приведен, чтобы учащийся мог сравнить российскую разработку с западными аналогами.

В качестве хеш-функции выбран алгоритм SHA, т.к. значение этой функции имеет длину 160 бит, что в настоящее время делает практически невозможной атаку путем простого подбора сообщений. Стандарт цифровой подписиDSSтребует использовать этот алгоритм [6].

    1. Выбор криптографических атак

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

Возможные виды нападений на криптосистемы можно разделить на несколько групп [2]:

  1. Нападения на криптографические алгоритмы.

  2. Нападения, связанные с нарушением протокола.

  3. Нападения, основанные на нарушении механизмов функционирования криптосистемы.

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

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

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

  1. Описание использованных криптографических алгоритмов

    1. Симметричные алгоритмы шифрования

      1. Blowfish

Описание алгоритма взято из [2]. Длина ключа может составлять от 64 до 448 бит. Длина обрабатываемого блока – 64 бита. В алгоритмах шифрования/дешифрования используется несколько массивов подключей: массив 32-битовых подключей K1,K2,…,K18и четыре последовательности 32-битовых подключей, каждая из которых содержит 256 элементов,

Q0(1),Q1(1), …,Q255(1);

Q0(2),Q1(2), …,Q255(2);

Q0(3),Q1(3), …,Q255(3);

Q0(4),Q1(4), …,Q255(4).

Последовательности Q(i)используются для задания функцииF(X), гдеX– 32-битовый аргумент. При заданномXвычисление этой функции производится следующим образом. 32-битовое словоXпредставляется в виде конкатенации 8-битовых слов:X=x3|x2|x1|x0.

Затем производится вычисление:

F(X) = {[(Qx3(1) +Qx2(2))mod232]Qx1(3)} +Qx0(4)(mod232).

Последовательности Q(i)фактически задают большую таблицу отображения входных 32-битовых подблоков в выходные 32-битовые подблоки.

Алгоритм шифрования

Вход: 64-битовый блок открытых данных T=L|R, представленный в виде конкатенации 32-битовых подблоковLиR.

  1. Установить счетчик i = 1.

  2. Преобразовать подблок Lи вычислить текущее значение переменнойV:

L := L  Ki;

V := F(L).

  1. Преобразовать подблок R:

R := R  V.

  1. Если i= 16, то перейти к шагу 7.

  2. Прирастить i:=i+1 и переставить подблокиRиL:

W := R; R := L; L := W.

  1. Перейти к шагу 2.

  2. Преобразовать подблок R:

R := R  K17.

  1. Преобразовать подблок L:

L := L  K18.

Выход: 64-битовый блок зашифрованного текста L|R.

Алгоритм дешифрования

Вход: 64-битовый блок зашифрованного текста C=L|R.

  1. Преобразовать подблок R:

R := R  K17.

  1. Преобразовать подблок L:

L := L  K18.

  1. Установить счетчик i = 16.

  2. Вычислить текущее значение переменной Vи преобразовать подблокR:

V := F(L);

R := R  V.

  1. Преобразовать подблок L:

L := L  K17-i.

  1. Если i=1, то перейти к шагу 9.

  2. Переставить подблоки RиL:

W := R; R := L; L := W.

  1. i:=i-1 и перейти к шагу 4.

Выход: блок открытого текста L|R.