Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700218.doc
Скачиваний:
28
Добавлен:
01.05.2022
Размер:
1.36 Mб
Скачать

Псевдослучайная функция.

Имея число L, таблицы T, R и S, заданные ключом a, и 32-битный индекс n, представленный ниже алгоритм растягивает n в L-битную псевдослучайную последовательность y.

Алгоритм seal (отображение 32-битного индекса в l бит).

function SEALa(n)

y = λ;

for l ← 0 to ∞ do

Initialize a(n,l,A,B,C,D,n1,n2,n3,n4);

for i ← 1 to 64 do

P←A&0x7fc; B←B+T[P/4]; A←A »»9; B←BA;

Q←B&0x7fc; C←CT[Q/4]; B←B»»9; C←C+B;

P←(P+C)&0x7fc; D←D+T[P/4]; C←C»»9; D←DC;

Q←(Q+D)&0x7fc; A←AT[Q/4]; D←D»»9; A←A+D;

P

23

←(P+A)&0x7fc; B←BT[P/4]; A←A»»9;

Q←(Q+B)&0x7fc; C←C+T[Q/4]; B←B»»9;

P←(P+C)&0x7fc; D←DT[P/4]; C←C»»9;

Q←(Q+D)&0x7fc; A←A+T[Q/4]; D←D»»9;

y ← y || B+S[4i-4] || СS[4i-3] || D+S[4i-2] || AS[4i-1];

if |y| ≥ L then return (y0y1...yL-1);

if odd(i) then (A,C) ← (A+n1,C+n2)

else (A,C) ← (A+n3,C+n4).

Все деления на 4 необходимы потому, что индексирование таблицы осуществлено в единицах байтов, а не слов. Это более эффективно на некоторых вычислительных платформах.

Данный алгоритм использует подпрограмму Initialize для отображения n и l в слова A, B, C, D, n1, n2, n3, n4. Эта процедура инициализации заключается в следующем.

Процедура инициализации seal.

procedure Initialize a(n,l,A,B,C,D,n1,n2,n3,n4)

A←nR[4l];

B←(n»»8)R[4l+1];

C←(n»»16)R[4l+2];

D←(n»»24)R[4l+3];

for j ← 1 to 2 do

P←A&0x7fc; B←B+T[P/4]; A←A»»9;

P←B&0x7fc; C←C+T[P/4]; B←B»»9;

P←C&0x7fc; D←D+T[P/4]; C←C»»9;

P←D&0x7fc; A←A+T[P/4]; D←D»»9;

(n1,n2,n3,n4)←(A,B,C,D);

P←A&0x7fc; B←B+T[P/4]; A←A»»9;

P←B&0x7fc; C←C+T[P/4]; B←B»»9;

P←C&0x7fc; D←D+T[P/4]; C←C»»9;

P←D&0x7fc; A←A+T[P/4]; D←D»»9;

Для пояснения сути функционирования алгоритма воспользуемся схемой внутреннего цикла алгоритма SEAL, представленной на рис.7.

Алгоритм управляется тремя полученными из ключа таблицами: R, S и T. Предварительная обработка отображает ключ k на эти таблицы с помощью процедуры, основанной на SHA. 2-килобайтная таблица T представляет собой S-блок 9*32 битов.

S

24

EAL использует четыре 32-битовых регистра, A, B, C и D, начальные значения которых определяют­ся n и полученными по k таблицами R и T. Эти регистры изменяются в ходе итераций, каждая из которых состоит из восьми этапов. На каждом этапе 9 битов первого регистра (все равно A, B, C или D) используются в качестве индекса таблицы T. Затем выбранное из T значение складывается со вторым регистром (снова одному из A, B, C или D) или объединяется с его содержимым с помощью XOR. Потом первый регистр циклически сдвигается на 9 позиций

Рис.7. Внутренний цикл SEAL

Н

25

а некоторых этапах второй регистр далее модифицируется с помощью сложения или XOR с содержимым первого регистра (уже сдвинутым). После 8 таких этапов A, B, C и D добавляются к потоку ключей, при этом каждый из них маскируется сложением или XOR с определенным словом из S. Итерация за­вершается прибавлением к A и C дополнительных значений, зависящих от n, n1, n2, n3, n4, выбор конкретного значения определяется четностью номера итерации. По-видимому, при разработке этой схемы главными были следующие идеи:

  1. использование большого, секретного, получаемого из ключа S-блока (T);

  2. чередующиеся некоммутируемые арифметические операции (сложение и XOR);

  3. использование внутреннего состояния, поддерживаемого шифром, которое не проявляется явно в потоке данных (значения ni, которые модифицируют A и C в конце каждой итерации);

  4. изменение функции этапа в соответствии с номером этапа и изменение функции итерации в соответствии с номером итерации.

Задание:

Используя алгоритм шифрования данных SEAL, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.

Порядок выполнения работы:

 написать на языке программирования функцию шифрования, в которую в качестве параметров передается ключ и символ (или строка символов) исходного текста.

 написать функцию дешифрования, в которую в качестве параметров передается ключ и символ (или строка символов) зашифрованного текста.

Оформление отчета:

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

Контрольные вопросы:

  1. В чем заключается суть метода шифрования SEAL?

  2. Какие главные идеи внутреннего цикла SEAL?

  3. Ч

    26

    то используется в качестве функции генерации таблиц?

ЛАБОРАТОРНАЯ РАБОТА №7