- •Способы криптографической защиты информации в радиосвязи методические указания
- •090102 “Компьютерная безопасность”, 090105 “Комплексное обеспечение информационной безопасности
- •Введение
- •Шифрование данных в группе симметричных блочных алгоритмов redoc.
- •Теоретическое введение
- •Алгоритм redoc III
- •Алгоритм зашифрования redoc III
- •Создание таблицы ключей
- •Алгоритм расшифрования redoc III
- •Шифрование данных с помощью генератора Геффе.
- •Теоретическое введение
- •Обобщенный генератор Геффе
- •Описание алгоритма решения задачи Решение данной задачи можно разбить на следующие этапы.
- •Хеширование данных с помощью алгоритма md5.
- •Теоретическое введение
- •Присоединение заполняющих (дополнительных) битов
- •Добавление длины
- •Инициализация md буфера
- •Обработка сообщения в блоках по 16 слов
- •Шифрование данных с помощью алгоритма a5.
- •Теоретическое введение
- •Шифр а5/0.
- •Шифр а5/1
- •Шифр а5/2.
- •Шифр а5/3
- •Шифрование данных с помощью алгоритма Blowfish.
- •Теоретическое введение Функциональное преобразование f(X) сети Фейстеля:
- •Алгоритм шифрования 64-битного блока с известным массивом p и f(X)
- •Алгоритм Blowfish
- •Выбор начального значения p-массива и таблицы замен
- •Шифрование данных с помощью алгоритма seal.
- •Теоретическое введение Обозначения.
- •Длина выхода.
- •Отображение ключа в таблицы.
- •Описание функции генерации таблиц.
- •Псевдослучайная функция.
- •Алгоритм seal (отображение 32-битного индекса в l бит).
- •Процедура инициализации seal.
- •Шифрование данных с помощью алгоритма rc2.
- •Теоретическое введение Структура алгоритма
- •Процедура расширения ключа
- •Шифрование данных с помощью алгоритма cast.
- •Теоретическое введение
- •Библиографический список
- •Содержание
- •Способы криптографической защиты
- •090102 “Компьютерная безопасность”, 090105 “Комплексное обеспечение информационной безопасности
- •394026 Воронеж, Московский просп., 14
Псевдослучайная функция.
Имея число 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←BA;
Q←B&0x7fc; C←CT[Q/4]; B←B»»9; C←C+B;
P←(P+C)&0x7fc; D←D+T[P/4]; C←C»»9; D←DC;
Q←(Q+D)&0x7fc; A←AT[Q/4]; D←D»»9; A←A+D;
P
23
Q←(Q+B)&0x7fc; C←C+T[Q/4]; B←B»»9;
P←(P+C)&0x7fc; D←DT[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] || AS[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←nR[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
Рис.7. Внутренний цикл SEAL
Н
25
использование большого, секретного, получаемого из ключа S-блока (T);
чередующиеся некоммутируемые арифметические операции (сложение и XOR);
использование внутреннего состояния, поддерживаемого шифром, которое не проявляется явно в потоке данных (значения ni, которые модифицируют A и C в конце каждой итерации);
изменение функции этапа в соответствии с номером этапа и изменение функции итерации в соответствии с номером итерации.
Задание:
Используя алгоритм шифрования данных SEAL, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.
Порядок выполнения работы:
написать на языке программирования функцию шифрования, в которую в качестве параметров передается ключ и символ (или строка символов) исходного текста.
написать функцию дешифрования, в которую в качестве параметров передается ключ и символ (или строка символов) зашифрованного текста.
Оформление отчета:
В отчете следует привести краткие теоретические сведения. Кроме того, должны быть представлены: краткая блок-схема, текст программы, шифруемый набор символов, результаты выполнения программы.
Контрольные вопросы:
В чем заключается суть метода шифрования SEAL?
Какие главные идеи внутреннего цикла SEAL?
Ч
26
ЛАБОРАТОРНАЯ РАБОТА №7