Изучение стандартных средств для реализации приложений, использующих симметричное и ассиметричное шифрование
Автор: ldkfjnv • Февраль 10, 2023 • Практическая работа • 5,862 Слов (24 Страниц) • 150 Просмотры
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ДОНЕЦКОЙ НАРОДНОЙ РЕСПУБЛИКИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра ПИ им. Фельдмана
Факультет ИСП
Отчет по лабораторной работе №4
Тема: Изучение стандартных средств для реализации приложений,
использующих симметричное и ассиметричное шифрование
Курс: Безопасность программ и данных
Выполнил
ст. гр. ПИ-18в
Парсаданян Я.Р.
Проверил
Донецк – 2021
Задание
Шифрование симметричным алгоритмом шифрования (Rijndael).
Шифрование ключа симметричного алгоритма ассиметричным алгоритмов (RSA).
Получение дайжеста с помощью функции хеширования (MD5).
Реализация ЭЦП с помощью ассиметричного алгоритма (RSA).
Описание алгоритмов
AES/Rijndael – симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит). Алгоритм AES представляет блок данных в виде двумерного байтового массива размером 4x4. Все операции производятся над отдельными байтами массива, а также над столбцами и строками.
Операция SubBytes представляет собой табличную замену каждого байта массива данных. Операция ShiftRows выполняет циклический сдвиг влево всех строк массива данных за исключением нулевой производится на i байт. Операция MixColumns выполняет умножение каждого столбца массива данных на фиксированный полином a(x). Операция AddRoundKey выполняет наложение на массив данных материала ключа. А именно, на i-ый столбец массива данных побитовой логической операцией XOR накладывается определенное слово.
RSA – алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.
Отправитель выбирает два очень больших простых числа Р и Q и вычисляет два произведения N=PQ и M=(P-1)(Q-1). Затем он выбирает случайное целое число D, взаимно простое с М, и вычисляет Е, удовлетворяющее условию DE = 1 MOD М. После этого он публикует D и N как свой открытый ключ шифрования, сохраняя Е как закрытый ключ. Если S – сообщение, длина которого, определяемая по значению, выражаемого им целого числа, должна быть в интервале (1, N), то оно превращается в шифровку возведением в степень D по модулю N и отправляется получателю S'=(S**D) MOD N. Получатель сообщения расшифровывает его, возводя в степень Е по модулю N, так как S=(S'**E) MOD N = (S**(D*E)) MOD N. Таким образом, открытым ключом служит пара чисел N и D, а секретным ключом число Е.
MD5 – 128-битный алгоритм хеширования. Предназначен для создания «дайджестов» сообщений произвольной длины.
На вход алгоритма поступает входной поток данных. Длина сообщения может быть любой (L). Сначала к концу потока дописывают единичный бит. Затем добавляют некоторое число нулевых бит такое, чтобы новая длина потока L' стала сравнима с 448 по модулю 512, (L'=512*N+448). В конец сообщения дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. После этого длина потока станет кратной 512. Для вычислений инициализируются четыре переменные размером по 32 бита, начальные значения которых задаются шестнадцатеричными числами. В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором. В цикле вычисляются значения и выводится хеш.
Код программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Security.Cryptography;
namespace zashita4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
MD5 md5 = MD5.Create();
CspParameters cspp = new CspParameters();
CspParameters csppHash = new CspParameters();
...