Все n -битовую строку и создает m -битовую строку, где n обычно больше чем m. Эта схема известна как итеративная криптографическая функция.
(рис 2.1) Схема Меркеля-ДамгардаСхема использует следующие шаги:
n -битовые блоки; здесь n - размер блока, который будет обработан функцией сжатия.t блоков, размер каждого состоит из n бит. Мы обозначим каждый блок М1,..., Мt. Мы обозначаем дайджест, созданный при t итерациях, - H1, H2,...., HtH0 устанавливается на фиксированное значение, обычно называемое IV (начальное значение или начальный вектор).Hi-1 и М., создавая новый Hi. Другими словами, мы имеем Hi = .f (Hi-1, Мi), где f - функция сжатия.Ht - h(M).Множество функций криптографического хэширования использует функции сжатия, которые сделаны "на пустом месте". Эти функции сжатия специально созданы для целей, которым они служат.
Несколько
Алгоритм безопасного хэширования (SHA - Secure Hash Algorithm)
| Характеристики | SHA-1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 |
|---|---|---|---|---|---|
| Максимальный размер сообщения | 264 - 1 | 264 - 1 | 264 - 1 | 2128 - 1 | 2128 - 1 |
| Размер блока | 512 | 512 | 512 | 1024 | 1024 |
| Размер |
160 | 224 | 256 | 384 | 512 |
| 80 | 64 | 64 | 80 | 80 | |
| Размер слова | 32 | 32 | 32 | 64 | 64 |
Все эти версии имеют одну и ту же структуру.
Другие Алгоритмы сохранения целостности (RIPMD - RACE Integrity Primitives Evaluation Message Digest).Группа алгоритмов криптографического хэширования( RIPMD ) имеет несколько версий.
(рис 2.2) Схема Рабина
(рис 2.3) Схема Девиса-Мейера
(рис 2.4) Схема Матиса-Мейера-Осеаса
(рис 2.5) Схема Миагучи-Пренеля
версия SHA (Secure
(рис 2.6) Создание дайджеста сообщения SHA-512Дайджест вначале устанавливается на определенное заранее значение 512 битов. Алгоритм смешивает это начальное значение с первым блоком сообщения, чтобы создать первый промежуточный (N - l) -ый дайджест смешивается с N -ым блоком - они создают N -ый дайджест. Когда последний блок обработан, результирующий дайджест - это дайджест полного сообщения.
2128 битов. Если длина сообщения равна или больше, чем 2128, оно не будет обработано 2128 битов превосходят возможную сегодня полную емкость хранения любой системы.
2128.Пример 2.1
Этот пример показывает, что ограничение длины сообщения 2128 бита в секунду. Какое время потребуется для системы коммуникаций со скоростью передачи данных 264 бита в секунду, чтобы передать это сообщение?
Решение
Системы коммуникаций, которая может передать 264 бита в секунду, пока еще не существует. Даже если бы она была, потребовалось бы много лет, чтобы передать это сообщение. Отсюда ясно, что мы не должны волноваться по поводу ограничения длины сообщения для
Пример 2.2
Этот пример также касается длины сообщения в 2128 бит?
Предположим, что символ имеет длину 32 или 26 бит. Каждая страница - меньше, чем 2048, или приблизительно 212, символов. Тогда 2128 битов требуют по крайней мере 2128/218, или 2110 страниц. И снова ясно, что мы не должны волноваться об ограничении на длину сообщения.
Прежде чем 128 битов, которое определяет длину сообщения в битах, - с сообщением. Это длина первоначального сообщения перед заполнением. Поле целого числа без знака 128 битов можно определить как число между 0 и 2128 - 1, которое является максимальной длиной сообщения, принятого в
(рис 2.7) Заполнение и поле длины в SHA-512Перед сложением поля длины мы должны дополнить первоначальное сообщение, чтобы сделать длину кратной 1024. Для поля длины резервируется 128 битов, как показано на
рис. 2.7. Длина области заполнения может быть рассчитана следующим образом. Пусть |M| - длина первоначального сообщения и |P| - длина поля заполнения.
( M + P + 128) = 0 mod 1024 -> P = (- M - 128) mod 1024
Формат заполнения - это одна 1, сопровождаемая необходимым числом нулей (0).
Пример 2.3
Какое число битов заполнения необходимо, если длина первоначального сообщения - 2590 битов?
Решение
Мы можем вычислить число битов заполнения следующим образом:
P = (-2590 -128) mod 1024 = -2718 mod 1024 = 354
Заполнение состоит из одной 1, сопровождаемой 353 нулями.
Пример 2.4
Нужно ли заполнение, если длина первоначального сообщения уже кратна 1024 битам?
Решение
Да, нужно, потому что мы должны добавить поле длины. Заполнение необходимо, чтобы сделать и новый блок кратным 1024 битам.
Пример 2.5
Каково минимальное и максимальное число битов заполнения, которые можно добавить к сообщению?
Решение
Минимальная длина заполнения - 0, и это случается, когда (-M - 128) mod 1024 = 0 ; тогда |M| = -128 mod 1024 = 896 mod 1024 бит. Другими словами, последний блок в первоначальном сообщении - 896 битов. Мы добавляем поле длины на 128 битов, чтобы сделать блок полным.
Максимальная длина заполнения - 1023, и это случается, когда (- M - 128) = 1023 mod 1024. Это означает, что длина первоначального сообщения - M = (-128 - 1023) mod 1024 или M = 897 mod 1024. В этом случае мы не можем просто добавить область длины, потому что длина последнего блока будет превышать на один бит число 1024. Так что мы нуждаемся в заполнении 127 битами, чтобы закончить этот блок и создать второй блок заполнения 896 битов. Теперь можно добавить поле длины, чтобы сделать этот блок полным.
A, B, C, D, E, F, G и H, как показано на
рис. 2.8.
(рис 2.8) Блок сообщения и дайджест в виде отдельных словПеред обработкой каждый блок сообщения должен быть расширен. Блок образован из 1024 битов, или шестнадцати слов по 64 бита. Как мы увидим позже, в фазе обработки нам нужно 80 слов. Так что блок с 16-ю словами должен быть расширен до 80 слов от W0 до W79.
рис. 2.9 показывает процесс расширения слова. Блок на 1024 бита порождает первые слова; остальная часть слов получается от уже сделанных слов согласно операциям, которые показаны на рисунке.
(рис 2.9) Расширение слова в SHA -52Пример 2.6
Показать, как получить W60.
Решение
Каждое слово в диапазоне W16 до W79 получено в результате обработки четырех слов, созданных предварительно на предыдущих шагах. W60 получено как
Алгоритм использует восемь констант для инициализации A0 до H0, что соответствует обозначению слов, используемых для дайджеста.
табл. 2.2 показывает значение этих констант.
| Буфер | Значение (шестнадцатеричное) | Буфер | Значение (шестнадцатеричное) |
|---|---|---|---|
A0 |
6A09E667F3BCC908 |
E0 |
510E527FADE682D1 |
B0 |
3B67AE8584CAA73B |
F0 |
9B05688C2B3E6C1F |
C0 |
3C6EF372EF94F828 |
G0 |
1F83D9ABFB41BD6B |
D0 |
A54FE53A5F1D36F1 |
H0 |
5BEOCD19137E2179 |
Читатель может задаться вопросом, откуда взяты эти значения. Они рассчитаны из первых восьми простых чисел (2, 3, 5, 7, 11, 13, 17 и 19). Каждое значение - дробная часть квадратного корня соответствующего простого числа после преобразования к двоичной форме и сохранения только первых 64 битов. Например, восьмое простое число - 19 имеет квадратный корень (191/.2) = 4,35889894354. Преобразовывая число к двоичной форме только с 64 битами в дробной части, мы имеем
(100.0101 1011 1110... 1001)2 -> (4,5BEOCD19137E2179)16
(5BEOCD19137E2179)16 как целое число без знака.
Wi ), и одна константа на 64 бита ( Ki ), смешанные вместе. Они обработаны затем, чтобы создать новое множество из восьми буферов. В начале обработки значения восьми буферов сохранены как восемь временных переменных. В конце обработки (после того как сделан шаг 79) эти значения добавляются к значениям, созданным на шаге 79. Мы вызываем эту последнюю операцию финальным сложением, как это показано на рисунке.
(рис 2.10) Функция сжатия в SHA-512
(рис 2.11) Структура каждого раунда SHA-512В каждом раунде создаются восемь новых, по сравнению с предыдущим раундом, значений буферов по 64 бита. На рис. 2.11 мы видим, что шесть буферов - точные копии предыдущего раунда, как это показано ниже:
A -> B B -> C C -> D E -> F F -> G G -> H
Два новых буфера, A и E, получают соответствующие значения от некоторых сложных функций, которые включают в себя некоторые значения предыдущих буферов, соответствующее слово для этого раунда (Wi) и константу для этого раунда (Ki).
Рис. 2.11 показывает структуру каждого раунда.
Здесь есть два смесителя, три функции и несколько операторов. Каждый смеситель обрабатывает две функции. Описание функций и операторов приведено ниже.
A, B и C ) и вычисляет$$( A_{j} \ AND \ B_{j}) \oplus (B_{j} \ AND \ C_{j}) ) \oplus (C_{j} \ AND \ A_{j})$$
Результат - это значение, которое имеет большинство из трех бит. Если два или три бита равны единице (1) , то результат имеет значение бит 1; иначе он равен 0.
Функция, которую мы называем условной функцией ( Conditional ) - также поразрядная функция. Она использует три бита, которые содержатся в трех буферах ( E, F и G ), и вычисляет
Результат подчиняется логике "Если E, то F ; иначе G ".
A или E ) и применяет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ с результатом мажоритарной функции.$$Rotate (A): RotR_{28 }(A) \oplus RotR_{34} (A) \oplus RotR_{29}(A)
\\
Rotate (E): RotR_{28 }(A) \oplus RotR_{34} (E) \oplus RotR_{29}(E)$$
(RotRi (x) ) - та же самая, которую мы использовали в процессе расширения слова.264. Он означает результат сложения двух или больше буферов, содержащих всегда слово на 64 бита.K0 к K79, каждая по 64 бита, как показано в
табл. 2.3 в шестнадцатеричной форме (четыре в каждой строке таблицы). Аналогично начальным значениям для восьми буферов, эти значения вычислены из первых 80 простых чисел ( 2, 3..., 409 ).428A2F98D728AE22 |
7137449123EF65CD |
B5COFBCFEC4D3B2F |
E9B5DBA58189DBBC |
3956C25BF348B538 |
59F111F1B605D019 |
923F82A4AF194F9B |
AB1C5ED5DA6D8118 |
D807AA98A3030242 |
12835B0145706FBE |
243185BE4EE4B28C |
550 C7DC3D5FFB4E2 |
72BE5D74F27B896F |
80DEB1FE3B1696B1 |
9BDC06A725C71235 |
C19 BF1 74CF 692694 |
E49B69C19EF14AD2 |
EFBE4786384F25E3 |
OFC19DC68B8CD5B5 |
240 CA1CC77AC9C65 |
2DE92C6F592B0275 |
4A7484AA6EA6E483 |
5CBOA9DCBD41FBD4 |
76F 9 8 8DA831 153B5 |
983E5152EE66DFAB |
A831C66D2DB43210 |
B00327C898FB213F |
BF5 97FC7 BEEF0EE4 |
C6EOOBF33DA88FC2 |
D5A79147930AA725 |
06CA6351E003826F |
142 92 967 0AOE6E70 |
27B70A8546D22FFC |
2E1B21385C26C926 |
4D2C6DFC5AC42AED |
533 80 D1 39D95B3DF |
650A73548BAF63DE |
766AOABB3C77B2A8 |
81C2C92E47EDAEE6 |
92722 C8 514 823 53B |
A2BFE8A14CF10364 |
A81A664BBC423001 |
C24B8B70DOF89791 |
C76C5 1A 30 6 54BE30 |
D192E819D6EF5218 |
D69906245565A910 |
F40E35855771202A |
106AA 07 032BBD1B8 |
19A4C116B8D2DOC8 |
1E376C085141AB53 |
2748774CDF8EEB99 |
34BOBCB 5E 19B4 8A8 |
391COCB3C5C95A63 |
4ED8AA4AE3418ACB |
5B9CCA4F7763E373 |
682 E 6FF 3D6B2B8A3 |
748F82EE5DEFB2FC |
78A5636F43172F60 |
84C87814A1FOAB72 |
8CC7 020 81A 6439EC |
90BEFFFA23631E28 |
A4506CEBDE82BDE9 |
BEF9A3F7B2C67915 |
C671 78F 2E372532B |
CA273ECEEA26619C |
D186B8C721COC207 |
EADA7DD6CDEOEB1E |
F57D 4F7 FEE6E178 |
06F067AA72176FBA |
OA637DC5A2C898A6 |
113F9804BEF90DAE |
1B71 0B3 5131C471B |
28DB77F523047D84 |
32CAAB7B40C72493 |
3C9EBEOA15C9BEBC |
431D 67C 49C100D4C |
4CC5D4BECB3E42B6 |
4597F299CFC657E2 |
5FCB6FAB3AD6FAEC |
6C44 198 C4A475 817 |
Каждое значение - дробная часть кубического корня из соответствующего простого числа после преобразования этого числа к двоичной форме, сохраняются только первые 64 бита. Например, 80-е простое число - ( 409 ). Кубический корень (409) 1/3 = 7,42291412044. Преобразовывая это число к двоичному виду только с 64 битами в дробной части, мы получаем
(111,0110 1100 0100 0100...0111) 2 -> (7,6C44198C4A475817).
(6C44198C4A475817)16, как целое число без знака.
Пример 2.7
Мы применяем мажоритарную функцию к значениям буферов A, B и C. Если крайние левые шестнадцатеричные цифры этих буферов - 0x7, 0xA и 0xE соответственно, то какая цифра будет крайней левой частью результата?
Решение
Цифры в двоичной форме - 0111, 1010 и 1110.
0, 1 и 1. Мажоритарная функция равна 1. Мы можем доказать это, используя определение мажоритарной функции:$$(0 \ AND \ 1) \oplus (1 \ AND \ 1) \oplus C (1 \ AND \ 0) = 0 \oplus 1 \oplus 0 = 1$$
1, 0 и 1. Мажоритарная функция равна 1 .1, 1 и 1. Мажоритарная функция равна 1.1, 0 и 0. Мажоритарная функция равна 0. Результат - 1110, или 0xE в шестнадцатеричной форме.Пример 2.8
Мы применяем условную функцию ( Conditional ) для буферов E, F и G. Если крайние левые шестнадцатеричные цифры этих буферов - 0x9, 0xE и 0xF соответственно, то какая цифра будет крайней левой частью результата?
Решение
Цифры в двоичной форме - 1001, 1110 и 1111.
E1 = 1, результат - F1, который равен 1. Чтобы доказать результат, мы можем также использовать определение функции Condition:$$(1 \ AND \ 1) \oplus (NOT \ 1 \ AND \ 1) = 1 \oplus 0 = 1$$
0, 0 и 1. Следовательно, E2 - 0, результат - F3, который равен 1.0, 1 и 1. Следовательно, E3 - 0, результат - G3, который равен 1.1, 0 и 1. Следовательно, E4 - 1, результат - F4, который равен 0. Результат - 1110, или 0x1 в шестнадцатеричной форме.С дайджестом сообщения 512 битов от
Whirlpool разработан Винсентом Риджменом (Vincent Rijmen) и Пауло Баретто (Paolo Barreto). Он одобрен европейской организацией
Whirlpool -
(рис 2.12) Whirlpool хэш-функцияПодготовка
Перед стартом
После дополнения первоначального сообщения и присоединения поля длины увеличенный размер сообщения становится кратным 256 битам или кратным 512 битам. Whirlpool создает дайджест 512 из сообщения, состоящего из многих блоков по 512 бит. Дайджест из 512 бит, H0, начинается всеми нулями. Это становится ключом шифра для шифрования первого блока. Из зашифрованного текста каждого зашифрованного блока получают ключ шифра для следующего блока после того, как его складывают по модулю два с предыдущим ключом шифра и блоком исходного текста.
Раунды
Whirlpool - шифр, который использует 10 раундов. Размер блока и ключевой размер - 512 битов. Шифр применяет 11 ключей раунда K0 - K10, каждый по 512 битов.
рис. 2.13 показывает общий вид процесса шифрования шифром Whirlpool.
(рис 2.13) Общая идея шифра WhirlpoolМатрицы состояний и блоки
Подобно шифру AES, 8 x 8 байтов. В отличие от AES преобразование "блок - матрица состояний" или "матрица состояний - блок" происходят строка за строкой.
рис. 2.14 показывает блок, матрицу состояний и преобразование в
(рис 2.14) Блок и матрица состояний шифра Whirlpool Структура каждого раунда
Рис. 2.15 показывает структуру каждого раунда. Каждый раунд использует четыре преобразования.
(рис 2.15)
(рис 2.16) Преобразование SubBytes шифра Whirlpool В преобразовании 8 x 8. Преобразование делается одновременно только с одним байтом. Содержание каждого байта изменяется, но порядок следования байтов в матрице остается тем же самым. В процессе каждый байт преобразуется независимо; мы имеем 64 различных преобразований байт-к-байту.
Таблица 2.4 показывает таблицу подстановки (S-блок) для преобразования подбайтов. Преобразование обеспечивает эффект перемешивания. Например, два байта, и 5B16, которые отличаются только одним битом (самый правый бит), преобразованы к 5B16 и 8816, которые отличаются пятью битами.
| 0 | / | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 18 | 23 | C6 | E8 | 87 | B8 | 01 | 4F | 36 | A6 | D2 | F5 | 79 | 6F | 91 | 52 |
| 1 | 16 | BC | 9B | 8E | A3 | 0C | 7B | 35 | 1D | E0 | D7 | C2 | 2E | 4B | FE | 57 |
| 2 | 15 | 77 | 37 | E5 | 9F | F0 | 4A | CA | 58 | C9 | 29 | 0A | B1 | A0 | 6B | 85 |
| 3 | BD | 5D | 10 | 14 | CB | 3E | 05 | 67 | E4 | 27 | 41 | 8B | A7 | 7D | 95 | C8 |
| 4 | FB | EF | 7C | 66 | DD | 17 | 47 | 9E | CA | 2D | BF | 07 | AD | 83 | 33 | |
| 5 | 63 | 02 | AA | 71 | C8 | 19 | 49 | C9 | F2 | E3 | 5B | 88 | 9A | 26 | 32 | BO |
| 6 | E9 | OF | D5 | 80 | BE | CD | 34 | 48 | FF | 7A | 90 | 5F | 20 | 68 | 1A | AE |
| 7 | B4 | 54 | 93 | 2'2 | 64 | F1 | 73 | 12 | 40 | 08 | C3 | EC | DB | A1 | 8D | 3D |
| 8 | 97 | 00 | CF | :B | 76 | 82 | D6 | 1B | B5 | AF | 6A | 50 | 45 | F3 | 30 | EF |
| 9 | 3F | 55 | A2 | EA | 65 | BA | 2F | CO | DE | 1C | FD | 4D | 92 | 75 | 06 | 8A |
| A | B2 | E6 | OE | F | 62 | D4 | A8 | 96 | F9 | C5 | 25 | 59 | 84 | 72 | 39 | 4C |
| B | 5E | 7S | 38 | 8C | C1 | A5 | E2 | 61 | B3 | 21 | 9C | 1E | 43 | C7 | FC | 04 |
| C | 51 | 99 | 6D | 0D | FA | DF | 7E | 24 | 3B | AB | CE | 11 | 8F | 4E | B7 | EB |
| D | 3C | S1 | 94 | '-7 | 9B | 13 | 2C | D3 | E7 | 6E | C4 | 03 | 56 | 44 | 7E | A9 |
| E | 2A | BB | C1 | 53 | DC | OB | 9D | 6C | 31 | 74 | F6 | 46 | AC | 89 | 14 | E1 |
| F | 16 | 3A | 69 | 09 | 70 | B6 | CO | ED | CC | 42 | 98 | A4 | 28 | 5C | F8 | 86 |
Входы в
табл. 2.4 могут быть вычислены алгебраически, используя поле G(24) с неприводимым полиномом (x4 + x + 1), как показано на
рис. 2.17. Каждая шестнадцатеричная цифра в байте вводится в миниблок ( E и E-1 ). Результаты передаются в другой миниблок R. E -блоки вычисляют степень, равную шестнадцатеричному значению входа; R -миниблок использует псевдослучайный генератор чисел.
(рис 2.17) Операция SubBytes шифра Whirlpool $$E(вход) = (x^{3} +x+1)^{вход} \ mod (x^{4} + x + 1), \ если \ вход \ne 0xF
\\
E(0xF) = 0$$
E-1 -блок - это только инверсия E -блока, где роли входов и выходов изменились. Значения входа-выхода для блоков сведены в таблицу на рис. 2.17.
(рис 2.18) Преобразование ShiftColumns шифра Whirlpool MixRows.Преобразование GF(28). Умножение байтов проводится в GF(28), но модуль отличается от используемого в AES. 0x11 D ) или ( x8 + x4 + x3 + x2 + 1 ) как модуль. Сложение слов по 8 битов - то же самое, что ИСКЛЮЧАЮЩЕЕ ИЛИ. На
рис. 2.19 представлено преобразование
(рис 2.19) Преобразование MixRows шифра Whirlpool Рисунок показывает умножение единственной строки на матрицу констант; умножение можно провести, умножая всю матрицу состояний на матрицу констант. Обратите внимание, что в матрице констант каждая строка получена с помощью циркулярного сдвига вправо предыдущей строки.
8 x 8 байт.
рис. 2.20 показывает этот процесс. Байт матрицы состояний данных складывается в поле GF(28) с соответствующим байтом матрицы состояний ключей раунда. Результат - новый байт в новой матрице состояний.
(рис 2.20) Преобразование AddRoundKey шифра Whirlpool Расширение ключа
Как показывает
рис. 2.21, алгоритм расширения ключей в Whirlpool полностью отличается от алгоритма в AES. Вместо того чтобы применять новый алгоритм создания ключей раунда, Whirlpool использует копию алгоритма шифрования (без предраунда), чтобы создать ключи раунда. Выход каждого раунда в алгоритме шифрования есть ключи для этого раунда. На первый взгляд это напоминает определение, где ключи раунда для алгоритма расширения ключа получаются из него самого. Откуда получается алгоритм расширения? Whirlpool изящно решил эту проблему, используя десять констант раунда ( RC ) как виртуальные ключи раунда для алгоритма расширения ключей. Другими словами, алгоритм расширения ключей применяет константы как ключи раунда. Алгоритм шифрования использует выход каждого раунда алгоритма расширения ключей как ключи раунда. Алгоритм генерирования ключей обрабатывает ключ шифра как исходный текст и зашифровывает его. Обратите внимание, что ключ шифра - также К0 для алгоритма шифрования.
(рис 2.21) Расширение ключа шифра Whirlpool Константы раунда. Каждая константа раунда RCr является матрицей 8 x 8, где только первая строка имеет значения, отличные от нуля. Остальная часть входов содержит все нули. Значения для первой строки в каждой матрице констант могут быть вычислены, используя преобразование
RC round[строка, столбец] = Subbytes (8 (round -1) + столбец) если строка = 0 RCround [строка, столбец] = 0 если строка ^ 0
Другими словами, RC1 использует первые восемь входов в таблице преобразования RC2 использует вторые восемь входов, и т. д.
рис. 2.22 показывает пример RC3, где первая строка - третьи восемь входов в таблице
(рис 2.22) Константы для третьего раунда
В табл. 2.5 приведены основные характеристики шифра Whirlpool.
| Размер блока: 512 бит |
|---|
| Размер ключа шифра: 512 бит |
| Расширение ключа: использование шифра непосредственно с константами раунда в качестве ключей раунда |
| Подстановка: Преобразование |
| Перестановка: Преобразование |
| Смешивание: Преобразование |
| Константы раунда: кубические корни первых восьмидесяти простых чисел |
Хотя Whirlpool не был всесторонне изучен или проверен, он базируется на устойчивой
Для более детального изучения положений, обсужденных в этой лекции, мы рекомендуем нижеследующие книги и сайты. Пункты, указанные в скобках, показаны в списке ссылок в конце книги.
Несколько книг дают хороший обзор функций криптографического хэширования - [Sti06], [Sta06], [Sch99], [Mao04], [KPS02], [PHS03] и [MOV97] .
Нижеследующие сайты дают больше информации о темах, рассмотренных в этой лекции.
Все функции криптографического хэширования должны создавать дайджест фиксированного размера из сообщения переменного размера. Создание такой функции лучше всего может быть достигнуто применением итерации. Функция сжатия неоднократно используется, чтобы создать дайджест. Такая схема называется итеративной хэш-функцией.
Есть тенденция использовать два различных подхода в проектировании функции сжатия. В первом подходе функция сжатия сделана на пустом месте, т. е. разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.
Множество функций криптографического хэширования использует функции сжатия, которые сделаны на "пустом месте". Эти функции сжатия специально разработаны для этой цели, которую они обслуживают. Некоторые примеры: группа
Одна из перспективных функций криптографического хэширования -
Другая перспективная
G0 в табл. 2.2, используя седьмое простое число ( 17 ).W0 до W79, представляют как ключи раунда в одной из схем, рссмотренных в этой лекции (Рабина, Дэвиса-Меейра, Мэтиса-Мейера-Осеаса или Миагучи-Пренеля). Что это напоминает? Подсказка: Подумайте об эффекте операции конечного сложения.RotR12 (x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468ShL12(x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468Rotate(x),если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468Conditional (x,y,z), еслиx = 1234 5678 ABCD 2345 34564 5678 ABCD 2468 y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468 z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
Majority (x, y, z), еслиx = 1234 5678 ABCD 2345 34564 5678 ABCD 2468 y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468 z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
RotRi (x) в ShLi (x) в Conditional в Rotate в A0 до H0 ) в 8 x8 матрицам состояний (рис. 2.4).Все n -битовую строку и создает m -битовую строку, где n обычно больше чем m. Эта схема известна как итеративная криптографическая функция.
(рис 2.1) Схема Меркеля-ДамгардаСхема использует следующие шаги:
n -битовые блоки; здесь n - размер блока, который будет обработан функцией сжатия.t блоков, размер каждого состоит из n бит. Мы обозначим каждый блок М1,..., Мt. Мы обозначаем дайджест, созданный при t итерациях, - H1, H2,...., HtH0 устанавливается на фиксированное значение, обычно называемое IV (начальное значение или начальный вектор).Hi-1 и М., создавая новый Hi. Другими словами, мы имеем Hi = .f (Hi-1, Мi), где f - функция сжатия.Ht - h(M).Множество функций криптографического хэширования использует функции сжатия, которые сделаны "на пустом месте". Эти функции сжатия специально созданы для целей, которым они служат.
Несколько
Алгоритм безопасного хэширования (SHA - Secure Hash Algorithm)
| Характеристики | SHA-1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 |
|---|---|---|---|---|---|
| Максимальный размер сообщения | 264 - 1 | 264 - 1 | 264 - 1 | 2128 - 1 | 2128 - 1 |
| Размер блока | 512 | 512 | 512 | 1024 | 1024 |
| Размер |
160 | 224 | 256 | 384 | 512 |
| 80 | 64 | 64 | 80 | 80 | |
| Размер слова | 32 | 32 | 32 | 64 | 64 |
Все эти версии имеют одну и ту же структуру.
Другие Алгоритмы сохранения целостности (RIPMD - RACE Integrity Primitives Evaluation Message Digest).Группа алгоритмов криптографического хэширования( RIPMD ) имеет несколько версий.
(рис 2.2) Схема Рабина
(рис 2.3) Схема Девиса-Мейера
(рис 2.4) Схема Матиса-Мейера-Осеаса
(рис 2.5) Схема Миагучи-Пренеля
версия SHA (Secure
(рис 2.6) Создание дайджеста сообщения SHA-512Дайджест вначале устанавливается на определенное заранее значение 512 битов. Алгоритм смешивает это начальное значение с первым блоком сообщения, чтобы создать первый промежуточный (N - l) -ый дайджест смешивается с N -ым блоком - они создают N -ый дайджест. Когда последний блок обработан, результирующий дайджест - это дайджест полного сообщения.
2128 битов. Если длина сообщения равна или больше, чем 2128, оно не будет обработано 2128 битов превосходят возможную сегодня полную емкость хранения любой системы.
2128.Пример 2.1
Этот пример показывает, что ограничение длины сообщения 2128 бита в секунду. Какое время потребуется для системы коммуникаций со скоростью передачи данных 264 бита в секунду, чтобы передать это сообщение?
Решение
Системы коммуникаций, которая может передать 264 бита в секунду, пока еще не существует. Даже если бы она была, потребовалось бы много лет, чтобы передать это сообщение. Отсюда ясно, что мы не должны волноваться по поводу ограничения длины сообщения для
Пример 2.2
Этот пример также касается длины сообщения в 2128 бит?
Предположим, что символ имеет длину 32 или 26 бит. Каждая страница - меньше, чем 2048, или приблизительно 212, символов. Тогда 2128 битов требуют по крайней мере 2128/218, или 2110 страниц. И снова ясно, что мы не должны волноваться об ограничении на длину сообщения.
Прежде чем 128 битов, которое определяет длину сообщения в битах, - с сообщением. Это длина первоначального сообщения перед заполнением. Поле целого числа без знака 128 битов можно определить как число между 0 и 2128 - 1, которое является максимальной длиной сообщения, принятого в
(рис 2.7) Заполнение и поле длины в SHA-512Перед сложением поля длины мы должны дополнить первоначальное сообщение, чтобы сделать длину кратной 1024. Для поля длины резервируется 128 битов, как показано на
рис. 2.7. Длина области заполнения может быть рассчитана следующим образом. Пусть |M| - длина первоначального сообщения и |P| - длина поля заполнения.
( M + P + 128) = 0 mod 1024 -> P = (- M - 128) mod 1024
Формат заполнения - это одна 1, сопровождаемая необходимым числом нулей (0).
Пример 2.3
Какое число битов заполнения необходимо, если длина первоначального сообщения - 2590 битов?
Решение
Мы можем вычислить число битов заполнения следующим образом:
P = (-2590 -128) mod 1024 = -2718 mod 1024 = 354
Заполнение состоит из одной 1, сопровождаемой 353 нулями.
Пример 2.4
Нужно ли заполнение, если длина первоначального сообщения уже кратна 1024 битам?
Решение
Да, нужно, потому что мы должны добавить поле длины. Заполнение необходимо, чтобы сделать и новый блок кратным 1024 битам.
Пример 2.5
Каково минимальное и максимальное число битов заполнения, которые можно добавить к сообщению?
Решение
Минимальная длина заполнения - 0, и это случается, когда (-M - 128) mod 1024 = 0 ; тогда |M| = -128 mod 1024 = 896 mod 1024 бит. Другими словами, последний блок в первоначальном сообщении - 896 битов. Мы добавляем поле длины на 128 битов, чтобы сделать блок полным.
Максимальная длина заполнения - 1023, и это случается, когда (- M - 128) = 1023 mod 1024. Это означает, что длина первоначального сообщения - M = (-128 - 1023) mod 1024 или M = 897 mod 1024. В этом случае мы не можем просто добавить область длины, потому что длина последнего блока будет превышать на один бит число 1024. Так что мы нуждаемся в заполнении 127 битами, чтобы закончить этот блок и создать второй блок заполнения 896 битов. Теперь можно добавить поле длины, чтобы сделать этот блок полным.
A, B, C, D, E, F, G и H, как показано на
рис. 2.8.
(рис 2.8) Блок сообщения и дайджест в виде отдельных словПеред обработкой каждый блок сообщения должен быть расширен. Блок образован из 1024 битов, или шестнадцати слов по 64 бита. Как мы увидим позже, в фазе обработки нам нужно 80 слов. Так что блок с 16-ю словами должен быть расширен до 80 слов от W0 до W79.
рис. 2.9 показывает процесс расширения слова. Блок на 1024 бита порождает первые слова; остальная часть слов получается от уже сделанных слов согласно операциям, которые показаны на рисунке.
(рис 2.9) Расширение слова в SHA -52Пример 2.6
Показать, как получить W60.
Решение
Каждое слово в диапазоне W16 до W79 получено в результате обработки четырех слов, созданных предварительно на предыдущих шагах. W60 получено как
Алгоритм использует восемь констант для инициализации A0 до H0, что соответствует обозначению слов, используемых для дайджеста.
табл. 2.2 показывает значение этих констант.
| Буфер | Значение (шестнадцатеричное) | Буфер | Значение (шестнадцатеричное) |
|---|---|---|---|
A0 |
6A09E667F3BCC908 |
E0 |
510E527FADE682D1 |
B0 |
3B67AE8584CAA73B |
F0 |
9B05688C2B3E6C1F |
C0 |
3C6EF372EF94F828 |
G0 |
1F83D9ABFB41BD6B |
D0 |
A54FE53A5F1D36F1 |
H0 |
5BEOCD19137E2179 |
Читатель может задаться вопросом, откуда взяты эти значения. Они рассчитаны из первых восьми простых чисел (2, 3, 5, 7, 11, 13, 17 и 19). Каждое значение - дробная часть квадратного корня соответствующего простого числа после преобразования к двоичной форме и сохранения только первых 64 битов. Например, восьмое простое число - 19 имеет квадратный корень (191/.2) = 4,35889894354. Преобразовывая число к двоичной форме только с 64 битами в дробной части, мы имеем
(100.0101 1011 1110... 1001)2 -> (4,5BEOCD19137E2179)16
(5BEOCD19137E2179)16 как целое число без знака.
Wi ), и одна константа на 64 бита ( Ki ), смешанные вместе. Они обработаны затем, чтобы создать новое множество из восьми буферов. В начале обработки значения восьми буферов сохранены как восемь временных переменных. В конце обработки (после того как сделан шаг 79) эти значения добавляются к значениям, созданным на шаге 79. Мы вызываем эту последнюю операцию финальным сложением, как это показано на рисунке.
(рис 2.10) Функция сжатия в SHA-512
(рис 2.11) Структура каждого раунда SHA-512В каждом раунде создаются восемь новых, по сравнению с предыдущим раундом, значений буферов по 64 бита. На рис. 2.11 мы видим, что шесть буферов - точные копии предыдущего раунда, как это показано ниже:
A -> B B -> C C -> D E -> F F -> G G -> H
Два новых буфера, A и E, получают соответствующие значения от некоторых сложных функций, которые включают в себя некоторые значения предыдущих буферов, соответствующее слово для этого раунда (Wi) и константу для этого раунда (Ki).
Рис. 2.11 показывает структуру каждого раунда.
Здесь есть два смесителя, три функции и несколько операторов. Каждый смеситель обрабатывает две функции. Описание функций и операторов приведено ниже.
A, B и C ) и вычисляет$$( A_{j} \ AND \ B_{j}) \oplus (B_{j} \ AND \ C_{j}) ) \oplus (C_{j} \ AND \ A_{j})$$
Результат - это значение, которое имеет большинство из трех бит. Если два или три бита равны единице (1) , то результат имеет значение бит 1; иначе он равен 0.
Функция, которую мы называем условной функцией ( Conditional ) - также поразрядная функция. Она использует три бита, которые содержатся в трех буферах ( E, F и G ), и вычисляет
Результат подчиняется логике "Если E, то F ; иначе G ".
A или E ) и применяет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ с результатом мажоритарной функции.$$Rotate (A): RotR_{28 }(A) \oplus RotR_{34} (A) \oplus RotR_{29}(A)
\\
Rotate (E): RotR_{28 }(A) \oplus RotR_{34} (E) \oplus RotR_{29}(E)$$
(RotRi (x) ) - та же самая, которую мы использовали в процессе расширения слова.264. Он означает результат сложения двух или больше буферов, содержащих всегда слово на 64 бита.K0 к K79, каждая по 64 бита, как показано в
табл. 2.3 в шестнадцатеричной форме (четыре в каждой строке таблицы). Аналогично начальным значениям для восьми буферов, эти значения вычислены из первых 80 простых чисел ( 2, 3..., 409 ).428A2F98D728AE22 |
7137449123EF65CD |
B5COFBCFEC4D3B2F |
E9B5DBA58189DBBC |
3956C25BF348B538 |
59F111F1B605D019 |
923F82A4AF194F9B |
AB1C5ED5DA6D8118 |
D807AA98A3030242 |
12835B0145706FBE |
243185BE4EE4B28C |
550 C7DC3D5FFB4E2 |
72BE5D74F27B896F |
80DEB1FE3B1696B1 |
9BDC06A725C71235 |
C19 BF1 74CF 692694 |
E49B69C19EF14AD2 |
EFBE4786384F25E3 |
OFC19DC68B8CD5B5 |
240 CA1CC77AC9C65 |
2DE92C6F592B0275 |
4A7484AA6EA6E483 |
5CBOA9DCBD41FBD4 |
76F 9 8 8DA831 153B5 |
983E5152EE66DFAB |
A831C66D2DB43210 |
B00327C898FB213F |
BF5 97FC7 BEEF0EE4 |
C6EOOBF33DA88FC2 |
D5A79147930AA725 |
06CA6351E003826F |
142 92 967 0AOE6E70 |
27B70A8546D22FFC |
2E1B21385C26C926 |
4D2C6DFC5AC42AED |
533 80 D1 39D95B3DF |
650A73548BAF63DE |
766AOABB3C77B2A8 |
81C2C92E47EDAEE6 |
92722 C8 514 823 53B |
A2BFE8A14CF10364 |
A81A664BBC423001 |
C24B8B70DOF89791 |
C76C5 1A 30 6 54BE30 |
D192E819D6EF5218 |
D69906245565A910 |
F40E35855771202A |
106AA 07 032BBD1B8 |
19A4C116B8D2DOC8 |
1E376C085141AB53 |
2748774CDF8EEB99 |
34BOBCB 5E 19B4 8A8 |
391COCB3C5C95A63 |
4ED8AA4AE3418ACB |
5B9CCA4F7763E373 |
682 E 6FF 3D6B2B8A3 |
748F82EE5DEFB2FC |
78A5636F43172F60 |
84C87814A1FOAB72 |
8CC7 020 81A 6439EC |
90BEFFFA23631E28 |
A4506CEBDE82BDE9 |
BEF9A3F7B2C67915 |
C671 78F 2E372532B |
CA273ECEEA26619C |
D186B8C721COC207 |
EADA7DD6CDEOEB1E |
F57D 4F7 FEE6E178 |
06F067AA72176FBA |
OA637DC5A2C898A6 |
113F9804BEF90DAE |
1B71 0B3 5131C471B |
28DB77F523047D84 |
32CAAB7B40C72493 |
3C9EBEOA15C9BEBC |
431D 67C 49C100D4C |
4CC5D4BECB3E42B6 |
4597F299CFC657E2 |
5FCB6FAB3AD6FAEC |
6C44 198 C4A475 817 |
Каждое значение - дробная часть кубического корня из соответствующего простого числа после преобразования этого числа к двоичной форме, сохраняются только первые 64 бита. Например, 80-е простое число - ( 409 ). Кубический корень (409) 1/3 = 7,42291412044. Преобразовывая это число к двоичному виду только с 64 битами в дробной части, мы получаем
(111,0110 1100 0100 0100...0111) 2 -> (7,6C44198C4A475817).
(6C44198C4A475817)16, как целое число без знака.
Пример 2.7
Мы применяем мажоритарную функцию к значениям буферов A, B и C. Если крайние левые шестнадцатеричные цифры этих буферов - 0x7, 0xA и 0xE соответственно, то какая цифра будет крайней левой частью результата?
Решение
Цифры в двоичной форме - 0111, 1010 и 1110.
0, 1 и 1. Мажоритарная функция равна 1. Мы можем доказать это, используя определение мажоритарной функции:$$(0 \ AND \ 1) \oplus (1 \ AND \ 1) \oplus C (1 \ AND \ 0) = 0 \oplus 1 \oplus 0 = 1$$
1, 0 и 1. Мажоритарная функция равна 1 .1, 1 и 1. Мажоритарная функция равна 1.1, 0 и 0. Мажоритарная функция равна 0. Результат - 1110, или 0xE в шестнадцатеричной форме.Пример 2.8
Мы применяем условную функцию ( Conditional ) для буферов E, F и G. Если крайние левые шестнадцатеричные цифры этих буферов - 0x9, 0xE и 0xF соответственно, то какая цифра будет крайней левой частью результата?
Решение
Цифры в двоичной форме - 1001, 1110 и 1111.
E1 = 1, результат - F1, который равен 1. Чтобы доказать результат, мы можем также использовать определение функции Condition:$$(1 \ AND \ 1) \oplus (NOT \ 1 \ AND \ 1) = 1 \oplus 0 = 1$$
0, 0 и 1. Следовательно, E2 - 0, результат - F3, который равен 1.0, 1 и 1. Следовательно, E3 - 0, результат - G3, который равен 1.1, 0 и 1. Следовательно, E4 - 1, результат - F4, который равен 0. Результат - 1110, или 0x1 в шестнадцатеричной форме.С дайджестом сообщения 512 битов от
Whirlpool разработан Винсентом Риджменом (Vincent Rijmen) и Пауло Баретто (Paolo Barreto). Он одобрен европейской организацией
Whirlpool -
(рис 2.12) Whirlpool хэш-функцияПодготовка
Перед стартом
После дополнения первоначального сообщения и присоединения поля длины увеличенный размер сообщения становится кратным 256 битам или кратным 512 битам. Whirlpool создает дайджест 512 из сообщения, состоящего из многих блоков по 512 бит. Дайджест из 512 бит, H0, начинается всеми нулями. Это становится ключом шифра для шифрования первого блока. Из зашифрованного текста каждого зашифрованного блока получают ключ шифра для следующего блока после того, как его складывают по модулю два с предыдущим ключом шифра и блоком исходного текста.
Раунды
Whirlpool - шифр, который использует 10 раундов. Размер блока и ключевой размер - 512 битов. Шифр применяет 11 ключей раунда K0 - K10, каждый по 512 битов.
рис. 2.13 показывает общий вид процесса шифрования шифром Whirlpool.
(рис 2.13) Общая идея шифра WhirlpoolМатрицы состояний и блоки
Подобно шифру AES, 8 x 8 байтов. В отличие от AES преобразование "блок - матрица состояний" или "матрица состояний - блок" происходят строка за строкой.
рис. 2.14 показывает блок, матрицу состояний и преобразование в
(рис 2.14) Блок и матрица состояний шифра Whirlpool Структура каждого раунда
Рис. 2.15 показывает структуру каждого раунда. Каждый раунд использует четыре преобразования.
(рис 2.15)
(рис 2.16) Преобразование SubBytes шифра Whirlpool В преобразовании 8 x 8. Преобразование делается одновременно только с одним байтом. Содержание каждого байта изменяется, но порядок следования байтов в матрице остается тем же самым. В процессе каждый байт преобразуется независимо; мы имеем 64 различных преобразований байт-к-байту.
Таблица 2.4 показывает таблицу подстановки (S-блок) для преобразования подбайтов. Преобразование обеспечивает эффект перемешивания. Например, два байта, и 5B16, которые отличаются только одним битом (самый правый бит), преобразованы к 5B16 и 8816, которые отличаются пятью битами.
| 0 | / | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 18 | 23 | C6 | E8 | 87 | B8 | 01 | 4F | 36 | A6 | D2 | F5 | 79 | 6F | 91 | 52 |
| 1 | 16 | BC | 9B | 8E | A3 | 0C | 7B | 35 | 1D | E0 | D7 | C2 | 2E | 4B | FE | 57 |
| 2 | 15 | 77 | 37 | E5 | 9F | F0 | 4A | CA | 58 | C9 | 29 | 0A | B1 | A0 | 6B | 85 |
| 3 | BD | 5D | 10 | 14 | CB | 3E | 05 | 67 | E4 | 27 | 41 | 8B | A7 | 7D | 95 | C8 |
| 4 | FB | EF | 7C | 66 | DD | 17 | 47 | 9E | CA | 2D | BF | 07 | AD | 83 | 33 | |
| 5 | 63 | 02 | AA | 71 | C8 | 19 | 49 | C9 | F2 | E3 | 5B | 88 | 9A | 26 | 32 | BO |
| 6 | E9 | OF | D5 | 80 | BE | CD | 34 | 48 | FF | 7A | 90 | 5F | 20 | 68 | 1A | AE |
| 7 | B4 | 54 | 93 | 2'2 | 64 | F1 | 73 | 12 | 40 | 08 | C3 | EC | DB | A1 | 8D | 3D |
| 8 | 97 | 00 | CF | :B | 76 | 82 | D6 | 1B | B5 | AF | 6A | 50 | 45 | F3 | 30 | EF |
| 9 | 3F | 55 | A2 | EA | 65 | BA | 2F | CO | DE | 1C | FD | 4D | 92 | 75 | 06 | 8A |
| A | B2 | E6 | OE | F | 62 | D4 | A8 | 96 | F9 | C5 | 25 | 59 | 84 | 72 | 39 | 4C |
| B | 5E | 7S | 38 | 8C | C1 | A5 | E2 | 61 | B3 | 21 | 9C | 1E | 43 | C7 | FC | 04 |
| C | 51 | 99 | 6D | 0D | FA | DF | 7E | 24 | 3B | AB | CE | 11 | 8F | 4E | B7 | EB |
| D | 3C | S1 | 94 | '-7 | 9B | 13 | 2C | D3 | E7 | 6E | C4 | 03 | 56 | 44 | 7E | A9 |
| E | 2A | BB | C1 | 53 | DC | OB | 9D | 6C | 31 | 74 | F6 | 46 | AC | 89 | 14 | E1 |
| F | 16 | 3A | 69 | 09 | 70 | B6 | CO | ED | CC | 42 | 98 | A4 | 28 | 5C | F8 | 86 |
Входы в
табл. 2.4 могут быть вычислены алгебраически, используя поле G(24) с неприводимым полиномом (x4 + x + 1), как показано на
рис. 2.17. Каждая шестнадцатеричная цифра в байте вводится в миниблок ( E и E-1 ). Результаты передаются в другой миниблок R. E -блоки вычисляют степень, равную шестнадцатеричному значению входа; R -миниблок использует псевдослучайный генератор чисел.
(рис 2.17) Операция SubBytes шифра Whirlpool $$E(вход) = (x^{3} +x+1)^{вход} \ mod (x^{4} + x + 1), \ если \ вход \ne 0xF
\\
E(0xF) = 0$$
E-1 -блок - это только инверсия E -блока, где роли входов и выходов изменились. Значения входа-выхода для блоков сведены в таблицу на рис. 2.17.
(рис 2.18) Преобразование ShiftColumns шифра Whirlpool MixRows.Преобразование GF(28). Умножение байтов проводится в GF(28), но модуль отличается от используемого в AES. 0x11 D ) или ( x8 + x4 + x3 + x2 + 1 ) как модуль. Сложение слов по 8 битов - то же самое, что ИСКЛЮЧАЮЩЕЕ ИЛИ. На
рис. 2.19 представлено преобразование
(рис 2.19) Преобразование MixRows шифра Whirlpool Рисунок показывает умножение единственной строки на матрицу констант; умножение можно провести, умножая всю матрицу состояний на матрицу констант. Обратите внимание, что в матрице констант каждая строка получена с помощью циркулярного сдвига вправо предыдущей строки.
8 x 8 байт.
рис. 2.20 показывает этот процесс. Байт матрицы состояний данных складывается в поле GF(28) с соответствующим байтом матрицы состояний ключей раунда. Результат - новый байт в новой матрице состояний.
(рис 2.20) Преобразование AddRoundKey шифра Whirlpool Расширение ключа
Как показывает
рис. 2.21, алгоритм расширения ключей в Whirlpool полностью отличается от алгоритма в AES. Вместо того чтобы применять новый алгоритм создания ключей раунда, Whirlpool использует копию алгоритма шифрования (без предраунда), чтобы создать ключи раунда. Выход каждого раунда в алгоритме шифрования есть ключи для этого раунда. На первый взгляд это напоминает определение, где ключи раунда для алгоритма расширения ключа получаются из него самого. Откуда получается алгоритм расширения? Whirlpool изящно решил эту проблему, используя десять констант раунда ( RC ) как виртуальные ключи раунда для алгоритма расширения ключей. Другими словами, алгоритм расширения ключей применяет константы как ключи раунда. Алгоритм шифрования использует выход каждого раунда алгоритма расширения ключей как ключи раунда. Алгоритм генерирования ключей обрабатывает ключ шифра как исходный текст и зашифровывает его. Обратите внимание, что ключ шифра - также К0 для алгоритма шифрования.
(рис 2.21) Расширение ключа шифра Whirlpool Константы раунда. Каждая константа раунда RCr является матрицей 8 x 8, где только первая строка имеет значения, отличные от нуля. Остальная часть входов содержит все нули. Значения для первой строки в каждой матрице констант могут быть вычислены, используя преобразование
RC round[строка, столбец] = Subbytes (8 (round -1) + столбец) если строка = 0 RCround [строка, столбец] = 0 если строка ^ 0
Другими словами, RC1 использует первые восемь входов в таблице преобразования RC2 использует вторые восемь входов, и т. д.
рис. 2.22 показывает пример RC3, где первая строка - третьи восемь входов в таблице
(рис 2.22) Константы для третьего раунда
В табл. 2.5 приведены основные характеристики шифра Whirlpool.
| Размер блока: 512 бит |
|---|
| Размер ключа шифра: 512 бит |
| Расширение ключа: использование шифра непосредственно с константами раунда в качестве ключей раунда |
| Подстановка: Преобразование |
| Перестановка: Преобразование |
| Смешивание: Преобразование |
| Константы раунда: кубические корни первых восьмидесяти простых чисел |
Хотя Whirlpool не был всесторонне изучен или проверен, он базируется на устойчивой
Для более детального изучения положений, обсужденных в этой лекции, мы рекомендуем нижеследующие книги и сайты. Пункты, указанные в скобках, показаны в списке ссылок в конце книги.
Несколько книг дают хороший обзор функций криптографического хэширования - [Sti06], [Sta06], [Sch99], [Mao04], [KPS02], [PHS03] и [MOV97] .
Нижеследующие сайты дают больше информации о темах, рассмотренных в этой лекции.
Все функции криптографического хэширования должны создавать дайджест фиксированного размера из сообщения переменного размера. Создание такой функции лучше всего может быть достигнуто применением итерации. Функция сжатия неоднократно используется, чтобы создать дайджест. Такая схема называется итеративной хэш-функцией.
Есть тенденция использовать два различных подхода в проектировании функции сжатия. В первом подходе функция сжатия сделана на пустом месте, т. е. разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.
Множество функций криптографического хэширования использует функции сжатия, которые сделаны на "пустом месте". Эти функции сжатия специально разработаны для этой цели, которую они обслуживают. Некоторые примеры: группа
Одна из перспективных функций криптографического хэширования -
Другая перспективная
G0 в табл. 2.2, используя седьмое простое число ( 17 ).W0 до W79, представляют как ключи раунда в одной из схем, рссмотренных в этой лекции (Рабина, Дэвиса-Меейра, Мэтиса-Мейера-Осеаса или Миагучи-Пренеля). Что это напоминает? Подсказка: Подумайте об эффекте операции конечного сложения.RotR12 (x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468ShL12(x), если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468Rotate(x),если x = 1234 5678 ABCD 2345 34564 5678 ABCD 2468Conditional (x,y,z), еслиx = 1234 5678 ABCD 2345 34564 5678 ABCD 2468 y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468 z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
Majority (x, y, z), еслиx = 1234 5678 ABCD 2345 34564 5678 ABCD 2468 y = 2234 5678 ABCD 2345 34564 5678 ABCD 2468 z = 3234 5678 ABCD 2345 34564 5678 ABCD 2468
RotRi (x) в ShLi (x) в Conditional в Rotate в A0 до H0 ) в 8 x8 матрицам состояний (рис. 2.4).Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.