Системы обработки информации

«Системы обработки информации. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма»

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

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

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

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

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

Дата введения 1995-01-01

1 ОБЛАСТЬ ПРИМЕНЕНИЯ

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

Внедрение системы ЭЦП на базе настоящего стандарта обеспечивает защиту передаваемых сообщений то подделки, искажения и однозначно позволяет доказательно подтвердить подпись лица, подписавшего сообщение.

2 НОРМАТИВНЫЕ ССЫЛКИ

В настоящем стандарте использованы ссылки на следующий стандарт:

ГОСТ Р 34.11-94 Информационная технология. Криптографическая защита информации. Функция хеширования.

3 ОБОЗНАЧЕНИЯ

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

b*-множество всех конечных слов в алфавите b={0,1}.

|A|-длина слова AÎb*.

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

z (mod n)-наименование по значению неотрицательное число, сравнимое с z по модулю числа n.

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

А-неотрицательное целое число, имеющее двоичную запись А (АÎb* ) (под длиной числа будем понимать номер старшего значащего бита в двоичной записи числа).

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

Аk – конкатенация k экземпляров слова А (АÎb* ).

М – передаваемое сообщение, МÎb* .

М1 -полученное сообщение, М1 Îb* 1) .

h – хэш-функция, отображающая сообщение М в слово h(M)ÎV256(2)

1) Отправляемые и получаемые последовательности, в том числе сообщения и подписи, могут отличаться друг от друга из-за случайных или преднамеренных искажений.

р- простое число, 2509 < р < 2512 либо 21020 < р <21024 .

q- простое число, 2254 < q < 2256 и q является делителем для (p-1)

а- целое число, 1 < а < р-1, при этом аq (mod p)=1.

k- целое число, 0< k < q.

édù-наименьшее целое число, не меньше, чем d.

ëdû-наименьшее целое число, не большее, чем d

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

х- секретный ключ пользователя для формирования подписи.

0 < х < q.

у – открытый ключ пользователя для проверки подписи.

у = аx (mod p).

4 ОБЩИЕ ПОЛОЖЕНИЯ

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

Алгоритмы вычисления функции хэширования установлен в ГОСТ Р 34.11.

Процедуры цифровой подписи допускают как программную, так и аппаратную реализацию.

Система ЭЦП включает в себя процедуры выработки и проверки подписи под данных сообщением.

Цифровая подпись, состоящая из двух целых чисел, представленных в виде слов в алфавите b, вычисляется с помощью определенного набора правил, изложенных в тексте стандарта .

Числа р, q и а, являющиеся параметрами системы, должны быть выбраны (выработаны) по процедуре, описанной в пункте 7.

Числа р, q и а не являются секретными. Конкретный набор их значений может быть общим для группы пользователей. Целое число k, которое генерируется в процедуре подписи сообщения , должно быть секретным и должно быть уничтожено сразу после выработки подписи. Число k снимается с физического датчика случайных чисел или вырабатывается псевдослучайным методом с использованием секретных параметров.

5 ПРОЦЕДУРА ВЫРАБОТКИ ПОДПИСИ

Текст сообщения, представленный в виде двоичной последовательности символов, подвергается обработке по определенному алгоритму, в результате которого формируется ЭЦП для данного сообщения.

Процедура подписи сообщения включает в себя следующие этапы:

1. Вычислить h(M) -значение хеш-функции h от сообщения М.

Если h(M)(mod q)=0, присвоить h(M) значение 0255 1.

2. Выработать целое число k, 0<k < q.

3. Вычислить два значения :

r=ak (mod p) и r’ = r (mod q).

Если r’ =0, перейти к этапу 2 и выработать другое значение числа k.

4. С использованием секретного ключа х пользователя (отправителя

сообщения) вычислить значение

s= (xr’ + kh(M))(mod q).

Если s=0, перейти к этапу 2, в противном случае закончить работу алгоритма.

Подписью сообщения М является вектор < r’ >256 || < s >256 .

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

6 ПРОЦЕДУРА ПРОВЕРКИ ПОДПИСИ

