Jump to content

Кубехэш

Кубехэш [1] — это криптографическая хэш-функция , представленная на конкурс хеш-функций NIST Дэниелом Дж. Бернштейном . CubeHash имеет состояние размером 128 байт, использует конструкцию широкого канала и основан на ARX . Блоки сообщений подвергаются операции XOR преобразованию r с начальными битами 128-байтового состояния, которые затем подвергаются биективному между блоками. Первоначальное предложение NIST («Cubehash8/1») требовало около 200 циклов на байт . [2] После разъяснений NIST автор изменил предложение на Cubehash16/32, который «примерно в 16 раз быстрее, чем CubeHash8/1, легко догоняя как SHA-256, так и SHA-512 на эталонной платформе», сохраняя при этом «комфортную запас безопасности». [3]

CubeHash прошел во второй тур конкурса, но не был выбран в число 5 финалистов. С тех пор Бернштейн дополнительно настроил параметры, и его основная рекомендация — CubeHash512, определенный как CubeHash16+16/32+32–512. [4]

Операция [ править ]

Это описание относится к последней спецификации, а не к документации NIST. [4]

CubeHash имеет 5 параметров, определенный экземпляр обозначается CubeHash i + r / b + f h .

  • я - количество начальных раундов
  • r — количество раундов на блок
  • b — размер блока в байтах, определенный для {1, 2, 3,... 128}
  • f - количество финальных раундов
  • h — размер вывода хэша в битах, определенный для {8, 16, 24, 32, ... 512}

В исходном документе NIST i и f были зафиксированы на уровне 10 r . Устаревшее обозначение CubeHash r / b - h указывает, что i и f неявно равны 10 r .

Внутреннее состояние определяется как пятимерный массив слов (четырехбайтовые целые числа), от 0 до 1 в обоих измерениях. Слова обозначаются координатами от [00000] до [11111]. Слова обрабатываются с прямым порядком байтов.

Внутреннее состояние инициализируется установкой первых трех слов ([00000], [00001], [00010]) в h /8, b и r соответственно, а для всех остальных слов — в ноль. Затем состояние выполняется через i раундов, и этап инициализации завершается. Состояние теперь является вектором инициализации (IV). IV можно сохранить и повторно использовать для заданной комбинации h , b , r .

Сообщение дополняется и разбивается на двухбайтовые блоки. Заполнение добавляет бит 1, за которым следует столько битов 0, сколько необходимо для создания полного блока.

Каждый блок вводится посредством операции XOR к первым b байтам состояния, а затем выполняется r раундов преобразования.

Наконец, 1 подвергается операции XOR со словом состояния [11111], а затем f выполняется раундов преобразования.

Выходной хэш теперь содержится в первых h /8 байтах этого конечного состояния.

Функция округления [ править ]

Иллюстрация функции смешивания
Десять шагов функции смешивания. Два из пяти измерений развернуты.

Функция раунда CubeHash состоит из следующих десяти шагов:

  1. Сложите x[ 0 jklm] в x[ 1 jklm] по модулю 2. 32 , для каждого (j,k,l,m).
  2. Поверните x[ 0 jklm] вверх на 7 бит для каждого (j,k,l,m).
  3. Поменяйте местами x[ 00 klm] на x[ 01 klm] для каждого (k,l,m).
  4. Xor x[ 1 jklm] в x[ 0 jklm] для каждого (j,k,l,m).
  5. Поменяйте местами x[ 1 jk 0 m] на x[ 1 jk 1 m] для каждого (j,k,m).
  6. Сложите x[ 0 jklm] в x[ 1 jklm] по модулю 2. 32 , для каждого (j,k,l,m).
  7. Поверните x[ 0 jklm] вверх на 11 бит для каждого (j,k,l,m).
  8. Поменяйте местами x[ 0 j 0 lm] на x[ 0 j 1 lm] для каждого (j,l,m).
  9. Xor x[ 1 jklm] в x[ 0 jklm] для каждого (j,k,l,m).
  10. Поменяйте местами x[ 1 jkl 0 ] на x[ 1 jkl 1 ] для каждого (j,k,l).

