Режимы работы блочных шифров
Автор: Warfat • Май 17, 2023 • Лабораторная работа • 2,041 Слов (9 Страниц) • 112 Просмотры
Лабораторная работа
РЕЖИМЫ РАБОТЫ БЛОЧНЫХ ШИФРОВ
Цель работы
Изучить режимы работы блочных шифров.
Задания на лабораторную работу
Преобразуйте программу из предыдущей лабораторной работы таким образом, чтобы она выполняла шифрование и расшифрование открытого текста, состоящего из произвольного количества символов, в режиме обратной связи по выходу алгоритма шифрования 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.
Преимущество:
- влияние возможных искажений битов при передаче данных не распространяется на последующие порции данных. Это преимущество для потоковых аудио и видео, в спутниковых каналах связи, т.к. здесь ошибки минимально ухудшают дешифруемый поток информации;
- длина сообщения остается неизменной.
Недостаток:
...