Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab-Security.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.23 Mб
Скачать

Практическая работа №4 Работа с симметричным криптографическим алгоритмом aes (Rijndael)

Цель работы: ознакомиться с особенностями криптографического алгоритма AES (Rijndael) и его реализацией в Microsoft .NET Framework на языке программирования Microsoft Visual Basic 2010.

Введение

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

Общая технология использования симметричного метода шифрования представлена на Рис. 4.1.

Рис. 4.1. Использование симметричного метода шифрования.

К достоинствам симметричных методов относят высокое быстродействие и простоту.

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

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

В 1997 г. NIST (National Institute of Standards and Technology) анонсировал конкурс на создание AES (Advanced Encryption Standard) - нового государственного криптографического стандарта США. Тогда же были оговорены следующие первичные требования, которым должен удовлетворять AES: это должен быть незасекреченный, открыто опубликованный алгоритм шифрования, бесплатно доступный по всему миру. Спустя некоторое время было уточнено, что AES должен быть блочным шифром, реализующим криптографическую процедуру с симметричным ключом, причем алгоритм (как минимум) должен поддерживать 128-битную длину шифруемого блока текста и длины ключей 128, 192 и 256 бит.

В 2000 г. в конкурсе победил алгоритм Rijndael, предложенный бельгийскими криптоаналитиками Джоаном Дайеменом (Joan Daemen) и Винсентом Риджеменом (Vincent Rijmen).

В настоящее время подавляющее большинство применяемых на практике симметричных систем с закрытым (секретным) ключом представляют собой блочные системы, которые задают параметризованное ключом преобразование блоков исходного сообщения (как правило, длиной 64 бита) в блоки шифрограммы. Алгоритм Rijndael не является исключением.

При блочном шифровании открытый текст сначала разбивается на равные по длине блоки, затем применяется зависящая от ключа функция шифрования для преобразования блока открытого текста длиной m бит в блок шифртекста такой же длины.

Достоинством блочного шифрования является то, что каждый бит блока шифртекста зависит от значений всех битов соответствующего блока открытого текста, и никакие два блока открытого текста не могут быть представлены одним и тем же блоком шифртекста. Поэтому в настоящее время подавляющее большинство применяемых на практике как симметричных систем с закрытым (секретным) ключом так и асимметричных систем с открытым ключом представляют собой блочные системы, как правило, с длиной блоков в 64 бита.

Выполнение практической работы

Во время выполнения практической работы необходимо написать программу, которая позволяет:

  1. Осуществлять шифрование текстовой информации с помощью алгоритма Rijndael при нажатии на кнопку «Зашифровать».

  2. Осуществлять расшифрование зашифрованной информации с помощью алгоритма Rijndael при нажатии на кнопку «Расшифровать».

Главное окно приложения представлено на рис. 4.2.

Рис. 4.2. Главная форма приложения.

Используемые элементы управления описаны в табл. 4.1.

Таблица 4.1.

Тип элемента

Устанавливаемые свойства

1

Form

Name = “ frmRijndael”

Text = “Шифрование с помощью алгоритма Rijndael”

2

Button

Name = “cmdEncrypt”

Text = “Зашифровать”

3

Button

Name = “cmdDecrypt”

Text = “Расшифровать”

8

TextBox

Name = “txtEncryptText”

Text = “”

10

Label

Name = “lblEncryptText”

Text = “Введите текст, который будете шифровать”

Исходный код программы приведен в листинге 4.1.

Листинг 4.1.

Imports System.Security.Cryptography

Imports System.Text

Imports System.IO

Public Class frmRijndael

Dim RijndaelManager As New RijndaelManaged()

Private Sub cmdEncrypt_Click(sender As System.Object, _

e As System.EventArgs) Handles cmdEncrypt.Click

Dim memStream As New MemoryStream()

Dim encStream As New CryptoStream(memStream, _

RijndaelManager.CreateEncryptor(), CryptoStreamMode.Write)

Dim sw As New StreamWriter(encStream)

sw.WriteLine(txtEncrypt.Text)

sw.Close()

encStream.Close()

My.Computer.FileSystem.WriteAllBytes("C:\myFile.data", _

memStream.ToArray(), False)

memStream.Close()

End Sub

Private Sub cmdDecrypt_Click(sender As System.Object, _

e As System.EventArgs) Handles cmdDecrypt.Click

Dim buffer As Byte() = _

My.Computer.FileSystem.ReadAllBytes("C:\myFile.data")

Dim memStream As New MemoryStream(buffer)

Dim decStream As New CryptoStream(memStream, _

RijndaelManager.CreateDecryptor(), CryptoStreamMode.Read)

Dim sr As New StreamReader(decStream)

txtEncrypt.Text = sr.ReadToEnd()

sr.Close()

decStream.Close()

memStream.Close()

End Sub

Private Sub frmRijndael_Load(sender As System.Object, _

e As System.EventArgs) Handles MyBase.Load

'указываем ключ

RijndaelManager.Key = New Byte() {1, 2, 3, 4, 5, 6, 7, 8, _

9, 10, 11, 12, 13, 14, 15, 16}

'указываем вектор инициализации

RijndaelManager.IV = New Byte() {1, 2, 3, 4, 5, 6, 7, 8, _

9, 10, 11, 12, 13, 14, 15, 16}

End Sub

End Class

Вопросы к практической работе

  1. Опишите принципы работы симметричных алгоритмов шифрования.

  2. Приведите примеры наиболее распространенных симметричных алгоритмов шифрования.

  3. Опишите предназначение класса RijndaelManaged.

  4. Опишите работу функций CreateEncryptor и CreateDecryptor класса RijndaelManaged.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]