Получатель должен проверить подлинность сообщения и подлинность ЭЦП, осуществляя ряд операций (вычислений).

Это возможно при наличии у получателя открытого ключа отправителя, пославшего сообщение.

Процедура проверки включает в себя следующие этапы:

1. Проверить условие:

0< s < q и 0 < r’ < q.

Если хотя бы одно из этих условий не выполнено, то подпись считается недействительной.

2. Вычислять h(M1 )-значение хеш-функции h от полученного сообщения М1 .

Если H(M1 )(mod q)=0, присвоить h(M1 ) значение 0255 1.

3. Вычислить значение

v= (h(M1 ))q-2 (mod q)

4. Вычислить значения:

z1 = sv (mod q) и

z2 = (q-r’ ) v (mod q)

5. Вычислить значение

u = (as1 ys2 (mod p)) (mod q)

6. Проверить условие: r’ = u.

При совпадении значений r и u получатель принимает решение о том, что полученное сообщение подписано данным отправителем и

в процессе передачи не нарушена целостность сообщения, т.е. М =М

В противном случае подпись считается недействительной.

7 ПРОЦЕДУРЫ ПОЛУЧЕНИЯ ЧИСЕЛ p, q И а

Получение простых чисел осуществляется с использованием линейного конгруэнтного датчика по модулю 216 или по модулю 232 (xn = bxn-1 + с). При этом пользователь должен задать начальное состояние х0 и параметр датчика с.

Заданные величины необходимо зафиксировать (запомнить) для возможности проведения проверки того, что простые числа получены по установленной процедуре, Ниже изложены процедуры получения параметров p, q и а.

7.1 Процедура А

Процедура позволяет получать простые числа p длины t ³ 17 битов с простым делителем q длины ë t/2 û битов числа р-1.

Получение чисел осуществляется с использованием линейного конгруэнтного датчика хn = (19381 xn-1 + с) (mod 216 ) Задаются число х0 с условием 0 < x0 < 216 и нечетное число с условием 0 < с < 216

Процедура вычисления включает в себя следующие шаги:

1.Y0 : = X0

2. Вычислить последовательность чисел (t0 , t1 , …, t5 ) по правилу:

t0 := t.

Если ti ³ 17, то ti+1 = ë ti /2 û

Если ti < 17, то s := 1.

3. Найти наименьшее простое число р длины t битов.

4. m := s-1.

5. Вычислить rm = étm /16ù

6. Вычислить последовательность (y1 ,……,yrm ) по рекурсивному правилу yi+1 = (19381y1 + c) (mod216)

7. Вычислить ym =S y1 2161

8. y0 := yrm

9. Вычислить N =é2t-1 / pm+1 ù+ë(2t-1 ym )/(pm+1 216r )û Если N нечетно , то N := N+1

10. k := 0

11. Вычислить рm = pm+1 (N+k) + 1

12. Если рm > 2t , то перейти к шагу 6

13. Проверить условия:

2p (N+k) (mod pm ) = 1,

2(N+k) (mod pm ) ¹ 1.

Если хотя бы одно из условий не выполнено , то k :=k + 2 и перейти к шагу 11.

Если оба условия выполнены, то m := m-1.

14. Если m³0 , то перейти к шагу 5.

Если m < 0, то p0– искомое простое число р и р1– искомое простое число q.

7.2 Процедура А’

Процедура позволяет получать простые числа р длины t³33 битов с простым делителем q длины ët/2û битов числа р-1.

Получение чисел осуществляется с использованием линейного конгруэнтного датчика хn = (97781173 xn-1 + c ) (mod 232)

Задаются число х0 с условием 0< x0 < 232 и нечетное число с условием 0< c < 232.

Процедура вычисления включает в себя следующие шаги:

1. у0 := x0

2. Вычислить последовательность чисел (t0, t1, ….., ts) по правилу:

t0 := t.

Если ti³33, то ti+1=ë ti/2 û,

Если ti<33, то s := I

3. Найти наименьшее простое число ps длины ts битов.

4. m := s-1.

5. Вычислить rm= é tm/32 ù

