Стандарт шифрования данных (DES) —
В 1973 году
Предложенная IBM модификация проекта, названная Lucifer, была принята как
После публикации эскиз строго критиковался по двум причинам.
Первая: критиковалась сомнительно маленькая 56 битов), что могло сделать шифр уязвимым к атаке "грубой силой".
Вторая причина: критики были обеспокоены некоторым скрытым построением внутренней структуры
Они подозревали, что некоторая часть структуры ( S -блоки) может иметь скрытую лазейку, которая позволит расшифровывать сообщения без ключа. Впоследствии проектировщики IBM сообщили, что внутренняя структура была доработана, чтобы предотвратить
Как показано на рис. 8.1. ,
(рис 8.1) Шифрование и дешифрование в DES На стороне шифрования 64 -битовый исходный текст и порождает 64 -битовый зашифрованный текст; на стороне дешифрования 64 -битовый зашифрованный текст и порождает 64 -битовый исходный текст. На обеих сторонах для шифрования и дешифрования применяется один и тот же 56 -битовый ключ.
Рассмотрим сначала шифрование, а потом дешифрование. Процесс шифрования состоит из двух перестановок ( P -блоки) — они называются начальные и конечные перестановки, — и шестнадцати раундов Файстеля. Каждый раунд использует различные сгенерированные 48 -битовые ключи. Алгоритм генерации будет рассмотрен в этой лекции позднее. Рисунок 8.2 показывает элементы шифра
Рисунок 8.3 показывает начальные и конечные перестановки ( P -блоки).
Каждая из перестановок принимает 64 -битовый вход и переставляет его элементы по заданному правилу. Мы показали только небольшое число входных портов и соответствующих выходных портов. Эти перестановки — прямые перестановки без ключей, которые инверсны друг другу. Например, в начальной перестановке 58 -й бит на входе переходит в первый бит на выходе. Аналогично, в конечной перестановке первый входной бит переходит в 58 -й бит на выходе. Другими словами, если между этими двумя перестановками не существует раунда, 58 -й бит, поступивший на вход устройства начальной перестановки, будет доставлен на 58 -й выход финальной перестановкой.

