Главная страница
Навигация по странице:

  • Программа работы

  • Задание. Вариант 2

  • Контрольные вопросы

  • Решение

  • Задание

  • Лабораторная работа 1. Симметричные криптографические системы


    Скачать 41.03 Kb.
    НазваниеСимметричные криптографические системы
    Дата06.04.2023
    Размер41.03 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 1.docx
    ТипКонтрольные вопросы
    #1042205

    Министерство образования и науки РФ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «Тульский государственный институт»

    Интернет-институт, направление подготовки «прикладная информатика».

    ОТЧЕТ ПО ЛАБОЛАТОРНОЙ РАБОТЕ

    по предмету «Методы и средства защиты компьютерной информации»

    на тему: «Симметричные криптографические системы»

    студента группы ИБ262591

    направление: прикладная информатика

    вариант №2

    Преподаватель: Сафронова Марина Алексеевна

    Тула – 2023

    Цель работы

    Освоение теоретических методов создания симметричных криптографических систем, получение практических навыков в преобразовании информации с помощью ЭВМ.

    Программа работы

    Составить алгоритм для выполнения прямого, а затем обратного преобразование текста в соответствии с вариантом. Номер вариант соответствует последней цифре номера зачетки.

    Написать, отладить и выполнить программу для пункта 1.

    Задание. Вариант 2

    Написать программу шифрования и дешифрования сообщения с использованием криптосистемы Ришелье: реальное сообщение дополняется лишними буквами, которые совершенно не относятся к сообщению. Текст размещается в прямоугольнике с определенным количеством строк и столбцов. Исходные симоволы шифруемого текста располагаются только на определенных позициях, остальные позиции заполняются лишними, ничего не значащими символами.

    В данном задании используйте следующий прямоугольник Ришелье (см. рисунок 1.3):



    Контро

    Контрольные вопросы

    1. В чем отличие симметричных и ассиметричных систем шифрования?

    2. Какие виды симметричных криптосистем вы знаете?

    3. В чем сущность подстановки Цезаря?

    4. Каким образом выполняется обратное преобразование текста, зашифрованного с помощью подстановки Цезаря?

    5. Назвать условия, которыми необходимо руководствоваться при выборе ключа в симметричных криптосистемах, для повышения криптоустойчивости системы шифрования.


    Решение:

    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();

    }

    }

    }


    написать администратору сайта