Организация криптозащищенного обмена информацией на основе протокола PGP
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
размером 44 байта. В каждом раунде алгоритма выполняются следующие действия.
- Табличная замена ? (рисунок 1), выполняемая согласно таблице S (таблица 1, указаны шестнадцатеричные значения).
А7D3Е671DOАС4 D79ЗАС991FCIE4754BDЗСА57АFB63ВЗDDD4Е5ВЗ05BEА933ОСА239DF29DA2ВA3СВ404В22АА244170А 6F95АЕ 2ВО367DЕ433FF602003ЗВ5ЕАВ7 F737С2С57-D2DC6D7 Е0D5394032327065 FAD67505543ОЕ52ЕА425В5 D30535159ЗС4Е33ЗА7214Е706DE50ЗЕ92D17793459 АСЕ2D0362В6В9BF966В3F0712АЕ403446ЗЕDBOFЕСОСС1А1СОD61DF461ЗВ10D363АОВ1OA696049FA76049Е9 В6Е9902В793ВС3F35IFВ4F31 12 Е00251 С2А3D054F7 ВВ23290AF19A3F7739D1574EEOA9FOF1 В7536349C4 A971A65F6ED09BB2633EB6 F31046 A430117El37F53DE3233044166621FED531D935130264F2F 156CD32C3BAFOFED531D935130264F2F 156CD32C3BAFO
- Значения таблицы выбраны псевдослучайным образом с учетом необходимости ее соответствия следующему соотношению:
- S(S(x)) = x.
- Операция ? - байтовая перестановка, простейшим образом
преобразующая строку обрабатываемого блока ключевой информации в столбец (рисунок 2):
,j=aj,i ,
где aj,i и bi,j - байты массива данных до и после выполнения текущей операции соответственно.
- Операция ? (рисунок 3), представляющая собой умножение массива
на фиксированную матрицу Н (таблица 2). Умножение выполняется в конечном поле GF(28).
1246216446126421
- Наложение ключа r-го раунда k[r] (процедура расширения ключа будет
подробно описана далее); выполняется побитовой логической операцией исключающее или (XOR), применяемой к каждому биту массива данных и соответствующему биту k[r] (рисунок 3):
bi,j=aj,i + k[r] j,i
Эта операция обозначается как ?.
Перечисленные операции выполняются в каждом раунде в указанной последовательности (?, ?, ?, ?), за исключением последнего раунда алгоритма, в котором не выполняется операция ?. Кроме того, перед первым раундом выполняется входное отбеливание данных путем наложения на шифруемый блок операцией XOR нулевого подключа.
Стоит отметить, что все перечисленные операции являются обратными самим себе, соответственно, расшифровывание выполняется с помощью тех же операций в том же порядке, что и при зашифровывании. Меняется только порядок использования подключай на обратный.
Число раундов алгоритма R зависит от размера ключа шифрования и определяется следующим образом:
= 8 + N,
где N- размер ключа в 16-битных фрагментах.
Некоторые криптоаналитики считают, что количество раундов в алгоритме Anubis несколько завышено, видимо, с целью обеспечить более высокий запас криптостойкости.
Процедура расширения ключа
Процедура расширения ключа достаточно проста и основана, практически, на той же последовательности операций, которые применяются в раундах алгоритма. Расширение ключа выполняется следующим образом: сначала исходный ключ шифрования К представляется в виде байтового массива 44 (что обозначается как А70), после чего в цикле выполняются следующие операции:
. Итеративно вычисляются остальные промежуточные ключи KI1…KIR:
Ij = f (KIj-1),
где f() - совокупность операций ?, ?, ? и ?; в операции ? в качестве ключа раунда используется соответствующая из констант с[r], которые, в свою очередь, определяются следующим образом:
[r]0,j=S( 4 * ( r - 1 ) + y )
для j = 0…3. Остальные байты c[r]i,j являются нулевыми.
Операция ? - циклический сдвиг столбцов таблицы вниз по следующему простому правилу: j -й столбец сдвигается на j позиций (рисунок 5).
. На основе предварительных ключей вычисляются подключи k0…kR:
kn..g (KLn),
где функция g() представляет собой последовательное выполнение следующих операций: ?, ?, ?.
Операции ? и ? были описаны выше, а ? представляет собой умножение блока на фиксированную матрицу V (аналогично операции ? - рисунок 3), приведенную в таблице 3.
11111248163621618640
Стоит отметить, что при зашифровывании данных процедура расширения ключа позволяет вычислять ключи на лету, т. е. по мере необходимости. Однако при расшифровывании необходимо полностью выполнить расширение ключа до начала преобразований.
Достоинства и недостатки алгоритма
Прежде всего, стоит сказать, что на конкурсе NESSIE была рассмотрена несколько модифицированная версия алгоритма Anubis, отличие которой от описанной здесь состояло лишь в операции у. Модифицированная операция у вместо одной табличной замены 88 битов выполняла 3 уровня табличных замен 44. Данная модификация произведена для упрощения аппаратной реализации алгоритма.был признан одним из наиболее быстродействующих алгоритмов шифрования (из участников конкурса). Еще одно явное достоинство алгоритма- отсутствие проблем с криптостойкостью. Однако злую шутку с алгоритмом Anubis сыграло его сходство с алгоритмом Rijndael (который, как известно, является новым стандартом шифрования США под названием AES), который также рассматривался в рамках конкурса NESSIE. Эксперты конкурса посчитали, что при таком явном сходстве Anubis не может иметь настолько серьезных преимуществ перед алгоритмом Rijndael, которые позволили бы ему выиграть у Rijndael в финале конкурса NESSIE. Поэтому Anubis не был выбран во второй этап конкурса [2].
2.ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЮКЗАЧНОГО АЛГОРИТМА И АЛГОРИТМА ANUBIS
a.Выбор языка программирования
Для создания программного средства использовался язык C# в среде Visual Studio 2005. Эта среда выбрана мной, потому что я ее использую на протяжении нескольких лет, и в этой среде есть все необходимое для реализации поставленной задачи. Данная среда широко и бесплатно распр