Пример хэшей [ править ]

В этом примере используется CubeHash80+8/1+80-512. Вектор инициализации одинаков для всех хэшей 80+8/1+ f -512 и выглядит следующим образом:

6998f35dfb0930c760948910e626160f36077cf3b58b0d0c57cf193d3341e7b8\
a334805b2089f9ef31ffc4142aef3850fe121839e940a4527d5293a27045ca12\
9358096e81bf70349a90a44a93c33edb14c3e9844a87dbd0bc451df25212b3ac\
6aabe51c5df0f63bddbb8ae8fad3cf0fd52582fbad2e2446094025a521a23d5c

Для хеширования сообщения ASCII «Hello» (шестнадцатеричные: 0x48, 0x65, 0x6c, 0x6c, 0x6f) используется 6 блоков сообщений. В сообщении 5 блоков, и поскольку это входные данные с выравниванием по байтам, для заполнения остается 1 блок. 512-битное хеш-значение:

7ce309a25e2e1603ca0fc369267b4d43f0b1b744ac45d6213ca08e7567566444\
8e2f62fdbf7bbd637ce40fc293286d75b9d09e8dda31bd029113e02ecccfd39b

Небольшое изменение в сообщении, например переворот одного бита, сильно изменит вывод хеш-функции из-за лавинного эффекта . Хеширование сообщения «Привет» (которое отличается от «Привет» только на 1 битовую позицию) дает следующее значение хеш-функции:

01ee7f4eb0e0ebfdb8bf77460f64993faf13afce01b55b0d3d2a63690d25010f\
7127109455a7c143ef12254183e762b15575e0fcc49c79a0471a970ba8a66638

Изменения параметров [ править ]

CubeHash позволяет использовать множество различных параметров для определения вывода хэша. Пользователь сам решает, какие параметры он хочет использовать. Вот несколько примеров хэшей разных сообщений с разными параметрами. Все сообщения находятся в формате ASCII.

message: ""  (the zero-length string)
CubeHash160+16/32+160-512: 4a1d00bbcfcb5a9562fb981e7f7db3350fe2658639d948b9d57452c22328bb32\
                           f468b072208450bad5ee178271408be0b16e5633ac8a1e3cf9864cfbfc8e043a

CubeHash80+8/1+80-512: 90bc3f2948f7374065a811f1e47a208a53b1a2f3be1c0072759ed49c9c6c7f28\
                       f26eb30d5b0658c563077d599da23f97df0c2c0ac6cce734ffe87b2e76ff7294

CubeHash10+1/1+10-512: 3f917707df9acd9b94244681b3812880e267d204f1fdf795d398799b584fa8f1\
                       f4a0b2dbd52fd1c4b6c5e020dc7a96192397dd1bce9b6d16484049f85bb71f2f

CubeHash160+16/32+160-256: 44c6de3ac6c73c391bf0906cb7482600ec06b216c7c54a2a8688a6a42676577d

CubeHash80+8/1+80-256: 38d1e8a22d7baac6fd5262d83de89cacf784a02caa866335299987722aeabc59

CubeHash10+1/1+10-256: 80f72e07d04ddadb44a78823e0af2ea9f72ef3bf366fd773aa1fa33fc030e5cb
message: "Hello"
CubeHash160+16/32+160-512: dcc0503aae279a3c8c95fa1181d37c418783204e2e3048a081392fd61bace883\
                           a1f7c4c96b16b4060c42104f1ce45a622f1a9abaeb994beb107fed53a78f588c

CubeHash80+8/1+80-512: 7ce309a25e2e1603ca0fc369267b4d43f0b1b744ac45d6213ca08e7567566444\
                       8e2f62fdbf7bbd637ce40fc293286d75b9d09e8dda31bd029113e02ecccfd39b

