Область применения
В указанном стандарте
устанавливается процедуры выработки и проверки
электронной цифровой подписи (ЭЦП) сообщений
(документов), передаваемых по незащищенным
телекоммуникационным каналам общего
пользования в системах обработки информации
различного назначения, на базе ассиметричного
криптографического алгоритма с применением функции хэширования.
Внедрение системы ЭЦП на базе указанного
стандарта обеспечивает защиту передаваемых
сообщений от подделки, искажения и однозначно
позволяет доказательно подтвердить подпись
лица, подписавшего сообщение.
Обозначения
В стандарте используются
следующие обозначения:
B*
Множество всех конечных слов в
алфавите B={0,1}. Чтение слов и нумерация знаков
алфавита (символов) осуществляется справа налево
(номер правого символа в слове равен единице,
второго справа — двум и т.д.).
/A|
Длина слова A <- B*.
Vk (2)
Множество всех бинарных слов длины k.
z (mоd n)
Наименьшее по значению
неотрицательное число, сравнимое с Z по
модулю числа n.
A||B
Конкатенация слов A, B <- B* — слово
длины |A|+|B|, в котором левые |A| символов
образуют слово A, а правые |B| символов
образуют слово B. Можно также использовать
обозначение A||B = AB.
Ak
Конкатенация k экземпляров слова A(A<-
B*).
A`
Неотрицательное целое число, имеющее
двоичную запись A (A<- b*).
M
Передаваемое сообщение, M <- B*.
M1
Полученное сообщение, M1
<- B*.
h
Хэш-функция, отображающая
последовательность M <- B* в слово h(M) <- V256(2).
p
Простое число, 2509 < p < 2512
или 21020 < p < 21024.
q
Простое число, 2254 < q < 2256
и q является делителем для (p-1).
a
Целое число, 1 < a < p-1, при этом aq(mоd
p) =1.
k
Целое число, 0 < k < q.
dmin
Наименьшее целое число, не
меньшее, чем d.
dmax
Наибольшее целое число, не
большее, чем d.
e := g
Присвоение параметру e значения g.
x
Секретный ключ пользователя для
формирования подписи, 0 < x < q.
у
Открытый ключ пользователя для
проверки подписи, y = ax (mоd p).
<-
Обозначение принадлежности
диапазону.
Общие положения
Система ЭЦП базируется на методах
криптографической защиты данных с
использованием хэш-функции.
Алгоритм вычисления хэш-функции
сообщения определяется ГОСТ Р 34.11-94.
Процедуры цифровой подписи допускают как
программную, так и аппаратную реализацию.
Система ЭЦП включает в себя процедуры
выработки и проверки подписи под данным
сообщением.
Цифровая подпись, состоящая из двух целых
чисел, представленных в виде слов в алфавите B,
вычисляется с помощью определенного набора
правил, изложенных подробно в стандарте.
Числа p, q и a являются параметрами
системы и вырабатываются по определенному
алгоритму. Данные числа не являются секретными.
Конкретный набор их значений может быть общим
для группы пользователей. Целое число k,
которое генерируется в процедуре подписи
сообщения, должно быть секретным и должно быть
уничтожено сразу после выработки подписи. Число k
снимается с физического датчика случайных чисел
или вырабатывается псевдослучайным методом с
использованием секретных параметров.
Процедура выработки подписи
Текст сообщения, представленный в
виде двоичной последовательности символов,
подвергается обработке по определенному
алгоритму, в результате которого формируется ЭЦП
для данного сообщения.
Процедура подписи сообщения включает в себя
следующие этапы:
вычисляется h(M) — хэш-функция сообщения M;
вырабатывается целое число k, 0 < k < q;
вычисляются значения:
r
= ak(mоd p) и r = r (mоd q)
- с использованием секретного ключа x
пользователя (отправителя сообщения) вычислить
значение:
s = (xr +kh(M)`)(mоd q)
- подписью для сообщения M является вектор:
<r>256 || <s>256
Отправитель направляет адресату
цифровую последовательность символов, состоящую
из двоичного представления текста сообщения и
присоединенной к нему ЭЦП.
Процедура проверки подписи
Получатель должен проверить
подлинность сообщения и подлинность ЭЦП,
осуществляя ряд операций (вычислений).
Это возможно при наличии у получателя открытого
ключа отправителя, пославшего сообщение.
Процедура проверки включает в себя следующие
этапы:
0 < s < q и 0 < r <
q
- вычисление h(M1) -хэш-функцию полученного
сообщения;
- вычислить значение:
v = (h(m1)`)q-2(mоd q)
z1 = sv (mоd q) и z2 =
(q-r) v (mоd q)
u = (aZ1 yZ2
(mоd p)) (mоd q)
r = u
При совпадении значений r и u
получатель принимает решение о том, что
полученное сообщение подписано данным
отправителем и в процессе передачи не нарушена
целостность сообщения, т.е. M1
= M. В противном случае подпись считается
недействительной.
В тексте стандарта подробно описаны процедуры
генерации всех необходимых чисел для описанных
выше процедур вычисления и проверки подписи с
контрольными примерами для проверки
правильности функционирования.