Bash — государственный стандарт, описывающий алгоритмы хэширования стандартизированные в Республики Беларусь. Полное название стандарта — СТБ 34.101.77-2016 «Информационные технологии и безопасность. Алгоритмы хэширования»[1].

Описание

править

Назначение

править

Настоящий стандарт определяет семейство криптографических алгоритмов хэширования, предназначенных для контроля целостности и необратимого сжатия данных. Обрабатываемыми данными являются двоичные слова (сообщения).

Алгоритм хэширования по сообщению произвольной длины строит хэш-значение — слово фиксированной длины. Стороны могут организовать контроль целостности сообщений путем сравнения их хэш-значений с достоверными контрольными хэш-значениями. Изменение сообщения с высокой вероятностью приводит к изменению соответствующего хэш-значения, и поэтому хэш-значения могут использоваться вместо самих сообщений, например в системах ЭЦП.

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

Примечание: Алгоритм хэширования установлен также в СТБ 34.101.31. Переход от алгоритма СТБ 34.101.31 к алгоритмам настоящего стандарта позволит увеличить скорость хэширования по крайней мере на паритетном уровне стойкости и на 64-разрядных аппаратных платформах. Кроме этого, алгоритмы хэширования настоящего стандарта поддерживают все три уровня стойкости алгоритмов ЭЦП, определенных в СТБ 34.101.45, в то время как алгоритм СТБ 34.101.31 поддерживает только первый уровень.

Шаговая функция

править

Алгоритмы хэширования построены по схеме sponge (губка)[2]. Ядром схемы является шаговая функция, которая определяет сложное биективное преобразование слов большой длины.

В настоящем стандарте шаговая функция действует на слова длины 1536. Действие задается алгоритмом bash-f.

Шаговая функция bash-f имеет самостоятельное значение и может использоваться за пределами настоящего стандарта для построения других криптографических алгоритмов.

Уровень стойкости

править

Алгоритмы хэширования настоящего стандарта отличаются уровнем стойкости 𝑙. Это натуральное число, кратное 16 и не превосходящее 256. Алгоритм уровня 𝑙 вычисляет хэш-значения длины 2𝑙, обрабатывая входные слова блоками длины 1536 − 4𝑙. Уровни 𝑙 = 128, 𝑙 = 192 и 𝑙 = 256 являются стандартными, им следует отдавать предпочтение.

При выборе 𝑙 следует учитывать, что для определения сообщения с заданным хэш-значением требуется выполнить порядка   операций, а для определения двух различных сообщений с одинаковыми хэш-значениями требуется выполнить порядка   операций.

Следует учитывать также, что с ростом 𝑙, кроме повышения стойкости, снижается быстродействие алгоритмов. В частности, хэширование на уровне 𝑙 = 256 выполняется примерно в 2 раза медленнее, чем на уровне 𝑙 = 128.

Хэш-значение

править

Длина хэш-значения регулируется уровнем стойкости 𝑙. Если при фиксированном 𝑙 требуются не все, а 𝑛 < 2𝑙 символов хэш-значения, то должны использоваться первые 𝑛 символов.

Все обозначение определены в стандарте (раздел 4).

Вспомогательные алгоритмы

править

Алгоритм bash-s[3]

править

Входные и выходные данные

править

Входными данными алгоритма bash-s являются слова   и числа  . Выходными данными являются преобразованные слова  

Переменные

править

Используются переменные  .

Шаги алгоритма

править

Преобразование слов   состоит в выполнении следующих шагов:

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13. Возвратить  

Алгоритм bash-f[4]

править

Входные и выходные данные

править

Входными данными алгоритма bash-f является слово   .

Выходными данными является преобразованное слово 𝑆.

Слово 𝑆 записывается в виде  

Переменные

править

Используются переменные   и  

Шаги алгоритма

править

Преобразование слова 𝑆 состоит в выполнении следующих шагов:

1.  .
2. Для i = 1, 2,…, 24 выполнить:
1)  ;
2) для j = 0, 1,…, 7:
a) ;
b) ;
3)  
4)  ;
5) если   — четное, то  ;
иначе  .
3. Возвратить S.

Входные и выходные данные

править

Входными данными алгоритма хэширования уровня стойкости 𝑙 является сообщение  

Выходными данными является слово   — хэш-значение сообщения  .

Вспомогательные преобразования и переменные

править

Используются алгоритм bash-f, и переменная  

Шаги алгоритма

править

Хэширование сообщения   на уровне стойкости 𝑙 состоит в выполнении следующих шагов:

1. Дописать к   сначала слово  , а затем   символов  , где   — минимальное неотрицательное целое, для которого   кратно  .
2. Полученное слово   записать в виде  
3.  .
4. Для i = 1, 2,…, n выполнить:
1)  ;
2)   bash-f .
5.  
6. Возвратить  .

Ссылки

править
  1. Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. Архивировано 25 мая 2021 года.
  2. Bertoni G., Daemen J., Peeters M., Van Assche G. Cryptographic sponge functions. — 2011. Архивировано 8 августа 2017 года.
  3. Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 6. Архивировано 25 мая 2021 года.
  4. Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 6—7. Архивировано 25 мая 2021 года.
  5. Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 7. Архивировано 25 мая 2021 года.