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

Хеш-функции на основе клеточных автоматов — разновидность хеш-функций, использующая для вычисления клеточные автоматы. Использование клеточных автоматов обеспечивает высокий уровень параллелизма и, следовательно, позволяет достичь высоких скоростей, что необходимо в условиях ограниченных вычислительных мощностей и жестких требований к энергопотреблению (например, Интернет вещей)[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.