Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Криптоалгоритмы / Вычисление функции хэширования по ГОСТ Р 34_11-94

.htm
Скачиваний:
46
Добавлен:
28.06.2014
Размер:
16.05 Кб
Скачать

Вычисление функции хэширования по ГОСТ Р 34.11-94 Главная О фирме Теория Продукты Цены Архив Сервис Тесты Ссылки Шифрование Хеширование ЭЦП Управление ключами ISO 9797 ГОСТ Р.34.11-94 СТБ РБ 1176.1-99 Вычисление функции хэширования по ГОСТ Р 34.11-94 Общие сведения Указанный стандарт определяет процедуру вычисления хэш-функции для любой последовательности двоичных данных.

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

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

Определенная в стандарте функция хэширования используется при реализации систем электронной цифровой подписи на базе ассиметричного криптографического алгоритма по ГОСТ Р 34.10-94 “Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе ассиметричного криптографического алгоритма”.

Обозначения В настоящем документе используются следующие обозначения:

B* Множество всех конечных слов в алфавите B={0,1}. Чтение слов и нумерация знаков алфавита (символов) осуществляется справа налево (номер правого символа в слове равен единице, второго справа - двум и т.д.).

/A| Длина слова A <- B*.

Vk (2) Множество всех бинарных слов длины k.

A||B Конкатенация слов A, B <- B* - слово длины |A|+|B|, в котором левые |A| символов образуют слово A, а правые |B| символов образуют слово B. Можно также использовать обозначение A||B = AB.

Ak Конкатенация k экземпляров слова A(A<- B*).

<N>k Слово длины k, содержащее двоичную запись вычета N(mоd2k) неотрицательного целого числа N.

A` Неотрицательное целое число, имеющее двоичную запись A (A<- b*).

& Побитовое сложение слов одинаковой длины по модулю 2.

&’ Сложение по правилу A&’B = <A`+B`>, (k=|A|+|B|)/

M Последовательность двоичных символов, подлежащая хэшированию (сообщение в системе ЭЦП), M <- B*.

h Хэш-функция, отображающая последовательность M <- B* в слово h(M) <- V256(2).

Ek(A) Результат зашифрования слова A на ключе K с использованием алгоритма шифрования по ГОСТ 28147 в режиме простой замены (K <- V256(2), A <-V64(2)).

H Стартовый вектор хэширования.

e := g Присвоение параметру e значения g.

<- Обозначение принадлежности диапазону.

Общие положения Под хэш-функцией h понимается зависящее от параметра [стартового вектора хэширования H, являющегося словом из V256(2)] отображение:

h : B* -----> V256(2)

Для определения хэш-функции необходимы:

алгоритм вычисления шаговой функции хэширования c т.е. отображения:

c : V256(2) x V256(2) ------> V256(2)

описание итеративной процедуры вычисления значения хэш-функции h.

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

генерацию ключей - слов длины 256 битов с использованием исходных данных слов H, M <- V256(2); шифрующее преобразование - зашифрование 64-битовых подслов слова H на ключах Ki (I=1, 2, 3, 4) с использованием алгоритма по ГОСТ 28147 в режиме простой замены с исходными данными:

H=h4||h3||h2||h1, h1<-V64(2), i=1,4 и набор ключей K1,K2,K3,K4

  в результате данного этапа образуется последовательность:

S=s4||s3||s2||s1,

перемешивающее преобразование результата шифрования с исходными данными в виде:

слово H, M<- V256(2) и слово S <- V256(2),

Процедура вычисления хэш-функции Исходными данными для процедуры вычисления значения функции h является подлежащая хэшированию последовательность M <- B*. Параметром является стартовый вектор хэширования H - произвольное фиксированное слово из V256(2).

Процедура вычисления функции h на каждой итерации использует следующие величины:

M <- B* - часть последовательности M, не прошедшая процедуру хэширования на предыдущих итерациях;

H <- V256(2) - текущее значение хэш-функции;

S <- V256(2) -текущее значение контрольной суммы;

L <- V256(2) - текущее значение длины обработанной на предыдущих итерациях части последовательности M.

    Copyright © 2001 ArgoSoft JSC Авторское право © 2001 ЗАО "АргоСофт"