Алгоритмы хэширования BashВ информационных системах республики для управления электронными цифровыми подписями (ЭЦП) используется СТБ 34.101.45 «Информационные технологии и безопасность. Алгоритмы электронной цифровой подписи на основе эллиптических кривых». Этот стандарт определяет три уровня стойкости: l = 128, l = 192 и l =256. Для того, чтобы поддержать уровень l, требуется использовать функцию хэширования с 2l-битовыми значениями. СТБ 34.101.31 определяет 256-битовую хэш-функцию belt-hash, но 384- и 512-битовые функции хэширования пока в нашей стране не стандартизованы. Отметим, что ЭЦП на высоких уровнях стойкости востребованы уже сейчас. Например, сверхнадежные подписи нужны для построения долговременных архивных хранилищ. Для поддержки ЭЦП на уровнях l = 192 и l = 256 было решено разработать семейство алгоритмов хэширования. Это семейство получило рабочее название Bash (Hash c заменой H на B). Алгоритмы Bash строятся по схеме sponge (губка), предложенной Г. Бертони, Дж. Дэменом, М. Питерсом и Ж. Ван Ашем. Базовым композиционным элементом Bash является шаговая функция Bash-f. Эта функция обновляет хэш-состояние по очередному блоку обрабатываемых данных. Функция строится с помощью логических операций (¬, ∨, ∧) над 64-разрядными словами, циклических сдвигов этих слов и поразрядных исключающих сложений (⊕). Таким образом, функция относится к классу LRX (Logical + Rotation + Xor). Выбранная платформа sponge + LRX была с успехом применена в алгоритмах хэширования Keccak (SHA-3). Эти алгоритмы стандартизированы в США в 2015 году. Считая семейство Keccak творческой удачей и с уважением относясь к многочисленным криптографическим находкам его разработчиков, мы, тем не менее, решили продолжить традицию национальной криптографии и разработать собственное семейство. По нашим оценкам, производительность Bash близка к производительности Keccak. Текущие гарантии стойкости, выраженные в оценках снизу для числа активных S-блоков, для Bash и Keccak также сопоставимы. Уровни стойкости алгоритмов Bash не исчерпываются числами 192 и 256 – разрешены любые значения из множества {16, 32, 48,…, 256}. Алгоритм уровня l обрабатывает данные блоками из 1536 – 4l битов и возвращает хэш-значение длины 2l. Схема sponge в Bash настроена следующим образом:
Шаговая функция Bash-f представляет собой биекцию на {0,1}1536. Подлежащее преобразованию двоичное слово разбивается на 24 машинных слова длины 64. Эти слова записываются в матрицу 3 x 8: Столбцы матрицы называются вертикальными плоскостями, строки – горизонтальными. Действие Bash-f состоит в 24-кратном применении тактовых подстановок. Тактовая подстановка действует следующим образом:
Композиционные элементы Bash-f мы выбирали в соответствии с криптографическим принципом, который часто называют rigidity и который можно описать известным рекламным слоганом: "при всем богатстве выбора другой альтернативы нет". Мы последовательно исключали различные конфигурации композиционных элементов, используя разумные критерии их качества. В конце концов мы оставляли несколько подходящих конфигураций и всякий раз выбирали первую из них. В какой-то момент возникло ощущение, что мы не разрабатываем шаговую функцию а восстанавливаем ее, объективно существующую. Такое ощущение – это еще одно, может быть даже более точное, объяснение принципа rigidity. |
Новости
26.05.2023
XХVIII научно-практическая конференция
29.04.2023
TIBO 2023
02.01.2023
Программный комплекс ЭАДП
27.12.2022
С Новым годом!
21.11.2022
Программный инструментарий
13.09.2022
XIII Международная научная конференция
05.09.2022
Компьютерный анализ данных и моделирование
21.02.2022
Вакансии
17.12.2021
Избрание директора НИИ ППМИ Ю.С. Харина академиком НАН Беларуси
|