Организация криптозащищенного обмена информацией на основе протокола PGP

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

ответствия следующему соотношению:

 

S(S(x)) = x

 

1.Операция ? - байтовая перестановка, простейшим образом

преобразующая строку обрабатываемого блока ключевой информации в столбец (рисунок 2):

bi,j=aj,i ,

 

где aj,i и bi,j - байты массива данных до и после выполнения текущей операции соответственно.

 

Рисунок 2. Операция ? алгоритма Anubis

 

2.Операция ? (рисунок 3), представляющая собой умножение массива на фиксированную матрицу Н (таблица 2). Умножение выполняется в конечном поле GF(28).

 

Таблица 2

Фиксированная матрица Н

1246216446126421

3.Наложение ключа r-го раунда k[r] (процедура расширения ключа будет подробно описана далее); выполняется побитовой логической операцией исключающее или (XOR), применяемой к каждому биту массива данных и соответствующему биту k[r] (рисунок 3):

 

bi,j=aj,i + k[r] j,i

Эта операция обозначается как ?.

 

Рисунок 3. Операция ? алгоритма Anubis

 

Рисунок 4. Операция A алгоритма Anubis

 

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

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

Число раундов алгоритма R зависит от размера ключа шифрования и определяется следующим образом:

 

R = 8 + N,

где N- размер ключа в 16-битных фрагментах.

Некоторые криптоаналитики считают, что количество раундов в алгоритме Anubis несколько завышено, видимо, с целью обеспечить более высокий запас криптостойкости.

Процедура расширения ключа

Процедура расширения ключа достаточно проста и основана, практически, на той же последовательности операций, которые применяются в раундах алгоритма. Расширение ключа выполняется следующим образом: сначала исходный ключ шифрования К представляется в виде байтового массива 44 (что обозначается как А70), после чего в цикле выполняются следующие операции:

. Итеративно вычисляются остальные промежуточные ключи KI1…KIR:

 

KIj = f (KIj-1),

 

где f() - совокупность операций ?, ?, ? и ?; в операции ? в качестве ключа раунда используется соответствующая из констант с[r], которые, в свою очередь, определяются следующим образом:

 

c[r]0,j=S( 4 * ( r - 1 ) + y )

 

для j = 0…3. Остальные байты c[r]i,j являются нулевыми.

Операция ? - циклический сдвиг столбцов таблицы вниз по следующему простому правилу: j -й столбец сдвигается на j позиций (рисунок 5).

Рисунок 5. Операция ? алгоритма Anubis

 

2. На основе предварительных ключей вычисляются подключи k0…kR:

 

kn..g (KLn),

 

где функция g() представляет собой последовательное выполнение следующих операций: ?, ?, ?.

Операции ? и ? были описаны выше, а ? представляет собой умножение блока на фиксированную матрицу V (аналогично операции ? - рисунок 3), приведенную в таблице 3.

 

Таблица 3

Фиксированная матрица V

11111248163621618640Стоит отметить, что при зашифровывании данных процедура расширения ключа позволяет вычислять ключи на лету, т. е. по мере необходимости. Однако при расшифровывании необходимо полностью выполнить расширение ключа до начала преобразований.

Достоинства и недостатки алгоритма

Прежде всего, стоит сказать, что на конкурсе NESSIE была рассмотрена несколько модифицированная версия алгоритма Anubis, отличие которой от описанной здесь состояло лишь в операции у. Модифицированная операция у вместо одной табличной замены 88 битов выполняла 3 уровня табличных замен 44. Данная модификация произведена для упрощения аппаратной реализации алгоритма. был признан одним из наиболее быстродействующих алгоритмов шифрования (из участников конкурса). Еще одно явное достоинство алгоритма- отсутствие проблем с криптостойкостью. Однако злую шутку с алгоритмом Anubis сыграло его сходство с алгоритмом Rijndael (который, как известно, является новым стандартом шифрования США под названием AES), который также рассматривался в рамках конкурса NESSIE. Эксперты конкурса посчитали, что при таком явном сходстве Anubis не может иметь настолько серьезных преимуществ перед алгоритмом Rijndael, которые позволили бы ему выиграть у Rijndael в финале конкурса NESSIE. Поэтому Anubis не был выбран во второй этап конкурса [2].

 

2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЮКЗАЧНОГО АЛГОРИТМА И АЛГОРИТМА ANUBIS

 

Выбор языка программирования.

Для создания программного средства использовался язык C# в среде Visual Studio 2005. Эта среда выбрана мной, потому что я ее использую на протяжении нескольких лет, и в этой среде есть все необходимое для реализации поставленной задачи. Данная среда широко и бесплатно распространена и удобна для работы с формами. Также есть методы, облегчающие архивирование и разархивирование данных.

Используемые модули.

В данном программном средстве был использован класс GZip для архивирования и разархивирования файлов. Также был написан модуль асимметричного и симметричного шифрования Form1.cs, осуществляющий шифрование и дешифрование данных. Основные процедуры и функции модуля Form1.cs:

Асимметричное шифрование:

-pub