Bash — государственный стандарт, описывающий алгоритмы хэширования стандартизированные в Республики Беларусь. Полное название стандарта — СТБ 34.101.77-2016 «Информационные технологии и безопасность. Алгоритмы хэширования».
Описание
Назначение Настоящий стандарт определяет семейство криптографических алгоритмов хэширования, предназначенных для контроля целостности и необратимого сжатия данных. Обрабатываемыми данными являются двоичные слова (сообщения).
Алгоритм хэширования по сообщению произвольной длины строит хэш-значение — слово фиксированной длины. Стороны могут организовать контроль целостности сообщений путем сравнения их хэш-значений с достоверными контрольными хэш-значениями. Изменение сообщения с высокой вероятностью приводит к изменению соответствующего хэш-значения, и поэтому хэш-значения могут использоваться вместо самих сообщений, например в системах ЭЦП.
Алгоритмы хэширования могут дополнительно использоваться при построении систем имитозащиты, генераторов случайных и псевдослучайных чисел, протоколов аутентификации, доказательств вычислительной работы и др.Примечание:
Алгоритм хэширования установлен также в СТБ 34.101.31. Переход от алгоритма СТБ 34.101.31 к алгоритмам настоящего стандарта позволит увеличить скорость хэширования по крайней мере на паритетном уровне стойкости и на 64-разрядных аппаратных платформах. Кроме этого, алгоритмы хэширования настоящего стандарта поддерживают все три уровня стойкости алгоритмов ЭЦП, определенных в СТБ 34.101.45, в то время как алгоритм СТБ 34.101.31 поддерживает только первый уровень.
Шаговая функция Алгоритмы хэширования построены по схеме sponge (губка). Ядром схемы является шаговая функция, которая определяет сложное биективное преобразование слов большой длины.
В настоящем стандарте шаговая функция действует на слова длины 1536. Действие задается алгоритмом bash-f.
Шаговая функция bash-f имеет самостоятельное значение и может использоваться за пределами настоящего стандарта для построения других криптографических алгоритмов.
Уровень стойкости Алгоритмы хэширования настоящего стандарта отличаются уровнем стойкости 𝑙. Это натуральное число, кратное 16 и не превосходящее 256. Алгоритм уровня 𝑙 вычисляет хэш-значения длины 2𝑙, обрабатывая входные слова блоками длины 1536 − 4𝑙. Уровни 𝑙 = 128, 𝑙 = 192 и 𝑙 = 256 являются стандартными, им следует отдавать предпочтение.
При выборе 𝑙 следует учитывать, что для определения сообщения с заданным хэш-значением требуется выполнить порядка операций, а для определения двух различных сообщений с одинаковыми хэш-значениями требуется выполнить порядка операций.
Следует учитывать также, что с ростом 𝑙, кроме повышения стойкости, снижается быстродействие алгоритмов. В частности, хэширование на уровне 𝑙 = 256 выполняется примерно в 2 раза медленнее, чем на уровне 𝑙 = 128.
Хэш-значение Длина хэш-значения регулируется уровнем стойкости 𝑙. Если при фиксированном 𝑙 требуются не все, а 𝑛 < 2𝑙 символов хэш-значения, то должны использоваться первые 𝑛 символов.
Все обозначение определены в стандарте (раздел 4).
Вспомогательные алгоритмы
Алгоритм bash-s
Входные и выходные данные Входными данными алгоритма bash-s являются слова и числа . Выходными данными являются преобразованные слова
Переменные Используются переменные .
Шаги алгоритма Преобразование слов состоит в выполнении следующих шагов:
Возвратить
Алгоритм bash-f
Входные и выходные данные Входными данными алгоритма 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. Возвратить .
Ссылки
Категория:Стандарты Беларуси