РАЗДЕЛ 1. КЛЮЧЕВАЯ ИНФОРМАЦИЯ ..................................................... 2 1.1 Вероятностные тесты для криптосистем на основе задачи факторизации. .......................2 1.2 Доказуемо простые числа для криптосистем на основе задачи дискретного логарифмирования. ........................................................................................................................3 1.3.1 Числа Блюма ..........................................................................................................................4 1.3.2 Порождающие элементы ......................................................................................................4 РАЗДЕЛ 2. ШИФРЫ С ОТКРЫТЫМ КЛЮЧОМ............................................ 5 2.1. Схема Меркла – Хеллмана. ....................................................................................................5 2.2. Криптосистема Диффи – Хеллмана.......................................................................................6 2.3. Шифр Шамира .........................................................................................................................6 2.4. Схема Эль – Гамаля ................................................................................................................7 2.5. Шифр RSA (Rivest-Shamir-Adleman).....................................................................................9 2.6. Схема Рабина .........................................................................................................................10 2.7. Поточный RSA – генератор ..................................................................................................11 2.8. Схема Блюма - Гольдвассер .................................................................................................12 Задания к разделу 2 ......................................................................................................................14 Данные для самопроверки к разделу 2 .......................................................................................14 РАЗДЕЛ 3. АЛГОРИТМЫ ЭЦП................................................................... 17 3.1. Подпись RSA .........................................................................................................................17 3.2. ЭЦП Рабина ...........................................................................................................................18 3.3. Подпись Онга-Шнорра-Шамира ..........................................................................................19 3.4. Подпись Эль-Гамаля .............................................................................................................20 3.5. Схема Шнорра .......................................................................................................................20 3.6. DSA .........................................................................................................................................21 3.7. ГОСТ Р34.10-94 .....................................................................................................................22 Задания к разделу 3 ......................................................................................................................24 Данные для самопроверки к разделу 3 .......................................................................................24 Список литературы .................................................................................... 26 РАЗДЕЛ 1. КЛЮЧЕВАЯ ИНФОРМАЦИЯ 1.1 Вероятностные тесты для криптосистем на основе задачи факторизации. Простые числа, построенные случайным поиском с проверкой вероятностными тестами, используются в криптосистемах RSA, Рабина (и других криптосистемах, основанных на проблеме факторизации). В пособии [4], рассматриваются 3 вероятностных теста на простоту: Ферма, Соловея – Штрассена и Миллера – Рабина. Тест Ферма на простоту может принять составное число за простое, но не наоборот. Стоит обратить внимание, что для теста Ферма существуют числа Кармайкла, т.е. такие составные числа, которые всегда принимаются тестом Ферма за простые, не смотря на количество итераций. Вероятность ошибки составляет t, где t – число итераций теста, (n) n , где (n) – Функция Эйлера. Рекомендуется совершать около 50 итераций. Тест Соловея – Штрассена основан на различии между символами Якоби и Лежандра. Данный тест так же как и тест Ферма, может принять составное число за простое, но не наоборот. Вероятность ошибки составляет t, где t – число итераций теста, (n) 2n 1 . 2 Тест Миллера – Рабина также, как и предыдущие тесты, строит вероятно простые числа, однако вероятность ошибки у теста Миллера – Рабина гораздо ниже чем у первых двух тестов. Обычно для опознания простого числа достаточно одной итерации теста, но все же рекомендуемое количество итераций – пять. Вероятность ошибки теста на одной итерации составляет (n) 4n , то есть верхняя граница ошибки на одной итерации для теста Миллера – Рабина в 2 раза меньше 2 аналогичной для теста Соловея – Штрассена и в 4 раза – для теста Ферма. Таким образом, тест на простоту Миллера – Рабина, является наиболее эффективным тестом. 1.2 Доказуемо простые числа для криптосистем на основе задачи дискретного логарифмирования. В криптосистемах, основанных на задаче дискретного логарифмирования, требуется построение доказуемо простых чисел, то есть чисел, простота которых доказана. Для этого существует класс тестов на простоту, которые могут принять просто число за составное, но не наоборот. Для построения таких чисел не используется случайный поиск. С использованием таблицы простых чисел небольшого размера, построенной заранее, строится число m (равное произведению нескольких простых чисел, либо произведению простых чисел и случайного числа), затем число n = 2m + 1 проверяется на простоту одним из тестов. В пособии [4] выделяются 3 теста на простоту для доказуемо простых чисел: Миллера, Поклингтона и Процедура генерации простых чисел ГОСТ Р 34.10-94. Тест Миллера пригоден для доказательства простоты любого нечетного числа, если известно разложение на простые сомножители числа, ему предстоящего. Однако этот тест достаточно трудоемок. В данном тесте проверяемое число строится при помощи таблицы простых чисел. Стоит заметить, что если проверяемое число было предварительно проверено на простоту вероятностным тестом Миллера-Рабина, то в тесте Миллера достаточно выполнить 4-6 итераций. Тест Поклингтона основан на теореме Поклингтона и позволяет проверять простоту числа n, если каноническое разложение числа (n - 1) 3 известно лишь частично. Знание полного разложения числа (n - 1), позволяет сократить число итераций. Процедура генерации простых чисел ГОСТ Р 34.10-94 позволяет генерировать доказуемо простые числа заданного размера. 1.3.1 Числа Блюма Если p и q – два простых числа сравнимые с 3 по модулю 4, то n=pq иногда называют целым числом Блюма. Если n – целое число Блюма, у каждого квадратичного вычета есть ровно четыре квадратных корня, один из которых тоже является квадратом – это главный квадратный корень. Числа p и q следует получать по формулам p 4k1 3 и q 4k 2 3 (где k1 и k2 – случайные целые числа, размер которых на 2 бита меньше требуемого размера p и q), и только потом проверять их на простоту. Числа Блюма в двоичном представлении имеют единицы в двух последних битах. 1.3.2 Порождающие элементы Если p – простое число и g меньше чем p, то g называется образующей по модулю p, если для каждого числа b от 1 до p–1 существует такое число a, что ga b (mod p). В общем случае нелегко установить, является ли данное число образующей. Однако задача упрощается, если известно разложение p-1 на множители. Пусть q1, q2,…,qn– это различные простые множители p-1. Чтобы проверить, является ли число g образующей по модулю p, необходимо вычислить: g(p-1)/q mod p, для всех значений q=q1, q2,…,qn. 4 Если это число равно 1 для некоторого значения q, то g не является образующей. Если для всех значений q, рассчитанное значение не равно 1, то g – образующая. РАЗДЕЛ 2. ШИФРЫ С ОТКРЫТЫМ КЛЮЧОМ 2.1. Схема Меркла – Хеллмана. Рюкзачная криптосистема, разработана Ральфом Мерклом и Мартином Хеллманом в 1978 году. Все рюкзачные криптосистемы нестойки, и изучаются только с точки зрения исторического интереса. Параметры: x ( x1,..., x n ) - булев вектор, открытый текст в двоичном представлении; l – число элементов последовательности; b = {b1,…,bn} - сверхрастущий вектор, bi i 1 bi 1 ; 1 n m : m b - большое целое число; i1 Целое случайное число : (, m) 1 1 mod m ai bi mod m; i 1, n ; a – не сверхрастущий вектор; Открытый ключ: a. Секретный ключ: (b, m, ). Шифрование: y x a x1a1 x 2a2 ... xnan - шифрованный текст. Расшифрование: 1. Вычислить y y 1 modm ; 5 2. Зная y и b, и пользуясь тем, что b – гипервозрастающий или сверхрастущий вектор, восстановить булев вектор x. 2.2. Криптосистема Диффи – Хеллмана Криптосистема Диффи – Хеллмана предназначена для получения общего секретного ключа по открытому каналу связи. Не требует предварительной передачи секретных или открытых ключей. Параметры: A, B – абоненты; p – большое простое число; * g – порождающий элемент группы Z p ; p и g вычисляются согласно п. 1.2; X A {2,..., p 2} - секретный ключ абонента A, случайное целое; XB {2,..., p 2} - секретный ключ абонента B, случайное целое; Вычисление общего секретного ключа производится в протоколе: A B : YA gXA modp ; B A : YB g XB modp ; A : K AB ( YB ) XA modp ; B : K BA ( YA ) XB modp ; K AB K BA K - общий секретный ключ, для использования в симметричных шифрах. Возведение в степень по модулю в этом протоколе осуществляется в соответствии с дихотомическим алгоритмом (см. [4]) 2.3. Шифр Шамира Шифр Шамира используется для обмена секретными сообщениями по открытому каналу для лиц, не имеющих секретных ключей и защищенных каналов. 6 Параметры: A – отправитель, обладает открытым ключом; B – получатель, обладает секретным ключом; x – открытый текст; если x p , тогда x разбивается на блоки и каждый блок шифруется отдельно; p – большое простое число (генерацию следует производить в соответствии с п.1.2); Секретные ключи абонента A: C A - случайное число от 2 до p – 2, (СA,p-1)=1; 1 DA CA mod(p 1) . Секретные ключи абонента B: C B - случайное число от 2 до p – 2, (СA,p-1)=1; 1 DB CB mod(p 1) . Протокол Шамира: A B : X1 xC A modp ; CB B A : X2 X1 modp ; DA A B : X3 X2 B : X 4 X3 DB modp ; mod p ; B получит на последнем шаге исходный текст. Действительно, X 4 X 3DB mod p ( X 2D A )DB mod p ( X1CB )D ADB mod p ( x C A )CB D A DB mod p x C A D ACB DB mod p x (C A D ACB DB ) mod( p 1) mod p x 2.4. Схема Эль – Гамаля Криптосистема, предложенная Тахером Эль-Гамалем в 1984 году. Параметры: 7 p – большое простое число; g – порождающий элемент группы Z p * (процесс получения g и p описан в п 1.2); С - случайное число, 1<C<(p-1); D gC mod p ; x – открытый текст; если x p , тогда m разбивается на блоки и каждый блок шифруется отдельно. Открытый ключ: D; Секретный ключ: C. Шифрование: 1. Выбрать k - случайное число, 1 k p 2 ; 2. Вычислить r gk mod p ; 3. Вычислить e x Dk mod p ; 4. Пара (r,e) – шифрованный текст. Расшифрование: Вычислить x e (r С )1 mod p . Действительно, после расшифрования будет получен исходный текст, т.к. x x D k r p 1C mod p x (g C )k (g k ) p 1C mod p x g Ck k ( p 1) kC mod p x g k ( p 1) mod p . По теореме Ферма: g k ( p 1) mod p 1k mod p 1, таким образом x x . Для ускорения вычислений при расшифровании можно воспользоваться следующим приемом: Если С<(p-1)/2, то вычислять m e (r С )1 mod p , т.е. сначала возвести r в степень C по модулю p, а затем вычислить обратное значение к полученному с помощью алгоритма Евклида (см. []). Если же С≥(p-1)/2, то вычислять m=erp-1-Cmod p. 8 2.5. Шифр RSA (Rivest-Shamir-Adleman) Шифр RSA назван по первым буквам фамилий своих разработчиков (Ron Rivest, Adi Shamir, Leonard Adleman). В настоящее время, данная криптосистема является широкоиспользуемой. Параметры: p, q – различные большие простые числа (генерацию чисел производить согласно п.1.1); При генерации p и q, необходимо выбрать случайное нечетное число нужного размера и проверить его на простоту (проверка вероятностным тестом); n p q - модуль RSA, должен быть не менее 512 бит; (n) (p 1)(q 1) - функция Эйлера от n; e : (e, (n)) 1 - случайное число от 2 до n-2, открытый ключ; d e 1(mod (n)) - секретный ключ (обратный элемент вычисляется с помощью расширенного алгоритма Евклида); * x ZN - сообщение. Открытый ключ: (e, n). Секретный ключ: (p, q, d); Шифрование: y x e mod n . Расшифрование: x y d mod n . Для ускорения вычислений при расшифровании можно воспользоваться Китайской теоремой об остатках и малой теоремой Ферма [7]. Вычисляются 1. dp=d mod (p-1), dq=d mod (q-1), p1=p-1mod q, q1=q-1mod p; d d 2. xp ( y modp) p modp , x q ( y mod q) q mod q ; 9 3. x=(xppp1+xqqq1) mod n. 2.6. Схема Рабина Безопасность схемы Рабина опирается на сложность поиска квадратных корней по модулю составного числа. Эта проблема аналогична разложению на множители. Параметры: p, q – большие простые числа, p q ; Для формирования числа Блюма, p и q должны быть сравнимы с числом 3 по модулю 4, т.е. для них выполняются следующие сравнения: p 3(mod 4) ; q 3(mod 4) . Числа p и q следует получать по формулам p 4k1 3 и q 4k 2 3 (где k1 и k2 – случайные целые числа, размер которых на 2 бита меньше требуемого размера p и q), и только потом проверять их на простоту. n p q - число Блюма; x – открытый текст. Открытый ключ: n. Секретный ключ: (p, q). Шифрование: Преобразуем x для обнаружения правильного решения: r – случайное число (4-8 бит); x x || r - конкатенация (склеивание); Если x - квадратичный вычет, то x x , иначе берем другое r. y x 2 modn . Расшифрование: Для расшифрования необходимо решить квадратичное сравнение: y x 2 (modp q) относительно x. 10 Такое сравнение имеет 4 решения, из них выбирается одно. Так как n – число Блюма, то среди этих 4-х решений, только одно является квадратичным вычетом. Решение квадратичного сравнения yx2(mod pq): z1 = y(p+1)/4 mod p; z2 = (p - y(p+1)/4) mod p; z3 = y(q+1)/4 mod q; z4 = (q - y(q+1)/4) mod q; a = q(q-1 mod p); b = p(p-1 mod q); Четыре возможных решения: x1=(az1+bz3) mod n; x2=(az1+bz4) mod n; x3=(az2+bz3) mod n; x4=(az2+bz4) mod n; 2.7. Поточный RSA – генератор RSA – генератор, это генератор псевдослучайных последовательностей на основе RSA. Параметры: p, q – большие простые числа; m – открытый текст; n p q; e : 1 e (n) , (e, (n)) 1; d=e-1 mod φ(n); S 0 : 1 S 0 (n 1) - случайное число, синхропоссылка. Открытый ключ: e,n. Секретный ключ: d, p, q. 11 Выработка гаммы: Цикл 1, L , где L – длина требуемой ПСП (в битах): 1. Sl Sle1 modn 2. zi Sl mod 2 Выход: z1,..., z L - ПСП, гамма шифра. Шифрование: y i mi z i , i 1, L . Шифртекст: ( y, SL 1 ) . Расшифрование: По S L 1 и d, восстанавливаем: SL , SL 1,..., S1 z L , z L 1,..., z1: SL SLd1 modn ; SL1 Sld modn ; … S1 Sd2 modn . mi y z i . 2.8. Схема Блюма - Гольдвассер В данной криптосистеме используется простейший и наиболее эффективный генератор, использующий сложностно-теоретический подход. В честь своих авторов называется Блюм-Блюма-Шуба (BBS). Параметры: p, q – большие простые числа; Числа p и q следует генерировать так же, как это описано в 2.6. n p q - число Блюма; 1 b n - случайное число; S0 b2 modn ; Открытый ключ: n. 12 Секретный ключ: p,q. Шифрование: 1) Выработка гаммы шифра: В цикле i 1,L : Si Si21 modn ; z i Si mod 2 . Выход: z1,..., z L . Гаммирование: y i x i z i , i 1,L . Шифртекст: ( y, SL 1 ) . Расшифрование: 1) Восстановление гаммы: SL1 SL , SL 1,..., S1 В цикле решаются сравнения x 2 SL1(modn) 2) Гаммирование: x i y i z i , i 1,L 13 Задания к разделу 2 Реализовать: Вариант 1: схему Меркла-Хеллмана. Вариант 2: криптосистему Диффи-Хеллмана. Модуль должен быть доказуемо простым. Вариант 3: шифр Шамира. Модуль должен быть доказуемо простым. Вариант 4: схему Эль-Гамаля. Модуль должен быть доказуемо простым. Вариант 5: криптосистему RSA. Для генерации простых чисел использовать вероятностный тест. Для ускорения расшифрования использовать Китайскую теорему об остатках. Вариант 6: схему Рабина. Для генерации простых чисел использовать вероятностный тест. Использовать случайное дополнение исходного текста, чтобы он являлся квадратом. Вариант 7: поточный RSA-генератор. Для генерации простых чисел использовать вероятностный тест. Для ускорения расшифрования использовать Китайскую теорему об остатках. Вариант 8: Схему Блюма-Гольвассер. . Для генерации простых чисел использовать вероятностный тест. Данные для самопроверки к разделу 2 Прежде, чем сдавать программу, необходимо самостоятельно проверить ее работоспособность на тестовых данных. Данные следует использовать следующим образом: Выбрать в качестве входных параметров соответствующие данные из таблицы. Закомментировать генератор случайных чисел в шифре (если он есть). Случайные числа, использующиеся в алгоритмах, необходимо брать из таблицы. 14 Взять из таблицы входные параметры алгоритма и осуществить шифрование с ними. Сверить промежуточные выходы и результат с данными из таблицы. Осуществить расшифрование. Сверить исходный (нешифрованный) текст с расшифрованным. Схема Меркла-Хеллмана: x 3563 729 314 811 592 l 4 6 4 5 5 b {7,9,19,43} {2,3,7,14,28,59} {3,5,11,24} {4,9,15,31,72} {2,4,9,20,42} 29 44 28 45 61 m 78 113 43 131 77 a {47,27,5,77} {88,19,82,51,102,110} {41,11,7,27} {49,12,20,85,96} {45,13,10,65,21} y {151,79,129} {294,211} {27,34,48} {157,193} {110,45} y {59,35,69} {94,69} {24,35,14} {85,112} {22,2} Криптосистема Диффи-Хеллмана: p 373063189 20945261 4323257 24785021 6892159 g 3 7 5 2 5 xa 35 1934 56 99 183 xb 21 751 22 161 143 ya 158322106 4764222 32837 9000925 3755488 yb 14583911 15187673 2375322 6251473 3823286 k 160588074 12404349 4176228 11587559 6734476 Шифр Шамира: x 167 329 509 872 633 p 571111 740711 678211 469031 200513 ca 97 57 59 33 67 da 329713 298883 540269 454817 179563 cb 37 63 23 57 21 db 493933 623137 147437 41143 47741 x1 354748 197110 390608 158478 110628 x2 179074 1637 189885 423886 136899 x3 226013 386955 95363 282488 70035 Схема Эль-Гамаля: x 10 962 122 354 68 p 248043791 347095657 583207 965249 3605257 g 3 7 3 5 5 c 29 71 69 22 35 d 133008257 299540628 532821 440133 3162749 k 7 94 26 97 48 r 2187 66933900 109733 114271 2538517 e 231312558 281737382 371468 117465 1874384 Криптосистема RSA: x 35 73 22 69 99 p 267829 12889 7283 6653 1549 q 35897 97841 2657 3343 2237 n 9614257613 1261072649 19350931 22240979 3465113 (n) 9613953888 1260961920 19340992 22230984 3461328 e 59 43 67 83 29 d 162948371 791766787 12701547 2946275 835493 y 7027336249 200924136 12739148 15360832 1304987 15 Схема Рабина: x 12 48 55 68 97 p 8999 5791 1823 6967 5119 q 1571 2351 3359 2803 7723 n 14137429 13614641 6123457 19528501 39534037 y 144 2304 3025 4624 9409 x1 12 9751996 6123402 7691500 16913273 x2 7217186 48 4265875 68 39533940 x3 6920243 13614593 1857582 19528433 97 x4 14137417 3862645 55 11837001 22620764 RSA-генератор: x 29 38 98 71 14 p 211 101 307 401 397 q 661 547 373 907 673 n 139471 55247 114511 363707 267181 (n) 138600 54600 113832 362400 266112 e 67 23 71 29 53 d 72403 28487 89783 112469 5021 s0 67294 98326 25403 75004 98623 l 3 4 5 6 7 s1 7159 36217 11816 47287 184998 sL 72147 5641 53982 222647 159073 z [111]2 [1001]2 [01000]2 [101111]2 [0110101]2 y 34 191 362 2984 59 s1 4475395 2249306 3832149 2873451 1091188 sL 502832 1272755 1088924 1020151 158352 z [110]2 [0110]2 [10110]2 [10001]2 [01100]2 y 3 123 766 639 433 Схема Блюма-Гольдвассер: x 53 29 44 78 61 p 92083 5683 9227 6871 6323 q 751 719 683 431 547 n 6915433 4086077 6302041 2961401 3458681 b 421 687 901 547 301 s0 177241 471969 811801 299209 90601 l 3 4 5 5 4 16 РАЗДЕЛ 3. АЛГОРИТМЫ ЭЦП Алгоритмы электронной цифровой подписи основаны на принципах ассиметричных криптосистем. Свойства ЭЦП: 1. Указание на автора; 2. Невозможность подделки без обнаружения; 3. Невозможность перенести подпись на другой документ; 4. Невозможность изменить подписанный документ; 5. Невозможность отказа от авторства; 6. Проверяемость. 3.1. Подпись RSA Параметры: p, q – различные большие простые числа (генерацию чисел производить согласно п.1.1); При генерации p и q, необходимо выбрать случайное нечетное число нужного размера и проверить его на простоту (проверка вероятностным тестом); n p q - модуль RSA, должен быть не менее 512 бит; (n) (p 1)(q 1) - функция Эйлера от n; e : (e, (n)) 1 - случайное число от 2 до n-2, открытый ключ; d e 1(mod (n)) - секретный ключ (обратный элемент вычисляется с помощью расширенного алгоритма Евклида); * x ZN - сообщение. Ключ подписания: (p, q, d). Ключ верификации: (n, e); Подписание: h = h(x1,…,xn) – хэш-функция от текста; 17 s = hd mod n – цифровая подпись, добавляемая к сообщению. Для ускорения вычислений при подписании можно воспользоваться Китайской теоремой об остатках и малой теоремой Ферма [7]. Вычисляются 1. dp=d mod (p-1), dq=d mod (q-1), p1=p-1mod q, q1=q-1mod p; d d 2. xp ( y modp) p modp , x q ( y mod q) q mod q ; 3. x=(xppp1+xqqq1) mod n. Подпись: (x, s). Верификация: Проверить сравнение x ≡ se (mod n). 3.2. ЭЦП Рабина Параметры: n p q - число Блюма (генерация числа Блюма описана в п.1.3.1); a a a: 1 – квадратичный вычет по модулю n. p q (a, n) = 1; x – текст. Ключ подписания: (p, q). Ключ верификации: (n). Алгоритм подписания: p 1 x = x||r, r – случайное число, чтобы выполнялось x 2 1modp , q1 x 2 1mod q , если хоть одно из этих условий не выполняется, то генерируется новое значение r; s2 x(modn) , в результате решения сравнения, получается 4 корня, в качестве подписи можно брать любой из них. Подпись: (r, s). 18 Верификация: Вычисляется значение: b=s2 mod n; b - интерпретируется как двоичный вектор x||r;Если x=x и r=r, то подпись признается подлинной. 3.3. Подпись Онга-Шнорра-Шамира Данная схема построения системы ЭЦП является наиболее быстродействующей, однако было показано, что она не является безопасной, в результате чего она не нашла применения на практике. Параметры: p, q – большие простые числа; n p q - модуль RSA; k1 Zn* – случайное число, (k1, n)=1; k 2 k12 modn . Ключ подписания: (k1, p, q). Ключ верификации: (k2, n). Подписание: r – случайное число, (r, n) = 1; s1 = (2-1(xr-1 + r)) mod n; s2 = (2-1k1(xr-1 - r)) mod n; Подпись: (x, s1, s2). Верификация: Проверить сравнение x (s12 k 2s22 ) modn . Если сравнение верно, то подпись принимается, иначе – отвергается. 19 3.4. Подпись Эль-Гамаля Схема Эль-Гамаля, одна из немногих схем, которые могут использоваться как для шифрования, так и для построения цифровых подписей. Параметры: p – большое простое число; * g – порождающий элемент группы Z p ; k Zp* - случайное число; d gk mod p - вычисление открытого ключа; h = h(x) – значение хэш-функции от текста; Ключ подписания: (k). Ключ верификации: (p, g, d). Подписание: a – случайное число, (a, p-1) = 1; s = ga mod p; r = (h - sk)a-1mod (p - 1); Подпись: (x; s, r). Верификация: Проверить сравнение dssr gh modp . Если сравнение верно, то подпись принимается, иначе – отвергается. 3.5. Схема Шнорра Схема Шнорра аналогична системам, основанным на сложности дискретного логарифмирования. Достоинством схемы подписи Шнорра является возможность выбора такого конкретного варианта реализации, при котором обеспечивается сравнительно малая длина подписи. 20 Параметры: p, q – большие простые числа, такие что q делит p - 1; * g – порождающий элемент группы Z p ; a – случайное число, 1< a< q; d = ga mod p – формирование открытого ключа; x – текст. Ключ подписания: (d, p, q, g). Ключ верификации: (a). Подписание: k – случайное число, 1 < k < q; r = gk mod p; e = h(x||r) – вычисление первой части подписи; s = k – ae mod q – вычисление второй части подписи. Подпись: (e, s). Верификация: r gsde mod p ; e = h(x||r); Если e=e, значит подпись верна. 3.6. DSA Данный алгоритм является частью Американского стандарта DSS. В алгоритме используется однонаправленная хэш-функция H(x). Стандарт определяет использование алгоритма SHA-1. Параметры: p – простое число L битов, где L принимает значение кратное 64 в диапазоне от 512 до 1024; q – 160 – битовый множитель p – 1; a = g(p-1)/q mod p, где g < p – 1, для которого g(p-1)/q mod p > 1 ; y = ax mod p, где x < q; 21 m – текст. Ключ подписания: (y, p, q, a). Ключ верификации: (x). Подписание: k – случайное число, k < q; r = (ak mod p) mod q – вычисление первой части подписи; s = (k-1(H(m) + xr)) mod q – вычисление второй части подписи. Подпись: (r , s). Верификация: w = s-1 mod q; u1 = (H(m)w) mod q; u2 = (rw) mod q; v ((au1 yu2 ) mod p) mod q , если v = r – то подпись подлинная. 3.7. ГОСТ Р34.10-94 Данный алгоритм является Российским стандартом цифровой подписи. Этот алгоритм использует однонаправленную хэш-функцию H(x). Стандарт определяет использование хэш-функции ГОСТ Р34.11-94, основанной на симметричном алгоритме ГОСТ 28147-89. Параметры: p – простое число, длина которого лежит в диапазоне 509-512 битов, либо 1020-1024 битов; q – простое число, множитель p – 1, длиной от 254 до 256 битов; a – случайное число, a < p-1, aq mod p = 1; y = ax mod p, где x < q; Ключ подписания: (p, q, a, y). Ключ верификации: (x). Подписание: k – случайное число, k < q; 22 r = (ak mod p) mod q – вычисление первой части подписи; s = (xr + k(H(m))) mod q – вычисление второй части подписи; Если H(m) mod q = 0, необходимо установить его в 1. Если r = 0 (или s=0), то необходимо выбрать другое значение K и начать снова. Подпись: (r mod 2256, s mod 2256). Верификация: v = H(m)q-2 mod q; z1 = (sv) mod q; z2 = ((q - r) v) mod q; u ((az1 y z 2 ) mod p) mod q Если u = r, то подпись подлинная. 23 Задания к разделу 3 Вариант 1: Подпись RSA Вариант 2: Подпись Рабина Вариант 3: Подпись Онга-Шнорра-Шамира Вариант 4: Подпись Эль-Гамаля Вариант 5: Подпись Шнорра Вариант 6: Подпись DSA Вариант 7: Подпись ГОСТ Р34.10-94 Данные для самопроверки к разделу 3 Данные следует использовать следующим образом: Выбрать в качестве входных параметров соответствующие данные из таблицы. Случайные числа, использующиеся в алгоритмах, необходимо брать из таблицы. Значения хэш-функции подставлять из таблицы. Для некоторых алгоритмов не приведен последний этап вычислений (расшифрование), потому что он подразумевает собой получение исходного сообщения x. Подпись RSA: h(x) 103 8008 802 22 153 p q 39503 6197 24907 4721 65809 71983 3491 9049 37963 3767 n 2843544449 21633727 225383443 179223323 247902503 (n) 2843432964 21624040 225349488 179180640 247832928 e 37 93 47 83 65 d 537946777 13718477 115072079 79875707 68630657 s 934219078 21294134 66278188 164775041 43942564 s3 10998035 5580772 28799198 8763032 25585145 s4 2094816 12967801 42034064 1157907 4598690 s1 4084013293 s2 5179723215 Подпись Рабина: x 14 17 15 22 30 r [1100]2 [0010]2 [0100]2 [0000]2 [0010]2 x 236 274 244 352 482 p 5003 5791 8011 2591 8191 q 4999 3323 9467 5531 4079 n 25009997 19243493 75840137 14330821 33411089 s1 22915181 6275692 33806073 13172914 28812399 s2 14011962 13662721 47040939 5567789 7825944 Подпись Онга-Шнорра-Шамира: x 15 p 72787 q 93059 n 6773485433 k1 56 k2 3751767920 r 34 24 23 56 99 150 23789 7369 15053 99241 88321 98327 33791 2459 2101068269 724571663 508655923 244033619 96 72 81 30 1161104676 570124964 452448707 129880115 72 21 48 31 1123487930 603809731 79477513 177121193 700352649 724571003 333803589 188928861 Подпись Эль-Гамаля: h 18 56 92 77 42 p 67853 37831 56039 94009 18257 g 2 5 5 3 5 k 15 22 45 98 77 d 32768 37351 47259 53209 8041 a 55 73 27 47 29 s 19537 22030 4066 27858 17852 r 51421 36892 20208 85927 14294 Схема Шнорра: p 48311 59207 55541 67217 57221 q 4831 4229 2777 4201 2861 g 1024 19837 48838 27841 18598 a 69 98 51 59 73 d 32853 1402 17408 33575 25854 k 15 68 40 67 94 r 34541 18854 33975 274 24597 e 54 66 98 32 58 s 1120 2058 596 2380 1582 r 34541 18854 33975 274 24597 DSA: q p g a x y k r s h(m) w u1 u2 v 1831 3697 4987 1721 449 40283 88729 49871 55073 86209 2 2 2 2 2 4872 7435 1024 44318 32450 26 23 89 77 15 9746 85870 43015 17684 47905 34 36 44 58 76 422 3469 1687 1298 302 217 163 3526 893 309 68 21 14 36 96 1696 2631 2799 609 93 1806 3493 4277 1272 397 1622 2743 4211 543 248 422 3469 1687 1298 302 a 2989 16 256 1024 39371 x 22 37 12 51 67 y 3991 31987 32426 45611 55494 z2 1227 1393 59 873 249 u 966 2653 3560 2756 862 ГОСТ Р34.10-94 q 1303 8647 5861 6679 1297 p 20849 34589 46889 66791 70039 g 2 2 2 2 2 k 32 14 16 33 87 r 966 2653 3560 2756 862 s 605 4234 2317 2970 963 h(m) 47 85 39 81 33 v 804 3764 1052 2886 904 z1 401 355 5169 2263 265 25 Список литературы 1. Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. Учебное пособие для ВУЗов – М.: Горячая линия – Телеком, 2002 – 175с. 2. Мао Венбо, Современная криптография. Теория и практика.: Пер. с англ. – М.: Издательский дом “Вильямс”, 2005. - 768 с.: ил. 3. Молдовян Н.А., Молдовян А.А. Введение в криптосистемы с открытым ключом. – СПб.: БХВ-Петербург, 2005. 288 с.: ил. 4. Ниссенбаум О.В., Овсянко А.Г. Криптографические методы защиты информации. Генерация больших простых чисел в криптосистемах с открытым ключом: Учебно-методическое пособие. – Тюмень: Издательство Тюменского государственного университета, 2009. – 41 с. 5. Рябко Б.Я., Фионов А.Н. Основы современной криптографии для специалистов в информационных технологиях. – М.: Научный мир, 2004. – 173с. 6. Саломаа А., Криптография с открытым ключом.- М.:Мир, 1995 7. Шнайер Б. Прикладная криптография: Протоколы, алгоритмы, исходные тексты на языке Cи. – М.: Издательство ТРИУМФ, 2003 – 816 с., ил. 8. Menezes A., van Oorschot P., Vanstone S. Handbook of Applied Cryptography. – CRC Press, 1996. – 661 p. 26