(рис 8.3) Общая структура DES (рис 8.2) Начальные и конечные шаги перестановки DES Правила перестановки для этого P -блока показаны в таблице 8.1. Таблицу можно представить как 64 -элементный массив. Заметим, что работу с таблицей мы обсуждали, значение каждого элемента определяет номер входного порта, а порядковый номер (индекс) элемента определяет номер выходного порта.
| Начальные перестановки | Конечные перестановки | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 02 | 40 | 08 | 48 | 16 | 56 | 24 | 64 | 32 |
| 60 | 52 | 44 | 36 | 28 | 20 | 12 | 04 | 39 | 07 | 47 | 15 | 55 | 23 | 63 | 31 |
| 62 | 54 | 46 | 38 | 30 | 22 | 14 | 06 | 38 | 06 | 46 | 14 | 54 | 22 | 62 | 30 |
| 64 | 56 | 48 | 40 | 32 | 24 | 16 | 08 | 37 | 05 | 45 | 13 | 53 | 21 | 61 | 29 |
| 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 | 36 | 04 | 44 | 12 | 52 | 20 | 60 | 28 |
| 59 | 51 | 43 | 35 | 27 | 19 | 11 | 03 | 35 | 03 | 43 | 11 | 51 | 19 | 59 | 27 |
| 61 | 53 | 45 | 37 | 29 | 21 | 13 | 05 | 34 | 02 | 42 | 10 | 50 | 18 | 58 | 26 |
| 63 | 55 | 47 | 39 | 31 | 23 | 15 | 07 | 33 | 01 | 41 | 09 | 49 | 17 | 57 | 25 |
Эти две перестановки не имеют никакого значения для криптографии в
Пример 8.1
Найдите выход начального блока перестановки, когда на вход поступает шестнадцатеричная последовательность, такая как
0x0002 0000 0000 0001
Решение
Вход имеет только две единицы — (бит 15 и бит 64 ); выход должен также иметь только две единицы (прямая перестановка). Используя таблицу 8.1, мы можем найти выход, связанный с этими двумя битами. Бит 15 на входе становится битом 63 в выходе. Бит 64 во входе становится битом 25 в выходе. На выходе будем иметь только две единицы — бит 25 и бит 63.
Результат в шестнадцатеричном исчислении
0x0000 0080 0000 0002
Пример 8.2
Докажем, что начальные и финальные перестановки инверсны друг другу. Преобразуем полученную выходную последовательность во входную.
0x0000 0080 0000 0002
Решение
Единичные биты — 25 и 63, другие биты равны нулю. В конечной перестановке 25 -й бит переходит в 64 -й, а 63 -й — в 15 -й. Результат
0x0002000000000001
16 раундов. Каждый раунд
(рис 8.4) Раунд в DES (сторона шифрования)Раунд принимает LI-1 RI-1 от предыдущего раунда (или начального блока перестановки) и создает для следующего раунда LI И RI, которые поступают на следующий раунд (или конечный блок перестановки). Как мы указали в лекции 7, можно принять, что каждый раунд имеет два элемента шифра (смеситель и устройство замены). Каждый из этих элементов является обратимым. Устройство замены — очевидно обратимо, оно меняет местами левую половину текста с правой половиной. Смеситель является обратимым, потому что операция f (RI-1,KI).
Основной блок 48 -битового ключа зашифровывает 32 самых правых бит RI-1, чтобы получить на выходе 32 -битовое слово. Эта функция содержит, как это показано на рис. 8.5, четыре секции: отбеливатель (P -блок расширения, группу S -блоков и прямой P -блок.
P-блок расширения. Так как вход RI-1 имеет длину 32 бита, а ключ KI — длину 48 битов, мы сначала должны расширить RI-1 до 48 бит. RI-1 разделяется на 8 секций по 4 бита. Каждая секция на 4 бита расширяется до 6 бит. Эта перестановка расширения следует по заранее определенным правилам. Для секции значения входных бит 1, 2, 3 и 4 присваиваются битам 2, 3, 4 и 5 соответственно на выходе. Выходной бит 1 формируется на основе входного бита 4 из предыдущей секции; бит выхода 6 формируется из бита 1 в следующей секции. Если секции 1 и 8 рассматривать как соседние секции, то те же самые правила применяются к битам 1 и 32. Рисунок 8.6 показывает входы и выходы в перестановке расширения.
Хотя отношения между входом и выходом могут быть определены математически, но чтобы определить этот P -блок, 48, но диапазон значений — только от 1 до 32. Некоторые из входов идут к больше чем одному выходу. Например, значение входного бита 5 становится значением битов выхода 6 и 8.

(рис 8.6) Функция DES (рис 8.5) Перестановка расширения | 32 | 01 | 02 | 03 | 04 | 05 |
| 04 | 05 | 06 | 07 | 08 | 09 |
| 08 | 09 | 10 | 11 | 12 | 13 |
| 12 | 13 | 14 | 15 | 16 | 17 |
| 16 | 17 | 18 | 19 | 20 | 21 |
| 20 | 21 | 22 | 23 | 24 | 25 |
| 24 | 25 | 26 | 27 | 28 | 29 |
| 28 | 29 | 31 | 31 | 32 | 01 |
Отбеливатель (whitener). После расширения XOR (48 бит. Также заметим, что ключ раунда использует только эту операцию.
S-блоки. S -блоки смешивают информацию (операция перемешивания). S -блоки, каждый с 6 -ю входными битами и 4 -мя выходными (см. рис. 8.7).
(рис 8.7) S - блоки Данные из 48 битов от второй операции 6 битов, и каждый кусок поступает в блок. Результат каждого блока — кусок на 4 бита; когда они объединены, результат выражается в 32 -битовом тексте. Подстановка в каждом блоке следует по заранее определенным правилам, основанным на таблице из 4 -х строк и 16 -ти столбцов. Комбинация битов 1 и 6 на входе определяет одну из четырех строк; комбинация битов от 2 -го до 5 -го определяет один из шестнадцати столбцов, как показано на рис. 8.8. Далее мы поясним это примерами.
(рис 8.8) Правила для S- блока Поскольку для каждого S -блока есть собственная таблица, необходимо иметь восемь таблиц, например таких, как это показано в таблицах 8.3-8.10. Значение входа (номер строки и номер столбца) и значения выхода даются как десятичные номера, чтобы сэкономить место на странице. В реальности они могут быть заменены двоичными числами.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 14 | 04 | 13 | 01 | 02 | 15 | 11 | 08 | 03 | 10 | 06 | 12 | 05 | 09 | 00 | 07 |
| 1 | 00 | 15 | 07 | 04 | 14 | 02 | 13 | 10 | 03 | 06 | 12 | 11 | 09 | 05 | 03 | 08 |
| 2 | 04 | 01 | 14 | 07 | 13 | 06 | 02 | 11 | 15 | 12 | 09 | 07 | 03 | 10 | 05 | 00 |
| 3 | 15 | 12 | 08 | 02 | 04 | 09 | 01 | 07 | 05 | 11 | 03 | 14 | 10 | 00 | 06 | 13 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 15 | 01 | 08 | 14 | 06 | 11 | 03 | 04 | 09 | 07 | 02 | 13 | 12 | 00 | 05 | 10 |
| 1 | 03 | 13 | 04 | 07 | 15 | 02 | 08 | 14 | 12 | 00 | 01 | 10 | 06 | 09 | 11 | 05 |
| 2 | 00 | 14 | 07 | 11 | 10 | 04 | 13 | 01 | 05 | 08 | 12 | 06 | 09 | 03 | 02 | 15 |
| 3 | 13 | 08 | 10 | 01 | 03 | 15 | 04 | 02 | 11 | 06 | 07 | 12 | 00 | 05 | 14 | 09 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 10 | 00 | 09 | 14 | 06 | 03 | 15 | 05 | 01 | 13 | 12 | 07 | 11 | 04 | 02 | 08 |
| 1 | 13 | 07 | 00 | 09 | 03 | 04 | 06 | 10 | 02 | 08 | 05 | 14 | 12 | 11 | 15 | 01 |
| 2 | 13 | 06 | 04 | 09 | 08 | 15 | 03 | 00 | 11 | 01 | 02 | 12 | 05 | 10 | 14 | 07 |
| 3 | 01 | 10 | 13 | 00 | 06 | 09 | 08 | 07 | 04 | 15 | 14 | 03 | 11 | 05 | 02 | 12 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 07 | 13 | 14 | 03 | 00 | 06 | 09 | 10 | 01 | 02 | 08 | 05 | 01 | 12 | 04 | 15 |
| 1 | 13 | 08 | 11 | 05 | 06 | 15 | 00 | 03 | 04 | 07 | 02 | 12 | 01 | 10 | 14 | 09 |
| 2 | 10 | 06 | 09 | 00 | 12 | 11 | 07 | 13 | 15 | 01 | 03 | 14 | 05 | 02 | 08 | 04 |
| 3 | 03 | 15 | 00 | 06 | 10 | 01 | 13 | 08 | 09 | 04 | 05 | 11 | 12 | 07 | 02 | 14 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 02 | 12 | 04 | 01 | 07 | 10 | 11 | 06 | 08 | 05 | 03 | 15 | 13 | 00 | 14 | 09 |
| 1 | 14 | 11 | 02 | 12 | 04 | 07 | 13 | 01 | 05 | 00 | 15 | 10 | 03 | 09 | 08 | 06 |
| 2 | 04 | 02 | 01 | 11 | 10 | 13 | 07 | 08 | 15 | 09 | 12 | 05 | 06 | 03 | 00 | 14 |
| 3 | 11 | 08 | 12 | 07 | 01 | 14 | 02 | 13 | 06 | 15 | 00 | 09 | 10 | 04 | 05 | 03 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 12 | 01 | 10 | 15 | 09 | 02 | 06 | 08 | 00 | 13 | 03 | 04 | 14 | 07 | 05 | 11 |
| 1 | 10 | 15 | 04 | 02 | 07 | 12 | 09 | 05 | 06 | 01 | 13 | 14 | 00 | 11 | 03 | 08 |
| 2 | 09 | 14 | 15 | 05 | 02 | 08 | 12 | 03 | 07 | 00 | 04 | 10 | 01 | 13 | 11 | 06 |
| 3 | 04 | 03 | 02 | 12 | 09 | 05 | 15 | 10 | 11 | 14 | 01 | 07 | 10 | 00 | 08 | 13 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 04 | 11 | 02 | 14 | 15 | 00 | 08 | 13 | 03 | 12 | 09 | 07 | 05 | 10 | 06 | 01 |
| 1 | 13 | 00 | 11 | 07 | 04 | 09 | 01 | 10 | 14 | 03 | 05 | 12 | 02 | 15 | 08 | 06 |
| 2 | 01 | 04 | 11 | 13 | 12 | 03 | 07 | 14 | 10 | 15 | 06 | 08 | 00 | 05 | 09 | 02 |
| 3 | 06 | 11 | 13 | 08 | 01 | 04 | 10 | 07 | 09 | 05 | 00 | 15 | 14 | 02 | 03 | 12 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 13 | 02 | 08 | 04 | 06 | 15 | 11 | 01 | 10 | 09 | 03 | 14 | 05 | 00 | 12 | 07 |
| 1 | 01 | 15 | 13 | 08 | 10 | 03 | 07 | 04 | 12 | 05 | 06 | 11 | 10 | 14 | 09 | 02 |
| 2 | 07 | 11 | 04 | 01 | 09 | 12 | 14 | 02 | 00 | 06 | 10 | 10 | 15 | 03 | 05 | 08 |
| 3 | 02 | 01 | 14 | 07 | 04 | 10 | 05 | 13 | 15 | 19 | 09 | 09 | 03 | 05 | 06 | 11 |
Пример 8.3
Входная последовательность S блока 1 — $$\underline 1 0001\underline 1$$. Какая последовательность будет на выходе?
Решение
Если мы запишем первый и шестой биты вместе, мы получим в двоичном исчислении 11, который выражается как число 3 при десятичном исчислении. Остающаяся часть битов 0001 в двоичном исчислении является 1 в десятичном исчислении. Мы ищем значение строки 3 и столбца 1 в таблице 8.3 ( S -блок 1 ). Результат — 12 в десятичном исчислении или 1100 в двоичном исчислении. Тогда вход 1100011 дает выход 1100.
Пример 8.4
Входная последовательность S -блока 8 — $$\underline 0 0000\underline 0$$. Какая последовательность будет на выходе?
Решение
Если мы запишем первый и шестые биты вместе, то получим в двоичном исчислении число 00, которое выражается числом 0 при десятичном исчислении. Остающаяся часть битов — 0000 в двоичном исчислении, то есть 0 в десятичном исчислении. Мы ищем значение строки 0 и столбца 0 в таблице 8.10 ( S -блок 8 ). Результат — 13 в десятичном исчислении или 1101 в двоичном исчислении. Тогда вход 000000 дает выход 1101.
Прямая перестановка — последняя операция в функции 32 битами на входе и 32 битами на выходе. Отношения "вход-выход" для этой операции показаны в Таблице 8.11. Они следуют тем же самым общим правилам, как и предыдущие таблицы перестановки. Например, седьмой бит входа становится вторым битом выхода.
| 16 | 07 | 20 | 21 | 29 | 12 | 28 | 17 |
| 01 | 15 | 23 | 26 | 05 | 18 | 31 | 10 |
| 02 | 08 | 24 | 14 | 32 | 27 | 03 | 09 |
| 19 | 13 | 30 | 06 | 22 | 11 | 04 | 25 |
Используя смеситель и устройство замены, мы можем создать шифр и обратный шифр для каждого из 16 -ти раундов. Шифр используется на стороне шифрования; обратный шифр — на стороне дешифрования. Алгоритмы создания шифра и обратного шифра аналогичны.
Один из методов, чтобы достигнуть поставленной цели (шифрование и обратное шифрование), состоит в том, чтобы сделать последний раунд отличающимся от других; он будет содержать только смеситель и не будет содержать устройства замены, как это показано на рис. 8.9.
Мы доказали в лекции 7, что смеситель и устройство замены самоинверсны. Конечные и начальные перестановки также инверсны друг другу. Левая секция исходного текста на стороне шифрования шифруется L0 как L16, и L16 дешифруется на стороне L0. Аналогичная ситуация с R0 и R16.
Нужно запомнить очень важное положение, которое касается шифров: ключи раундов ( K1 и K16 ) применяются при шифровании и дешифровании в обратном порядке. На стороне шифрования первый раунд применяет ключ K1, а раунд 16 — ключ K16 ; при дешифровании раунд 1 использует ключ K16, а раунд 16 — ключ K1.
(рис 8.9) DES шифр и обратный шифр для первого способа
Алгоритм 8.1. приведен в
Cipher (plainBlock[64], Round Keys[16,48])
{
pemute (64,64, plainBlock, inBlock, IntialPermutationTable)
spilt (64, 32, inBlock, leftBlock, right Block)
for (round = 1 to 16)
{
mixer (leftBlock, right Block, RoundKey[round])
if (round!=16) swapper(leftBlock, right Block)
}
combine (32, 64, leftBlock, right Block, outBlock)
pemute (64,64, outBlock, cipherBlock, FinalPermutationTable)
mixer (leftBlock[48], right Block[48], RoundKey[48])
{
copy (32, rightBlock, T1)
function (T1, RoundKey,T2)
exclusive Or (32, leftBlock, T2,T3)
copy (32, rightBlock, T1)
}
swapper (leftBlock[32], right Block[32])
{
copy (32, leftBlock, T)
copy (32, rightBlock, leftBlock)
copy (32, T, rightBlock)
}
Substitute (in block[32], outblock[48], SubstituteTables[8,4,16])
{
for(I = 1 to 8)
{
row <- 2 x inBlock[i x 6+1] + inBlock[i x 6+6]
col <- 8 x inBlock[i x 6+2] + 4 x inBlock[i x 6+3]+2 x inBlock[i x 6+4] + inBlock[i x 6+5]
value = SubstituteTables[i][row][col]
outBlock[i x 4+1] <- value/ 8 value <- value mod 8
outBlock[i x 4+2] <- value/ 4 value <- value mod 4
outBlock[i x 4+3] <- value/ 2 value <- value mod 8
outBlock[i x 4+4] <- value
}
}
}
При первом способе раунд 16 отличается от других раундов тем, что там не применяется устройство замены. Это необходимо, чтобы сделать последний и первый смесители в шифре одинаковыми. Мы можем делать все 16 раундов одинаковыми, добавляя к 16 -му раунду дополнительное устройство замены (два устройства замены позволяют нейтрализовать друг друга). Разработку этой схемы мы оставляем для упражнений.
Генератор ключей создает шестнадцать ключей по 48 битов из ключа шифра на 56 битов. Однако ключ шифра обычно дается как ключ из 64 -х битов, в котором 8 дополнительных битов являются битами проверки. Они отбрасываются перед фактическим процессом
Предварительный процесс перед расширением ключей — перестановка сжатия, которую мы называем удалением битов проверки. Он удаляет биты четности (биты 8, 16, 24, 32..., 64 ) из 64 -битового ключа и переставляет остальную часть битов согласно таблице 8.12. Остающееся значение на 56 битов — фактический ключ шифра, который используется, чтобы генерировать ключи раунда. Биты удаляются с помощью перестановки ( P -блока сжатия), как это показано в таблице 8.12.
| 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 02 |
| 59 | 51 | 43 | 35 | 27 | 19 | 11 | 03 |
| 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
| 31 | 23 | 15 | 07 | 62 | 54 | 46 | 37 |
| 30 | 22 | 14 | 06 | 61 | 53 | 45 | 37 |
| 29 | 21 | 13 | 05 | 28 | 20 | 12 | 04 |
(рис 8.10) Генерация ключей
После прямой перестановки ключ разделен на две части по 28 битов. Каждая часть сдвигается влево (циклический сдвиг) на один или два бита. В раундах 1, 2, 9 и 16 смещение – на один бит, в других раундах — на два бита. Затем эти две части объединяются, чтобы создать часть в 56 бит. Таблица 8.13 показывает число сдвигов манипуляций для каждого раунда.
| Раунд | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| Число бит | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
Перестановка сжатия ( P -блок) изменяет 56 битов на 48 битов, которые используются
для формирования ключа раунда. Перестановка сжатия показана в таблице 8.14.
| 14 | 17 | 11 | 24 | 01 | 05 | 03 | 28 |
| 15 | 06 | 21 | 10 | 23 | 19 | 12 | 04 |
| 26 | 08 | 16 | 07 | 27 | 20 | 13 | 02 |
| 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
| 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 |
| 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Теперь напишем простой алгоритм для создания ключа из ключа с проверочными битами. Алгоритм 8.2 использует несколько процедур алгоритма 8.1. Имеется и одна новая процедура — левый сдвиг ( ShiftLeft ). Обратите внимание, что T — временный блок.
Key_Generator (keyWithParities[64], RoundKeys[16. 48]. SinfTable[16])
{ '
permute (64, 56, keyWithParities, cipherKey, ParityDropTable)
spilt (56, 28, cipherKey, leftKey, rightKey)
for (round = 1 to 16)
{
shiftLeft (leftKey, ShiftTable[round1]) I
shiftLeft (rightKey, ShiftTable [round])
combine (28, 56, leftKey, rightKey, preRoundKey)
permute (56, 48, preRoundKey, RoundKeys[round], KevCompressionTable)
}
}
shiftLeft (block[28], NumOfShifts)
{
for (i = 1 to numShifts)
{
T <- block[ 1]
for (j = 2 to 28)
{
block [j-1] <- block [j]
}
block[28] <- T
}
}
Примеры
Перед анализом
Пример 8.5
Мы выбираем случайный блок исходного текста и случайный ключ и определяем, каким должен быть блок зашифрованного текста (все цифры даны в шестнадцатеричном исчислении).
Plaintext: 123456ABCD 132536 Key: AABB09182736CCDD Cipher Text: COB7ASD05F3AS29C
Покажем результат каждого раунда и текста, созданного до и после раундов. Таблица 8.15 показывает результаты первых шагов перед началом раунда. Исходный текст — прошедший через начальную перестановку для получения различных 64 бит ( 16 шестнадцатеричных цифр).
| Исходный текст: 123456ABCD 132536 | |||
|---|---|---|---|
| После первоначальной перестановки: 14A7D67818CA18D После разбиения: L0= 14A7D678 R0 = 18CA18D | |||
| Раунд | Левая | Правая | Ключ раунда |
| Раунд 1 | 18CA18AD | 5A78E394 | 194CD072DE8C |
| Раунд 2 | 5A78E394 | 4A1210F6 | 4568581ABCCE |
| Раунд 3 | 4A1210F6 | B8089591 | 06EDA4ACF5B5 |
| Раунд 4 | B8089591 | 236779C2 | DA2D032B6EE3 |
| Раунд 5 | 236779C2 | A15A4B87 | 69A629FEC913 |
| Раунд 6 | A15A4B87 | 2E8F9C65 | C1948E87475E |
| Раунд 7 | 2E8F9C65 | A9FC20A3 | 708AD2DDB3C0 |
| Раунд 8 | A9FC20A3 | 308BEE97 | 34F822F0C66D |
| Раунд 9 | 308BEE97 | 10AF9D37 | 84BB4473DCCC |
| Раунд 10 | 10AF9D37 | 6CA6CB20 | 02765708B5BF |
| Раунд 11 | 6CA6CB20 | FF3C485F | 6D5560AF7CA5 |
| Раунд 12 | FF3C485F | 22A5963B | C2C1E96A4BF3 |
| Раунд 13 | 22A5963B | 387CCDAA | 99C31397C91F |
| Раунд 14 | 387CCDAA | BD2DD2AB | 251B8BC717D0 |
| Раунд 15 | BD2DD2AB | CF26B472 | 3330C5D9A36D |
| Раунд 16 | 19BA9212 | CF26B472 | 181C5D75C66D |
| После объединения: 19BA9212 CF26B472 | |||
| Зашифрованный текст: C0B7A8D05F3A829C | (после конечной перестановки) | ||
Таблица показывает результат 16 раундов, которые включают смешивание и замену (исключая последний раунд). Результаты последних раундов ( L16 и R16 ) объединены. Наконец, текст проходит конечную перестановку, для того чтобы получить зашифрованный текст.
Следует отметить некоторые положения. Правая секция каждого раунда совпадает с левой секцией следующего раунда. Причина в том, что правая секция проходит через смеситель без изменения, а устройство замены переносит ее в левую секцию. Например, R1 передается через смеситель второго раунда без изменения, но затем, пройдя устройство замены, он становится L2. Второе интересное положение: на последнем раунде мы не имеем устройства замены. Именно поэтому R15 становится R16 вместо того чтобы стать L16.
Пример 8.6
Давайте рассмотрим, как Боб в пункте назначения может расшифровать зашифрованный текст, полученный от Алисы, с помощью совпадающего ключа. Для экономии времени мы разберем только несколько раундов. Таблица 8.16 показывает интересующие нас точки. Первое правило: ключи раунда должны использоваться в обратном порядке. Сравните таблицу 8.15 и таблицу 8.16. Ключ раунда 1 — такой же как ключ для раунда 16. Значения L0 и R0 при дешифрации те же самые, что и значения L16 и R16 при шифровании. Аналогичные совпадения будут получены и в других раундах. Это доказывает не только, что шифр и обратный шифр инверсны друг другу, но также то, что каждый раунд при шифрации имеет соответствующий раунд при дешифрации в обратном шифре. Результат свидетельствует, что начальные и конечные перестановки также являются инверсиями друг друга.
| Зашифрованный текст: C0B7A8D05F3A829C | |||
|---|---|---|---|
| После первоначальной перестановки: 19BA9212 CF26B472 После разбиения: L0= 19BA9212 R0 = CF26B472 | |||
| Раунд | Левая | Правая | Ключ раунда |
| Раунд 1 | CF26B472 | BD2DD2AB | 181C5D75C66D |
| Раунд 2 | BD2DD2AB | 387CCDAA | 3330C5D9A36D |
| ......... | ......... | ......... | ......... |
| Раунд 15 | 5A78E394 | 18CA182AD | 4568581ABCCE |
| Раунд 16 | 19BA9212 | 18CA18AD | 194CD072DE8C |
| После объединения: 14A7D67818CA18D | |||
| Исходный текст: 123456ABCD 132536 | (после конечной перестановки) | ||
Два желательных свойства блочного шифра — эффект лавины и законченность.
Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте. Было доказано, что
Пример 8.7
Чтобы проверить эффект лавины в
Исходный текст: 0000000000000000 Ключ: 22234512987ABB23 Зашифрованный текст: 4789FD476E82A5F1 Исходный текст: 0000000000000001 Ключ: 22234512987ABB23 Зашифрованный текст: OA4ED5C15A63FEA3
Хотя два блока исходного текста отличаются только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5 процентах исходного текста создают изменение приблизительно 45 процентов зашифрованного текста. Таблица 8.17 показывает изменение в каждом раунде. Можно увидеть, что существенные изменения возникают уже в третьем раунде.
| Раунд | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| Разница в битах | 1 | 6 | 20 | 29 | 30 | 33 | 32 | 29 | 32 | 39 | 33 | 28 | 30 | 31 | 30 | 29 |
Эффект полноты заключается в том, что каждый бит зашифрованного текста должен зависеть от многих битов исходного текста. Рассеивание и перемешивание, произведенное P -блоками и S -блоками в
Проект
Мы обсудили S -блоков в лекции 7. Здесь мы только обсуждаем критерии, выбранные для S -блоков.
0 и 15.S -блоки — нелинейные. Другими словами, выход — не аффинное преобразование. (См. лекции 4 (аффинное преобразование) и 5, где рассматривалась линейность и S -блоков.)S -блока отличаются только двумя средними битами (битами 3 и 4 ), S (x) и $$S(x \oplus 001100)$$ должны отличаться по крайней мере двумя битами, где x — вход и S(x) — выход.S -блок отличаются первыми двумя битами (биты 1 и 2 ) и последними двумя битами ( 5 и 6 ), два выхода должны быть различны. Другими словами, мы должны иметь следующее отношение: $$S\left( x \right) \ne S(x \oplus 11bc00) $$, в котором b и с — произвольные биты.32 шестибитовые пары "вход-выход" ( xi и xj ), в которых $${x_i} \oplus {x_j} \ne {\left( {000000} \right)_2}$$. Эти 32 входных пары создают 32 пары слова выхода по 4 бита. Если мы создаем какие-то различия между 32 выходами пар, $$d = {y_i} \oplus {y_j}$$, то из этих d должны быть одинаковыми не больше чем 8.S -блокам.S -блоке, если единственный входной бит сохраняется как константа ( 0 или 1 ), то другие биты изменяются случайно так, чтобы разности между числом нулей и единиц были минимизированы.Между двумя рядами S -блоков (в двух последующих раундах), есть один прямой P -блок ( 32 на 32 ) и один P -блок расширения ( 32 на 48 ). Эти два P -блока вместе обеспечивают рассеивание битов. Мы уже говорили об общем принципе построения P -блока в лекции 7. Здесь мы обсудим только прикладные P -блоки, используемые в P -блоков были реализованы следующие критерии:
S -блока подключается к выходу другого S -блока (в предыдущем раунде).S -блоку не соединяется с выходом от того же самого блока (в предыдущем раунде).S -блока идут в шесть различных S -блоков (в следующем раунде).S -блока не идет в тот же самый S -блок (в следующем раунде).S -блоков 8, то S1, S2,..., S 8.Sj-2 переходит в один из первых двух битов Sj (в следующем раунде).Si-1 переходит в один из последних двух битов Sj (в следующем раунде).Sj +1 переходит в один из двух средних битов Sj (в следующем раунде).S -блока два бита выхода идут в первые или последние два бита S -блока в следующем раунде. Другие два бита выхода идут в средние биты S -блока в следующем раунде.Sj переходит в один из средних битов в Sk (в следующем раунде), то бит выхода от Sk не может идти в средний бит Sj. Если мы допускаем j = k, то подразумеваем, что ни один средний бит S -блока не может идти в один из средних битов того же самого S -блока в следующем раунде.В течение прошлых нескольких лет критики нашли некоторые слабости в
Мы кратко укажем на некоторые слабости, которые были обнаружены в структуре шифра.
S-блоки. В литературе указываются по крайней мере три проблемы S -блоков.
S -блоке 4 три бита выхода могут быть получены тем же самым способом, что и первый бит выхода: дополнением некоторых из входных битов.S -блока могут создать тот же самый выход.S -блоках.P-блоки. В структуре P -блока были найдены одна загадка и одна слабость.
4 бита повторяются.Размер ключа. Критики утверждают, что самая серьезная слабость 56 битов). Чтобы предпринять атаку грубой силы данного блока зашифрованного текста, злоумышленники должны проверить 256 ключей.
a. Используя доступную сегодня технологию, можно проверить один миллион ключей в секунду. Это означает, что потребуется более чем две тысячи лет, чтобы выполнить атаку грубой силы на
b. Если мы можем сделать компьютер с одним миллионом чипов процессоров (параллельная обработка), то сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен 112 часов.
c. Компьютерные сети могут моделировать 3500 компьютеров, подключенных к Internet, чтобы найти ключ 120 дней. Множество ключей было разделено среди всех этих компьютеров, и каждый компьютер был ответственен за проверку части домена 3500 связанных в сеть компьютеров могут найти ключ через 120 дней, то секретное общество из 42 000 членов может найти ключ через 10 дней.
Приведенное выше показывает, что 56 битов не обеспечивает достаточной безопасности. Позже в этой лекции мы увидим, что есть одно решение этой проблемы – это использование 112 битов) или 16 ).
Слабые ключи. Четыре ключа из 256
| Ключи до удаления проверочных бит (64 бита) | Действующие ключи (56 бит) |
|---|---|
| 0101 0101 0101 0101 | 0000000 0000000 |
| 1F1F 1F1F 1F1F 1F1F | 0000000 FFFFFFF |
| E0E0 E0E0 E0E0 E0E0 | FFFFFFF 0000000 |
| FEFE FEFE FEFE FEFE | FFFFFFF FFFFFFF |
Ключи раунда, созданные от любого из этих слабых ключей, — те же самые и имеют тот же самый тип, что и ключ шифра. Например, эти шестнадцать ключей раунда создают первый ключ, который состоит из всех нулей или всех единиц или наполовину из нулей и единиц.
Это происходит по той причине, что алгоритм генерирования ключей сначала делит ключ шифра на две половины. Смещение или перестановка блока не изменяют блок, если он состоит из всех нулей, или всех единиц, или наполовину из нулей и единиц.
В чем опасность использования слабых ключей? Если мы зашифровали блок слабым ключом и впоследствии расшифровали результат тем же самым слабым ключом, мы получаем первоначальный блок. Процесс создает один и тот же первоначальный блок, если мы расшифровываем блок дважды. Другими словами, каждый слабый ключ есть инверсия самого себя: Ek. (Ek (P)) = P, как это показано на рис. 8.11.
(рис 8.11) Двойное шифрование и дешифрование со слабым ключом Слабых ключей надо избегать, потому что противник может легко распознать их на перехваченном шифре. Если после двух этапов дешифрации результат тот же самый, противник определяет, что он нашел ключ.
Пример 8.8
Давайте попробуем применить первый слабый ключ в таблице 8.18, чтобы два раза зашифровать блок. После того как проведено два шифрования с тем же самым ключом, в результате получим исходный текст. Обратите внимание, что мы ни разу не использовали алгоритм дешифрования, а только провели два раза шифрование.
Ключ: 0x0101 0101 0101 0101 Зашифрованный текст: 0x814FE938589154F7 Исходный текст: 0xl234.56887654321 Ключ: 0x0101 0101 0101 0101 Исходный текст: 0x814FE938589154F7 Зашифрованный текст: 0xl234.56887654321
Полуслабые ключи. Имеются шесть ключевых пар, которые названы полуслабыми ключами. Этим шесть пар показаны в таблице 8.19 (формат на 64 бита перед удалением проверочных бит). Полуслабые ключи создают только два различных ключа раунда и затем повторяют их восемь раз. Кроме того, ключи раунда, созданные от каждой пары, — одни и те же в различном порядке.
| Первый ключ в паре | Второй ключ в паре |
|---|---|
| 01FE 01FE 01FE 01FE | FE01 FE01 FE01 FE01 |
| 1FEO 1FEO OEF1 OEF1 | E01F E01F F10E F10E |
| 01EO 01E1 01F1 01F1 | E001 E001 F101 F101 |
| 1FFE 1FFE OEFE OEFE | FE1F FE1F FEOE FEOE |
| 011F 011F 010E 010E | 1F01 1F01 OE01 OE01 |
| FEEO FEEO FEF1 FEFl |
Чтобы проиллюстрировать идею, мы создали ключи раунда от первой пары, как показано ниже:
Ключ раунда 1 9153E54319BD 6EAC1ABCE642 Ключ раунда 2 6EAC1ABCE642 9153E54319BD Ключ раунда 3 6EAC1ABCE642 9153E54319BD Ключ раунда 4 6EAC1ABCE642 9153E54319BD Ключ раунда 5 6EAC1ABCE642 9153E54319BD Ключ раунда 6 6EAC1ABCE642 9153E54319BD Ключ раунда 7 6EAC1ABCE642 9153E54319BD Ключ раунда 8 6EAC1ABCE642 9153E54319BD Ключ раунда 9 9153E54319BD 6EAC1ABCE642 Ключ раунда 10 9153E54319BD 6EAC1ABCE642 Ключ раунда 11 9153E54319BD 6EAC1ABCE642 Ключ раунда 12 9153E54319BD 6EAC1ABCE642 Ключ раунда 13 9153E54319BD 6EAC1ABCE642 Ключ раунда 14 9153E54319BD 6EAC1ABCE642 Ключ раунда 15 9153E54319BD 6EAC1ABCE642 Ключ раунда 16 6EAC1ABCE642 9153E54319BD
Как показывает список, имеется восемь одинаковых ключей раунда в каждом полуслабом ключе. Кроме того, ключи раунда 1 в первом множестве — те же самые, что и ключи раунда 16 во втором; ключи раунда 2 в первом — те же самые, что и ключи раунда 15 во втором, и так далее. Это означает, что ключи инверсны друг другу: Ek2. (Ek1E (P)) = P, как показано на рис. 8.12.
(рис 8.12) Пара полуслабых ключей при шифровании и дешифровании Возможно слабые ключи. Также имеется 48 ключей, которые называются возможно слабыми ключами. Возможно слабый ключ создает только четыре различных ключа раунда; другими словами, шестнадцать ключей раундов разделены на четыре группы, и каждая группа состоит из четырех одинаковых ключей раунда.
Пример 8.9
Какова вероятность случайного выбора слабого, полуслабого или возможно слабого ключа?
Решение
Множество ключей 256. Общее количество вышеупомянутых ключей — 64 (4 + 12 + 48). Вероятность выбора одного из этих ключей равна $$8,8 \times {10^{ - 16}}$$, т.е. исключительно мала.
Ключевое дополнение. Среди множества ключей (256) некоторые ключи могут быть получены инверсией (изменение из 0 в 1 или 1 в 0 ) каждого бита в ключе. Ключевое дополнение упрощает процесс 255 ), чтобы выполнить атаку грубой силы, потому что
C=E(K,P) ->C =E(K ,P )
Другими словами, если мы зашифровали дополнение исходного текста дополнением ключа, мы получаем дополнение зашифрованного текста. Ева не должна проверять все 256
Пример 8.10
Давайте проверим эти сведения о ключах дополнения. Мы используем произвольный ключ и исходный текст, для того чтобы найти соответствующий зашифрованный текст. Если мы имеем ключевое дополнение и исходный текст, то получим i дополнение предыдущего зашифрованного текста (таблица 8.20).
| Оригинал | Дополнение | |
|---|---|---|
| Ключ | 1234123412341234 | EDCBEDCBEDCBEDCB |
| Исходный текст | 12345678ABCDEF12 | EDCBA987543210ED |
| Зашифрованный текст | E112BE1DEFC7A367 | 1EED41E210385C98 |
Кластерный ключ.
Как мы уже видели, основная критика
Как мы узнали в лекции 7, подстановка, которая размещает все возможные входы во все возможные выходы, является группой с отображениями элементов множества и набором операций. В этом случае использование двух последовательных отображений бесполезно, потому что мы можем всегда найти третье отображение, которое эквивалентно композиции этих двух (свойство замкнутости). Это означает, что если k3 делает то же самое (рисунок 8.13).
(рис 8.13) Композиция отображений К счастью
а. Номер возможных входов или выходов в N = 264. Это означает, что N!= (264)! = 10347 380 000 000 000 000 000 отображений.
Один из способов способ сделать log2 (264!) — 270 битов. Но мы знаем, что длина ключа в 56 бит (только маленькая часть этого требуемого огромного ключа).
б. Другой способ сделать 56 битов.
Если k3, такой, что
Ek2(Ek1(P)) = Ek3(P)
Это означает, что мы можем использовать двукратные или трехкратные
Первый подход состоит в том, чтобы использовать двукратный DES (2DES). При этом подходе мы применяем два типа шифров 112 битов). Однако двукратный
На первый взгляд двукратные 256 (в однократном 2112 (в двукратном 257 по испытаниям), но не чрезвычайно (к 2112 ). Рисунок 8.14 показывает диаграмму для двукратного k1 и k2, чтобы зашифровывать исходный текст P в зашифрованный текст C ; Боб использует зашифрованный текст C и два ключа, k2 и k1, для восстановления P.
(рис 8.14) Атака сведения к середине в двукратном DES В средней точке М — текст, созданный первым шифрованием или первым дешифрованием. Для обеспечения правильной работы он должен быть одинаковым для шифрования и дешифрования. Другими словами, мы имеем два отношения:
M = EK1(P) и M = EK2(C)
Предположим, что Ева перехватила предыдущую пару P и C (атака знания исходного текста). Базируясь на первом отношении из упомянутых выше, Ева зашифровывает P, используя все возможные значения (256) k1, и записывает все значения, полученные для М. Базируясь на вторых отношениях, упомянутых выше, Ева расшифровывает C, используя все возможные значения ( 256 ) k2. Она записывает все значения, полученные для М. Далее Ева создает две таблицы, отсортированные согласно значениям M. Она сравнивает значения для М, пока не находит те пары k1 и k2, для которых значение М является одним и тем же в обеих таблицах (как показано на рис. 8.15). Обратите внимание, что должна быть по крайней мере одна пара, потому что она делает исчерпывающий поиск комбинации двух ключей.
1. Если есть только одно соответствие. Ева нашла два ключа ( k1 и k2 ). Если есть больше чем один кандидат, Ева перемещается в следующий шаг.
2. Она берет другую перехваченную пару зашифрованного текста и исходного текста и использует каждого кандидата для получения пары ключей, чтобы установить, может ли она получить зашифрованный текст из исходного текста. Если она находит больше чем одного кандидата в виде пары ключей, она повторяет шаг 2, пока, наконец, не находит уникальную пару.
(рис 8.15) Таблицы для атаки "сведения к середине"Было доказано, что после применения второго шага к нескольким перехваченным парам "зашифрованный текст — исходный текст" ключи были найдены. Это означает, что вместо того чтобы использовать поиск ключей с помощью 2112 испытаний, Ева использует 256 испытаний поиска ключа и проверяет два раза (несколько больше испытаний требуется, если найден на первом шаге единственный кандидат). Другими словами, двигаясь от однократного 256 до 257 (а не до 2112, как это кажется при поверхностном подходе).
Для того чтобы улучшить безопасность
В трехкратном DES с двумя ключами есть только два ключа: k1 и k2. Первый и третий каскады используют k1 ; второй каскад использует k2. Чтобы сделать трехкратный k, может быть расшифровано трехкратным k1 = k2 = k. Хотя трехкратный
Возможность атак "знания исходного текста" при трехкратном k1 = k и установкой k2 и k3 к одному и тому же произвольному ключу, выбранному приемником. Трехкратный
(рис 8.16) Трехкратный DES с двумя ключами
Мы уже обсуждали слабость шифра с коротким ключом. Слабость ключа совместно с другими рассмотренными недостатками, делает очевидным, что 255. Однако сегодня большинство приложений использует либо 2112 ), либо 2168 ). Эти две многократных версии
Мы в лекции 7 уже обсуждали методику S -блоки и специально выбрали 247 выборок исходного текста или 255 известных исходных текстов. Хотя это выглядит более эффективно, чем в атаке грубой силы, предположить, что кто-то знает 247 выборок исходного текста или 255 выборок исходного текста, практически невозможно. Поэтому мы можем сказать, что 20 увеличивает число требуемых выборок исходного текста для атаки более чем до 264. Такое увеличение невозможно, потому что число блоков исходного текста в 264.
Мы обсуждали методику S -блоки не являются очень стойкими к линейному 243 пары известных исходных текстов. Однако с практической точки зрения перехват такого количества пар очень маловероятен.
Нижеследующие книги и сайты обеспечивают более детальную информацию о предметах, которые мы обсуждали в этой лекции.
[Sta06], [Sti06], [Rhe03], [Sal03], [Mao04] и [TW06] — это книги, которые рассматривают
Нижеследующие сайты содержат боле подробную информацию о темах, обсужденных в этой лекции,
64 бита и создает зашифрованный текст на 64 бита. На стороне дешифрования 64 бита и создает блок на 64 бита исходного текста. Ключ шифра на 56 битов одного типа используется и для шифрования, и для дешифрования.P -блоки), которые называются начальными и конечными перестановками, и шестнадцати раундов Файстеля. Каждый раунд 48 битов к самым правым 32 битам, чтобы получить на выходе 32 бита. Эта функция составлена из четырех операций: перестановки расширения, отбеливателя (который добавляет ключ), группы S -блоков и прямой перестановки.56 битов шестнадцать ключей по 48 битов. Однако ключ шифра обычно представляется как ключ на 64 бита, в котором 8 дополнительных битов являются проверочными битами — они отбрасываются перед фактическим процессом генерирования ключей.S -блоки и P -блоки) и ключ шифра (длина), слабые ключи, полуслабые ключи, возможно слабые ключи и дополнение ключей.S -блоков и S -блоках в 110111 через S -блок 3.001100 через S -блок 4.000000 через S -блок 7.111111 через S -блок 2.000000 через все 8 S -блоков. Рассмотрите результат на выходе.111111 через все 8 S -блоков. Рассмотрите результат на выходе.S -блока 3, используя следующие пары входов:000000 и 000001111111 и 111011S -блока 2, используя следующие пары входа:001100 и 110000110011 и 001 111S -блока 4, используя следующие пары входов:001100 и 110000110011 и 001 11132 6 -битовые входные пары, чтобы проверить шестой критерий построения S -блока 5.S -блока 7.P -блоков, проверив входы к S -блоку 2 раунда 2.P -блоков, проверяя входы к S -блоку раунда 4.P -блоков, проверяя выход S -блока раунда 3.P -блоков, проверяя выход S -блока 6 раунда 12.P -блоков, проверяя отношение между S -блоками 3, 4 и 5 в раундах 10 и 11.P -блоков, проверяя отношение S -блока конечного пункта произвольного блока.P -блоков, проверяя отношения между S -блоком 5 в раунде 4 и S -блоком 7 в раунде 5.24 бита выхода идут от всех левых 28 входных бит?24 бита выхода идут от всех 28 входных битов?Покажите результат следующих шестнадцатеричных данных
0110 10234110 1023
после прохождения их через начальный блок перестановки.
Покажите результат следующих шестнадцатеричных данных
AAAA BBBB CCCC DDDD
после прохождения их через конечный блок перестановки.
64 бита ) — 0123 ABCD 2562 1456, найдите ключ первого раунда.56 битов из всех нулей, докажите слабость ключевого дополнения, предполагающую, что permute (n,m, inBlock [n], outBlock [m], permutationTable [m])
spilt(n, m, inBlock [n], leftBlock, rightBlock [m])
combine (n, m, leftBlock [n], rightBlock [n1, outBlock [m])
exclusiveOr (n, firstInBlock [n], второй! nBlock [n], outBlock [n])
Стандарт шифрования данных (DES) —
В 1973 году
Предложенная IBM модификация проекта, названная Lucifer, была принята как
После публикации эскиз строго критиковался по двум причинам.
Первая: критиковалась сомнительно маленькая 56 битов), что могло сделать шифр уязвимым к атаке "грубой силой".
Вторая причина: критики были обеспокоены некоторым скрытым построением внутренней структуры
Они подозревали, что некоторая часть структуры ( S -блоки) может иметь скрытую лазейку, которая позволит расшифровывать сообщения без ключа. Впоследствии проектировщики IBM сообщили, что внутренняя структура была доработана, чтобы предотвратить
Как показано на рис. 8.1. ,
(рис 8.1) Шифрование и дешифрование в DES На стороне шифрования 64 -битовый исходный текст и порождает 64 -битовый зашифрованный текст; на стороне дешифрования 64 -битовый зашифрованный текст и порождает 64 -битовый исходный текст. На обеих сторонах для шифрования и дешифрования применяется один и тот же 56 -битовый ключ.
Рассмотрим сначала шифрование, а потом дешифрование. Процесс шифрования состоит из двух перестановок ( P -блоки) — они называются начальные и конечные перестановки, — и шестнадцати раундов Файстеля. Каждый раунд использует различные сгенерированные 48 -битовые ключи. Алгоритм генерации будет рассмотрен в этой лекции позднее. Рисунок 8.2 показывает элементы шифра
Рисунок 8.3 показывает начальные и конечные перестановки ( P -блоки).
Каждая из перестановок принимает 64 -битовый вход и переставляет его элементы по заданному правилу. Мы показали только небольшое число входных портов и соответствующих выходных портов. Эти перестановки — прямые перестановки без ключей, которые инверсны друг другу. Например, в начальной перестановке 58 -й бит на входе переходит в первый бит на выходе. Аналогично, в конечной перестановке первый входной бит переходит в 58 -й бит на выходе. Другими словами, если между этими двумя перестановками не существует раунда, 58 -й бит, поступивший на вход устройства начальной перестановки, будет доставлен на 58 -й выход финальной перестановкой.

