Хеш-функции на основе клеточных автоматов

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Хеш-функции на основе клеточных автоматов — разновидность хеш-функций, использующая для вычисления клеточные автоматы. Использование клеточных автоматов обеспечивает высокий уровень параллелизма и, следовательно, позволяет достичь высоких скоростей, что необходимо в условиях ограниченных вычислительных мощностей и жестких требований к энергопотреблению (например, Интернет вещей)[1]. Хеш-функции на основе клеточных автоматов обладают хорошим лавинным эффектом[2]. Использование клеточных автоматов позволяет добиться устойчивости к атакам временного анализа[3].

В криптографии наибольший интерес представляют аддитивные клеточные автоматы (сочетание операций XOR и XNOR в его переходной функции) благодаря таким свойствам, как адаптивность, обратимость и масштабируемость[4].

Пример Алгоритма[править | править код]

Алгоритм получает на вход сообщение произвольного размера и ключ , размером: 128, 192 или 256 бит и возвращает хешированное значение ключа.

Базовое описание алгоритма[править | править код]

  1. Первоначальное сообщение должно быть дополнено следующим образом:
    дополнение можно производить простым заполнением недостающих разрядов нулями.
    Обозначим дополненное сообщение как .
  2. Аналогично дополняется ключ :
    Обозначим дополненный ключ как .
  3. Сообщение разбивается на блоки по 512 бит.
  4. Каждый 512 битный блок, полученный на предыдущем шаге разбивается ещё раз на 8 подблоков по 64 бита.
    Разделение на 64 битные подблоки
  5. К каждому 512 блоку применяется правило 30.
  6. Выход пункта 5 вместе с 512 битным ключом поступают в функцию трансформации (ФТ).
  7. Этот результат подвергается операции XOR с результатом пункта 5 для следующего 512 битного блока.
  8. Ключ для последующих раундов получается с помощью поворота ключа предыдущей итерации, который выполняет циклический сдвиг битов на 1.
  9. Шаги 6, 7 и 8 повторяются, пока не кончатся блоки сообщения по 512 бит, то есть пока всё сообщение не будет хешировано.
    Диаграмма описания работы алгоритма

Описание функции трансформации[править | править код]

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

Схематическое изображение отображения внутри одного раунда

Ниже приведен пример возможной трансформации[5], оперирующей с отдельными 64 битными подблоками.

  1. :
    Это означает, что байты из напрямую отображаются в .
  2. или
    Если раунд нечетный, то используется иначе .
    .
  3. или
    Если раунд нечетный, то используется иначе .
    .
  4. .
  5. или
    Если раунд нечетный, то используется иначе .
    Функция определена в пункте 1.
  6. .
  7. .
  8. или
    Если раунд нечетный, то используется иначе
    Функция определена в пункте 4.

Где ROTL — циклический сдвиг битов влево, ROTR — циклический сдвиг битов вправо.

Внутри этой функции преобразования количество раундов распределяется динамически. Они рассчитываются по формуле:

= количество '1' в блоке сообщения(512 битовом) количество '0' в ключе (512 битовом) .

Анализ безопасности[править | править код]

Наиболее распространенное правило 30, демонстрирующее желаемое поведение, необходимое в криптографических примитивах неспособно обеспечить полный лавинный эффект и случайность. Для улучшения этих параметров применяется объединение других нелинейных правил клеточного автомата с правилом 30. Гибридные правила демонстрируют желательный строгий лавинный критерий для очень большого числа итерации. Введение функции трансформации с комбинацией правил клеточного автомата достигает полного лавинного эффекта за небольшое число итераций и проходит все статистические тесты, распространяемые Национальным институтом Стандартов и технологий[6].

Примечания[править | править код]

  1. Жуков А.Е. КЛЕТОЧНЫЕ АВТОМАТЫ В КРИПТОГРАФИИ Часть 2. (рус.) // Научно-технический вестник информационных технологий, механики и оптики. — doi:10.21681/2311-3456-2017-4-47-66. Архивировано 26 ноября 2020 года.
  2. Alaa Eddine Belfedhal, Kamel Mohamed Faraoun. Building Secure and Fast Cryptographic Hash Functions Using Programmable Cellular Automata (англ.) // CIT. Journal of Computing and Information Technology. — 2015-12-18. — Vol. 23, iss. 4. — P. 317–328. — ISSN 1846-3908. — doi:10.2498/cit.1002639.
  3. Somanath Tripathy, S. Nandi. LCASE: Lightweight Cellular Automata-based Symmetric-key Encryption // Int. J. Netw. Secur.. — 2009.
  4. J. Randall and M. Szydlo. Collisions for SHAO, MDS, HAVAL, MD4, and RIPEMD, but SHA1 still secure. A technical note on the RSA website, August 2004.
  5. K. Rajeshwaran, K. Anil Kumar. Cellular Automata Based Hashing Algorithm (CABHA) for Strong Cryptographic Hash Function // 2019 IEEE International Conference on Electrical, Computer and Communication Technologies (ICECCT). — 2019-02. — С. 1–6. — doi:10.1109/ICECCT.2019.8869146. Архивировано 21 мая 2022 года.
  6. N. Jamil, R. Mahmood, M. R. Z’aba, N. I. Udzir, Zuriati Ahmad Zukarnaen. A New Cryptographic Hash Function Based on Cellular Automata Rules 30 , 134 and Omega-Flip Network (англ.). www.semanticscholar.org. Дата обращения: 18 ноября 2020.