Алгоритмы и основные стандарты шифрования

28.05.2022 0 Автор : Марина Николаевна
Алгоритмы и основные стандарты шифрования

Алгоритмы и основные стандарты шифрования. Научная работа по теме «Криптография как метод кодирования и декодирования информации» ученика МБОУ Школа № 75 ГО г.Уфы Макарова Ильи Александровича (Продолжение)

Симметричное и ассиметричное шифрование

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

Как я говорил ранее, симметричное шифрование — способ шифрования, в котором для шифрования и дешифрования применяется один и тот же криптографический ключ1. Ключ заранее известен участникам переписки.

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

Ассиметричное шифрование подразумевает генерацию двух ключей: открытого и закрытого с условием, что расшифровать информацию, которая была закодирована открытым ключом можно только с помощью закрытого. Открытый ключ передаётся участникам переписки, они шифруют информацию с помощью него и передают отправителю, который только с помощью закрытого ключа сможет её расшифровать. Закрытый ключ не разглашается.

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

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

Стандарты шифрования

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

DES (англ. Data Encryption Standard) — алгоритм для симметричного шифрования, который был разработан фирмой IBM и утверждённый правительством США в 1977 году как официальный стандарт.

В 1997 году началось создание нового стандарта, несмотря на то, что попытка взломать DES приводит к множеству систем нелинейных уравнений, а аналитические методы были бесполезны, он всё же имел слабое место — малое количество возможных ключей, всего лишь 256, с развитием вычислительной мощности машин перебрать все варианты можно относительно за короткий срок.

AES (англ. Advanced Encryption Standard) — симметричный алгоритм блочного шифрования принятый в качестве стандарта шифрования правительством США. Является предшественником DES. Алгоритм хорошо проанализирован и сейчас широко используется, как это было с его предшественником DES.

Алгоритмы шифрования

Алгоритм Диффи — Хеллмана

Алгоритм Диффи — Хеллмана— криптографический протокол, позволяющий двум и более сторонам получить общий ключ, с помощью незащищённого канала связи. Впоследствии полученный ключ используется для симметричного шифрования данных.

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

Схема работы алгоритма основывается на модулярной арифметике. Рассмотрим выражение gx mod1 p. Числа g и p известны обоим оппонентам и не являются секретными. Участники переписки выбирают секретные числа (aи b).

Существуют некоторые ограничения относительного этих чисел: числа p и g– простые, а a и b – натуральные. Затем каждый вычисляет выражение gx mod p и рассказывает своему оппоненту конечный результат.

Теперь у одного собеседника есть значение B = gb mod p, полученное от первого, а у второго есть значение A = ga mod p, полученные друг от друга. Затем оппоненты вычисляют секретный ключ. Первый вычисляет выражение Ba mod p, а второй — Ab mod p.

Данные выражения равны и приводят к одному результату.

Криптографическая стойкость алгоритма Диффи — Хеллмана, основывается на предполагаемой сложности проблемы дискретного логарифмирования.

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

RSA

RSAкриптографический алгоритм с открытым ключом, который основывается на вычислительной сложности задачи факторизации больших целых чисел, то есть:

если известно вычислить относительно просто;

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

Рассмотрим сам алгоритм.

Алгоритм создания открытого и закрытого ключей

RSA-ключи генерируются следующим образом:

1) выбираются два различных случайных простых числа p и q заданного размера;

2) вычисляется их произведение n=p*q, которое называется модулем;

3) вычисляется значение функции Эйлера от числа n:

φ(n)=(p-1)*(q-1)

4) выбирается целое e (экспонента) ( 1<e<φ(n)) взаимно простое со значением функции φ(n);

5) вычисляется число d (секретная экспонента), мультипликативно обратное к числу e по модулю φ(n): 

d*e ≡ 1(mod φ(n))

6) пара (e,n) публикуется в качестве открытого ключа

7) пара (d,n} играет роль закрытого ключа

Шифрование и расшифрование

Алгоритм сеансового ключа

Алгоритм для отправителя:

Взять открытый ключ(e,n) получателя

Создать случайный сеансовый ключ m

Зашифровать сеансовый ключ с использованием открытого ключа получателя:

c = E(m) = me mod n

Зашифровать сообщение MA с помощью сеансового ключа симметричным алгоритмом:

C = Em(MA)

Алгоритм для получателя:

Принять зашифрованный сеансовый ключ отправителя.

Взять свой закрытый ключ (d,n)

Применить закрытый ключ для расшифровывания сеансового ключа:

M = D(c) = cd mod  n

Расшифровать сообщение C C помощью сеансового ключа симметричным алгоритмом:

MA = Dm (C)