(рис 8.3) Общая структура DES (рис 8.2) Начальные и конечные шаги перестановки DES Правила перестановки для этого P -блока показаны в таблице 8.1. Таблицу можно представить как 64 -элементный массив. Заметим, что работу с таблицей мы обсуждали, значение каждого элемента определяет номер входного порта, а порядковый номер (индекс) элемента определяет номер выходного порта.
| Начальные перестановки | Конечные перестановки | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 02 | 40 | 08 | 48 | 16 | 56 | 24 | 64 | 32 |
| 60 | 52 | 44 | 36 | 28 | 20 | 12 | 04 | 39 | 07 | 47 | 15 | 55 | 23 | 63 | 31 |
| 62 | 54 | 46 | 38 | 30 | 22 | 14 | 06 | 38 | 06 | 46 | 14 | 54 | 22 | 62 | 30 |
| 64 | 56 | 48 | 40 | 32 | 24 | 16 | 08 | 37 | 05 | 45 | 13 | 53 | 21 | 61 | 29 |
| 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 | 36 | 04 | 44 | 12 | 52 | 20 | 60 | 28 |
| 59 | 51 | 43 | 35 | 27 | 19 | 11 | 03 | 35 | 03 | 43 | 11 | 51 | 19 | 59 | 27 |
| 61 | 53 | 45 | 37 | 29 | 21 | 13 | 05 | 34 | 02 | 42 | 10 | 50 | 18 | 58 | 26 |
| 63 | 55 | 47 | 39 | 31 | 23 | 15 | 07 | 33 | 01 | 41 | 09 | 49 | 17 | 57 | 25 |
Эти две перестановки не имеют никакого значения для криптографии в
Пример 8.1
Найдите выход начального блока перестановки, когда на вход поступает шестнадцатеричная последовательность, такая как
0x0002 0000 0000 0001
Решение
Вход имеет только две единицы — (бит 15 и бит 64 ); выход должен также иметь только две единицы (прямая перестановка). Используя таблицу 8.1, мы можем найти выход, связанный с этими двумя битами. Бит 15 на входе становится битом 63 в выходе. Бит 64 во входе становится битом 25 в выходе. На выходе будем иметь только две единицы — бит 25 и бит 63.
Результат в шестнадцатеричном исчислении
0x0000 0080 0000 0002
Пример 8.2
Докажем, что начальные и финальные перестановки инверсны друг другу. Преобразуем полученную выходную последовательность во входную.
0x0000 0080 0000 0002
Решение
Единичные биты — 25 и 63, другие биты равны нулю. В конечной перестановке 25 -й бит переходит в 64 -й, а 63 -й — в 15 -й. Результат
0x0002000000000001
16 раундов. Каждый раунд
(рис 8.4) Раунд в DES (сторона шифрования)Раунд принимает LI-1 RI-1 от предыдущего раунда (или начального блока перестановки) и создает для следующего раунда LI И RI, которые поступают на следующий раунд (или конечный блок перестановки). Как мы указали в лекции 7, можно принять, что каждый раунд имеет два элемента шифра (смеситель и устройство замены). Каждый из этих элементов является обратимым. Устройство замены — очевидно обратимо, оно меняет местами левую половину текста с правой половиной. Смеситель является обратимым, потому что операция f (RI-1,KI).
Основной блок 48 -битового ключа зашифровывает 32 самых правых бит RI-1, чтобы получить на выходе 32 -битовое слово. Эта функция содержит, как это показано на рис. 8.5, четыре секции: отбеливатель (P -блок расширения, группу S -блоков и прямой P -блок.
P-блок расширения. Так как вход RI-1 имеет длину 32 бита, а ключ KI — длину 48 битов, мы сначала должны расширить RI-1 до 48 бит. RI-1 разделяется на 8 секций по 4 бита. Каждая секция на 4 бита расширяется до 6 бит. Эта перестановка расширения следует по заранее определенным правилам. Для секции значения входных бит 1, 2, 3 и 4 присваиваются битам 2, 3, 4 и 5 соответственно на выходе. Выходной бит 1 формируется на основе входного бита 4 из предыдущей секции; бит выхода 6 формируется из бита 1 в следующей секции. Если секции 1 и 8 рассматривать как соседние секции, то те же самые правила применяются к битам 1 и 32. Рисунок 8.6 показывает входы и выходы в перестановке расширения.
Хотя отношения между входом и выходом могут быть определены математически, но чтобы определить этот P -блок, 48, но диапазон значений — только от 1 до 32. Некоторые из входов идут к больше чем одному выходу. Например, значение входного бита 5 становится значением битов выхода 6 и 8.

(рис 8.6) Функция DES (рис 8.5) Перестановка расширения | 32 | 01 | 02 | 03 | 04 | 05 |
| 04 | 05 | 06 | 07 | 08 | 09 |
| 08 | 09 | 10 | 11 | 12 | 13 |
| 12 | 13 | 14 | 15 | 16 | 17 |
| 16 | 17 | 18 | 19 | 20 | 21 |
| 20 | 21 | 22 | 23 | 24 | 25 |
| 24 | 25 | 26 | 27 | 28 | 29 |
| 28 | 29 | 31 | 31 | 32 | 01 |
Отбеливатель (whitener). После расширения XOR (48 бит. Также заметим, что ключ раунда использует только эту операцию.
S-блоки. S -блоки смешивают информацию (операция перемешивания). S -блоки, каждый с 6 -ю входными битами и 4 -мя выходными (см. рис. 8.7).
(рис 8.7) S - блоки Данные из 48 битов от второй операции 6 битов, и каждый кусок поступает в блок. Результат каждого блока — кусок на 4 бита; когда они объединены, результат выражается в 32 -битовом тексте. Подстановка в каждом блоке следует по заранее определенным правилам, основанным на таблице из 4 -х строк и 16 -ти столбцов. Комбинация битов 1 и 6 на входе определяет одну из четырех строк; комбинация битов от 2 -го до 5 -го определяет один из шестнадцати столбцов, как показано на рис. 8.8. Далее мы поясним это примерами.
(рис 8.8) Правила для S- блока Поскольку для каждого S -блока есть собственная таблица, необходимо иметь восемь таблиц, например таких, как это показано в таблицах 8.3-8.10. Значение входа (номер строки и номер столбца) и значения выхода даются как десятичные номера, чтобы сэкономить место на странице. В реальности они могут быть заменены двоичными числами.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 14 | 04 | 13 | 01 | 02 | 15 | 11 | 08 | 03 | 10 | 06 | 12 | 05 | 09 | 00 | 07 |
| 1 | 00 | 15 | 07 | 04 | 14 | 02 | 13 | 10 | 03 | 06 | 12 | 11 | 09 | 05 | 03 | 08 |
| 2 | 04 | 01 | 14 | 07 | 13 | 06 | 02 | 11 | 15 | 12 | 09 | 07 | 03 | 10 | 05 | 00 |
| 3 | 15 | 12 | 08 | 02 | 04 | 09 | 01 | 07 | 05 | 11 | 03 | 14 | 10 | 00 | 06 | 13 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 15 | 01 | 08 | 14 | 06 | 11 | 03 | 04 | 09 | 07 | 02 | 13 | 12 | 00 | 05 | 10 |
| 1 | 03 | 13 | 04 | 07 | 15 | 02 | 08 | 14 | 12 | 00 | 01 | 10 | 06 | 09 | 11 | 05 |
| 2 | 00 | 14 | 07 | 11 | 10 | 04 | 13 | 01 | 05 | 08 | 12 | 06 | 09 | 03 | 02 | 15 |
| 3 | 13 | 08 | 10 | 01 | 03 | 15 | 04 | 02 | 11 | 06 | 07 | 12 | 00 | 05 | 14 | 09 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 10 | 00 | 09 | 14 | 06 | 03 | 15 | 05 | 01 | 13 | 12 | 07 | 11 | 04 | 02 | 08 |
| 1 | 13 | 07 | 00 | 09 | 03 | 04 | 06 | 10 | 02 | 08 | 05 | 14 | 12 | 11 | 15 | 01 |
| 2 | 13 | 06 | 04 | 09 | 08 | 15 | 03 | 00 | 11 | 01 | 02 | 12 | 05 | 10 | 14 | 07 |
| 3 | 01 | 10 | 13 | 00 | 06 | 09 | 08 | 07 | 04 | 15 | 14 | 03 | 11 | 05 | 02 | 12 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 07 | 13 | 14 | 03 | 00 | 06 | 09 | 10 | 01 | 02 | 08 | 05 | 01 | 12 | 04 | 15 |
| 1 | 13 | 08 | 11 | 05 | 06 | 15 | 00 | 03 | 04 | 07 | 02 | 12 | 01 | 10 | 14 | 09 |
| 2 | 10 | 06 | 09 | 00 | 12 | 11 | 07 | 13 | 15 | 01 | 03 | 14 | 05 | 02 | 08 | 04 |
| 3 | 03 | 15 | 00 | 06 | 10 | 01 | 13 | 08 | 09 | 04 | 05 | 11 | 12 | 07 | 02 | 14 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 02 | 12 | 04 | 01 | 07 | 10 | 11 | 06 | 08 | 05 | 03 | 15 | 13 | 00 | 14 | 09 |
| 1 | 14 | 11 | 02 | 12 | 04 | 07 | 13 | 01 | 05 | 00 | 15 | 10 | 03 | 09 | 08 | 06 |
| 2 | 04 | 02 | 01 | 11 | 10 | 13 | 07 | 08 | 15 | 09 | 12 | 05 | 06 | 03 | 00 | 14 |
| 3 | 11 | 08 | 12 | 07 | 01 | 14 | 02 | 13 | 06 | 15 | 00 | 09 | 10 | 04 | 05 | 03 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 12 | 01 | 10 | 15 | 09 | 02 | 06 | 08 | 00 | 13 | 03 | 04 | 14 | 07 | 05 | 11 |
| 1 | 10 | 15 | 04 | 02 | 07 | 12 | 09 | 05 | 06 | 01 | 13 | 14 | 00 | 11 | 03 | 08 |
| 2 | 09 | 14 | 15 | 05 | 02 | 08 | 12 | 03 | 07 | 00 | 04 | 10 | 01 | 13 | 11 | 06 |
| 3 | 04 | 03 | 02 | 12 | 09 | 05 | 15 | 10 | 11 | 14 | 01 | 07 | 10 | 00 | 08 | 13 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 04 | 11 | 02 | 14 | 15 | 00 | 08 | 13 | 03 | 12 | 09 | 07 | 05 | 10 | 06 | 01 |
| 1 | 13 | 00 | 11 | 07 | 04 | 09 | 01 | 10 | 14 | 03 | 05 | 12 | 02 | 15 | 08 | 06 |
| 2 | 01 | 04 | 11 | 13 | 12 | 03 | 07 | 14 | 10 | 15 | 06 | 08 | 00 | 05 | 09 | 02 |
| 3 | 06 | 11 | 13 | 08 | 01 | 04 | 10 | 07 | 09 | 05 | 00 | 15 | 14 | 02 | 03 | 12 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 13 | 02 | 08 | 04 | 06 | 15 | 11 | 01 | 10 | 09 | 03 | 14 | 05 | 00 | 12 | 07 |
| 1 | 01 | 15 | 13 | 08 | 10 | 03 | 07 | 04 | 12 | 05 | 06 | 11 | 10 | 14 | 09 | 02 |
| 2 | 07 | 11 | 04 | 01 | 09 | 12 | 14 | 02 | 00 | 06 | 10 | 10 | 15 | 03 | 05 | 08 |
| 3 | 02 | 01 | 14 | 07 | 04 | 10 | 05 | 13 | 15 | 19 | 09 | 09 | 03 | 05 | 06 | 11 |
Пример 8.3
Входная последовательность S блока 1 — $$\underline 1 0001\underline 1$$. Какая последовательность будет на выходе?
Решение
Если мы запишем первый и шестой биты вместе, мы получим в двоичном исчислении 11, который выражается как число 3 при десятичном исчислении. Остающаяся часть битов 0001 в двоичном исчислении является 1 в десятичном исчислении. Мы ищем значение строки 3 и столбца 1 в таблице 8.3 ( S -блок 1 ). Результат — 12 в десятичном исчислении или 1100 в двоичном исчислении. Тогда вход 1100011 дает выход 1100.
Пример 8.4
Входная последовательность S -блока 8 — $$\underline 0 0000\underline 0$$. Какая последовательность будет на выходе?
Решение
Если мы запишем первый и шестые биты вместе, то получим в двоичном исчислении число 00, которое выражается числом 0 при десятичном исчислении. Остающаяся часть битов — 0000 в двоичном исчислении, то есть 0 в десятичном исчислении. Мы ищем значение строки 0 и столбца 0 в таблице 8.10 ( S -блок 8 ). Результат — 13 в десятичном исчислении или 1101 в двоичном исчислении. Тогда вход 000000 дает выход 1101.
Прямая перестановка — последняя операция в функции 32 битами на входе и 32 битами на выходе. Отношения "вход-выход" для этой операции показаны в Таблице 8.11. Они следуют тем же самым общим правилам, как и предыдущие таблицы перестановки. Например, седьмой бит входа становится вторым битом выхода.
| 16 | 07 | 20 | 21 | 29 | 12 | 28 | 17 |
| 01 | 15 | 23 | 26 | 05 | 18 | 31 | 10 |
| 02 | 08 | 24 | 14 | 32 | 27 | 03 | 09 |
| 19 | 13 | 30 | 06 | 22 | 11 | 04 | 25 |
Используя смеситель и устройство замены, мы можем создать шифр и обратный шифр для каждого из 16 -ти раундов. Шифр используется на стороне шифрования; обратный шифр — на стороне дешифрования. Алгоритмы создания шифра и обратного шифра аналогичны.
Один из методов, чтобы достигнуть поставленной цели (шифрование и обратное шифрование), состоит в том, чтобы сделать последний раунд отличающимся от других; он будет содержать только смеситель и не будет содержать устройства замены, как это показано на рис. 8.9.
Мы доказали в лекции 7, что смеситель и устройство замены самоинверсны. Конечные и начальные перестановки также инверсны друг другу. Левая секция исходного текста на стороне шифрования шифруется L0 как L16, и L16 дешифруется на стороне L0. Аналогичная ситуация с R0 и R16.
Нужно запомнить очень важное положение, которое касается шифров: ключи раундов ( K1 и K16 ) применяются при шифровании и дешифровании в обратном порядке. На стороне шифрования первый раунд применяет ключ K1, а раунд 16 — ключ K16 ; при дешифровании раунд 1 использует ключ K16, а раунд 16 — ключ K1.
(рис 8.9) DES шифр и обратный шифр для первого способа
Алгоритм 8.1. приведен в
Cipher (plainBlock[64], Round Keys[16,48])
{
pemute (64,64, plainBlock, inBlock, IntialPermutationTable)
spilt (64, 32, inBlock, leftBlock, right Block)
for (round = 1 to 16)
{
mixer (leftBlock, right Block, RoundKey[round])
if (round!=16) swapper(leftBlock, right Block)
}
combine (32, 64, leftBlock, right Block, outBlock)
pemute (64,64, outBlock, cipherBlock, FinalPermutationTable)
mixer (leftBlock[48], right Block[48], RoundKey[48])
{
copy (32, rightBlock, T1)
function (T1, RoundKey,T2)
exclusive Or (32, leftBlock, T2,T3)
copy (32, rightBlock, T1)
}
swapper (leftBlock[32], right Block[32])
{
copy (32, leftBlock, T)
copy (32, rightBlock, leftBlock)
copy (32, T, rightBlock)
}
Substitute (in block[32], outblock[48], SubstituteTables[8,4,16])
{
for(I = 1 to 8)
{
row <- 2 x inBlock[i x 6+1] + inBlock[i x 6+6]
col <- 8 x inBlock[i x 6+2] + 4 x inBlock[i x 6+3]+2 x inBlock[i x 6+4] + inBlock[i x 6+5]
value = SubstituteTables[i][row][col]
outBlock[i x 4+1] <- value/ 8 value <- value mod 8
outBlock[i x 4+2] <- value/ 4 value <- value mod 4
outBlock[i x 4+3] <- value/ 2 value <- value mod 8
outBlock[i x 4+4] <- value
}
}
}
При первом способе раунд 16 отличается от других раундов тем, что там не применяется устройство замены. Это необходимо, чтобы сделать последний и первый смесители в шифре одинаковыми. Мы можем делать все 16 раундов одинаковыми, добавляя к 16 -му раунду дополнительное устройство замены (два устройства замены позволяют нейтрализовать друг друга). Разработку этой схемы мы оставляем для упражнений.
Генератор ключей создает шестнадцать ключей по 48 битов из ключа шифра на 56 битов. Однако ключ шифра обычно дается как ключ из 64 -х битов, в котором 8 дополнительных битов являются битами проверки. Они отбрасываются перед фактическим процессом
Предварительный процесс перед расширением ключей — перестановка сжатия, которую мы называем удалением битов проверки. Он удаляет биты четности (биты 8, 16, 24, 32..., 64 ) из 64 -битового ключа и переставляет остальную часть битов согласно таблице 8.12. Остающееся значение на 56 битов — фактический ключ шифра, который используется, чтобы генерировать ключи раунда. Биты удаляются с помощью перестановки ( P -блока сжатия), как это показано в таблице 8.12.
| 57 | 49 | 41 | 33 | 25 | 17 | 09 | 01 |
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 02 |
| 59 | 51 | 43 | 35 | 27 | 19 | 11 | 03 |
| 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
| 31 | 23 | 15 | 07 | 62 | 54 | 46 | 37 |
| 30 | 22 | 14 | 06 | 61 | 53 | 45 | 37 |
| 29 | 21 | 13 | 05 | 28 | 20 | 12 | 04 |
(рис 8.10) Генерация ключей
После прямой перестановки ключ разделен на две части по 28 битов. Каждая часть сдвигается влево (циклический сдвиг) на один или два бита. В раундах 1, 2, 9 и 16 смещение – на один бит, в других раундах — на два бита. Затем эти две части объединяются, чтобы создать часть в 56 бит. Таблица 8.13 показывает число сдвигов манипуляций для каждого раунда.
| Раунд | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| Число бит | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
Перестановка сжатия ( P -блок) изменяет 56 битов на 48 битов, которые используются
для формирования ключа раунда. Перестановка сжатия показана в таблице 8.14.
| 14 | 17 | 11 | 24 | 01 | 05 | 03 | 28 |
| 15 | 06 | 21 | 10 | 23 | 19 | 12 | 04 |
| 26 | 08 | 16 | 07 | 27 | 20 | 13 | 02 |
| 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
| 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 |
| 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Теперь напишем простой алгоритм для создания ключа из ключа с проверочными битами. Алгоритм 8.2 использует несколько процедур алгоритма 8.1. Имеется и одна новая процедура — левый сдвиг ( ShiftLeft ). Обратите внимание, что T — временный блок.
Key_Generator (keyWithParities[64], RoundKeys[16. 48]. SinfTable[16])
{ '
permute (64, 56, keyWithParities, cipherKey, ParityDropTable)
spilt (56, 28, cipherKey, leftKey, rightKey)
for (round = 1 to 16)
{
shiftLeft (leftKey, ShiftTable[round1]) I
shiftLeft (rightKey, ShiftTable [round])
combine (28, 56, leftKey, rightKey, preRoundKey)
permute (56, 48, preRoundKey, RoundKeys[round], KevCompressionTable)
}
}
shiftLeft (block[28], NumOfShifts)
{
for (i = 1 to numShifts)
{
T <- block[ 1]
for (j = 2 to 28)
{
block [j-1] <- block [j]
}
block[28] <- T
}
}
Примеры
Перед анализом
Пример 8.5
Мы выбираем случайный блок исходного текста и случайный ключ и определяем, каким должен быть блок зашифрованного текста (все цифры даны в шестнадцатеричном исчислении).
Plaintext: 123456ABCD 132536 Key: AABB09182736CCDD Cipher Text: COB7ASD05F3AS29C
Покажем результат каждого раунда и текста, созданного до и после раундов. Таблица 8.15 показывает результаты первых шагов перед началом раунда. Исходный текст — прошедший через начальную перестановку для получения различных 64 бит ( 16 шестнадцатеричных цифр).
| Исходный текст: 123456ABCD 132536 | |||
|---|---|---|---|
| После первоначальной перестановки: 14A7D67818CA18D После разбиения: L0= 14A7D678 R0 = 18CA18D | |||
| Раунд | Левая | Правая | Ключ раунда |
| Раунд 1 | 18CA18AD | 5A78E394 | 194CD072DE8C |
| Раунд 2 | 5A78E394 | 4A1210F6 | 4568581ABCCE |
| Раунд 3 | 4A1210F6 | B8089591 | 06EDA4ACF5B5 |
| Раунд 4 | B8089591 | 236779C2 | DA2D032B6EE3 |
| Раунд 5 | 236779C2 | A15A4B87 | 69A629FEC913 |
| Раунд 6 | A15A4B87 | 2E8F9C65 | C1948E87475E |
| Раунд 7 | 2E8F9C65 | A9FC20A3 | 708AD2DDB3C0 |
| Раунд 8 | A9FC20A3 | 308BEE97 | 34F822F0C66D |
| Раунд 9 | 308BEE97 | 10AF9D37 | 84BB4473DCCC |
| Раунд 10 | 10AF9D37 | 6CA6CB20 | 02765708B5BF |
| Раунд 11 | 6CA6CB20 | FF3C485F | 6D5560AF7CA5 |
| Раунд 12 | FF3C485F | 22A5963B | C2C1E96A4BF3 |
| Раунд 13 | 22A5963B | 387CCDAA | 99C31397C91F |
| Раунд 14 | 387CCDAA | BD2DD2AB | 251B8BC717D0 |
| Раунд 15 | BD2DD2AB | CF26B472 | 3330C5D9A36D |
| Раунд 16 | 19BA9212 | CF26B472 | 181C5D75C66D |
| После объединения: 19BA9212 CF26B472 | |||
| Зашифрованный текст: C0B7A8D05F3A829C | (после конечной перестановки) | ||
Таблица показывает результат 16 раундов, которые включают смешивание и замену (исключая последний раунд). Результаты последних раундов ( L16 и R16 ) объединены. Наконец, текст проходит конечную перестановку, для того чтобы получить зашифрованный текст.
Следует отметить некоторые положения. Правая секция каждого раунда совпадает с левой секцией следующего раунда. Причина в том, что правая секция проходит через смеситель без изменения, а устройство замены переносит ее в левую секцию. Например, R1 передается через смеситель второго раунда без изменения, но затем, пройдя устройство замены, он становится L2. Второе интересное положение: на последнем раунде мы не имеем устройства замены. Именно поэтому R15 становится R16 вместо того чтобы стать L16.
Пример 8.6
Давайте рассмотрим, как Боб в пункте назначения может расшифровать зашифрованный текст, полученный от Алисы, с помощью совпадающего ключа. Для экономии времени мы разберем только несколько раундов. Таблица 8.16 показывает интересующие нас точки. Первое правило: ключи раунда должны использоваться в обратном порядке. Сравните таблицу 8.15 и таблицу 8.16. Ключ раунда 1 — такой же как ключ для раунда 16. Значения L0 и R0 при дешифрации те же самые, что и значения L16 и R16 при шифровании. Аналогичные совпадения будут получены и в других раундах. Это доказывает не только, что шифр и обратный шифр инверсны друг другу, но также то, что каждый раунд при шифрации имеет соответствующий раунд при дешифрации в обратном шифре. Результат свидетельствует, что начальные и конечные перестановки также являются инверсиями друг друга.
| Зашифрованный текст: C0B7A8D05F3A829C | |||
|---|---|---|---|
| После первоначальной перестановки: 19BA9212 CF26B472 После разбиения: L0= 19BA9212 R0 = CF26B472 | |||
| Раунд | Левая | Правая | Ключ раунда |
| Раунд 1 | CF26B472 | BD2DD2AB | 181C5D75C66D |
| Раунд 2 | BD2DD2AB | 387CCDAA | 3330C5D9A36D |
| ......... | ......... | ......... | ......... |
| Раунд 15 | 5A78E394 | 18CA182AD | 4568581ABCCE |
| Раунд 16 | 19BA9212 | 18CA18AD | 194CD072DE8C |
| После объединения: 14A7D67818CA18D | |||
| Исходный текст: 123456ABCD 132536 | (после конечной перестановки) | ||
Два желательных свойства блочного шифра — эффект лавины и законченность.
Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте. Было доказано, что
Пример 8.7
Чтобы проверить эффект лавины в
Исходный текст: 0000000000000000 Ключ: 22234512987ABB23 Зашифрованный текст: 4789FD476E82A5F1 Исходный текст: 0000000000000001 Ключ: 22234512987ABB23 Зашифрованный текст: OA4ED5C15A63FEA3
Хотя два блока исходного текста отличаются только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5 процентах исходного текста создают изменение приблизительно 45 процентов зашифрованного текста. Таблица 8.17 показывает изменение в каждом раунде. Можно увидеть, что существенные изменения возникают уже в третьем раунде.
| Раунд | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| Разница в битах | 1 | 6 | 20 | 29 | 30 | 33 | 32 | 29 | 32 | 39 | 33 | 28 | 30 | 31 | 30 | 29 |
Эффект полноты заключается в том, что каждый бит зашифрованного текста должен зависеть от многих битов исходного текста. Рассеивание и перемешивание, произведенное P -блоками и S -блоками в
Проект
Мы обсудили S -блоков в лекции 7. Здесь мы только обсуждаем критерии, выбранные для S -блоков.
0 и 15.S -блоки — нелинейные. Другими словами, выход — не аффинное преобразование. (См. лекции 4 (аффинное преобразование) и 5, где рассматривалась линейность и S -блоков.)S -блока отличаются только двумя средними битами (битами 3 и 4 ), S (x) и $$S(x \oplus 001100)$$ должны отличаться по крайней мере двумя битами, где x — вход и S(x) — выход.S -блок отличаются первыми двумя битами (биты 1 и 2 ) и последними двумя битами ( 5 и 6 ), два выхода должны быть различны. Другими словами, мы должны иметь следующее отношение: $$S\left( x \right) \ne S(x \oplus 11bc00) $$, в котором b и с — произвольные биты.32 шестибитовые пары "вход-выход" ( xi и xj ), в которых $${x_i} \oplus {x_j} \ne {\left( {000000} \right)_2}$$. Эти 32 входных пары создают 32 пары слова выхода по 4 бита. Если мы создаем какие-то различия между 32 выходами пар, $$d = {y_i} \oplus {y_j}$$, то из этих d должны быть одинаковыми не больше чем 8.S -блокам.S -блоке, если единственный входной бит сохраняется как константа ( 0 или 1 ), то другие биты изменяются случайно так, чтобы разности между числом нулей и единиц были минимизированы.Между двумя рядами S -блоков (в двух последующих раундах), есть один прямой P -блок ( 32 на 32 ) и один P -блок расширения ( 32 на 48 ). Эти два P -блока вместе обеспечивают рассеивание битов. Мы уже говорили об общем принципе построения P -блока в лекции 7. Здесь мы обсудим только прикладные P -блоки, используемые в P -блоков были реализованы следующие критерии:
S -блока подключается к выходу другого S -блока (в предыдущем раунде).S -блоку не соединяется с выходом от того же самого блока (в предыдущем раунде).S -блока идут в шесть различных S -блоков (в следующем раунде).S -блока не идет в тот же самый S -блок (в следующем раунде).S -блоков 8, то S1, S2,..., S 8.Sj-2 переходит в один из первых двух битов Sj (в следующем раунде).Si-1 переходит в один из последних двух битов Sj (в следующем раунде).Sj +1 переходит в один из двух средних битов Sj (в следующем раунде).S -блока два бита выхода идут в первые или последние два бита S -блока в следующем раунде. Другие два бита выхода идут в средние биты S -блока в следующем раунде.Sj переходит в один из средних битов в Sk (в следующем раунде), то бит выхода от Sk не может идти в средний бит Sj. Если мы допускаем j = k, то подразумеваем, что ни один средний бит S -блока не может идти в один из средних битов того же самого S -блока в следующем раунде.В течение прошлых нескольких лет критики нашли некоторые слабости в
Мы кратко укажем на некоторые слабости, которые были обнаружены в структуре шифра.
S-блоки. В литературе указываются по крайней мере три проблемы S -блоков.
S -блоке 4 три бита выхода могут быть получены тем же самым способом, что и первый бит выхода: дополнением некоторых из входных битов.S -блока могут создать тот же самый выход.S -блоках.P-блоки. В структуре P -блока были найдены одна загадка и одна слабость.
4 бита повторяются.Размер ключа. Критики утверждают, что самая серьезная слабость 56 битов). Чтобы предпринять атаку грубой силы данного блока зашифрованного текста, злоумышленники должны проверить 256 ключей.
a. Используя доступную сегодня технологию, можно проверить один миллион ключей в секунду. Это означает, что потребуется более чем две тысячи лет, чтобы выполнить атаку грубой силы на
b. Если мы можем сделать компьютер с одним миллионом чипов процессоров (параллельная обработка), то сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен 112 часов.
c. Компьютерные сети могут моделировать 3500 компьютеров, подключенных к Internet, чтобы найти ключ 120 дней. Множество ключей было разделено среди всех этих компьютеров, и каждый компьютер был ответственен за проверку части домена 3500 связанных в сеть компьютеров могут найти ключ через 120 дней, то секретное общество из 42 000 членов может найти ключ через 10 дней.
Приведенное выше показывает, что 56 битов не обеспечивает достаточной безопасности. Позже в этой лекции мы увидим, что есть одно решение этой проблемы – это использование 112 битов) или 16 ).
Слабые ключи. Четыре ключа из 256
| Ключи до удаления проверочных бит (64 бита) | Действующие ключи (56 бит) |
|---|---|
| 0101 0101 0101 0101 | 0000000 0000000 |
| 1F1F 1F1F 1F1F 1F1F | 0000000 FFFFFFF |
| E0E0 E0E0 E0E0 E0E0 | FFFFFFF 0000000 |
| FEFE FEFE FEFE FEFE | FFFFFFF FFFFFFF |
Ключи раунда, созданные от любого из этих слабых ключей, — те же самые и имеют тот же самый тип, что и ключ шифра. Например, эти шестнадцать ключей раунда создают первый ключ, который состоит из всех нулей или всех единиц или наполовину из нулей и единиц.
Это происходит по той причине, что алгоритм генерирования ключей сначала делит ключ шифра на две половины. Смещение или перестановка блока не изменяют блок, если он состоит из всех нулей, или всех единиц, или наполовину из нулей и единиц.
В чем опасность использования слабых ключей? Если мы зашифровали блок слабым ключом и впоследствии расшифровали результат тем же самым слабым ключом, мы получаем первоначальный блок. Процесс создает один и тот же первоначальный блок, если мы расшифровываем блок дважды. Другими словами, каждый слабый ключ есть инверсия самого себя: Ek. (Ek (P)) = P, как это показано на рис. 8.11.
(рис 8.11) Двойное шифрование и дешифрование со слабым ключом Слабых ключей надо избегать, потому что противник может легко распознать их на перехваченном шифре. Если после двух этапов дешифрации результат тот же самый, противник определяет, что он нашел ключ.
Пример 8.8
Давайте попробуем применить первый слабый ключ в таблице 8.18, чтобы два раза зашифровать блок. После того как проведено два шифрования с тем же самым ключом, в результате получим исходный текст. Обратите внимание, что мы ни разу не использовали алгоритм дешифрования, а только провели два раза шифрование.
Ключ: 0x0101 0101 0101 0101 Зашифрованный текст: 0x814FE938589154F7 Исходный текст: 0xl234.56887654321 Ключ: 0x0101 0101 0101 0101 Исходный текст: 0x814FE938589154F7 Зашифрованный текст: 0xl234.56887654321
Полуслабые ключи. Имеются шесть ключевых пар, которые названы полуслабыми ключами. Этим шесть пар показаны в таблице 8.19 (формат на 64 бита перед удалением проверочных бит). Полуслабые ключи создают только два различных ключа раунда и затем повторяют их восемь раз. Кроме того, ключи раунда, созданные от каждой пары, — одни и те же в различном порядке.
| Первый ключ в паре | Второй ключ в паре |
|---|---|
| 01FE 01FE 01FE 01FE | FE01 FE01 FE01 FE01 |
| 1FEO 1FEO OEF1 OEF1 | E01F E01F F10E F10E |
| 01EO 01E1 01F1 01F1 | E001 E001 F101 F101 |
| 1FFE 1FFE OEFE OEFE | FE1F FE1F FEOE FEOE |
| 011F 011F 010E 010E | 1F01 1F01 OE01 OE01 |
| FEEO FEEO FEF1 FEFl |
Чтобы проиллюстрировать идею, мы создали ключи раунда от первой пары, как показано ниже:
Ключ раунда 1 9153E54319BD 6EAC1ABCE642 Ключ раунда 2 6EAC1ABCE642 9153E54319BD Ключ раунда 3 6EAC1ABCE642 9153E54319BD Ключ раунда 4 6EAC1ABCE642 9153E54319BD Ключ раунда 5 6EAC1ABCE642 9153E54319BD Ключ раунда 6 6EAC1ABCE642 9153E54319BD Ключ раунда 7 6EAC1ABCE642 9153E54319BD Ключ раунда 8 6EAC1ABCE642 9153E54319BD Ключ раунда 9 9153E54319BD 6EAC1ABCE642 Ключ раунда 10 9153E54319BD 6EAC1ABCE642 Ключ раунда 11 9153E54319BD 6EAC1ABCE642 Ключ раунда 12 9153E54319BD 6EAC1ABCE642 Ключ раунда 13 9153E54319BD 6EAC1ABCE642 Ключ раунда 14 9153E54319BD 6EAC1ABCE642 Ключ раунда 15 9153E54319BD 6EAC1ABCE642 Ключ раунда 16 6EAC1ABCE642 9153E54319BD
Как показывает список, имеется восемь одинаковых ключей раунда в каждом полуслабом ключе. Кроме того, ключи раунда 1 в первом множестве — те же самые, что и ключи раунда 16 во втором; ключи раунда 2 в первом — те же самые, что и ключи раунда 15 во втором, и так далее. Это означает, что ключи инверсны друг другу: Ek2. (Ek1E (P)) = P, как показано на рис. 8.12.
(рис 8.12) Пара полуслабых ключей при шифровании и дешифровании Возможно слабые ключи. Также имеется 48 ключей, которые называются возможно слабыми ключами. Возможно слабый ключ создает только четыре различных ключа раунда; другими словами, шестнадцать ключей раундов разделены на четыре группы, и каждая группа состоит из четырех одинаковых ключей раунда.
Пример 8.9
Какова вероятность случайного выбора слабого, полуслабого или возможно слабого ключа?
Решение
Множество ключей 256. Общее количество вышеупомянутых ключей — 64 (4 + 12 + 48). Вероятность выбора одного из этих ключей равна $$8,8 \times {10^{ - 16}}$$, т.е. исключительно мала.
Ключевое дополнение. Среди множества ключей (256) некоторые ключи могут быть получены инверсией (изменение из 0 в 1 или 1 в 0 ) каждого бита в ключе. Ключевое дополнение упрощает процесс 255 ), чтобы выполнить атаку грубой силы, потому что
C=E(K,P) ->C =E(K ,P )
Другими словами, если мы зашифровали дополнение исходного текста дополнением ключа, мы получаем дополнение зашифрованного текста. Ева не должна проверять все 256
Пример 8.10
Давайте проверим эти сведения о ключах дополнения. Мы используем произвольный ключ и исходный текст, для того чтобы найти соответствующий зашифрованный текст. Если мы имеем ключевое дополнение и исходный текст, то получим i дополнение предыдущего зашифрованного текста (таблица 8.20).
| Оригинал | Дополнение | |
|---|---|---|
| Ключ | 1234123412341234 | EDCBEDCBEDCBEDCB |
| Исходный текст | 12345678ABCDEF12 | EDCBA987543210ED |
| Зашифрованный текст | E112BE1DEFC7A367 | 1EED41E210385C98 |
Кластерный ключ.
Как мы уже видели, основная критика
Как мы узнали в лекции 7, подстановка, которая размещает все возможные входы во все возможные выходы, является группой с отображениями элементов множества и набором операций. В этом случае использование двух последовательных отображений бесполезно, потому что мы можем всегда найти третье отображение, которое эквивалентно композиции этих двух (свойство замкнутости). Это означает, что если k3 делает то же самое (рисунок 8.13).
(рис 8.13) Композиция отображений К счастью
а. Номер возможных входов или выходов в N = 264. Это означает, что N!= (264)! = 10347 380 000 000 000 000 000 отображений.
Один из способов способ сделать log2 (264!) — 270 битов. Но мы знаем, что длина ключа в 56 бит (только маленькая часть этого требуемого огромного ключа).
б. Другой способ сделать 56 битов.
Если k3, такой, что
Ek2(Ek1(P)) = Ek3(P)
Это означает, что мы можем использовать двукратные или трехкратные
Первый подход состоит в том, чтобы использовать двукратный DES (2DES). При этом подходе мы применяем два типа шифров 112 битов). Однако двукратный
На первый взгляд двукратные 256 (в однократном 2112 (в двукратном 257 по испытаниям), но не чрезвычайно (к 2112 ). Рисунок 8.14 показывает диаграмму для двукратного k1 и k2, чтобы зашифровывать исходный текст P в зашифрованный текст C ; Боб использует зашифрованный текст C и два ключа, k2 и k1, для восстановления P.
(рис 8.14) Атака сведения к середине в двукратном DES В средней точке М — текст, созданный первым шифрованием или первым дешифрованием. Для обеспечения правильной работы он должен быть одинаковым для шифрования и дешифрования. Другими словами, мы имеем два отношения:
M = EK1(P) и M = EK2(C)
Предположим, что Ева перехватила предыдущую пару P и C (атака знания исходного текста). Базируясь на первом отношении из упомянутых выше, Ева зашифровывает P, используя все возможные значения (256) k1, и записывает все значения, полученные для М. Базируясь на вторых отношениях, упомянутых выше, Ева расшифровывает C, используя все возможные значения ( 256 ) k2. Она записывает все значения, полученные для М. Далее Ева создает две таблицы, отсортированные согласно значениям M. Она сравнивает значения для М, пока не находит те пары k1 и k2, для которых значение М является одним и тем же в обеих таблицах (как показано на рис. 8.15). Обратите внимание, что должна быть по крайней мере одна пара, потому что она делает исчерпывающий поиск комбинации двух ключей.
1. Если есть только одно соответствие. Ева нашла два ключа ( k1 и k2 ). Если есть больше чем один кандидат, Ева перемещается в следующий шаг.
2. Она берет другую перехваченную пару зашифрованного текста и исходного текста и использует каждого кандидата для получения пары ключей, чтобы установить, может ли она получить зашифрованный текст из исходного текста. Если она находит больше чем одного кандидата в виде пары ключей, она повторяет шаг 2, пока, наконец, не находит уникальную пару.
(рис 8.15) Таблицы для атаки "сведения к середине"Было доказано, что после применения второго шага к нескольким перехваченным парам "зашифрованный текст — исходный текст" ключи были найдены. Это означает, что вместо того чтобы использовать поиск ключей с помощью 2112 испытаний, Ева использует 256 испытаний поиска ключа и проверяет два раза (несколько больше испытаний требуется, если найден на первом шаге единственный кандидат). Другими словами, двигаясь от однократного 256 до 257 (а не до 2112, как это кажется при поверхностном подходе).
Для того чтобы улучшить безопасность
В трехкратном DES с двумя ключами есть только два ключа: k1 и k2. Первый и третий каскады используют k1 ; второй каскад использует k2. Чтобы сделать трехкратный k, может быть расшифровано трехкратным k1 = k2 = k. Хотя трехкратный
Возможность атак "знания исходного текста" при трехкратном k1 = k и установкой k2 и k3 к одному и тому же произвольному ключу, выбранному приемником. Трехкратный
(рис 8.16) Трехкратный DES с двумя ключами
Мы уже обсуждали слабость шифра с коротким ключом. Слабость ключа совместно с другими рассмотренными недостатками, делает очевидным, что 255. Однако сегодня большинство приложений использует либо 2112 ), либо 2168 ). Эти две многократных версии
Мы в лекции 7 уже обсуждали методику S -блоки и специально выбрали 247 выборок исходного текста или 255 известных исходных текстов. Хотя это выглядит более эффективно, чем в атаке грубой силы, предположить, что кто-то знает 247 выборок исходного текста или 255 выборок исходного текста, практически невозможно. Поэтому мы можем сказать, что 20 увеличивает число требуемых выборок исходного текста для атаки более чем до 264. Такое увеличение невозможно, потому что число блоков исходного текста в 264.
Мы обсуждали методику S -блоки не являются очень стойкими к линейному 243 пары известных исходных текстов. Однако с практической точки зрения перехват такого количества пар очень маловероятен.
Нижеследующие книги и сайты обеспечивают более детальную информацию о предметах, которые мы обсуждали в этой лекции.
[Sta06], [Sti06], [Rhe03], [Sal03], [Mao04] и [TW06] — это книги, которые рассматривают
Нижеследующие сайты содержат боле подробную информацию о темах, обсужденных в этой лекции,
64 бита и создает зашифрованный текст на 64 бита. На стороне дешифрования 64 бита и создает блок на 64 бита исходного текста. Ключ шифра на 56 битов одного типа используется и для шифрования, и для дешифрования.P -блоки), которые называются начальными и конечными перестановками, и шестнадцати раундов Файстеля. Каждый раунд 48 битов к самым правым 32 битам, чтобы получить на выходе 32 бита. Эта функция составлена из четырех операций: перестановки расширения, отбеливателя (который добавляет ключ), группы S -блоков и прямой перестановки.56 битов шестнадцать ключей по 48 битов. Однако ключ шифра обычно представляется как ключ на 64 бита, в котором 8 дополнительных битов являются проверочными битами — они отбрасываются перед фактическим процессом генерирования ключей.S -блоки и P -блоки) и ключ шифра (длина), слабые ключи, полуслабые ключи, возможно слабые ключи и дополнение ключей.S -блоков и S -блоках в 110111 через S -блок 3.001100 через S -блок 4.000000 через S -блок 7.111111 через S -блок 2.000000 через все 8 S -блоков. Рассмотрите результат на выходе.111111 через все 8 S -блоков. Рассмотрите результат на выходе.S -блока 3, используя следующие пары входов:000000 и 000001111111 и 111011S -блока 2, используя следующие пары входа:001100 и 110000110011 и 001 111S -блока 4, используя следующие пары входов:001100 и 110000110011 и 001 11132 6 -битовые входные пары, чтобы проверить шестой критерий построения S -блока 5.S -блока 7.P -блоков, проверив входы к S -блоку 2 раунда 2.P -блоков, проверяя входы к S -блоку раунда 4.P -блоков, проверяя выход S -блока раунда 3.P -блоков, проверяя выход S -блока 6 раунда 12.P -блоков, проверяя отношение между S -блоками 3, 4 и 5 в раундах 10 и 11.P -блоков, проверяя отношение S -блока конечного пункта произвольного блока.P -блоков, проверяя отношения между S -блоком 5 в раунде 4 и S -блоком 7 в раунде 5.24 бита выхода идут от всех левых 28 входных бит?24 бита выхода идут от всех 28 входных битов?Покажите результат следующих шестнадцатеричных данных
0110 10234110 1023
после прохождения их через начальный блок перестановки.
Покажите результат следующих шестнадцатеричных данных
AAAA BBBB CCCC DDDD
после прохождения их через конечный блок перестановки.
64 бита ) — 0123 ABCD 2562 1456, найдите ключ первого раунда.56 битов из всех нулей, докажите слабость ключевого дополнения, предполагающую, что permute (n,m, inBlock [n], outBlock [m], permutationTable [m])
spilt(n, m, inBlock [n], leftBlock, rightBlock [m])
combine (n, m, leftBlock [n], rightBlock [n1, outBlock [m])
exclusiveOr (n, firstInBlock [n], второй! nBlock [n], outBlock [n])
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.