CubeHash10+1/1+10-512: 13cf99c1a71e40b135f5535bee02e151eb4897e4de410b9cb6d7179c677074eb\
                       6ef1ae9a9e685ef2d2807509541f484d39559525179d53838eda95eb3f6a401d

CubeHash160+16/32+160-256: e712139e3b892f2f5fe52d0f30d78a0cb16b51b217da0e4acb103dd0856f2db0

CubeHash80+8/1+80-256: 692638db57760867326f851bd2376533f37b640bd47a0ddc607a9456b692f70f

CubeHash10+1/1+10-256: f63041a946aa98bd47f3175e6009dcb2ccf597b2718617ba46d56f27ffe35d49
message: "The quick brown fox jumps over the lazy dog"
CubeHash160+16/32+160-512: bdba44a28cd16b774bdf3c9511def1a2baf39d4ef98b92c27cf5e37beb8990b7\
                           cdb6575dae1a548330780810618b8a5c351c1368904db7ebdf8857d596083a86

CubeHash80+8/1+80-512: ca942b088ed9103726af1fa87b4deb59e50cf3b5c6dcfbcebf5bba22fb39a6be\
                       9936c87bfdd7c52fc5e71700993958fa4e7b5e6e2a3672122475c40f9ec816ba

CubeHash10+1/1+10-512: eb7f5f80706e8668c61186c3c710ce57f9094fbfa1dbdc7554842cdbb4d10ce4\
                       2fce72736d10b152f6216f23fc648bce810a7af4d58e571ec1b852fa514a0a8e

CubeHash160+16/32+160-256: 5151e251e348cbbfee46538651c06b138b10eeb71cf6ea6054d7ca5fec82eb79

CubeHash80+8/1+80-256: 94e0c958d85cdfaf554919980f0f50b945b88ad08413e0762d6ff0219aff3e55

CubeHash10+1/1+10-256: 217a4876f2b24cec489c9171f85d53395cc979156ea0254938c4c2c59dfdf8a4

Векторы инициализации для четырех показанных вариантов также различны. Например, вектор инициализации для CubeHash80+8/1+80-512 можно увидеть выше, а IV для CubeHash80+8/1+80-256:

830b2bd5273d616fd785876a4a500218a5388963eeb702fb47547842459f8d89\
8727a1c8ba40bd48cef47fe82543c2735c033052ae9fcd632d4541bde6b6cb0d\
cb8a9cdf579f5b67b2ae00968180af6e51ebdf0ca597cd2bf91f981f7ab29a62\
01ad72d946e6c075c6d1337e0a293d6f90c438ac38be153f32aa288ffc5eca8a

Безопасность [ править ]

Сила этой функции увеличивается по мере уменьшения b до 1 и увеличения r . Таким образом, CubeHash 8/1-512 сильнее (более безопасен), чем CubeHash 1/1-512, а CubeHash 1/1-512 сильнее, чем CubeHash 1/2-512. Самая слабая версия этого алгоритма — CubeHash 1/128- h . Однако существует компромисс между безопасностью и временем. Более безопасной версии потребуется больше времени для вычисления хэш-значения, чем ослабленной версии.

Ссылки [ править ]

  1. ^ Дэниел Дж. Бернштейн (14 сентября 2009 г.). «Спецификация CubeHash (2.B.1)» (PDF) .
  2. ^ Дэниел Дж. Бернштейн (28 октября 2008 г.). «Оценки эффективности CubeHash (2.B.2)» (PDF) .
  3. ^ Дэниел Дж. Бернштейн (15 июля 2009 г.). «Настройка параметров CubeHash: в 16 раз быстрее» (PDF) .
  4. ^ Jump up to: Перейти обратно: а б Дэниел Дж. Бернштейн. «Введение в CubeHash» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f007bd6e8d143b3f5d334ca5110b50a7__1692297180
URL1:https://arc.ask3.ru/arc/aa/f0/a7/f007bd6e8d143b3f5d334ca5110b50a7.html
Заголовок, (Title) документа по адресу, URL1:
CubeHash - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)