Whirlpool (хэш-функция)
Общий | |
---|---|
Дизайнеры | Винсент Реймен , Пауло СЛМ Баррето |
Впервые опубликовано | 2000, 2001, 2003 |
Получено из | Квадрат , АЭС |
Сертификация | НЕССИ |
Деталь | |
Размеры дайджеста | 512 бит |
Претензии по безопасности | Большой размер хэш-суммы |
Структура | Миягути-Пренель |
Раунды | 10 |
Лучший публичный криптоанализ | |
В 2009 году было объявлено о рикошетной атаке , которая представляет собой полное столкновение с 4,5 раундами Whirlpool в 2 120 операций, столкновений с полусвободным стартом против 5,5 туров в 2 120 время и полусвободный старт около столкновений против 7,5 раундов в 2 128 время. [1] |
В информатике и криптографии криптографическая Whirlpool (иногда называемый WHIRLPOOL ) — это хеш-функция . Он был разработан Винсентом Рейменом (соавтором Advanced Encryption Standard ) и Пауло С.Л.М. Баррето , которые впервые описали его в 2000 году.
Хэш рекомендован проектом NESSIE . Он также был принят Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IEC) как часть совместного международного стандарта ISO/IEC 10118-3 .
Особенности конструкции [ править ]
Whirlpool — это хеш, созданный на основе Square блочного шифра и относящийся к этому семейству функций блочного шифра.
Whirlpool — это конструкция Миягути-Пренеля, основанная на существенно модифицированном усовершенствованном стандарте шифрования (AES).
Whirlpool принимает сообщение любой длины меньше 2 256 бит и возвращает 512-битный дайджест сообщения . [3]
Авторы заявили, что
- «WHIRLPOOL не запатентован (и никогда не будет) запатентован . Его можно использовать бесплатно для любых целей». [2]
Изменения в версии [ править ]
Исходный Whirlpool будет называться Whirlpool-0 , первая версия Whirlpool будет называться Whirlpool-T , а последняя версия будет называться Whirlpool в следующих тестовых векторах.
- В первой версии 2001 года S-box был изменен со случайно сгенерированного с хорошими криптографическими свойствами на тот, который имеет лучшие криптографические свойства и его легче реализовать на аппаратном уровне.
- Во второй версии (2003 г.) был обнаружен недостаток в матрице диффузии , который снизил расчетную безопасность алгоритма ниже его потенциала. [4] Изменение констант вращающейся матрицы 8x8 с (1, 1, 3, 1, 5, 8, 9, 5) на (1, 1, 4, 1, 8, 5, 2, 9) решило эту проблему.
Внутренняя структура [ править ]
Хэш-функция Whirlpool представляет собой конструкцию Меркла-Дамгорда, основанную на AES -подобном блочном шифре W в режиме Миягути-Пренеля . [2]
Блочный шифр W состоит из матрицы состояний 8×8. байтов, всего 512 бит.
Процесс шифрования состоит из обновления состояния с помощью четырех раундовых функций за 10 раундов. Четыре функции раунда: SubBytes (SB), ShiftColumns (SC), MixRows (MR) и AddRoundKey (AK). Во время каждого раунда новое состояние вычисляется как .
Суббайты [ править ]
Операция SubBytes применяет нелинейную перестановку (S-блок) к каждому байту состояния независимо. 8-битный S-блок состоит из трех меньших 4-битных S-блоков.
ShiftColumns [ править ]
Операция ShiftColumns циклически сдвигает каждый байт в каждом столбце состояния. В столбце j байты сдвинуты вниз на j позиций.
MixRows [ править ]
Операция MixRows представляет собой умножение справа каждой строки на матрицу 8×8. . Матрица выбирается так, чтобы число ветвей (важное свойство при рассмотрении устойчивости к дифференциальному криптоанализу ) было 9, что является максимальным значением.
AddRoundKey [ править ]
Операция AddRoundKey использует побитовое исключающее ИЛИ для добавления ключа, рассчитанного по расписанию ключей, к текущему состоянию. Расписание ключей идентично самому шифрованию, за исключением того, что функция AddRoundKey заменена функцией AddRoundConstant , которая добавляет заранее определенную константу в каждом раунде.
Хэши Whirlpool [ править ]
Алгоритм Whirlpool претерпел две редакции с момента его первоначальной спецификации 2000 года.
Люди, включившие Whirlpool, скорее всего, будут использовать самую последнюю версию Whirlpool; Хотя в более ранних версиях Whirlpool не было известных недостатков безопасности, самая последняя версия имеет лучшие характеристики эффективности аппаратной реализации, а также, вероятно, будет более безопасной. Как упоминалось ранее, это также версия, принятая в международном стандарте ISO/IEC 10118-3 .
512-битные (64-байтовые) хеши Whirlpool (также называемые дайджестами сообщений ) обычно представляются в виде 128-значных шестнадцатеричных чисел.
Ниже показаны 43-байтовые входные данные ASCII (не включая кавычки) и соответствующие хэши Whirlpool:
Версия | Входная строка | Вычисленный хэш |
---|---|---|
Водоворот-0 | « Быстрая бурая лиса прыгает через ленивую собаку » |
4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D |
Водоворот-Т | « Быстрая бурая лиса прыгает через ленивую собаку » |
3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 |
джакузи | « Быстрая бурая лиса прыгает через ленивую собаку » |
B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35 |
Реализации [ править ]
Авторы предоставляют эталонные реализации алгоритма Whirlpool, включая версию, написанную на C , и версию, написанную на Java . [2] Эти эталонные реализации были опубликованы в открытом доступе. [2]
Однако исследования по анализу безопасности функции Whirlpool показали, что в среднем 8 случайных ошибок достаточно для компрометации обрабатываемого 512-битного хэш-сообщения Whirlpool и секретного ключа HMAC-Whirlpool в контексте Cloud of Вещи (CoT). Это подчеркивает необходимость усиления мер безопасности при его реализации. [5]
Принятие [ править ]
Двумя из первых широко используемых криптографических программ, которые начали использовать Whirlpool, были FreeOTFE , а затем TrueCrypt в 2005 году. [ нужна ссылка ]
VeraCrypt (форк TrueCrypt ) включал Whirlpool (окончательную версию) в качестве одного из поддерживаемых алгоритмов хеширования. [6]
См. также [ править ]
Ссылки [ править ]
- ^ Флориан Мендель1, Кристиан Рехбергер, Мартин Шлеффер, Сорен С. Томсен (24 февраля 2009 г.). Отскок атаки: криптоанализ уменьшенного водоворота и Грёстла (PDF) . Быстрое программное шифрование: 16-й международный семинар.
{{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ) CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Jump up to: Перейти обратно: а б с д и Пауло С.Л.М. Баррето (25 ноября 2008 г.). «Хеш-функция WHIRLPOOL» . Архивировано из оригинала 29 ноября 2017 г. Проверено 9 августа 2018 г.
- ^ Баррето, Пауло СЛМ и Реймен, Винсент (24 мая 2003 г.). «Функция хеширования WHIRLPOOL» . Архивировано из оригинала (ZIP) 26 октября 2017 г. Проверено 9 августа 2018 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Кёдзи, Сибутани и Шираи, Тайдзо (11 марта 2003 г.). «О матрице диффузии, используемой в хеш-функции Whirlpool» (PDF) . Проверено 9 августа 2018 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Ли, В., Гао, З., Гу, Д., Ге, К., Ляо, Л., Чжоу, З., Лю, Ю. и Лю, З. (2017). Анализ безопасности хеш-функции Whirlpool в облаке вещей. Транзакции KSII в Интернете и информационных системах, 11 (1), 536–551. https://doi.org/10.3837/tiis.2017.01.028
- ^ «Водоворот» . Документация VeraCrypt . ИДРИКС . Проверено 9 августа 2018 г.
Внешние ссылки [ править ]
- Хэш-функция WHIRLPOOL на Wayback Machine (архивировано 29 ноября 2017 г.)
- Jacksum на SourceForge , Java-реализации всех трёх редакций Whirlpool.
- Whirlpool на GitHub — открытым исходным кодом на Go. реализация последней версии Whirlpool с
- Реализация хеш-функции Whirlpool в Matlab
- RHash — с открытым исходным кодом , который может вычислять и проверять хэш Whirlpool. инструмент командной строки
- Perl Whirlpool Модуль на CPAN
- Модуль Digest, реализующий алгоритм хеширования Whirlpool в Ruby
- Ironclad — пакет шифрования Common Lisp , содержащий реализацию Whirlpool.
- Стандарт ISO/IEC 10118-3:2004.
- Тестовые векторы для хеша Whirlpool из NESSIE проекта
- Управляемая реализация C#
- Модуль Python Whirlpool