ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 26
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Тульский государственный институт»
Интернет-институт, направление подготовки «прикладная информатика».
ОТЧЕТ ПО ЛАБОЛАТОРНОЙ РАБОТЕ
по предмету «Методы и средства защиты компьютерной информации»
на тему: «Симметричные криптографические системы»
студента группы ИБ262591
направление: прикладная информатика
вариант №2
Преподаватель: Сафронова Марина Алексеевна
Тула – 2023
Цель работы
Освоение теоретических методов создания симметричных криптографических систем, получение практических навыков в преобразовании информации с помощью ЭВМ.
Программа работы
Составить алгоритм для выполнения прямого, а затем обратного преобразование текста в соответствии с вариантом. Номер вариант соответствует последней цифре номера зачетки.
Написать, отладить и выполнить программу для пункта 1.
Задание. Вариант 2
Написать программу шифрования и дешифрования сообщения с использованием криптосистемы Ришелье: реальное сообщение дополняется лишними буквами, которые совершенно не относятся к сообщению. Текст размещается в прямоугольнике с определенным количеством строк и столбцов. Исходные симоволы шифруемого текста располагаются только на определенных позициях, остальные позиции заполняются лишними, ничего не значащими символами.
В данном задании используйте следующий прямоугольник Ришелье (см. рисунок 1.3):
Контро
Контрольные вопросы
-
В чем отличие симметричных и ассиметричных систем шифрования? -
Какие виды симметричных криптосистем вы знаете? -
В чем сущность подстановки Цезаря? -
Каким образом выполняется обратное преобразование текста, зашифрованного с помощью подстановки Цезаря? -
Назвать условия, которыми необходимо руководствоваться при выборе ключа в симметричных криптосистемах, для повышения криптоустойчивости системы шифрования.
Решение:
1. В чем отличие симметричных и ассиметричных систем шифрования?
Поскольку ясно, что симметричное шифрование и асимметричное шифрование являются формами процесса шифрования. Но основное различие между этими двумя методами заключается в том, что симметричное шифрование использует один секретный ключ, в то время как асимметричное шифрование использует два разных отдельных ключа.
2. Какие виды симметричных криптосистем вы знаете?
В зависимости от принципа работы алгоритмы симметричного шифрования делятся на два типа:
-
блочные; -
потоковые.
Блочные алгоритмы шифруют данные блоками фиксированной длины (64, 128 или другое количество бит в зависимости от алгоритма). Если все сообщение или его финальная часть меньше размера блока, система дополняет его предусмотренными алгоритмом символами, которые так и называются дополнением.
К актуальным блочным алгоритмам относятся:
-
AES -
ГОСТ 28147-89 -
RC5 -
Blowfish -
Twofish
Потоковое шифрование данных предполагает обработку каждого бита информации с использованием гаммирования, то есть изменения этого бита с помощью соответствующего ему бита псевдослучайной секретной последовательности чисел, которая формируется на основе ключа и имеет ту же длину, что и шифруемое сообщение. Как правило, биты исходных данных сравниваются с битами секретной последовательности с помощью логической операции XOR (исключающее ИЛИ, на выходе дающее 0, если значения битов совпадают, и 1, если они различаются).
Потоковое шифрование в настоящее время используют следующие алгоритмы:
-
RC4 -
Salsa20 -
HC-256 -
WAKE
3. В чем сущность подстановки Цезаря?
Шифр Цезаря, также известный, как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.
Шифр Цезаря — это вид шифра подстановки, суть которого состоит в следующем: каждый символ в тексте заменяется символом находящимся на некотором одинаковом промежутке левее или правее него в выбранном алфавите. Например, в шифре с русским алфавите со сдвигом 3, "А" была бы заменена на "Г", "Б" станет "Д", и так далее.
Историческая справка: Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.
4. Каким образом выполняется обратное преобразование текста, зашифрованного с помощью подстановки Цезаря?
Система шифрования Цезаря с ключевым словом является одноалфавитной системой подстановки. Особенностью этой системы является использование ключевого слова для смещения и изменения порядка символов в алфавите подстановки.
Выберем некоторое число k, , и слово или короткую фразу в качестве ключевого слова. Желательно, чтобы все буквы ключевого слова были различными. Ключевое слово записывается под буквами алфавита, начиная с буквы, числовой код которой совпадает с выбранным числом k.
Оставшиеся буквы алфавита подстановки записываются после ключевого слова в алфавитном порядке:
Следует отметить, что требование о различии всех букв ключевого слова не обязательно. Можно просто записать ключевое слово (или фразу) без повторения одинаковых букв. Например, ключевая фраза:
5. Назвать условия, которыми необходимо руководствоваться при выборе ключа в симметричных криптосистемах, для повышения криптоустойчивости системы шифрования.
Задание
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox3.Text = "";
int move = 0;
string[] array = new string[] { "а", "б", "в",
"г", "д", "е", "ё", "ж",
"з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с",
"т", "у", "ф", "х",
"ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я" };
try
{
move = Convert.ToInt32(textBox1.Text);
}
catch
{
MessageBox.Show("
Установите шаг шифрования!");
return;
}
string[] array2;
array2 = array.Skip(move).Concat(array.Take(move)).ToArray();
foreach (string element in array2)
{
}
string text = textBox2.Text;
foreach (char bykva in text)
{
for (int i = 0; i < array.Length; i++)
{
if (bykva.ToString().ToLower() == array[i])
{
textBox3.Text += array2[i];
break;
}
else
{
if (bykva.ToString() == " " || bykva.ToString() == "." ||
bykva.ToString() == "," || bykva.ToString() == ":" ||
bykva.ToString() == ";" || bykva.ToString() == "?" ||
bykva.ToString() == "!")
{
textBox3.Text += " ";
break;
}
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox3.Text = "";
int move = 0;
string[] array = new string[] { "a", "b", "c",
"d", "e", "f", "g", "h",
"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "w",
"x", "y", "z" };
try
{
move = Convert.ToInt32(textBox1.Text);
}
catch
{
MessageBox.Show("Установите шаг шифрования!");
return;
}
string[] array2;
array2 = array.Skip(move).Concat(array.Take(move)).ToArray();
foreach (string element in array2)
{
}
string text = textBox2.Text;
foreach (char bykva in text)
{
for (int i = 0; i < array.Length; i++)
{
if (bykva.ToString().ToLower() == array[i])
{
textBox3.Text += array2[i];
break;
}
else
{
if (bykva.ToString() == " " || bykva.ToString() == "." ||
bykva.ToString() == "," || bykva.ToString() == ":" ||
bykva.ToString() == ";" || bykva.ToString() == "?" ||
bykva.ToString() == "!")
{
textBox3.Text += " ";
break;
}
}
}
}
}
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox1.Clear();
textBox2.Text = "";
textBox2.Clear();
textBox3.Text = "";
textBox3.Clear();
textBox4.Text = "";
textBox4.Clear();
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox1.Clear();
textBox2.Text = "";
textBox2.Clear();
textBox3.Text = "";
textBox3.Clear();
textBox4.Text = "";
textBox4.Clear();
}
}
}