ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ВОЛЖСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (филиал) ВОЛГОГРАДСКОГО ГОСУДАРСТВЕННОГО ТЕХНИЧЕСКОГО УНИВЕРСИТЕТА КАФЕДРА «ИНФОРМАТИКА И ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ» Электронная цифровая подпись Методические указания к лабораторным работам по курсу «Методы и средства защиты компьютерной информации» Волгоград 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: 0k 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: 0k 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