Режимы работы блочных шифров
Автор: Warfat • Май 17, 2023 • Лабораторная работа • 2,041 Слов (9 Страниц) • 68 Просмотры
Лабораторная работа
РЕЖИМЫ РАБОТЫ БЛОЧНЫХ ШИФРОВ
Цель работы
Изучить режимы работы блочных шифров.
Задания на лабораторную работу
Преобразуйте программу из предыдущей лабораторной работы таким образом, чтобы она выполняла шифрование и расшифрование открытого текста, состоящего из произвольного количества символов, в режиме обратной связи по выходу алгоритма шифрования OFB (Output Feed Back).
Текст программы
private void button1_Click(object sender, EventArgs e)
{
char []key=new char[10];
char[] k1 = new char[8];
char[] k2 = new char[8];
char[] V={'1','1','1','0','0','1','1','0'};//вектор инициализации
char[] O = new char[8];
System.Text.Encoding a = Encoding.GetEncoding("cp866");
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
richTextBox3.Clear();
richTextBox4.Clear();
richTextBox2.Clear();
key = tBKey.Text.ToCharArray();
Subkeys(key,k1,k2);
byte[] code = a.GetBytes(richTextBox1.Text);
char[,] Plaintext = new char[8, code.Length];
char[,] Crypttext = new char[8, code.Length];
char[] middle = new char[8];
for (int i = 0; i < code.Length; i++)
{
middle = DecToBin(code[i]);
for (int j = 0; j < 8; j++)
{
Plaintext[j, i] = middle[j];
richTextBox2.Text += middle[j];
}
richTextBox2.Text += '\n';
}
for (int i = 0; i < code.Length; i++)
{
O = CryptChar(V, k1, k2);
for (int j = 0; j < 8; j++)
{
if (((O[j] == '1') && (Plaintext[j, i] == '1')) || ((O[j] == '0') && (Plaintext[j, i] == '0')))
Crypttext[j, i] = '0';
else
Crypttext[j, i] = '1';
richTextBox4.Text += Crypttext[j, i];
}
richTextBox4.Text += '\n';
code[i] = 0;
for (int j = 0; j < 8; j++)
if (Crypttext[j, i] == '1')
code[i] += Convert.ToByte(Math.Pow(2, 7 - j));
byte[] bits = { (byte)code[i] };
richTextBox3.Text += a.GetString(bits);
V = O;
}
}
Результаты работы программы
Шифрование
[pic 1]
Расшифрование
[pic 2]
Контрольные вопросы
- Приведите схему и уравнения процессов шифрования и расшифрования для своего варианта задания.
[pic 3]
OFB зашифрование:
[pic 4]
OFB расшифрование:
[pic 5]
- Охарактеризуйте режимы работы блочных шифров, их преимущества и недостатки.
- ECB (Electronic Code Book) – электронная кодовая книга. Каждый 64-битовый блок открытого текста шифруется независимо от других с одним и тем же ключом.
Достоинства:
- Блоки шифруются отдельно и независимо друг от друга, что позволяет делать это параллельно;
- простота;
- возможность за- и расшифрования любого блока независимо от других;
Недостатки:
- длина сообщения должна быть кратна длине блока входных данных блочного шифра, то есть всё сообщение либо можно разбить на целое число таких блоков, либо необходимо каким-то образом дополнять последний блок не несущими информацию данными;
- одинаковые блоки открытого текста преобразовываются в этом режиме в одинаковые блоки шифротекста;
- CBC (Cipher Block Chaining) – сцепление шифрованных блоков. Входной блок данных для алгоритма шифрования вычисляется как XOR-разность текущего 64-битового блока открытого текста и предшествующего 64-битового блока шифрованного текста.
Достоинства:
- последний блок шифротекста, который получается на выходе алгоритма режима CBC зависит как от ключа блочного шифра и вектора инициализации, так и (что важнее в данном случае) от всех бит отрытого текста сообщения. Поэтому повторяющиеся 64-битовые последовательности в шифрованном тексте не проявляются.
- в процессе шифрования все блоки открытого текста оказываются связанными;
- последний блок шифртекста можно использовать для аутентификации сообщений.
Недостатки:
- при зашифровании каждая итерация алгоритма зависит от результата предыдущей итерации, то зашифрование сообщения не поддаётся расспараллеливанию
- CFB (Cipher Feed Back) – шифрованная обратная связь.
Входные данные обрабатываются порциями по J битов. Полученный на предыдущем шаге шифрованный текст используется как входные данные для алгоритма шифрования с целью получения псевдослучайной последовательности, XOR-разность которой и блока открытого текста определяет очередную порцию шифрованного текста.
Достоинства:
- при условии наличия полного шифротекста все порции открытого текста можно получить одновременно;
- Использование поточного шифра избавляет от необходимости дополнять сообщение до целого числа блоков;
- с поточным шифром можно работать в режиме реального времени;
- используется только функция зашифрования;
- можно подобрать такое значение размера обрабатывающей порции, чтобы пропускная способность канала использовалась наиболее эффективно.
Недостатки:
- В режиме CFB при зашифровании входные данные для функции формируются на основании шифротекста с предыдущей итерации алгоритма, поэтому параллельное выполнение итераций алгоритма невозможно.
- OFB (Output Feed Back) – обратная связь по выходу алгоритма шифрования. Подобна CFB, но в качестве входных данных для алгоритма шифрования используются ранее полученные выходные данные DES.
Преимущество:
- влияние возможных искажений битов при передаче данных не распространяется на последующие порции данных. Это преимущество для потоковых аудио и видео, в спутниковых каналах связи, т.к. здесь ошибки минимально ухудшают дешифруемый поток информации;
- длина сообщения остается неизменной.
Недостаток:
...