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

Этот алгоритм шифрования определен в стандарте ГОСТ 28147-89 [4].

Длина ключа составляет 256 бит. Длина обрабатываемого блока – 64 бита.

Процедуры шифрования и дешифрования соответствуют итеративной схеме Фейстеля, в которой функция F(R,K) задается операцией суммирования по модулю 232, табличными подстановками, выполняемыми над 4-битовыми подблоками, и операцией циклического сдвига влево на 11 бит «11», выполняемой над 32-битовым подблоком.

Табличные подстановки осуществляются следующим образом. Подблок Rпредставляется в виде конкатенации 4-битовых подблоков:R=r7|r6|r5 |r4|r3|r2|r1|r0. Затем над каждым подблокомriвыполняется операция подстановки, задаваемая таблицамиS7,S6, …,S0. Каждая таблица представляет собой некоторую перестановку чисел {0, 1,…, 15}, т.е. таблицаSпредставляется упорядоченным набором 4-битовых чиселs0,s1,…,s15. Обозначим операцию подстановки, выполняемую с помощью таблицыSнад подблокомrкакS(r). Эта операция заключается в замене значенияrна значениеsr, т.е.S(r) =sr. Введем функциюF’(R), задаваемую выражениемF’(R), задаваемую выражениемF’(R) =S7(r7) |S6(r6) | … |S0(r0).

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

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

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

  2. V := R

  3. вычислить номер выбираемого подключа j:

j = (i-1) mod 8, если i<25,

j = (32-i) mod 8, если i25.

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

R := (R + Qj) mod 232;

R := F(R);

R := R 11;

R := R  L.

  1. L := V.

  2. Если i≠ 32, тоi:=i+1 и перейти к шагу 2.

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

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

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

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

  2. V := L.

  3. Вычислить номер выбираемого подключа j:

j = (i-1) mod 8, если i8,

j = (32-i) mod 8, если i>8.

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

L := (L+Qj) mod 232;

L := F’(L);

L := L 11;

L := L  R.

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

R := V.

  1. Если i≠ 32, тоi:=i+1 и перейти к шагу 2.

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

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

      1. RSA

Описание алгоритма взято из [3].

Открытый ключ:

n=pq, гдеpиq– простые числа, которые должны оставаться в секрете

e– число взаимно простое с (p-1)(q-1)

Секретный ключ:

d=e-1mod((p-1)(q-1))

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

  1. разделить открытый текст на блоки таким образом, чтобы каждый блок можно было представить в виде числа меньшего, чем n

  2. получить блоки зашифрованного текста, c, из блоков открытого текстаm:c=memodn

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

m=cdmodn

      1. Схема шифрования Эль-Гамаля

Описание алгоритма взято из [3].

Открытый ключ:

p– простое число, которое может совместно использоваться несколькими лицами

g<p- число, которое может совместно использоваться несколькими лицами

y=gxmodp

Секретный ключ:

x<p

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

  1. разделить открытый текст на блоки таким образом, чтобы каждый блок можно было представить в виде числа меньшего, чем p

  2. для каждого блока открытого текста mвыбрать случайным образом числоk, взаимно простое сp-1

  3. шифрованным текстом для блока mбудет пара чиселa=gk modp,b=ykMmodp

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

m=(b/(ax))modp