
- •1) Симметричные и асимметричные криптосистемы
- •2) Термин аутентичность информации
- •3) Алгоритм des (сеть Фейстеля, s-боксы)
- •4)Тест Казиски
- •5) Шифр сдвига
- •6) Слабые ключи криптоалгоритма des
- •7) Внутренние функции шифра aes
- •8) Одноразовый блокнот
- •9) Режимы работы блочных шифров
- •10) Длина ключа des
- •11) Рекуррентный, сдвиговый генератор случайных последовательностей
- •12) Свойства хеш-функции
- •13) Полиномиальные часовые сложности. (Зависимость времени от входных данных)
- •14) Варианты криптоанализа
- •15) Ключи rsa соответствующие симметричному 80 бит
- •16) Rsa, как выбираются все элементы?
- •17) Криптосистемы на эллиптических кривых (на подобие rsa-1024 ), которые используют 160 бит ключ.
- •19) Цифровая подпись
- •20)Стандарт X.509 (Открытый ключ подтверждается с центром сертификации)
4)Тест Казиски
Назван он в честь Фридриха Казиски, который изобрел этот тест в 1863 году. Суть теста Казиски заключается в поиске одинаковых фрагментов из нескольких символов в шифротексте. Дело в том, что отстоящие друг от друга на M символов участки открытого текста будут зашифрованы одинаковыми фрагментами гаммы и, следовательно, будут представлять собой одинаковые фрагменты шифротекста. Найдя несколько таких фрагментов в шифротексте, мы можем с некоторой уверенностью сказать, что то расстояние, на которое отстоит друг от друга большинство из них, и является длиной, использованной для зашифрования гаммы. К сожалению, этот метод работает далеко не всегда – ведь не в каждом открытом тексте так уж часто встречаются одинаковые фрагменты – слова.
5) Шифр сдвига
Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется буквой находящейся на некоторое постоянное число позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Г, Б станет Д, и так далее.
Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики:
где
—
символ открытого текста,
—
символ шифрованного текста,
—
мощность
алфавита, а
—
ключ.
С точки зрения математики шифр Цезаря является частным случаем аффинного шифра.
6) Слабые ключи криптоалгоритма des
Слабые ключи
Слабыми
ключами называется ключи k такие,
что
,
где x — 64-битный блок.
Известны
4 слабых ключа, они приведены в таблице.
Для каждого слабого ключа существует
неподвижные
точки, то есть, таких 64-битных блоков х,
для которых
.
Таблица. DES-Слабые ключи
|
||
Слабые ключи(hexadecimal) |
|
|
0101-0101-0101-0101 |
|
|
FEFE-FEFE-FEFE-FEFE |
|
|
1F1F-1F1F-0E0E-0E0E |
|
|
E0E0-E0E0-F1F1-F1F1 |
|
|
|
|
|
обозначает вектор, состоящий из 28 нулевых битов.
7) Внутренние функции шифра aes
Шифрование
AES является стандартом, основанным на алгоритме Rijndael. Для AES длина input(блока входных данных) и State(состояния) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для обозначения выбранных длин input, State и Cipher Key в байтах используется нотация Nb = 4 для input и State, Nk = 4, 6, 8 для Cipher Key соответственно для разных длин ключей.
В
начале шифрования input копируется в
массив State по правилу
,
для
и
.
После этого к State применяется процедура
AddRoundKey() и затем State проходит через
процедуру трансформации (раунд) 10, 12,
или 14 раз (в зависимости от длины ключа),
при этом надо учесть, что последний
раунд несколько отличается от предыдущих.
В итоге, после завершения последнего
раунда трансформации, State копируется в
output по правилу
,
для
и
.
Отдельные трансформации SubBytes(), ShiftRows(), MixColumns(), и AddRoundKey() — обрабатывают State. Массив w[] — содержит key schedule.
SubBytes()
В процедуре SubBytes, каждый байт в state заменяется соответствующим элементом в фиксированной 8-битной таблице поиска, S; bij = S(aij).
Процедура
SubBytes() обрабатывает каждый байт состояния,
независимо производя нелинейную замену
байтов используя таблицу замен (S-box).
Такая операция обеспечивает нелинейность
алгоритма шифрования. Построение S-box
состоит из двух шагов. Во-первых,
производится взятие обратного числа в
поле Галуа
.
Во-вторых, к каждому байту b из которых
состоит S-box применяется следующая
операция:
где
,
и где
есть
i-ый бит b, а
—
i-ый бит константы
.
Таким образом, обеспечивается защита
от атак, основанных на простых
алгебраических свойствах.
ShiftRows()
В процедуре ShiftRows, байты в каждой строке state циклически сдвигаются влево. Размер смещения байтов каждой строки зависит от её номера
ShiftRows работает со строками State. При этой трансформации строки состояния циклически сдвигаются на r байт по горизонтали, в зависимости от номера строки. Для нулевой строки r = 0, для первой строки r = 1 Б и т. д. Таким образом каждая колонка выходного состояния после применения процедуры ShiftRows состоит из байтов из каждой колонки начального состояния. Для алгоритма Rijndael паттерн смещения строк для 128- и 192-битных строк одинаков. Однако для блока размером 256 бит отличается от предыдущих тем, что 2, 3, и 4-е строки смещаются на 1, 3, и 4 байта, соответственно.
MixColumns()
В процедуре MixColumns, каждая колонка состояния перемножается с фиксированным многочленом c(x).
В
процедуре MixColumns,
четыре байта каждой колонки State
смешиваются, используя для этого
обратимую линейную трансформацию.
MixColumns
обрабатывает состояния по колонкам,
трактуя каждую из них как полином
четвёртой степени. Над этими полиномами
производится умножение в
по
модулю
на
фиксированный многочлен
.
Вместе с ShiftRows
, MixColumns
вносит диффузию в шифр.
AddRoundKey()
В процедуре AddRoundKey, каждый байт состояния объединяется с RoundKey используя операцию XOR (⊕).
В процедуре AddRoundKey, RoundKey каждого раунда объединяется со State. Для каждого раунда Roundkey получается из CipherKey используя процедуру KeyExpansion; каждый RoundKey такого же размера, что и State. Процедура производит побитовый XOR каждого байта State с каждым байтом RoundKey .