Развитие Алгоритмов шифрования

Содержание

Слайд 2

Недостатки DES Так как длина ключа равна 56 битам, существует 256

Недостатки DES

Так как длина ключа равна 56 битам, существует 256 возможных

ключей. На сегодня такая длина ключа недостаточна, поскольку допускает успешное применение лобовых атак.
Альтернативой DES можно считать тройной DES, IDEA, а также алгоритм Rijndael, принятый в качестве нового стандарта на алгоритмы симметричного шифрования.
Слайд 3

Тройной DES с двумя ключами Использование трех стадии шифрования с тремя

Тройной DES с двумя ключами

Использование трех стадии шифрования с тремя различными

ключамио поднимает стоимость лобовой атаки до 2168, которая на сегодняшний день считается выше практических возможностей. Но при этом длина ключа равна 56 * 3 = 168 бит, что иногда бывает громоздко.
В качестве альтернативы предлагается метод тройного шифрования, использующий только два ключа. В этом случае выполняется последовательность зашифрование-расшифрование-зашифрование (EDE).
C = EK1 [DK2 [EK1 [P]]]
Не имеет большого значения, что используется на второй стадии: шифрование или дешифрование.
В случае использования дешифрования существует только то преимущество, что можно тройной DES свести к обычному одиночному DES, используя K1 = K2:
C = EK1 [DK1 [EK1 [P]]] = EK1 [P]
Известных криптографических атак на тройной DES не существует. Цена подбора ключа в тройном DES равна 2112.
Слайд 4

Шифрование тройным DES Дешифрование тройным DES

Шифрование тройным DES

Дешифрование тройным DES

Слайд 5

Advanced Encryption Standard (AES) Известен также как Rijndael. Симметричный алгоритм блочного

Advanced Encryption Standard (AES)

Известен также как Rijndael.
Симметричный алгоритм блочного шифрования

(размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES.
Национальный институт стандартов и технологий США (National Institute of Standards and Technology, NIST) опубликовал спецификацию AES 26 ноября 2001 года.
26 мая 2002 года AES был объявлен стандартом шифрования.
Rijndael блочный алгоритм шифрования с переменной длиной блока и переменной длиной ключа. Длина блока и длина ключа могут быть независимо установлены в 128, 192 или 256 бит.
Слайд 6

Состояние Преобразования выполняются над промежуточным результатом, называемым состоянием. Состояние можно рассматривать

Состояние

Преобразования выполняются над промежуточным результатом, называемым состоянием.
Состояние можно рассматривать как двумерный

массив байтов. Этот массив имеет четыре строки и различное число столбцов, обозначаемое как Nb, равное длине блока, деленной на 32. Ключ также можно рассматривать как двумерный массив с четырьмя строками. Число столбцов ключа шифрования, обозначаемое как Nk, равно длине ключа, деленной на 32.
В некоторых случаях эти блоки также рассматриваются как одномерные массивы четырехбайтных векторов, где каждый вектор состоит из соответствующего столбца. Такие массивы имеют длину 4, 6 или 8 соответственно, и индексы в диапазонах 0 … 3, 0 … 5 или 0 … 7. Четырехбайтные вектора иногда мы будем называть словами.
Если необходимо указать четыре отдельных байта в четырехбайтном векторе, будет использоваться нотация (a, b, c, d), где a, b, c и d являются байтами в позициях 0, 1, 2 и 3, соответственно, в рассматриваемом столбце, векторе или слове.
Слайд 7

Преобразования алгоритма Rijndael Алгоритм Rijndael состоит из четырёх последовательных преобразований: BS

Преобразования алгоритма Rijndael

Алгоритм Rijndael состоит из четырёх последовательных преобразований:
BS (ByteSub) –

табличная замена каждого байта массива.
SR (ShiftRow) – сдвиг строк массива.
MixColumn – операция над независимыми столбцами массива.
AK (AddRoundKey) – добавление ключа.
Преобразования над шифруемыми данными поочередно выполняются в каждом раунде 
Исключения касаются первого и последнего раундов: перед первым раундом дополнительно выполняется операция AK, а в последнем раунде отсутствует MC.
AK, {BS, SR, MC, AK} (повторяется R-1 раз), BS, SR, AK.
В алгоритме Rijndael количество раундов шифрования (R) переменное (10, 12 или 14 раундов) и зависит от размеров блока и ключа шифрования (для ключа также предусмотрено несколько фиксированных размеров).
Слайд 8

BS (ByteSub) табличная замена каждого байта массива. Преобразование SubByte() является нелинейной

BS (ByteSub)

табличная замена каждого байта массива.
Преобразование SubByte() является нелинейной подстановкой байтов,

которое работает независимо для каждого байта State и использует таблицу подстановок S. Эта замена включает в себя две операции:
Каждый байт заменяется на обратный мультипликативный
{b}-1 ={b} mod m(x) Байт {00} преобразуется сам в себя.
Для каждого байта осуществляется аффинное преобразование в поле GF(2), задаваемое формулой
Слайд 9

Таблицы подстановки для S-Box и InvS-Box Преобразования S-Box и InvS-Box могут

Таблицы подстановки для S-Box и InvS-Box

Преобразования S-Box и InvS-Box могут быть

представлены в виде таблицы подстановки.
Если на входе есть байт B [7-0], а x и y – его старшая и младшая часть (x [3-0] = B [7-4], y [3-0] = B [3-0]), то на выходе байт получается кодированным в две шестнадцатиричные цифры.
Например, применение таблицы подстановки S-Box для числа 85 (x=8; y=5 в шестнадцатиричном виде) дает на выходе шестнадцатиричное 97. А применение таблицы InvS-Box для 97 дает 85.
Слайд 10

Таблица S-Box х ------------------ y ----------------------> 0 1 2 3 4

Таблица S-Box

х ------------------ y ---------------------->
0 1 2

3 4 5 6 7 8 9 a b c d e f
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
Слайд 11

Таблица InvS-Box Х ------------------ y ----------------------> 0 1 2 3 4

Таблица InvS-Box

Х ------------------ y ---------------------->
0 1 2 3

4 5 6 7 8 9 a b c d e f
0 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb
1 7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb
2 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e
3 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25
4 72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92
5 6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84
6 90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06
7 d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b
8 3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73
9 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e
a 47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b
b fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4
c 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f
d 60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef
e a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61
f 17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d
Слайд 12

SR (ShiftRow) – сдвиг строк массива. При этой операции первая строка

SR (ShiftRow)

– сдвиг строк массива.
При этой операции первая строка

остается без изменений, а остальные циклически побайтно сдвигаются влево на фиксированное число байт, зависящее от размера массива.
Например, для массива размером 4X4 строки 2, 3 и 4 сдвигаются соответственно на 1, 2 и 3 байта.
Слайд 13

MixColumn операция над независимыми столбцами массива , когда каждый столбец по

MixColumn

операция над независимыми столбцами массива , когда каждый столбец по определенному

правилу умножается на фиксированную матрицу c(x).
каждая из колонок представляет собой 4-битный код. Колонки рассматриваются как полиномы над полем GF(28). Колонка умножается на фиксированный полином {a}={03}x3+{01}x2+{01}x+ {02} по модулю x4+1 
Слайд 14

Уравнения преобразования MixColumns A' = ({02} • A) + ({03} •

Уравнения преобразования MixColumns

A' = ({02} • A) + ({03} • B)

+ C + D
B' = A + ({02} • B) + ({03} • C) + D
C' = A + B + ({02} • C) + ({03} • D)
D' = ({03} • A) + B + C + ({02} • D)
E' = ({02} • E) + ({03} • F) + G + H
F' = E + ({02} • F) + ({03} • G) + H
G' = E + F + ({02} • G) + ({03} • H)
H' = ({03} • E) + F + G + ({02} • H)
I' = ({02} • I) + ({03} • J) + K + L
J' = I + ({02} • J) + ({03} • K) + L
K' = I + J + ({02} • K) + ({03} • L)
L' = ({03} • I) + J + K + ({02} • L)
M' = ({02} • M) + ({03} • N) + O + P
N' = M + ({02} • N) + ({03} • O) + P
O' = M + N + ({02} • O) + ({03} • P)
P' = ({03} • M) + N + O + ({02} • P)
Слайд 15

AK (AddRoundKey) добавление ключа. Каждый бит массива складывается по модулю 2

AK (AddRoundKey)

добавление ключа.
Каждый бит массива складывается по модулю 2

с соответствующим битом ключа раунда, который, в свою очередь, определенным образом вычисляется из ключа шифрования.
Для шифрования текста AES применяет не пароль или хеш от пароля, а так называемое «расписание ключей» получаемое из ключа. Это расписание можно представить как Nr + 1 матриц размера 4×Nb. Алгоритм шифрования делает Nr + 1 шагов и на каждом шаге он, помимо других действий, берёт одну матрицу 4×Nb из «расписания» и поэлементно добавляет её к блоку данных.
Nk Nb Nr
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14
Слайд 16

Алгоритм ГОСТ 28147 Алгоритм ГОСТ 28147 - отечественный стандарт для алгоритмов

Алгоритм ГОСТ 28147

Алгоритм ГОСТ 28147 - отечественный стандарт для алгоритмов симметричного

шифрования.
ГОСТ 28147 разработан в 1989 году, является блочным алгоритмом шифрования, длина блока равна 64 битам, длина ключа равна 256 битам, количество раундов равно 32.
Слайд 17

Алгоритм представляет собой классическую сеть Фейстеля. Li = Ri-1 Ri =

Алгоритм представляет собой классическую сеть Фейстеля.
Li = Ri-1
Ri = Li +f

(Ri-1, Ki)
Функция F.
Сначала правая половина и i-ый подключ складываются по модулю 232. Затем результат разбивается на восемь 4-битовых значений, каждое из которых подается на вход S-box.
ГОСТ 28147 использует восемь различных S-boxes, каждый из которых имеет 4-битовый вход и 4-битовый выход.
Выходы всех S-boxes объединяются в 32-битное слово, которое затем циклически сдвигается на 11 битов влево. Наконец, с помощью XOR результат объединяется с левой половиной, в результате чего получается новая правая половина.
Слайд 18

Генерация ключей 256-битный ключ разбивается на восемь 32-битных подключей. Алгоритм имеет

Генерация ключей

256-битный ключ разбивается на восемь 32-битных подключей. Алгоритм имеет

32 раунда, поэтому каждый подключ используется в четырех раундах .
Слайд 19

S-box входом и выходом S-box являются 4-битные числа, поэтому каждый S-box

S-box

входом и выходом S-box являются 4-битные числа, поэтому каждый S-box может

быть представлен в виде строки чисел от 0 до 15
Слайд 20

Алгоритм шифрования RSA На данный момент асимметричное шифрование на основе открытого

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

На данный момент асимметричное шифрование на основе открытого ключа

RSA (расшифровывается, как Rivest, Shamir and Aldeman - создатели алгоритма) использует большинство продуктов на рынке информационной безопасности.
Его криптостойкость основывается на сложности разложения на множители больших чисел, а именно - на исключительной трудности задачи определить секретный ключ на основании открытого, так как для этого потребуется решить задачу о существовании делителей целого числа. Наиболее криптостойкие системы используют 1024-битовые и большие числа.
Слайд 21

Ключи RSA Для начала необходимо сгенерировать открытый и секретные ключи: Берутся

Ключи RSA
Для начала необходимо сгенерировать открытый и секретные ключи:
Берутся два

больших простых числа p и q.
Определяется n, как результат умножения p и q (n= p*q).
Выбирается случайное число d. Это число должно быть взаимно простым (не иметь ни одного общего делителя, кроме «1» с результатом умножения (p-1)*(q-1).
Находится такое число е, для которого является истинным следующее соотношение (e*d) mod ((p-1)*(q-1))=1.
Числа e и n определяются как открытый ключ, а - d и n как секретный.
Слайд 22

Работа RSA Для того, чтобы зашифровать данные по открытому ключу {e,n},

Работа RSA

Для того, чтобы зашифровать данные по открытому ключу {e,n}, необходимо

следующее:
разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа M(i)=0,1,2..., n-1( т.е. только до n-1).
зашифровать текст, рассматриваемый как последовательность чисел M(i) по формуле C(i)=(M(I)^e)mod n.
Чтобы расшифровать эти данные, используя секретный ключ {d,n}, необходимо выполнить следующие вычисления: M(i) = (C(i)^d) mod n. В результате будет получено множество чисел M(i), которые представляют собой исходный текст.
Слайд 23

Пример работы RSA Зашифруем и расшифруем сообщение "САВ" по алгоритму RSA.

Пример работы RSA

Зашифруем и расшифруем сообщение "САВ" по алгоритму RSA. Для

простоты возьмем небольшие числа - это сократит наши расчеты.
Выберем p=3 and q=11.
Определим n= 3*11=33.
Hайдем (p-1)*(q-1)=20.
d будет равно, например, 3: (d=3).
Определим число е по следующей формуле: (e*3) mod 20=1. Значит е будет равно 7: (e=7).
Представим шифруемое сообщение как последовательность чисел в диапазоне от 0 до 32 (n-1).
Пусть буква А =1, В=2, С=3.
Теперь зашифруем сообщение, используя открытый ключ {7,33}
C1 = (3^7) mod 33 = 2187 mod 33 = 9;
C2 = (1^7) mod 33 = 1 mod 33 = 1;
C3 = (2^7) mod 33 = 128 mod 33 = 29;
Теперь расшифруем данные, используя закрытый ключ {3,33}.
M1=(9^3) mod 33 =729 mod 33 = 3(С);
M2=(1^3) mod 33 =1 mod 33 = 1(А);
M3=(29^3) mod 33 = 24389 mod 33 = 2(В);
Слайд 24

Электронная цифровая подпись (ЭЦП) Электронная цифровая подпись - реквизит электронного документа,

Электронная цифровая подпись (ЭЦП)

Электронная цифровая подпись - реквизит электронного документа, позволяющий

установить отсутствие искажения информации в электронном документе с момента формирования ЭЦП и проверить принадлежность подписи владельцу сертификата ключа ЭЦП.
Использование ЭЦП позволяет защититься от злонамеренных действий:
отказ - отправитель впоследствии отказывается от переданного сообщения;
фальсификация - получатель подделывает сообщение;
изменение - получатель вносит изменения в сообщение;
маскировка - нарушитель маскируется под другого пользователя.
Поскольку подписываемые документы — переменного (и как правило достаточно большого) объёма, в схемах ЭЦП зачастую подпись ставится не на сам документ, а на его хэш. Для вычисления хэша используются криптографические хэш-функции, что гарантирует выявление изменений документа при проверке подписи. Хэш-функции не являются частью алгоритма ЭЦП, поэтому в схеме может быть использована любая надёжная хэш-функция.
Слайд 25

Схемы построения цифровой подписи На основе алгоритмов симметричного шифрования. Данная схема

Схемы построения цифровой подписи
На основе алгоритмов симметричного шифрования. Данная схема предусматривает

наличие в системе третьего лица — арбитра, пользующегося доверием обеих сторон. Авторизацией документа является сам факт зашифрования его секретным ключом и передача его арбитру.
На основе алгоритмов асимметричного шифрования. На данный момент такие схемы ЭЦП наиболее распространены и находят широкое применение.
Слайд 26

Асимметричная схема Асимметричные схемы ЭЦП относятся к криптосистемам с открытым ключом.

Асимметричная схема
Асимметричные схемы ЭЦП относятся к криптосистемам с открытым ключом.
В

отличие от асимметричных алгоритмов шифрования, в которых зашифрование производится с помощью открытого ключа, а расшифрование — с помощью закрытого, в схемах цифровой подписи подписывание производится с применением закрытого ключа, а проверка — с применением открытого.
Слайд 27

Общая схема цифровой подписи Генерация ключевой пары. При помощи алгоритма генерации

Общая схема цифровой подписи

Генерация ключевой пары. При помощи алгоритма генерации

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

Слайд 29

Слайд 30

Алгоритм DSA (Digital Signature Algorithm) DSA - алгоритм с использованием открытого

Алгоритм DSA (Digital Signature Algorithm)

DSA - алгоритм с использованием открытого ключа

для создания электронной подписи, но не для шифрования. Вместе с криптографической хеш-функцией SHA-1 является частью DSS (Digital Signature Standard), впервые опубликованного в 1994.
Для построения системы цифровой подписи нужно произвести следующие действия:
Выбор криптографической хеш-функции H(x).
Выбор большого простого числа q, размерность которого в битах совпадает с размерностью в битах значений хэш-функции H(x).
Выбор простого числа p, такого, что (p-1) делится на q.
Выбор числа g такого, что его мультипликативный порядок по модулю p равен q. Для его вычисления используется формула g = h^((p - 1)/q) mod p,
где h ϵ (1; p - 1), такое, что g ≠ 1. В большинстве случаев значение h = 2 удовлетворяет этому требованию.
Слайд 31

Открытый и секретный ключи Секретный ключ представляет собой число x ϵ

Открытый и секретный ключи

Секретный ключ представляет собой число x ϵ (0;

q)
Открытый ключ вычисляется по формуле y = g^x mod p
Открытыми параметрами являются числа (p, q, g, y).
Закрытый параметр только один — число x.
При этом числа (p, q, g) могут быть общими для группы пользователей, а числа x и y являются соответственно закрытым и открытым ключами конкретного пользователя. При подписании сообщения используются секретные числа x и k, причем число k должно выбираться случайным образом (на практике псевдослучайным) при подписывании каждого следующего сообщения.
Слайд 32

Подпись сообщения Подпись сообщения выполняется по следующему алгоритму: 1. Выбор случайного

Подпись сообщения

Подпись сообщения выполняется по следующему алгоритму:
1. Выбор случайного числа k ϵ

(0; q);
2. Вычисление r = (g^k mod p) mod q;
3. Вычисление s = k^(-1)(H(m) + x * r) mod q, где H(m) - хэш сообщения;
4. Выбор другого k, если r = 0 или s = 0.
Подписью является пара чисел (r, s).