ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ВОЛЖСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (филиал) ВОЛГОГРАДСКОГО ГОСУДАРСТВЕННОГО ТЕХНИЧЕСКОГО УНИВЕРСИТЕТА

реклама
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ВОЛЖСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (филиал) ВОЛГОГРАДСКОГО
ГОСУДАРСТВЕННОГО ТЕХНИЧЕСКОГО УНИВЕРСИТЕТА
КАФЕДРА «ИНФОРМАТИКА И ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ»
Электронная цифровая подпись
Методические указания к лабораторным работам по
курсу «Методы и средства защиты компьютерной информации»
Волгоград 2009
УДК 004.056
МЕТОДИЧЕСКИЕ
УКАЗАНИЯ
К
ЛАБОРАТОРНЫМ
РАБОТАМ:
Электронная цифровая подпись / Сост. Лясин Д.Н., Макушкин И.А.; Волгоград.
гос. техн. ун-т. - Волгоград, 2009, – 20 с.
Содержатся сведения, необходимые для изучения студентами основных
принципов защиты информации с использованием электронной цифровой подписи:
формирование и проверка подписи, хэширование данных. Дан обзор современных
алгоритмов формирования электронной цифровой подписи. Приведены варианты
заданий к лабораторным работам.
Предназначены для студентов, обучающихся по направлению 230100
"Информатика и вычислительная техника" и специальности 230102
"Автоматизированные системы обработки информации и управления" всех форм
обучения в рамках курса «Методы и средства защиты компьютерной информации»
Ил. 7.
Библиогр.: 9 назв.
Рецензент: к.т.н., доцент каф. ВАЭ и ВТ ВПИ (филиал) ВолгГТУ
Студеникин А.В.
Печатается по решению редакционно-издательского совета Волгоградского государственного технического университета
©
2
Волгоградский государственный
технический университет, 2009
Лабораторная работа N 4
Электронная цифровая подпись
Цель работы: изучение основных принципов хэширования информации и
формирования электронной цифровой подписи (ЭЦП), приобретение навыков
программной реализации алгоритмов ЭЦП и защиты данных с ее помощью.
Основные сведения
1. Хэширование информации
Многие современные технологии безопасности (например, аутентификации,
ЭЦП) применяют односторонние функции шифрования, называемые также хэшфункциями. Основное назначение подобных функций – получение из сообщения
произвольного размера его дайджеста – значения фиксированного размера.
Дайджест может быть использован в качестве контрольной суммы исходного
сообщения, обеспечивая таким образом (при использовании соответствующего
протокола) контроль целостности информации [1]. Основные свойства хэшфункции:
1) на вход хэш-функции подается сообщение произвольной длины;
2) на выходе хэш-функции формируется блок данных фиксированной длины;
3) значения на выходе хэш-функции распределены по равномерному закону;
4) при изменении одного бита на входе хэш-функции существенно изменяется
выход.
Кроме того, для обеспечения устойчивости хэш-функции к атакам она должна
удовлетворять следующим требованиям:
1) если мы знаем значение хэш-функции h, то задача нахождения сообщения
M такого, что Н(М)=h, должна быть вычислительно трудной;
2) при заданном сообщении M задача нахождения другого сообщения M’,
такого, что Н(М)=H(M’), должна быть вычислительно трудной
3
Если хэш-функция будет удовлетворять перечисленным свойствам, то
формируемое ею значение будет уникально идентифицировать сообщения, и всякая
попытка изменения сообщения при передаче будет обнаружена путем выполнения
хэширования на принимающей стороне и сравнением с дайджестом, полученным на
передающей стороне.
Еще одной особенностью хэш-функций является то, что они не допускают
обратного преобразования – получить исходное сообщения по его дайджесту
невозможно. Поэтому их называют еще односторонними функциями шифрования. В
таблице 1 дан сравнительный анализ наиболее популярных хэш-функций.
Таблица 1. Параметры современных хэш-функций
Алгоритм
Число
Длина
Длина
Безопасность
раундов
Блока
дайджеста
дайджеста
64
512
128
64
32x4
256
256
128
80
512
160
80
SHA-1
80
512
160
80
SHA-256
80
512
256
128
SHA-384
80
1024
384
192
SHA-512
80
1024
512
256
MD5
ГОСТ
34.11-94
RIPEMD160
Под безопасностью здесь понимается стойкость к атакам типа "парадокс дня
рождения".
Хэш-функции строятся по итеративной схеме, когда исходное сообщение
разбивается на блоки определенного размера, и над ними выполняются ряд
преобразований с использованием как обратимых, так и необратимых операций. Как
правило, в состав хэширующего преобразования включается сжимающая функция,
поскольку его выход зачастую по размеру меньше блока, подаваемого на вход. На
4
вход каждого цикла хэширования подается выход предыдущего цикла, а также
очередной блок сообщения. Таким образом, на каждом цикле выход хэш-функции hi
представляет собой хэш первых i блоков (рис.1).
h0
Исходное
сообщение
(k-n) бит
n бит (h1)
F
(k-n) бит
n бит (h2)
F
(k-n) бит
n бит (h3)
F
(k-n) бит
n бит (hN)
F
F - сжимающая функция
hash
Рис.1 Обобщенная итеративная структура hash-преобразования
Из схемы очевидно, что криптографические свойства хэш-функции во многом
зависят от выбора сжимающей функции. В качестве одного из вариантов подобного
выбора может стать использование блочного шифра, так как он хорошо
рандомизирует входящее сообщение и благодаря лавинному эффекту выход
блочного шифра зависит от каждого бита входного сообщения. Варианты
формирования сжимающей функции из блочного шифра приведены на рис.2, более
полный список можно посмотреть в [4].
Подобный
подход
использован,
например,
в
российском
стандарте
хэширования – ГОСТ Р 34.11-94. Эта хэш-функция формирует 256-битное выходное
значение, используя в качестве преобразующей операции блочный шифр ГОСТ
28147-89. Подробное описание алгоритма ГОСТ Р 34.11-94 можно найти в [2].
Основным недостатком хэш-функций на основе блочных шифров является
невысокая
скорость
их
работы.
Поэтому
были
спроектированы
ряд
специализированных алгоритмов, которые, обеспечивая аналогичную стойкость к
атакам, выполняют гораздо меньшее количество операций над входными данными и
5
обеспечивают большую скорость работы. Рассмотрим некоторые из этих
алгоритмов подробнее.
mi-1
hi-1
key
hi-1
hi
in
out
Ek
key
mi-1
hi
in
Ek
out
mi-1
key
hi-1
hi
in
out
Ek
Рис.2 Возможные структуры хэш-преобразований на основе блочных шифров
Алгоритм хэширования SHA (Secure Hash Algorithm) описан в стандарте SHS
и обеспечивает безопасность электронной цифровой подписи DSA. Структура
версии SHA-1 данного алгоритма, формирующей 160-битный дайджест сообщения,
приведена в [2].
В 2001 году NIST принял в качестве стандарта три хэш-функции с
существенно большей длиной хэш-кода [3]. Часто эти хэш-функции называют SHA2 или SHA-256, SHA-384 и SHA-512 (соответственно, в названии указывается длина
создаваемого ими хэш-кода). Эти алгоритмы отличаются не только длиной
создаваемого хэш-кода, но и длиной обрабатываемого блока, длиной слова и
используемыми внутренними функциями.
В данных алгоритмах размер блока сообщения равен m бит. Для SHA-256 m =
512, для SHA-384 и SHA-512 m = 1024. Каждый алгоритм оперирует с w-битными
словами. Для SHA-256 w = 32, для SHA-384 и SHA-512 w = 64. В алгоритмах
используются обычные булевские операции над словами, а также сложение по
модулю 2w, правый сдвиг на n бит SHRn (x) , где х - w-битное слово, и циклические
6
(ротационные) правый и левый сдвиги на n бит ROTRn (x) и ROTLn (x), где х - wбитное слово.
SHA-256 использует шесть логических функций, при этом каждая из них
выполняется с 32-битными словами, обозначенными как x, y и z. Результатом
каждой функции тоже является 32-битное слово.
Ch (x, y, z) = (x ^ y) (¬x ^ z)
Maj (x, y, z) = (x ^ y)  (x ^ z)  (y ^ z)
Σ0{256} (x) = ROTR2 (x)  ROTR13 (x)  ROTR22 (x)
Σ1{256} (x) = ROTR6 (x)  ROTR11 (x)  ROTR25 (x)
σ0{256} (x) = ROTR7 (x)  ROTR18 (x)  SHR3 (x)
σ1{256} (x) = ROTR17 (x)  ROTR19 (x)  SHR10 (x)
SHA-384 и SHA-512 также используют шесть логических функций, каждая из
которых выполняется над 64-битными словами, обозначенными как x, y и z.
Результатом каждой функции является 64-битное слово.
Ch (x, y, z) = (x ^ y)  (¬x ^ z)
Maj (x, y, z) = (x ^ y)  (x ^ z)  (y ^ z)
Σ0{512} (x) = ROTR28 (x)  ROTR34 (x)  ROTR39 (x)
Σ1{512} (x) = ROTR14 (x)  ROTR18 (x)  ROTR41 (x)
σ0{512} (x) = ROTR1 (x)  ROTR8 (x)  SHR7 (x)
σ1{512} (x) = ROTR19 (x)  ROTR61 (x)  SHR6 (x)
Предварительная подготовка сообщения, т.е. добавление определенных битов
до целого числа блоков и последующее разбиение на блоки выполняется аналогично
тому, как это делалось в SHA-1 (с поправкой на длину блока каждой хэш-функции).
После этого каждое сообщение можно представить в виде последовательности N
блоков M(1), M(2), … , M(N).
Рассмотрим SHA-256. В этом случае инициализируются восемь 32-битных
переменных, которые послужат промежуточным значением хэш-кода:
a, b, c, d, e, f, g, h
Основой алгоритма является модуль, состоящий из 64 циклических обработок
каждого блока M(i):
7
T1 = h + Σ1{256}(e) + Ch(e, f, g) + Kt{256} + Wt
T2 = Σ0{256}(a) + Maj(a, b, c)
h = g, g = f, f = e,
e = d + T1,
d = c, c = b, b = a,
a = T1 + T2,
где Ki{256} - шестьдесят четыре 32-битных константы, каждая из которых является
первыми 32-мя битами дробной части кубических корней первых 64 простых чисел.
Wt вычисляются из очередного блока сообщения по следующим правилам:
Wt = Mt(i) , 0 t 15
Wt = σ1{256}(Wt-2) + Wt-7 + σ0{256}(Wt-15) + Wt-16 , 16 t 63
i-ое промежуточное значение хэш-кода H(t) вычисляется следующим образом:
H0(i) = a + H0(i-1)
H1(i) = b + H1(i-1)
H2(i) = c + H2(i-1)
H3(i) = d + H3(i-1)
H4(i) = e + H4(i-1)
H5(i) = f + H5(i-1)
H6(i) = g + H6(i-1)
H7(i) = h + H7(i-1)
Теперь рассмотрим SHA-512. В данном случае инициализируются восемь 64битных переменных, которые будут являться промежуточным значением хэш-кода:
a, b, c, d, e, f, g, h
Основой алгоритма является модуль, состоящий из 80 циклических обработок
каждого блока M(i):
T1 = h + Σ1{512}(e) + Ch(e, f, g) + Kt{512} + Wt
T2 = Σ0{512}(a) + Maj(a, b, c)
h = g, g = f, f = e, e = d + T1,
d = c, c = b, b = a,
a = T1 + T2
где Ki{512} - восемьдесят 64-битных констант, каждая из которых является
первыми 64-мя битами дробной части кубических корней первых восьмидесяти
простых чисел.
Wt вычисляются из очередного блока сообщения по следующим правилам:
8
Wt = Mt(i) , 0 t 15
Wt = σ1{512}(Wt-2) + Wt-7 + σ0{512}(Wt-15) + Wt-16 , 16 t 79
i-ое промежуточное значение хэш-кода H(t) вычисляется следующим образом:
H0(i) = a + H0(i-1)
H1(i) = b + H1(i-1)
H2(i) = c + H2(i-1)
H3(i) = d + H3(i-1)
H4(i) = e + H4(i-1)
H5(i) = f + H5(i-1)
H6(i) = g + H6(i-1)
H7(i) = h + H7(i-1)
Полученные после обработки последнего блока значения H0(N),…, H7(N) в
совокупности дают 512-битный хэш исходного сообщения.
Алгоритм MD5 (Message Digest), разработанный Роном Ривестом в 1991 г.,
формирует 128-битный хэш. Данный алгоритм используется в таких современных
протоколах защиты информации, как SSL и IP Sec. Подробное описание MD5
можно
найти
в
[4
(глава
18.5),
6].
Современные
исследования
[7]
продемонстрировали нестойкость данного алгоритма к обнаружению коллизий,
поэтому его использование для целей практической защиты данных может быть
небезопасным.
В начале 90-х годов прошлого века европейская организация RACE Integrity
Primitives Evaluation (RIPE) разработала стандарт RIPEMD-160. Он разработан на
основе алгоритма MD4, генерирует дайджест длиной 160 бит.
RIPEMD-160
представляет
собой
итеративную
хэш-функцию,
обрабатывающую данные 32-битывми словами. Один раунд функции принимает на
вход изменяющуюся переменную размером 5 слов (хэш предыдущего раунда) и
блок данных размером 16 слов и формирует из них новое значение изменяющейся
переменной.
В алгоритме используется ряд констант и функций.
Нелинейные битовые функции:
f(j, x, y, z) = x  y  z
(0 ≤ j ≤ 15)
9
f(j, x, y, z) = (x ^ y) V (¬x ^ z) (16 ≤ j ≤ 31)
f(j, x, y, z) = (x V ¬y)  z
(32 ≤ j ≤ 47)
f(j, x, y, z) = (x ^ z) V (y ^ ¬z)
(48 ≤ j ≤ 63)
f(j, x, y, z) = x  (y V ¬z)
(64 ≤ j≤· 79)
Добавляемые константы (представляют собой целую часть выражений в
скобках):
K(j) = 00000000x (0 ≤ j ≤ 15)
[0]
K(j) = 5A827999x (16 ≤ j ≤ 31)
[230 ·21/2]
K(j) = 6ED9EBA1x (32 ≤ j ≤· 47)
[230 ·31/2]
K(j) = 8F1BBCDCx (48 ≤ j ≤ 63)
[230 ·51/2]
K(j) = A953FD4Ex (64 ≤ j ≤ 79)
[230 ·71/2]
K’(j) = 50A28BE6x (0 ≤ j ≤ 15)
[230 ·21/3]
K’(j) = 5C4DD124x (16 ≤ j ≤ 31)
[230 ·31/3]
K’(j) = 6D703EF3x (32 ≤ j ≤ 47)
[230 ·51/3]
K’(j) = 7A6D76E9x (48 ≤ j ≤ 63)
[230 ·71/3]
K’(j) = 00000000x (64 ≤ j ≤ 79)
[0]
Выбор блока сообщения:
r(j) = j (0 ≤ j ≤ 15)
r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
r’(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
r’(16..31) = 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
r’(32..47) = 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
r’(48..63) = 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
r’(64..79) = 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
Сдвиг влево (rol):
s(0..15) = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
10
s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
s’(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
s’(16..31) = 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
s’(32..47) = 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
s’(48..63) = 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
s’(64..79) = 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
Начальные значения:
h0 = 67452301x; h1 = EFCDAB89x; h2 = 98BADCFEx;
h3 = 10325476x; h4 = C3D2E1F0x;
Исходное сообщение после набивки представляет собой t блоков размером 16
слов каждый, которые дальше обозначены как Xi[j], где 0 ≤ i ≤ t-1 и 0 ≤ j ≤· 15. Под
арифметическим сложением ниже подразумевается сложение по модулю 232.
Операция rols обозначает циклический сдвиг влево на s бит. Ниже приведен
псевдокод работы алгоритма RIPEMD-160.
for i := 0 to t - 1 {
A := h0; B := h1; C := h2; D = h3; E = h4;
A’ := h0; B’ := h1; C’ := h2; D’ = h3; E’ = h4;
for j := 0 to 79 {
T := rols(j) (A+f(j,B,C,D)+ Xi[r(j)] + K(j)) + E;
A := E; E := D; D := rol10(C); C := B; B := T;
T := rols’(j) (A’+ f(79 – j,B’,C’,D’)+ Xi[r’(j)] +K’(j)) + E’;
A’ := E’; E’ := D’; D’ := rol10(C’); C’ := B’; B’ := T;
}
T := h1 + C + D’; h1 := h2 +D +E’; h2 := h3 +E + A’;
h3 := h4 +A +B’; h4 := h0 +B+ C’; h0 := T;
}
2. Электронная цифровая подпись
11
Для
решения
задач
аутентификации,
аппелируемости
и
обеспечения
целостности информации в современных информационных системах используется
концепция электронной цифровой подписи (ЭЦП). ЭЦП – это набор методов,
которые позволяют перенести свойства рукописной подписи под документом в
область электронного документооборота.
.
Рассмотрим
вариант
реализации
электронной
цифровой
подписи,
построенной на алгоритме RSA (рис.3).
В отличие от алгоритма шифрования RSA, отправителем здесь является
владелец пары закрытый/открытый ключ. Процедура формирования электронной
Отправитель
Генерация ключей
Выбрать простые p и q
Вычислить n=p*q
Выбрать случайное e такое,
что: (e,(p-1)(q-1))=1
Найти с помощью
алгоритма Евклида d такое,
что:
ed  1 mod (p-1)(q-1)
Открытый
ключ (e,n)
h=sign e mod n
c=me mod n
Закрытый ключ d
Письмо с ЭЦП
(m, sign)
Сообщение m
h=H(m)
Получатель
h=H(m)
да
ЭЦП верна
d
sign=h mod n
Рис.3. Схема ЭЦП на основе алгоритма RSA
подписи sign под сообщением схожа с шифрованием документа, но в степень
закрытого ключа d по вычету n возводится не само сообщение или его части, а
дайджест сообщения h. Неотъемлемой частью алгоритмов ЭЦП является
хэширование информации, на рисунке оно обозначено через H(), и это может быть
любой из рассмотренных алгоритмов хэширования.
12
Очень популярными являются схемы ЭЦП на основе алгоритма ЭльГемаля,
что обусловлено как надлежащей стойкостью алгоритма, так и лучшей по
сравнению с RSA скоростью вычислений.
Рассмотрим один из вариантов алгоритма электронной подписи на основе
алгоритма ЭльГемаля (рис.4).
Отправитель
Генерация ключей
Выбрать простое p
Выбрать g=RND: 0<g<p
Выбрать случайное x: 0<g<x
Вычислить y=gx mod p
Открытые
параметры (p,g)
Открытый
ключ (y)
Получатель
Вычислить h=Hash(m)
Вычислить r=ya ab mod p
Закрытый ключ x
Сообщение m
h=Hash(m)
Вычислить s=g h mod p
Письмо с ЭЦП
(m,a,b)
s=r
Формирование подписи
Выбрать случайное k: (k,p-1)=1
Вычислить a=gk mod p
Найти b такое, что
h=(xa + kb) mod (p-1).
да
ЭЦП верна
Рис.4. Схема формирования ЭЦП на основе алгоритма ЭльГемаля
Сначала требуется генерация пары открытый/закрытый ключ. На этом этапе
выбирается простое число p и два случайных числа g и x, меньшие p. Затем
вычисляется число y=gx mod p. Открытым ключом будут числа y, g и p, причем g и p
можно сделать общими для группы пользователей. Закрытым ключом станет число
x.
Чтобы подписать сообщение m, необходимо выбрать случайное число k,
взаимно простое с p-1, затем вычислить a=gk mod p. С использованием
расширенного алгоритма Евклида решается в целых числах уравнение
h=(xa + kb) mod (p-1), где h – результат хеширования сообщения m.
Подписью под сообщением m будет являться пара чисел (a,b).
13
Для проверки ЭЦП на принимающей стороне необходимо убедиться, что
выполняется равенство
ya ab mod p = g Hash(m) mod p
При формировании подписи необходимо держать в секрете число k и не
использовать одно и тоже его значение дважды для подписи различных сообщений
В стандарте национального института стандартов США DSS (Digital Signature
Standard) используется алгоритм DSA (Digital Signature Algorithm), который
является вариацией алгоритма ЭЦП ЭльГемаля в модификации Шнорра (рис. 5).
В алгоритме используются следующие открытые параметры:
p - простое число в диапазоне от 512 до 1024 бит;
Отправитель
Генерация ключей
Выбрать случайное x
Вычислить
y=gx mod p
Открытые
параметры (p,q,v)
Открытый
ключ (y)
Закрытый ключ x
Сообщение m
h=H(m)
Получатель
w= s-1 mod q
u1 = (H(m)w) mod q
u2 = (rw) mod q
a=((gu1 yu2) mod p)mod q
Письмо с ЭЦП
(m,r,s)
a=r
Формирование подписи
да
выбрать случайное k<q
ЭЦП верна
r=(gk mod p) mod q
s=( (h+xr)/k) mod q
Рис.5. Схема алгоритма ЭЦП DSA
q - 160-битовое простое число, делитель p-1;
v – любое число, v<p-1, такое, что v(p-1)/q mod p >1;
g = v(p-1)/q mod p;y=gx mod p.
Секретным ключом является любое 160-разрядное число x, x<q.
14
Алгоритм
формирования
ЭЦП
Шнорра
также
использует
проблему
дискретного логарифма (рис. 6).
Отправитель
Генерация ключей
Выбрать простые p и q: (q-1)|p
Выбрать g: 1 <g< p-1, gq mod p =1
Выбрать случайное x:
0хq
Вычислить y: у = g-x mod p
Открытые
параметры
алгоритма
(p, q, g)
Получатель
Вычислить
r’= gs*ye mod q mod p
Открытый
ключ (y)
Закрытый ключ x
e = Hash(r’ ||m)
Формирование подписи
Сообщение m
1. Выбрать k: 0k  q
2. Вычислить r=gk mod p
3. Вычислить e=Hash(r||m)
4. Вычислить s=(k + ex) mod q
да
ЭЦП верна
Письмо с
ЭЦП
(m, e, s)
Рис.6. Схема ЭЦП на основе алгоритма Шнорра
Российским стандартом с 1 июня 2002 года является алгоритм ГОСТ Р 34.10 –
2001. Данный алгоритм построен на проблеме ECDLP (Elliptic Curve Discrete
Logarithm Problem - задаче дискретного логарифмирования на эллиптической
кривой. Подробно с проблемой ECDLP и алгоритмом ГОСТ Р 34.10 –2001 можно
познакомиться в [5, 2, 8].
До появления алгоритма ГОСТ Р 34.10 –2001 российским стандартом был
алгоритм ГОСТ Р 34.10-94, использовавший в качестве математической основы
проблему дискретного логарифмирования. Полностью с текстом ГОСТ Р 34.10-94
можно ознакомиться в [9], на рис. 6 приведена обобщенная схема его работы.
15
Получатель
Отправитель
Генерация ключей
Выбрать простые p и q: (p-1)|q
Выбрать a: 1 <a< p-1, aq mod p =1
Вычислить n=p*q
Выбрать случайное x:
0хq
Вычислить y: у = аx mod p
Открытые
параметры
алгоритма
(p, q, a)
Открытый
ключ (y)
Закрытый ключ x
Формирование подписи
Сообщение m
1. h=Hash(m), если h mod q=0, h=1
2. Выбрать k: 0k  q
3. Вычислить r=(ak (mod p)) mod q
4. Если r=0, повторить п. 2 и 3
5. Вычислить s=(xr + kh)(mod q)
0 s  q &&
0  r  q.
нет
ЭЦП не
верна
1. Вычислить h=Hash(m),
если h mod q=0, h=1
2. Вычислить
v= h q-2 (mod q)
3. Вычислить
z1 = sv mod q
z2 = (q-r ) v (mod q)
4. Вычислить
u = (az1 yz2 (mod p))(mod q)
Письмо с
ЭЦП
(m, r, s)
u=r
да
6. Если s=0, повторить п. 2 - 5
ЭЦП верна
Рис.7. Схема ЭЦП на основе алгоритма ГОСТ Р 34.10-94
Порядок выполнения работы
1. Ознакомьтесь с теоретическими основами хэширования информации и
формирования ЭЦП в настоящих указаниях, а также в [2] и конспектах
лекций.
2. Получите вариант задания у преподавателя.
3. Напишите программу согласно варианту задания.
4. Отладьте разработанную программу и покажите результаты работы программы преподавателю.
5. Составьте отчет по лабораторной работе
16
Содержание отчета
Отчет по лабораторной работе должен содержать следующие сведения:
- название и цель работы;
- вариант задания;
- листинг разработанной программы с комментариями;
- результаты работы программы.
Варианты заданий
Составить систему ЭЦП с использованием асимметричного шифра и хэшфункции согласно заданию. Программа должна формировать ЭЦП для заданного
файла с данными и сохранять ее на диск. Размер ключей при формировании и
проверке подписи – не менее 128 бит. При проверке подписи сохраненная ЭЦП
должна сравниваться с актуальной для текущего состояния файла данных.
1. ЭЦП DSA и хэш MD5
2. ЭЦП DSA и хэш SHA-1
3. ЭЦП DSA и хэш RipeMD
4. ЭЦП DSA и хэш-функция на основе блочного шифра (хэш не менеее 128 бит)
5. ЭЦП ElGemal и хэш MD5
6. ЭЦП ElGemal и хэш-функция на основе блочного шифра (хэш не менеее 128
бит)
7. ЭЦП ElGemal и хэш SHA-256
8. ЭЦП ElGemal и хэш RipeMD
9. ЭЦП RSA и хэш MD5
10.ЭЦП RSA и хэш SHA-512
11.ЭЦП RSA и хэш RipeMD
12.ЭЦП RSA и хэш-функция на основе блочного шифра (хэш не менеее 128 бит)
13.ЭЦП ГОСТ Р 34.10-94 и хэш MD5
14.ЭЦП ГОСТ Р 34.10-94 и хэш SHA-1
15.ЭЦП ГОСТ Р.34.10-94 и хэш RipeMD
16.ЭЦП ГОСТ Р 34.10-94 и хэш-функция на основе блочного шифра
17
17.ЭЦП Шнорр и хэш MD5
18.ЭЦП Шнорр и хэш SHA-256
19.ЭЦП Шнорр и хэш RipeMD
20.ЭЦП Шнорр и хэш-функция на основе блочного шифра (хэш не менеее 128
бит)
Контрольные вопросы
1. Перечислите основные требования, предъявляемые к хэш-функции.
2. Что такое коллизия хэш-функции?
3. Что такое «парадокс дня рождения» и как он влияет на стойкость к коллизиям
хэш-функций.
4. Перечислите основные свойства, которым должна удовлетворять электронная
цифровая подпись. Какие из этих свойств реализует ваш алгоритм?
5. Какую роль в алгоритмах ЭЦП играет хэш-функция?
6. Каким образом можно скомпрометировать электронную подпись,
сформированную вашим алгоритмом?
7. Докажите соответствие операций формирования и проверки подписи в
алгоритме Шнорра.
8. Какую роль играет сертификация ключей в системах ЭЦП?
18
Литература
1. Конеев И.Р., Беляев А.В. Информационная безопасность предприятия. СПб.: БХВ-Петербург, 2003.- 752с.:ил.
2. Лясин Д.Н., Саньков С.Г. Методы и средства защиты компьютерной
информации (учебное пособие). – Волгоград, Издательство ВолгГТУ РПК
"Политехник”, 2005г.
3. http://www.intuit.ru/department/security/networksec/9/networksec_9.html
4. Шнайер Б. Прикладная криптография.- М. : Триумф, 2002. – 816с.
5. Элементарное введение в эллиптическую криптографию: Протоколы
криптографии на эллиптических кривых. – М.: КомКнига, 2006. – 280 с.
6. http://tools.ietf.org/html/rfc1321
7. http://ru.wikipedia.org/wiki/MD5
8. http://vsegost.com/Catalog/6784.shtml
9. http://vsegost.com/Catalog/9658.shtml
19
Составители: Дмитрий Николаевич Лясин
Игорь Александрович Макушкин
Электронная цифровая подпись. Методические указания к лабораторным работам
по курсу «Методы и средства защиты компьютерной информации».
В авторской редакции.
Темплан
Лицензия ИД N04790 от 18.05.01
Подписано в печать _________ . На магнитном носителе.
Усл. печ. л. 0,93 . Уч. -изд.л. 1,00.
Волгоградский государственный технический университет.
400131 Волгоград , пр. Ленина , 28.
РПК "Политехник" Волгоградского государственного технического
университета.
400131 Волгоград , ул. Советская , 35.
20
Скачать