Whirlpool — криптографічна геш-функція, розроблена Вінсентом Рейменом і Пауло Баррето. Опублікована в листопаді 2000 року. Гешування вхідне повідомлення з довжиною до біт. Вихідне значення геш-функції Whirlpool, називане гешем, становить 512 біт.
Назва
Геш-функцію Whirlpool названо на честь Галактики Вир в сузір'ї Гончі Пси — першої галактики зі спостережуваною спіральною структурою.
Модифікації
З моменту створення у 2000 році Whirlpool двічі модифікувалась.
Першу версію, Whirlpool-0, представлено як кандидата в проекті (англ. New European Schemes for Signatures, Integrity and Encryption, нові європейські проекти з цифрового підпису, цілісності й шифрування).
Модифікацію Whirlpool-0, названу Whirlpool-T, у 2003 році додано в перелік рекомендованих до використання криптографічних функцій NESSIE [ 12 серпня 2011 у Wayback Machine.]. Зміни стосувалися блоку підстановки (S-скриня) Whirlpool: у першій версії структуру S-скрині не було описано, і він генерувався довільно, що створювало певні проблеми при апаратній реалізації Whirlpool. У версії Whirlpool-T S-скриня «набула» чіткої структури.
Дефект в дифузних матрицях Whirlpool-T, виявлений Taizo Shirai і Kyoji Shibutani, пізніше було виправлено, і кінцеву (третю) версію, названу просто Whirlpool, прийнято ISO в стандарті ISO/IEC 10118-3:2004 [ 12 липня 2006 у Wayback Machine.] у 2004 році.
Опис
Вступ
У даній статті описується остання (третя) версія Whirlpool. На відміну від першої версії, S-скриню визначено, а дифузну матрицю замінено новою після доповіді Taizo Shirai і Kyoji Shibutani.
Whirlpool складається з повторного застосування функції стиснення, основою якої є спеціальний 512-бітний блочний шифр з 512-бітним ключем.
Використовувані позначення та операції
В алгоритмі використовуються операції в полі Галуа за модулем незвідного многочлена .
Многочлени для коротко записуються в шістнадцятковому поданні. Наприклад, запис означає .
- Символом позначається [en]. Вираз означає композицію функцій і .
- Для позначення композиції послідовності функцій використовується символ :
- — множина матриць над
- — циркулянтна матриця , перший рядок якої складається з елементів тобто:
- або просто
Формат даних
Як було сказано вище, Whirlpool побудовано на спеціальному блочному шифрі , який працює з 512-бітними даними.
У перетвореннях проміжний результат обчислень гешу називається геш-станом або просто станом. При обчисленнях стан зазвичай подається матрицею стану. Для Whirlpool це матриця в . Отже, 512-бітні блоки даних перед подальшими обчисленнями слід перетворити в цей формат. Цього досягають уведенням функції :
Простіше кажучи, заповнення матриці стану даними виконується порядково. При цьому кожен байт матриці являє собою відповідний многочлен в .
Перетворення
Нелінійне перетворення (S-скриня)
Функція складається з паралельного застосування блоку підстановки (S-скрині) до всіх байтів матриці стану:
Блок підстановки описується такою таблицею замін:
| ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
|
Циклічна перестановка
Перестановка циклічно зсуває кожен стовпець матриці стану так, що стовпець зсувається вниз на позицій:
Завдання даного перетворення — перемішати байти рядків матриці стану між собою.
Лінійна дифузія
Лінійна дифузія — це лінійне перетворення, матрицею якого є MDS-матриця , тобто:
- так що
Іншими словами, матриця стану множиться справа на матрицю . Нагадаємо, що операції додавання і множення елементів матриць виконуються в .
MDS-матриця — це така матриця над скінченним полем , щоо якщо взяти її в якості матриці лінійного перетворення з простору в простір , то будь-які два вектори з простору виду будуть мати принаймні відмінностей в компонентах. Тобто набір векторів виду утворює код, що має властивість максимальної рознесеності (англ. Maximum Distance Separable code). Таким кодом є, наприклад, код Ріда-Соломона.
У Whirlpool властивість максимальної рознесеності MDS-матриці означає, що загальна кількість мінливих байтів вектора і вектора не менша ніж . Іншими словами, будь-яке змінення тільки одного байта призводить до змінення всіх 8 байтів . В цьому і полягає завдання лінійної дифузії.
Як уже згадувалося вище, MDS-матрицю в останній (третій) версії Whirlpool було змінено завдяки статті Taizo Shirai і Kyoji Shibutani. Вони проаналізували MDS-матрицю другої версії Whirlpool і вказали на можливість підвищення стійкості Whirlpool до диференціального криптоаналізу. Також вони запропонували 224 кандидати на місце нової MDS-матриці. З цього списку автори Whirlpool вибрали варіант, який найлегше реалізується в апаратному забезпеченні.
Додавання ключа
Функція додавання ключа являє собою побітове додавання (XOR) матриць стану і ключа :
Константи раунду
В кожному раунді використовується матриця констант , така, що:
Звідси видно, що перший рядок матриці є результатом застосування блоку підстановки до байтових чисел .
Решта 7 рядків — нульові.
Функція раунду
Для кожного раунду функція раунду — це складене перетворення , параметром якого є матриця ключа . Описується функція раунду таким чином:
Розширення ключа
Для кожного раунду необхідний 512-бітний ключ шифрування. Для вирішення даної проблеми в багатьох алгоритмах вводиться так звана процедура розширення ключа. У Whirlpool розширення ключа реалізується в такий спосіб:
Таким чином, з відомого ключа створюється необхідна послідовність ключів для кожного раунду блочного шифру .
Блочний шифр
Спеціальний 512-бітовий блочний шифр як параметр використовує 512-бітовий ключ і виконує таку послідовність перетворень:
де ключі породжені описаною вище процедурою розширення ключа. В геш-функції Whirlpool число раундів .
Доповнення вхідного повідомлення
Whirlpool, як і будь-яка інша геш-функція, повинна здійснювати гешування повідомлення довільної довжини. Оскільки внутрішній блок шифрування працює з 512-бітними вхідними повідомленнями, то вихідне повідомлення необхідно розбити на блоки по 512 біт. При цьому останній блок, який містить кінець повідомлення, може виявитися неповним.
Для вирішення даного завдання Whirlpool використовує алгоритм Меркла-Демґарда доповнення вхідного повідомлення. Результатом доповнення повідомлення є повідомлення , довжина якого кратна 512. Нехай — довжина початкового повідомлення. Тоді отримується за декілька кроків:
- До кінця повідомлення приписати біт «1».
- Приписати бітів «0» так, щоб довжина отриманого рядка була кратна непарне число разів.
- Нарешті, приписати 256-бітне подання числа .
Доповнене повідомлення записується у вигляді
і розбивається на 512-бітові блоки для подальшої обробки.
Функція стиснення
У Whirlpool застосовується схема гешування .
блоків доповненого повідомлення
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Whirlpool kriptografichna gesh funkciya rozroblena Vinsentom Rejmenom i Paulo Barreto Opublikovana v listopadi 2000 roku Geshuvannya vhidne povidomlennya z dovzhinoyu do 2 256 displaystyle 2 256 bit Vihidne znachennya gesh funkciyi Whirlpool nazivane geshem stanovit 512 bit Nazva na chest yakoyi nazvano gesh funkciyu Gesh funkciyu Whirlpool nazvano na chest Galaktiki Vir v suzir yi Gonchi Psi pershoyi galaktiki zi sposterezhuvanoyu spiralnoyu strukturoyu Modifikaciyi Z momentu stvorennya u 2000 roci Whirlpool dvichi modifikuvalas Pershu versiyu Whirlpool 0 predstavleno yak kandidata v proekti angl New European Schemes for Signatures Integrity and Encryption novi yevropejski proekti z cifrovogo pidpisu cilisnosti j shifruvannya Modifikaciyu Whirlpool 0 nazvanu Whirlpool T u 2003 roci dodano v perelik rekomendovanih do vikoristannya kriptografichnih funkcij NESSIE 12 serpnya 2011 u Wayback Machine Zmini stosuvalisya bloku pidstanovki S skrinya Whirlpool u pershij versiyi strukturu S skrini ne bulo opisano i vin generuvavsya dovilno sho stvoryuvalo pevni problemi pri aparatnij realizaciyi Whirlpool U versiyi Whirlpool T S skrinya nabula chitkoyi strukturi Defekt v difuznih matricyah Whirlpool T viyavlenij Taizo Shirai i Kyoji Shibutani piznishe bulo vipravleno i kincevu tretyu versiyu nazvanu prosto Whirlpool prijnyato ISO v standarti ISO IEC 10118 3 2004 12 lipnya 2006 u Wayback Machine u 2004 roci OpisVstup U danij statti opisuyetsya ostannya tretya versiya Whirlpool Na vidminu vid pershoyi versiyi S skrinyu viznacheno a difuznu matricyu zamineno novoyu pislya dopovidi Taizo Shirai i Kyoji Shibutani Whirlpool skladayetsya z povtornogo zastosuvannya funkciyi stisnennya osnovoyu yakoyi ye specialnij 512 bitnij blochnij shifr W displaystyle W z 512 bitnim klyuchem Vikoristovuvani poznachennya ta operaciyi V algoritmi vikoristovuyutsya operaciyi v poli Galua G F 2 8 displaystyle GF 2 8 za modulem nezvidnogo mnogochlena p 8 x x 8 x 4 x 3 x 2 1 displaystyle p 8 x x 8 x 4 x 3 x 2 1 Mnogochleni dlya korotko zapisuyutsya v shistnadcyatkovomu podanni Napriklad zapis 11 D x displaystyle 11D x oznachaye p 8 x displaystyle p 8 x Simvolom displaystyle circ poznachayetsya en Viraz f g displaystyle f circ g oznachaye kompoziciyu funkcij g displaystyle g i f displaystyle f Dlya poznachennya kompoziciyi poslidovnosti funkcij f m f m 1 f n 1 f n m n displaystyle f m f m 1 f n 1 f n m leq n vikoristovuyetsya simvol m r n displaystyle bigcirc m r n m r n f r f n f n 1 f m 1 f m displaystyle bigcirc m r n f r equiv f n circ f n 1 circ dots circ f m 1 circ f m M m n G F 2 8 displaystyle M m times n GF 2 8 mnozhina matric m n displaystyle m times n nad G F 2 8 displaystyle GF 2 8 c i r a 0 a 1 a m 1 displaystyle cir a 0 a 1 a m 1 cirkulyantna matricya m m displaystyle m times m pershij ryadok yakoyi skladayetsya z elementiv a 0 a 1 a m 1 displaystyle a 0 a 1 a m 1 tobto c i r a 0 a 1 a m 1 a 0 a 1 a m 1 a m 1 a 0 a m 2 a 1 a 2 a 0 displaystyle cir a 0 a 1 a m 1 equiv begin bmatrix a 0 amp a 1 amp dots amp a m 1 a m 1 amp a 0 amp dots amp a m 2 vdots amp vdots amp ddots amp vdots a 1 amp a 2 amp dots amp a 0 end bmatrix abo prosto c i r a 0 a 1 a m 1 c c i j a j i m o d m 0 i j m 1 displaystyle cir a 0 a 1 a m 1 c Leftrightarrow c ij a j i modm 0 leq i j leq m 1 Format danih Yak bulo skazano vishe Whirlpool pobudovano na specialnomu blochnomu shifri W displaystyle W yakij pracyuye z 512 bitnimi danimi U peretvorennyah promizhnij rezultat obchislen geshu nazivayetsya gesh stanom abo prosto stanom Pri obchislennyah stan zazvichaj podayetsya matriceyu stanu Dlya Whirlpool ce matricya v M 8 8 G F 2 8 displaystyle M 8 times 8 GF 2 8 Otzhe 512 bitni bloki danih pered podalshimi obchislennyami slid peretvoriti v cej format Cogo dosyagayut uvedennyam funkciyi m displaystyle mu m G F 2 8 64 M 8 8 G F 2 8 m a b b i j a 8 i j 0 i j 7 displaystyle mu GF 2 8 64 to M 8 times 8 GF 2 8 qquad mu a b Leftrightarrow b ij a 8i j 0 leq i j leq 7 Prostishe kazhuchi zapovnennya matrici stanu danimi vikonuyetsya poryadkovo Pri comu kozhen bajt matrici yavlyaye soboyu vidpovidnij mnogochlen v G F 2 8 displaystyle GF 2 8 Peretvorennya Nelinijne peretvorennya g displaystyle gamma S skrinya Funkciya g M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle gamma M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 skladayetsya z paralelnogo zastosuvannya bloku pidstanovki S skrini S G F 2 8 G F 2 8 x S x displaystyle S GF 2 8 to GF 2 8 x to S x do vsih bajtiv matrici stanu g a b b i j S a i j 0 i j 7 displaystyle gamma a b Leftrightarrow b ij S a ij 0 leq i j leq 7 Blok pidstanovki opisuyetsya takoyu tabliceyu zamin Tablicya 1 Blok pidstanovki 00 x displaystyle 00 x 01 x displaystyle 01 x 02 x displaystyle 02 x 03 x displaystyle 03 x 04 x displaystyle 04 x 05 x displaystyle 05 x 06 x displaystyle 06 x 07 x displaystyle 07 x 08 x displaystyle 08 x 09 x displaystyle 09 x 0 A x displaystyle 0A x 0 B x displaystyle 0B x 0 c x displaystyle 0c x 0 d x displaystyle 0d x 0 E x displaystyle 0E x 0 F x displaystyle 0F x 00 x displaystyle 00 x 18 x displaystyle 18 x 23 x displaystyle 23 x c 6 x displaystyle c6 x E 8 x displaystyle E8 x 87 x displaystyle 87 x B 8 x displaystyle B8 x 01 x displaystyle 01 x 4 F x displaystyle 4F x 36 x displaystyle 36 x A 6 x displaystyle A6 x d 2 x displaystyle d2 x F 5 x displaystyle F5 x 79 x displaystyle 79 x 6 F x displaystyle 6F x 91 x displaystyle 91 x 52 x displaystyle 52 x 10 x displaystyle 10 x 60 x displaystyle 60 x B c x displaystyle Bc x 9 B x displaystyle 9B x 8 E x displaystyle 8E x A 3 x displaystyle A3 x 0 c x displaystyle 0c x 7 B x displaystyle 7B x 35 x displaystyle 35 x 1 d x displaystyle 1d x E 0 x displaystyle E0 x d 7 x displaystyle d7 x c 2 x displaystyle c2 x 2 E x displaystyle 2E x 4 B x displaystyle 4B x F E x displaystyle FE x 57 x displaystyle 57 x 20 x displaystyle 20 x 15 x displaystyle 15 x 77 x displaystyle 77 x 37 x displaystyle 37 x E 5 x displaystyle E5 x 9 F x displaystyle 9F x F 0 x displaystyle F0 x 4 A x displaystyle 4A x d A x displaystyle dA x 58 x displaystyle 58 x c 9 x displaystyle c9 x 29 x displaystyle 29 x 0 A x displaystyle 0A x B 1 x displaystyle B1 x A 0 x displaystyle A0 x 6 B x displaystyle 6B x 85 x displaystyle 85 x 30 x displaystyle 30 x B d x displaystyle Bd x 5 d x displaystyle 5d x 10 x displaystyle 10 x F 4 x displaystyle F4 x c B x displaystyle cB x 3 E x displaystyle 3E x 05 x displaystyle 05 x 67 x displaystyle 67 x E 4 x displaystyle E4 x 27 x displaystyle 27 x 41 x displaystyle 41 x 8 B x displaystyle 8B x A 7 x displaystyle A7 x 7 d x displaystyle 7d x 95 x displaystyle 95 x d 8 x displaystyle d8 x 40 x displaystyle 40 x F B x displaystyle FB x E E x displaystyle EE x 7 c x displaystyle 7c x 66 x displaystyle 66 x d d x displaystyle dd x 17 x displaystyle 17 x 47 x displaystyle 47 x 9 E x displaystyle 9E x c A x displaystyle cA x 2 d x displaystyle 2d x B F x displaystyle BF x 07 x displaystyle 07 x A d x displaystyle Ad x 5 A x displaystyle 5A x 83 x displaystyle 83 x 33 x displaystyle 33 x 50 x displaystyle 50 x 63 x displaystyle 63 x 02 x displaystyle 02 x A A x displaystyle AA x 71 x displaystyle 71 x c 8 x displaystyle c8 x 19 x displaystyle 19 x 49 x displaystyle 49 x d 9 x displaystyle d9 x F 2 x displaystyle F2 x E 3 x displaystyle E3 x 5 B x displaystyle 5B x 88 x displaystyle 88 x 9 A x displaystyle 9A x 26 x displaystyle 26 x 32 x displaystyle 32 x B 0 x displaystyle B0 x 60 x displaystyle 60 x E 9 x displaystyle E9 x 0 F x displaystyle 0F x d 5 x displaystyle d5 x 80 x displaystyle 80 x B E x displaystyle BE x c d x displaystyle cd x 34 x displaystyle 34 x 48 x displaystyle 48 x F F x displaystyle FF x 7 A x displaystyle 7A x 90 x displaystyle 90 x 5 F x displaystyle 5F x 20 x displaystyle 20 x 68 x displaystyle 68 x 1 A x displaystyle 1A x A E x displaystyle AE x 70 x displaystyle 70 x B 4 x displaystyle B4 x 54 x displaystyle 54 x 93 x displaystyle 93 x 22 x displaystyle 22 x 64 x displaystyle 64 x F 1 x displaystyle F1 x 73 x displaystyle 73 x 12 x displaystyle 12 x 40 x displaystyle 40 x 08 x displaystyle 08 x c 3 x displaystyle c3 x E c x displaystyle Ec x d B x displaystyle dB x A 1 x displaystyle A1 x 8 d x displaystyle 8d x 3 d x displaystyle 3d x 80 x displaystyle 80 x 97 x displaystyle 97 x 00 x displaystyle 00 x c F x displaystyle cF x 2 B x displaystyle 2B x 76 x displaystyle 76 x 82 x displaystyle 82 x d 6 x displaystyle d6 x 1 B x displaystyle 1B x B 5 x displaystyle B5 x A F x displaystyle AF x 6 A x displaystyle 6A x 50 x displaystyle 50 x 45 x displaystyle 45 x F 3 x displaystyle F3 x 30 x displaystyle 30 x E F x displaystyle EF x 90 x displaystyle 90 x 3 F x displaystyle 3F x 55 x displaystyle 55 x A 2 x displaystyle A2 x E A x displaystyle EA x 65 x displaystyle 65 x B A x displaystyle BA x 2 F x displaystyle 2F x c 0 x displaystyle c0 x d E x displaystyle dE x 1 c x displaystyle 1c x F d x displaystyle Fd x 4 d x displaystyle 4d x 92 x displaystyle 92 x 75 x displaystyle 75 x 06 x displaystyle 06 x 8 A x displaystyle 8A x A 0 x displaystyle A0 x B 2 x displaystyle B2 x E 6 x displaystyle E6 x 0 E x displaystyle 0E x 1 F x displaystyle 1F x 62 x displaystyle 62 x d 4 x displaystyle d4 x A 8 x displaystyle A8 x 96 x displaystyle 96 x F 9 x displaystyle F9 x c 5 x displaystyle c5 x 25 x displaystyle 25 x 59 x displaystyle 59 x 84 x displaystyle 84 x 72 x displaystyle 72 x 39 x displaystyle 39 x 4 c x displaystyle 4c x B 0 x displaystyle B0 x 5 E x displaystyle 5E x 78 x displaystyle 78 x 38 x displaystyle 38 x 8 c x displaystyle 8c x d 1 x displaystyle d1 x A 5 x displaystyle A5 x E 2 x displaystyle E2 x 61 x displaystyle 61 x B 3 x displaystyle B3 x 21 x displaystyle 21 x 9 c x displaystyle 9c x 1 E x displaystyle 1E x 43 x displaystyle 43 x c 7 x displaystyle c7 x F c x displaystyle Fc x 04 x displaystyle 04 x c 0 x displaystyle c0 x 51 x displaystyle 51 x 99 x displaystyle 99 x 6 d x displaystyle 6d x 0 d x displaystyle 0d x F A x displaystyle FA x d F x displaystyle dF x 7 E x displaystyle 7E x 24 x displaystyle 24 x 3 B x displaystyle 3B x A B x displaystyle AB x c E x displaystyle cE x 11 x displaystyle 11 x 8 F x displaystyle 8F x 4 E x displaystyle 4E x B 7 x displaystyle B7 x E B x displaystyle EB x d 0 x displaystyle d0 x 3 c x displaystyle 3c x 81 x displaystyle 81 x 94 x displaystyle 94 x F 7 x displaystyle F7 x B 9 x displaystyle B9 x 13 x displaystyle 13 x 2 c x displaystyle 2c x d 3 x displaystyle d3 x E 7 x displaystyle E7 x 6 E x displaystyle 6E x c 4 x displaystyle c4 x 03 x displaystyle 03 x 56 x displaystyle 56 x 44 x displaystyle 44 x 7 F x displaystyle 7F x A 9 x displaystyle A9 x E 0 x displaystyle E0 x 2 A x displaystyle 2A x B B x displaystyle BB x c 1 x displaystyle c1 x 53 x displaystyle 53 x d c x displaystyle dc x 0 B x displaystyle 0B x 9 d x displaystyle 9d x 6 c x displaystyle 6c x 31 x displaystyle 31 x 74 x displaystyle 74 x F 6 x displaystyle F6 x 46 x displaystyle 46 x A c x displaystyle Ac x 89 x displaystyle 89 x 14 x displaystyle 14 x E 1 x displaystyle E1 x F 0 x displaystyle F0 x 16 x displaystyle 16 x 3 A x displaystyle 3A x 69 x displaystyle 69 x 09 x displaystyle 09 x 70 x displaystyle 70 x B 6 x displaystyle B6 x d 0 x displaystyle d0 x E d x displaystyle Ed x c c x displaystyle cc x 42 x displaystyle 42 x 98 x displaystyle 98 x A 4 x displaystyle A4 x 28 x displaystyle 28 x 5 c x displaystyle 5c x F 8 x displaystyle F8 x 86 x displaystyle 86 x Ciklichna perestanovka p displaystyle pi Perestanovka p M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle pi M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 ciklichno zsuvaye kozhen stovpec matrici stanu tak sho stovpec j displaystyle j zsuvayetsya vniz na j displaystyle j pozicij p a b b i j a i j m o d 8 j 0 i j 7 displaystyle pi a b Leftrightarrow b ij a i j mod8 j 0 leq i j leq 7 Zavdannya danogo peretvorennya peremishati bajti ryadkiv matrici stanu mizh soboyu Linijna difuziya 8 displaystyle theta Linijna difuziya 8 M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle theta M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 ce linijne peretvorennya matriceyu yakogo ye MDS matricya C c i r 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x displaystyle C cir 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x tobto C c i r 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x 09 x 01 x 01 x 04 x 01 x 08 x 05 x 02 x 02 x 09 x 01 x 01 x 04 x 01 x 08 x 05 x 05 x 02 x 09 x 01 x 01 x 04 x 01 x 08 x 08 x 05 x 02 x 09 x 01 x 01 x 04 x 01 x 01 x 08 x 05 x 02 x 09 x 01 x 01 x 04 x 04 x 01 x 08 x 05 x 02 x 09 x 01 x 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x 01 x displaystyle C cir 01 x 01 x 04 x 01 x 08 x 05 x 02 x 09 x begin bmatrix 01 x amp 01 x amp 04 x amp 01 x amp 08 x amp 05 x amp 02 x amp 09 x 09 x amp 01 x amp 01 x amp 04 x amp 01 x amp 08 x amp 05 x amp 02 x 02 x amp 09 x amp 01 x amp 01 x amp 04 x amp 01 x amp 08 x amp 05 x 05 x amp 02 x amp 09 x amp 01 x amp 01 x amp 04 x amp 01 x amp 08 x 08 x amp 05 x amp 02 x amp 09 x amp 01 x amp 01 x amp 04 x amp 01 x 01 x amp 08 x amp 05 x amp 02 x amp 09 x amp 01 x amp 01 x amp 04 x 04 x amp 01 x amp 08 x amp 05 x amp 02 x amp 09 x amp 01 x amp 01 x 01 x amp 04 x amp 01 x amp 08 x amp 05 x amp 02 x amp 09 x amp 01 x end bmatrix tak sho 8 a b b a C displaystyle theta a b Leftrightarrow b a cdot C Inshimi slovami matricya stanu mnozhitsya sprava na matricyu C displaystyle C Nagadayemo sho operaciyi dodavannya i mnozhennya elementiv matric vikonuyutsya v G F 2 8 displaystyle GF 2 8 MDS matricya ce taka matricya nad skinchennim polem K displaystyle K shoo yaksho vzyati yiyi v yakosti matrici linijnogo peretvorennya f x M D S x displaystyle f x MDS x z prostoru K n displaystyle K n v prostir K m displaystyle K m to bud yaki dva vektori z prostoru K n m displaystyle K n m vidu x f x displaystyle x f x budut mati prinajmni m 1 displaystyle m 1 vidminnostej v komponentah Tobto nabir vektoriv vidu x f x displaystyle x f x utvoryuye kod sho maye vlastivist maksimalnoyi roznesenosti angl Maximum Distance Separable code Takim kodom ye napriklad kod Rida Solomona U Whirlpool vlastivist maksimalnoyi roznesenosti MDS matrici oznachaye sho zagalna kilkist minlivih bajtiv vektora x displaystyle x i vektora f x M D S x displaystyle f x MDS x ne mensha nizh 8 1 9 displaystyle 8 1 9 Inshimi slovami bud yake zminennya tilki odnogo bajta x displaystyle x prizvodit do zminennya vsih 8 bajtiv f x displaystyle f x V comu i polyagaye zavdannya linijnoyi difuziyi Yak uzhe zgaduvalosya vishe MDS matricyu v ostannij tretij versiyi Whirlpool bulo zmineno zavdyaki statti Taizo Shirai i Kyoji Shibutani Voni proanalizuvali MDS matricyu drugoyi versiyi Whirlpool i vkazali na mozhlivist pidvishennya stijkosti Whirlpool do diferencialnogo kriptoanalizu Takozh voni zaproponuvali 224 kandidati na misce novoyi MDS matrici Z cogo spisku avtori Whirlpool vibrali variant yakij najlegshe realizuyetsya v aparatnomu zabezpechenni Dodavannya klyucha s k displaystyle sigma k Funkciya dodavannya klyucha s k M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle sigma k M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 yavlyaye soboyu pobitove dodavannya XOR matric stanu a displaystyle a i klyucha k M 8 8 G F 2 8 displaystyle k in M 8 times 8 GF 2 8 s k a b b i j a i j k i j 0 i j 7 displaystyle sigma k a b Leftrightarrow b i j a i j oplus k i j 0 leq i j leq 7 Konstanti raundu c r displaystyle c r V kozhnomu raundi r r gt 0 displaystyle r r gt 0 vikoristovuyetsya matricya konstant c r M 8 8 G F 2 8 displaystyle c r in M 8 times 8 GF 2 8 taka sho c 0 j r S 8 r 1 j 0 j 7 displaystyle c 0j r equiv S 8 r 1 j qquad 0 leq j leq 7 c i j r 0 1 i 7 0 j 7 displaystyle c ij r equiv 0 qquad qquad qquad qquad 1 leq i leq 7 0 leq j leq 7 Zvidsi vidno sho pershij ryadok matrici c r displaystyle c r ye rezultatom zastosuvannya bloku pidstanovki S displaystyle S do bajtovih chisel 8 r 1 j 0 j 7 displaystyle 8 r 1 j 0 leq j leq 7 Reshta 7 ryadkiv nulovi Funkciya raundu r k displaystyle rho k Dlya kozhnogo raundu r displaystyle r funkciya raundu ce skladene peretvorennya r k M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle rho k M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 parametrom k displaystyle k yakogo ye matricya klyucha k M 8 8 G F 2 8 displaystyle k in M 8 times 8 GF 2 8 Opisuyetsya funkciya raundu takim chinom r k s k 8 p g displaystyle rho k equiv sigma k circ theta circ pi circ gamma Rozshirennya klyucha Dlya kozhnogo raundu r 0 r R displaystyle r 0 leq r leq R neobhidnij 512 bitnij klyuch shifruvannya Dlya virishennya danoyi problemi v bagatoh algoritmah vvoditsya tak zvana procedura rozshirennya klyucha U Whirlpool rozshirennya klyucha realizuyetsya v takij sposib K 0 K displaystyle K 0 K K r r c r K r 1 r gt 0 displaystyle K r rho c r K r 1 r gt 0 Takim chinom z vidomogo klyucha K displaystyle K stvoryuyetsya neobhidna poslidovnist K 0 K R displaystyle K 0 K R klyuchiv dlya kozhnogo raundu blochnogo shifru W displaystyle W Blochnij shifr W displaystyle W Specialnij 512 bitovij blochnij shifr W K M 8 8 G F 2 8 M 8 8 G F 2 8 displaystyle W K M 8 times 8 GF 2 8 to M 8 times 8 GF 2 8 yak parametr vikoristovuye 512 bitovij klyuch K displaystyle K i vikonuye taku poslidovnist peretvoren W K 1 r R r K r s K 0 displaystyle W K left bigcirc 1 r R rho K r right circ sigma K 0 de klyuchi K 0 K R displaystyle K 0 K R porodzheni opisanoyu vishe proceduroyu rozshirennya klyucha V gesh funkciyi Whirlpool chislo raundiv R 10 displaystyle R 10 Dopovnennya vhidnogo povidomlennya Whirlpool yak i bud yaka insha gesh funkciya povinna zdijsnyuvati geshuvannya povidomlennya dovilnoyi dovzhini Oskilki vnutrishnij blok shifruvannya W displaystyle W pracyuye z 512 bitnimi vhidnimi povidomlennyami to vihidne povidomlennya neobhidno rozbiti na bloki po 512 bit Pri comu ostannij blok yakij mistit kinec povidomlennya mozhe viyavitisya nepovnim Dlya virishennya danogo zavdannya Whirlpool vikoristovuye algoritm Merkla Demgarda dopovnennya vhidnogo povidomlennya Rezultatom dopovnennya povidomlennya M displaystyle M ye povidomlennya M displaystyle M dovzhina yakogo kratna 512 Nehaj L displaystyle L dovzhina pochatkovogo povidomlennya Todi M displaystyle M otrimuyetsya za dekilka krokiv Do kincya povidomlennya M displaystyle M pripisati bit 1 Pripisati x displaystyle x bitiv 0 tak shob dovzhina otrimanogo ryadka L 1 x displaystyle L 1 x bula kratna 256 displaystyle 256 neparne chislo raziv Nareshti pripisati 256 bitne podannya chisla L displaystyle L Dopovnene povidomlennya M displaystyle M zapisuyetsya u viglyadi M M L 1 0 0 x L 256 displaystyle M overbrace M L 1 overbrace 0 dots 0 x overbrace L 256 i rozbivayetsya na 512 bitovi bloki dlya podalshoyi obrobki Funkciya stisnennya Funkciya stisnennya Whirlpool U Whirlpool zastosovuyetsya shema geshuvannya t displaystyle t blokiv m i 1 i t displaystyle m i 1 leq i leq t dopovnenogo povidomlennya M displaystyle M