Bash (хэш-функция) (Bash (]zo-srutenx))
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 являются слова и числа . Выходными данными являются преобразованные слова
Переменные
[править | править код]Используются переменные .
Шаги алгоритма
[править | править код]Преобразование слов состоит в выполнении следующих шагов:
- Возвратить
Алгоритм bash-f[4]
[править | править код]Входные и выходные данные
[править | править код]Входными данными алгоритма bash-f является слово .
Выходными данными является преобразованное слово 𝑆.
Слово 𝑆 записывается в виде
Переменные
[править | править код]Используются переменные и
Шаги алгоритма
[править | править код]Преобразование слова 𝑆 состоит в выполнении следующих шагов:
- 1. .
- 2. Для i = 1, 2,…, 24 выполнить:
- 1) ;
- 2) для j = 0, 1,…, 7:
- a);
- b);
- 3)
- 4) ;
- 5) если — четное, то ;
- иначе .
- 3. Возвратить S.
Алгоритмы хэширования[5]
[править | править код]Входные и выходные данные
[править | править код]Входными данными алгоритма хэширования уровня стойкости 𝑙 является сообщение
Выходными данными является слово — хэш-значение сообщения .
Вспомогательные преобразования и переменные
[править | править код]Используются алгоритм bash-f, и переменная
Шаги алгоритма
[править | править код]Хэширование сообщения на уровне стойкости 𝑙 состоит в выполнении следующих шагов:
- 1. Дописать к сначала слово , а затем символов , где — минимальное неотрицательное целое, для которого кратно .
- 2. Полученное слово записать в виде
- 3. .
- 4. Для i = 1, 2,…, n выполнить:
- 1) ;
- 2) bash-f.
- 5.
- 6. Возвратить .
Ссылки
[править | править код]- ↑ Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. Архивировано 25 мая 2021 года.
- ↑ Bertoni G., Daemen J., Peeters M., Van Assche G. Cryptographic sponge functions. — 2011. Архивировано 8 августа 2017 года.
- ↑ Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 6. Архивировано 25 мая 2021 года.
- ↑ Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 6—7. Архивировано 25 мая 2021 года.
- ↑ Информационные технологии и безопасность. Алгоритмы хэширования. — 2016. — С. 7. Архивировано 25 мая 2021 года.
На эту статью не ссылаются другие статьи Википедии. |