Используемые математические операции

Все математические операции производятся в поле Галуа Используемые математические операции - student2.ru .

В процедурах AddRoyndKey и KeyExpansion в основе лежат операции сложения байт по модулю 2 (XOR).

Используемые математические операции - student2.ru

В AddRoyndKey в сложении участвуют только текущий блок и ключ раунда, а в KeyExpansion в сложении участвуют результат SubWord(RotWord(temp)), предыдущий ключ раунда и Round Constant.

На языке C# для 256 битного ключа данный алгоритм (KeyExpansion) запишется следующим образом:

AKey = new byte[4, 60];

byte ch = 0;

for (int i = 0; i < 4; i++)

{

for (int q = 0; q < 8; q++)

{

AKey[i, q] = key[ch];

ch++;

}

}

for (int i = 8; i < 60; i++)

{

byte[] temp = new byte[4];

for (int q = 0; q < 4; q++)

{

temp[q] = AKey[q, i - 1];

}

if ((i % 8) == 0)

{

temp = SubWord(RotWord(temp), SBox);

for (int q = 0; q < 4; q++)

{

temp[q] ^= RCon[q];

}

}

else if (i % 8 == 4)

{

temp = SubWord(temp,SBox);

}

for (int q=0; q<4; q++)

AKey[q,i] = Convert.ToByte(AKey[q,i - 8] ^ temp[q]);

}

В процедурах SubBytes и MixColumn при умножении байтов используется неприводимый многочлен:

Используемые математические операции - student2.ru

Вычисление произведения М байтов {b1} на {b2} здесь выполняется согласно следующему алгоритму:

Используемые математические операции - student2.ru

В этом случае обратная величина байта равна:

Используемые математические операции - student2.ru

Как уже было сказано выше, в процедуре SubBytes используется следующая формула умножения и сложения байт Используемые математические операции - student2.ru , где A – двоичная матрица 8х8, а b – 8-битный вектор, как показано на рисунке 4.

Используемые математические операции - student2.ru

Рисунок 4 – Формула в преобразовании SubBytes.

Для умножения полубайтов (коды длиной 4 бита) используется неприводимый полином:

Используемые математические операции - student2.ru

Вычисление произведения М полубайтов {a} на {b} здесь выполняется следующим образом:

Используемые математические операции - student2.ru

M представляет собой полубайт d. Операцию умножения полубайтов {a} на {b} можно записать в матричном виде:

Используемые математические операции - student2.ru

В процедуре MixColumn общую формулу умножения можно представить в виде:

Используемые математические операции - student2.ru

В обратной процедуре InvMixColumn общая формула имеет вид:

Используемые математические операции - student2.ru

Заключение

В результате работы над данным проектом были освоены современные методы шифрования, а в частности Rijndael, написана программа, позволяющая шифровать текстовую информацию различными длинами ключей (128, 192, 256 бит).

Приобретенные навыки активно использовались для оценки эффективности и скорости работы других симметричных алгоритмов шифрования.

Все поставленные цели и задачи выполнены.

Для реализации поставленной задачи использовалась среда программирования Microsoft Visual Studio 2010. Программа реализована в виде Windows Forms Application на языке C#.

Рекомендации по развитию программы

В данной программной реализации каждый блок шифруется независимо от остальных, то есть используется простейший режим работы ELECTRONIC CODEBOOK (ECB), что упрощает криптоанализ полученного шифра. Поэтому рекомендуется реализовать остальные режимы работ алгоритма для повышения криптостойкости. Особенно важно реализовать поддержку русского языка. Также можно было бы сделать поддержку шифрования файлов различного формата.

Наши рекомендации