VSH

Материал из testwiki
Версия от 09:56, 22 мая 2022; imported>InternetArchiveBot (Спасено источников — 8, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.7)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

В криптографии очень гладкая хеш-функция (англ. Very Smooth Hash (VSH)) — n-битная эффективная криптографическая функция хеширования, разработанная в 2005 году Скоттом Котини, Лестрой Арьен и Роном Штайнфельдом. Является устойчивой к коллизиям в предположении большой вычислительной сложности нахождения нетривиального квадратного корня очень гладкого числа по модулю n. [1] Под понятием очень гладкой функции подразумевается, что граница гладкости является фиксированной полиномиальной функцией от n. Данный алгоритм хеширования предполагает одиночное умножение на Ω(n) бит сообщения и использует арифметику RSA-типа, что избавляет от необходимости отдельного хранения кода хеш-функции. Поэтому данный алгоритм полезен во встроенных средах, где пространство кода ограничено. Очень гладкая хеш-функция также может быть использована для создания односторонней функции с потайным входом, которая может быть применена в схемах подписи для ускорения проверки и усиления конфиденциальности.

VSSR и VSN

Для VSH основной математической проблемой является устойчивость к коллизиям, которая по сути состоит в извлечении корней по модулю n из очень гладких чисел, называемых очень гладкими корнями (VSSR). В свою очередь, проблема вычисления очень гладкого корня по модулю n тесно связана с факторизацией целых чисел с использованием общего метода решета числового поля.[2][3]

Для фиксированных постоянных c и n целое число m называется очень гладким числом, если все простые множители m не больше чем (log n)c. Целое число b является очень гладким квадратичным остатком по модулю n, если наибольшее простой множитель b — не более чем (log n)c и существует целое x такое что bx2modn. Целое x называют очень корнем квадратным по модулю  b.

Нас интересуют только корни где x2n. Так как, если x2 < n, то корень может быть легко вычислен, используя поле характеристики 0. Вычисление очень гладкого корня является следующей задачей: пусть n является произведением двух простых чисел примерно одного размера и пусть k(logn)c, а p1=2,p2=3,p3=5, последовательность простых чисел. По данному n необходимо найти xn*, такое, что x2i=0kpiei и хотя бы один из e0,…,ek будет нечетным.

Пример VSN и VSSR

Пусть зафиксированы следующие параметры: c=5 и n=31.

Тогда m1=35=57 очень гладкое число от данных параметров, потому что (log31)5=˙7.37 больше чем все простые множители m1. С другой стороны, m2=55=511 не является очень гладким числом от c=5 и n=31.

Целое число b1=9 является очень гладким квадратичным остатком по модулю n, потому что это число очень гладкое (от c,n) и существует x1=3, такое что x12=b1 (mod n). Это тривиальный квадратный корень, потому что 32≱n и поэтому модуль при возведении в квадрат не учитывается.

Целое число b2=15 также является квадратичным остатком по модулю n. Все простые множители меньше чем 7.37, а все квадратные корни по модулю равны x2=20, так как 202=40015 (mod n). Задача VSSR состоит в том, чтобы найти x2 по данным b2 и n. И вычислительно так же сложна, как факторизация n.

VSH, базовый алгоритм

Пусть p1=2,p2=3, последовательность простых чисел. Пусть k длина блока, наибольшее целое число, такое, что i=1kpi<n. Пусть m есть -битное сообщение, состоящее из (m1,,m), которое должно быть хешировано, причем <2k.Чтобы вычислить хеш m[4]:

  1. x0 = 1
  2. Пусть L наименьшее целое число, большее или равное l/k, будет числом блоков. Пусть mi=0 для l<iLk
  3. Пусть =i=1kli2i1 с i{0,1} — бинарное представление сообщения длины и определим mLk+i=i для 1ik.
  4. для каждого j = 0, 1,…, L вычисляем xj+1=xj2i=1kpimjk+imodn
  5. возвращаем xL + 1.

Функция на шаге 4 называется функцией сжатия.

Свойства VSH

  • Не нужно знать заранее длину сообщения.
  • Сложность обнаружения коллизий равна сложности нахождения очень гладкого корня, поэтому VSH устойчива к коллизиям. Стойкость к коллизиям единственное доказанное свойство для VSH.[5][6]
  • Функция сжатия не является стойкой к коллизиям. Однако хеш-функция устойчива к коллизиям на основе VSSR-предположения. Следующая версия VSH* использует стойкую к коллизиям функцию сжатия и работает в 5 раз быстрее на коротких сообщениях.[7]
  • VSH мультипликативна:

Пусть x, y, and z — трехбитные строчки равной длины, где z состоит только из нулевых бит и удовлетворяет x AND y = z. Тогда H(z)H(x OR y) ≡ H(x)H(y) (mod n). VSH уступает классической атаке на временную память, которая применяется к мультипликативным и аддитивным хешам.[8]

Вариации VSH

Было предложено несколько улучшений, ускорений и более эффективных вариантов VSH[9]. Ни один из них не меняет основную концепцию функции:

  • Кубический VSH (вместо квадратичного).
  • VSH с увеличением количества простых чисел.
  • VSH с вычисленным произведением простых чисел.
  • Быстрый VSH.
  • Быстрый VSH с увеличенным числом блоков.
  • VSH-DL

VSH-DL - VSH с дискретным логарифмом, у которого нет односторонней функции с потайным входом, его безопасность зависит от сложности нахождения дискретного логарифма по модулю простого числа p.

Very Smooth Number Discrete Logarithm (VSDL) — это дискретный логарифм от некоторого VSN, взятый по модулю некоторого числа n.

Аналогично введенным ранее обозначениям, возьмем pi как i-е простое число. Пусть c — фиксированная постоянная и p, q — простые числа, такие, что p=2q+1 и k(logp)c. VSDL-задача: по данному p найти целые e1,...,ek, такие, что 2e1i=2kpieimodp, где |ei|<q для всех i=1,...,k, причем, хотя бы один из e1,...,ek ненулевой.

Предположение VSDL состоит в том, что не существует вероятностного полиномиального по времени алгоритма, решающего VSDL. Существует тесная связь между сложностью вычисления VSDL и сложностью вычисления дискретного логарифма по модулю p.

См. также

Примечания

Шаблон:Примечания

Литература