6. Вычислить последовательность ( у1,…..,уrm) по рекурсивному правилу уi+1= (97781173 у1 + с) mod (232).

7. Вычислить уm= S у1 2321.

8. у0 := уr

9. Вычислить N = é2t -1/ pm+1 ù + ë(2t -1 ym)/(pm+1 232r

Если N нечетно, то N := N + 1

10. k := 0

11. Вычислить рm = pm+1(N + k) + 1

12. Если рm > 2t , то перейти к шагу 6

13. Проверить условия :

2р (N+k) (mod pm) = 1,

2(N+k) (mod pm) ¹ 1

Если хотя бы одно из условий не выполнено, то k := k+2 и перейти к шагу 11.

Если оба условия выполнены, то m := m-1.

14. Если m ³ 0, то перейти к шагу 5.

Если m < 0, то р0 – искомое простое число р и р1 – искомое простое число q.

7.3 Процедура В

Процедура позволяет получать простые числа р длины tp = 1021 ¸ 1024 битов с делителем q длины tq = 255 ¸ 256 битов числа р-1.

Задаются число х0 с условием 0 < x0 < 216 и нечетное число с условием 0 < c < 216.

Процедура вычисления включает в себя следующие шаги:

1. По процедуре А получить простое число q длины tq битов.

2. По процедуре А получить простое число Q длины 512 битов, при этом пункт 1 процедуры А не выполнять, а сохранить значение у0, полученное в конце работы шага 1.

3. Вычислить последовательность (у1, ….,у64) по рекурсивному правилу уi+1 = (19381 у1+ с) (mod 216)

4. Вычислить у =S у12161

5. у0 := у64

6. Вычислить

N =é2t -1 /(qQ)ù + ë(2t -1 у)/( qQ21024

Если N нечетно, то N := N+1

7. k := 0

8. Вычислить р = qQ(N + k) + 1

9/ Tckb p > 2t , то перейти к шагу 3.

10. Проверить условия:

2qQ(N+k)(mod p ) = 1,

2q(N+k)(mod p) ¹1

Если оба условия выполнены, то р и q – искомые простые числа.

Если хотя бы одно не выполнено. то k := k + 2 и перейти к шагу 8.

последовательность шагов повторить до выполнения условий на шаге 10.

7.4 Процедура В’

процедура позволяет получать простые числа р длины tp= 1021¸ 1024 битов с делителем q длины tq = 255 ¸ 256 битов числа р-1.

Задаются число х0 с условием 0 < x0 < 232 и нечетное число с с условием 0 < c < 232.

Процедура вычисления включает в себя следующие шаги:

1. По процедуре А’ получить простое число q длины tq битов.

2. По процедуре А’ получить простое число Q длины 512 битов, при этом пункт 1 процедуры А’ не выполнять, а сохранить значение у0, полученное в конце работы шага 1.

3. Вычислить последовательность (у1, …,у32) по рекурсивному правилу уi+1= (97781173 уi+ c) (mod 232)

4. Вычислить у= S у1 2321

5. у0 := у32

6. Вычислить

N = é2t -1 /(qQ)ù + ë(2t -1 y) / ( qQ21024

Если N нечетно, то N := N + 1.

7. k := 0.

8. Вычислить р = qQ(N+k) + 1

9. Если р > 2t , то перейти к шагу 3

10. Проверить условия:

2qQ(N+k)(mod p ) = 1,

2q(N+k)(mod p) ¹ 1

Если оба условия выполнены , то р и q – искомые простые числа.

Если хотя бы одно из условий не выполнено, то k := k + 2 и перейти к шагу 8.

Последовательность шагов повторить до выполнения условий на шаге 10.

7.5 Процедура С

Процедура позволяет получить число а при заданных р и q.

1. Произвольно выбирать число d, 1 < d < p-1.

2. Вычислить f = dp-1/q(mod p)

3. Если f = 1, то перейти к шагу 1.

Если f = 1, то а := f

Конец работы алгоритма.

Вычисление функции хэширования по ГОСТ Р 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.

Если хотите скачать бесплатно сумерки затмение – вы можете найти фильм на нашем сайте!

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100