Система RSA была предложена в 1978 г. и в настоящее время является наиболее распространенной системой шифрования с открытым ключом. Напомним ее определение, приведенное в Теме 1 (определение 4).
Пусть п = р • q — целое число, представимое в виде произведения двух больших простых чисел p,q. Выберем числа е и d из условия
е•dº1(mod j(n)), (8.1)
где j(п) = (р – 1) • (q–1) – значение функции Эйлера от числа п. Пусть k=(n,p,q,e,d)– выбранный ключ, состоящий из открытого ключа kз =(n,e) и секретного ключа kр = (n,p,q,d). Пусть М – блок открытого текста и С – соответствующий блок шифрованного текста. Тогда правила зашифрования и расшифрования определяются формулами:
С = Еk(М) = Mе(mod n), Dk(C) = Cd(mod n) . (8.2)
Заметим, что в соответствии с (2) Dk(С) = М. Это вытекает из следующих рассуждений. Для любого целого числа М и любого простого р справедливо сравнение
М р º M(mod р). (8.3)
В самом деле, (8.3) равносильно сравнению
Мр – M º 0(mod р)
или сравнению
M( Мр-1– 1) º 0(mod р) (8.4)
Если НОД(М,р)=р, то р делит М, и поэтому Мº 0(mod p), откуда следует (8.4). Если же НОД(М,р) = 1, то, согласно малой теореме Ферма, Мр-1ºl(modp), откуда также следует (8.4).
Согласно (8.1), существует целое число r, такое, что e× d = r×j(п)+ 1. Отсюда и из (8.3) получаем следующую цепочку равенств и сравнений:
С d =(Me)d =Me×d = Мr×j(п)+ 1=Mr•(p-l)(q-l)+l = Mr•p(q-l)×M-r•q+r+l =
Поскольку р и q — разные простые числа, то на основании известных свойств сравнений из (8.5), (8.6) получаем:
С d =M(mod n).
Отсюда и следует корректность определения (8.2). Для того чтобы лучше представить себе технические детали, возникающие при зашифровании и расшифровании, приведем пример работы с RSA.
Пример
Зашифруем аббревиатуру RSA, используя р=17, q=31. Для этого вычислим n=pq=527 и j(п) = (p–1)(q –1) =480 . Выберем, далее, в качестве е число, взаимно простое с j(п), например е = 7. С помощью алгоритма Евклида найдем целые числа и и v, удовлетворяющие соотношению e×u+j(n)×v =1:
Поскольку –137 = 343(mod 480), то d = 343. Проверка:
7×343=2401=l(mod 480).
Теперь представим данное сообщение в виде последовательности чисел, содержащихся в интервале 0,…,526. Для этою буквы R,S и А закодируем пятимерными двоичными векторами, воспользовавшись двоичной записью их порядковых номеров в английском алфавите:
R = 18 = (10010), S =19= (10011), А = 1 = (00001).
Тогда RSA= (100101001100001). Укладываясь в заданный интервал 0,…,526, получаем следующее представление:
Возвращаясь к буквенной записи, получаем после расшифрования RSA.
Проанализируем вопрос о стойкости системы RSA. Нетрудно показать, что сложность нахождения секретного ключа системы RSA определяется сложностью разложения числа п на простые множители. В связи с этим нужно выбирать числа р и q таким образом, чтобы задача разложения числа п была достаточно сложна в вычислительном плане. Для этого рекомендуются следующие требования:
1) числа р и q должны быть достаточно большими, не слишком сильно отличаться друг от друга и в то же время быть не слишком близкими друг другу;
2) числа р и q должны быть такими, чтобы наибольший общий делитель чисел р–1 и q– 1 был небольшим; желательно, чтобы НОД(р–1, q–1) = 2 ;
3) р и q должны быть сильно простыми числами (сильно простым называется такое простое число r, что r+1имеет большой простой делитель, r-1 имеет большой простой делитель s, такой, что число s – 1 также обладает достаточно большим простым делителем).
В случае когда не выполнено хотя бы одно из указанных условий, имеются эффективные алгоритмы разложения п на простые множители.
В настоящее время самые большие простые числа, вида п = р • q, которые удается разложить на множители известными методами, содержат в своей записи 140 десятичных знаков. Поэтому, согласно указанным рекомендациям, числа р и q в системе RSA должны содержать не менее 100 десятичных знаков.
Следует подчеркнуть необходимость соблюдения осторожности в выборе модуля RSA (числа п) для каждого из корреспондентов сети. В связи с этим можно сказать следующее.
Самостоятельно можно убедиться в том, что, зная одну из трех величин: р, q или j(п), можно легко найти секретный ключ RSA. Известно также, что, зная секретную экспоненту расшифрования d, можно легко разложить модуль п на множители. В этом случае удается построить вероятностный алгоритм разложения п. Отсюда следует, что каждый корреспондент сети, в которой для шифрования используется система RSA, должен иметь свой уникальный модуль.
В самом деле, если в сети используется единый для всех модуль п, то такая организация связи не обеспечивает конфиденциальности, несмотря на то, что базовая система RSA может быть стойкой. Выражаясь другими словами, говорят о несостоятельности протокола с общим модулем. Несостоятельность следует из того, что знание произвольной пары экспонент (ei,di) позволяет, как было отмечено, разложить п на множители. Поэтому любой корреспондент данной сети имеет возможность найти секретный ключ любого другого корреспондента. Более того, это можно сделать даже без разложения п на множители.
Как отмечалось ранее, системы шифрования с открытыми ключами работают сравнительно медленно. Для повышения скорости шифрования RSA на практике используют малую экспоненту зашифрования.
Если выбрать число е небольшим или таким, чтобы в его двоичной записи было мало единиц, то процедуру шифрования можно значительно ускорить. Например, выбрав е=3 (при этом ни р–1, ни q–1 не должны делиться на 3), мы можем реализовать шифрование с помощью одного возведения в квадрат по модулю п и одного перемножения. Выбрав е = 216 +1=65537 – число, двоичная запись которого содержит только две 1, мы сможем реализовать шифрование с помощью 16 возведений в квадрат по модулю п и одного перемножения. Если экспонента е выбирается случайно, то реализация шифрования по алгоритму RSA потребует s возведений в квадрат по модулю п и в среднем s/2 умножений по тому же модулю, где s – длина двоичной записи числа п. Вместе с тем выбор небольшой экспоненты е может привести к негативным последствиям. Дело в том, что у нескольких корреспондентов могут оказаться одинаковые экспоненты е.
Пусть, например, три корреспондента имеют попарно взаимно простые модули п1, п2, п3, и общую экспоненту е = 3. Если еще один пользователь посылает им некое циркулярное сообщение М, то криптоаналитик противника может получить в свое распоряжение три шифрованных текста yiº М3 (mod ni), i = 1,2,3. Далее он может найти решение у системы сравнений
y º y1(mod n1),
у º y2(mod n2),
y º y3(mod n3),
лежащее в интервале 0 < у < n1 • п2 • n3. По китайской теореме об остатках такое решение единственно, а так как М3 <n1 • n2 • п3, то у=М3. Само М можно найти, вычисляя кубический корень: М = .
Отметим, что выбор малой экспоненты расшифрования d также нежелателен в связи с возможностью определения d простым перебором. Известно также, что если d < , то экспоненту d легко найти, используя непрерывные дроби.
8.2. Шифрсистема Эль-Гамаля
Шифрсистема Эль-Гамаля была предложена в 1985г. и является фактически одним из вариантов метода выработки открытых ключей Диффи-Хеллмана (который будет рассмотрен далее). Криптографическая стойкость данной системы основана на сложности проблемы логарифмирования в мультипликативной группе конечного простого поля.
В соответствии с терминологией, введенной в 2, шифрсистема Эль-Гамаля (X, К, Y ,E,D) определяется следующим образом. Для нее
Х= Z*p, Y =Z*p´Z*p, K={(p,a,b,g)êagºb (mod p)},
где p – достаточно большое простое число, a – порождающий элемент группы Z*p, g – целое число из интервала 1£ g £ p–2. Ключ k=(p,a,b,g) представляется в виде открытого ключа kз = (p,a,b) и секретного ключа kр=(g). Правило зашифрованияна ключе k определяется формулой
Еk(M)=(C1,C2),
где С1º ar (mod p), С2 = М • br(mod p),
и r – случайно выбираемое число (рандомизатор) из интервала 0£ r£ р –2.
Правило расшифрования на ключе k определяется формулой
Dk(C1,C2)=C2(C1g)–1(mod p).
Несложно проверить, что такое определение корректно, то есть что выполняется равенство Dk(Ek(M)) = М при любых k Î К и М Î Х .
Введение в правило зашифрования рандомизатора r делает шифр Эль-Гамаля шифром многозначной замены (см. 4). В связи со случайным характером выбора параметра r подобную схему шифрования называют еще схемой вероятностного шифрования. Для нее открытый текст и ключ не определяют шифртекст однозначно.
Для выработки открытого и секретного ключей каждый из абонентов системы осуществляет следующие операции:
1) выбирает большое простое число р и некоторый порождающий элемент a группы Z*p;
2) случайно выбирает целое число g, 1£ g£ p-2, и вычисляет b ºag(mod p);
3) публикует открытый ключ (р,a,b), оставляя в секрете число g.
Следует отметить, что в приведенной системе необходимо использовать различные значения рандомизатора r для зашифрования различных открытых текстов М и М'. В самом деле, в противном случае соответствующие шифртексты (C1,C2) и (Ć1,Ć2) оказываются связанными соотношением C2•(Ć2)–1=M•(M') –1 и М' может быть легко вычислен, если известен М.
Как уже отмечалось, стойкость системы Эль-Гамаля определяется сложностью решения задачи дискретного логарифмирования в Z*p. В настоящее время эта задача практически нереализуема для значений р, содержащих не менее 150 десятичных знаков. Рекомендуется также, чтобы число р –1 содержало большой простой делитель.
Система Эль-Гамаля может быть обобщена для применения в любой конечной циклической группе G. Криптографическая стойкость такой обобщенной схемы определяется сложностью задачи логарифмирования в группе G . При этом групповая операция в G должна быть легко реализуемой. В качестве G чаще всего выбираются следующие три группы:
1) мультипликативная группа Z целых чисел по модулю простого числа p;
2) мультипликативная группа GF(2m)* конечного поля GF(2m) характеристики 2;
3) группа точек эллиптической кривой над конечным полем.
Вероятностный характер шифрования можно отнести к достоинствам системы Эль-Гамаля, так как схемы вероятностного шифрования обладают, как правило, большей стойкостью по сравнению со схемами с детерминированным процессом шифрования. Недостатком системы является удвоение длины открытого текста при шифровании.
8.3. Шифрсистема Мак-Элиса
Идея, лежащая в основе данной системы, состоит в выборе корректирующего кода, исправляющего определенное число ошибок, для которого существует эффективный алгоритм декодирования. С помощью секретного ключа этот код "маскируется" под общий линейный код, для которого, как известно, задача декодирования не имеет эффективного решения.
В системе Мак-Элиса параметрами системы, общими для всех абонентов, являются целые числа k, п и t. Для получения открытого и соответствующего секретного ключа каждому из абонентов системы следует осуществить следующую последовательность действий:
1) выбрать порождающую матрицу G=Gk´n двоичного (n,k) -линейного кода, исправляющего t ошибок, для которого известен эффективный алгоритм декодирования;
2) случайно выбрать двоичную невырожденную матрицу S = Sk´k;
3) случайно выбрать подстановочную матрицу Р = Рn´n ;
4) вычислить произведение матриц G1 = S • G • Р .
Открытым ключом является пара (G1, t), секретным — тройка (S, G, Р).
Для того чтобы зашифровать сообщение М , предназначенное для абонента А, абоненту В следует выполнить следующие действия:
1) представить М в виде двоичного вектора длины k;
2) выбрать случайный бинарный вектор ошибок Z длины п, содержащий не более t единиц;
3) вычислить бинарный вектор С = М • GA + Z и направить его абоненту А.
Получив сообщение С, абонент А вычисляет вектор С1= С • Р-1, с помощью которого, используя алгоритм декодирования кода с порождающей матрицей G, получает далее векторы М1 и М = М1 • S-1.
Чтобы убедиться в корректности приведенного алгоритма расшифрования, достаточно заметить, что
где Z•Р-1 – вектор, содержащий не более t единиц. Поэтому алгоритм декодирования кода с порождающей матрицей G декодирует С в М1 = М • S.
В качестве кода, исправляющего ошибки в системе Мак-Элиса, можно использовать код Гоппы (см., например, [Пит64]). Известно, что для любого неприводимого полинома g(x) степени t над полем GF(2m) существует бинарный код Гоппы длины п = 2m и размерности k ³ п – mt, исправляющий до t ошибок включительно, для которого имеется эффективный алгоритм декодирования. В настоящее время не известны эффективные алгоритмы дешифрования системы Мак-Элиса, использующей код Гоппы, при правильном выборе параметров системы.
Вместе с тем рекомендуемые параметры для этой системы – п=1024, t=38, k>644– приводят к тому, что открытый ключ имеет размер около 219 бит, а длина сообщения увеличивается при шифровании примерно в 1,6 раза, к связи с чем данная система не получила широкого распространения.
8.4. Шифрсистемы на основе "проблемы рюкзака"
''Проблема рюкзака" (или "ранца") может быть сформулирована следующим образом. Пусть задано множество натуральных чисел А={а1,а2,...,ап} и натуральное число S. Требуется установить, имеется ли такое подмножество множества А, сумма элементов которого была бы равна S. Эквивалентной является следующая формулировка: существует ли такой набор чисел хiÎ{0,1}, i£n, для которого
Данная проблема получила свое название в связи с тем, что поставленная задача может быть переформулирована также в следующем виде. Имеется набор предметов с известными весами и рюкзак, который может выдержать вес, не превышающий заданной величины. Можно ли выбрать набор предметов для погрузки в рюкзак так, чтобы они в точности имели максимально возможный вес.
"Проблема рюкзака" является весьма сложной, ее решение с полиномиальной сложностью в настоящее время не известно.
Идея построения системы шифрования на основе "проблемы рюкзака" заключается в выделении некоторого подкласса задач об укладке рюкзака, решаемых сравнительно легко, и "маскировки" задач этого класса (с помощью некоторого преобразования параметров) под общий случай. Параметры подкласса определяют секретный ключ, а параметры модифицированной задачи – открытый ключ. В качестве легко решаемой задачи Р.Меркль и М.Хеллман в 1978г. предложили задачу об укладке "супервозрастающего" рюкзака. Изложим ее суть.
Назовем супервозрастающей последовательность натуральных чисел (b1,b2,...,bп), обладающую свойством
Можно убедиться в том, что "проблема рюкзака" для супервозрастающей последовательности может быть решена с помощью процедуры, состоящей в выполнении следующих шагов:
1. Положить i = п.
2. Если i > 1, то положить хi равным 1 и S равным S – bi, если S>bi, и положить хiравным 0 в противном случае.
3. Положить i равным i –1 и возвратиться к шагу 2.
В системе, основанной на проблеме рюкзака, величина п является параметром системы.
Для вычисления открытого и соответствующего секретного ключа каждый из абонентов системы осуществляет следующую последовательность действий.
1. Выбирает супервозрастающую последовательность (b1,b2,...,bп) и модуль т, такой, что
2. Выбирает случайное число W, 1<W <т-1, такое, что Н0Д(W,m)=1.
3. Выбирает случайную перестановку л чисел {1,2,...,n}.
4. Вычисляет ai=W bp(i) mod m для i = 1,…,п.
Открытым ключом является набор (а1,а2,...,ап), секретным ключом – набор (p,m,W,(b1,b2,...,bп)).
Чтобы зашифровать сообщение М, предназначенное для абонента А, абонент В осуществляет следующие шаги с помощью открытого ключа (а1,а2,...,ап) абонента А:
1. Представляет М в виде бинарной последовательности М=М1М2...Мп длины п.
2. Вычисляет С = и направляет его к А.
Абонент А, получив С, вычисляет Н =W-1•C mod m, a затем, решая "проблему рюкзака" для супервозрастающей " последовательности, находит числа ziÎ{0,1}, такие, что
Биты последовательности М вычисляются по формуле
Мi= zp(i) , i = 1,…,п.
Корректность проведенной процедуры расшифрования вытекает из следующих рассуждений. Поскольку
и 0 < Н < т, то Н= и, следовательно, алгоритм решения "проблемы рюкзака" действительно находит биты открытого текста, переставленные в соответствии с перестановкой л.
Вместе с тем доказано, что существует алгоритм полиномиальной сложности, который может быть использован противником для получения открытого текста М по шифртексту С. Этот алгоритм, исходя из аi , находит пару таких целых чисел и1 , т1, что отношение и1 /т1 близко к отношению и/т
(где u=W-1modm, a W,m являются частью секретного ключа). Кроме того, числа Вi=ui•ai(modm), 1<i<n, образуют супервозрастающую последовательность. Эта последовательность затем используется противником вместо (b1,b2,...,bп) для дешифрования сообщения.
Контрольные вопросы
1. В чем состоят преимущества систем с открытыми ключами перед симметричными шифрсистемами?
2. Сложностью какой математической задачи определяется стойкость системы RSA?
3. К какому типу принадлежит схема шифрования, используемая в системе Эль-Гамаля? В чем ее преимущества?
4. Чем вызваны трудности в практической реализации системы Мак-Элиса?
5. Придумайте алгоритм вычисления аd(тоd п), имеющий сложность 0(ln п).
6. Постройте пример шифра Эль-Гамаля для р = 127. Зашифруйте и расшифруйте выбранное Вами т £ 126.
Литература
1. А.В. Аграновский. Р.А. Хади. Практическая криптография. М., Солон-Р, 2002.
3. Андрончик, А. Н. и др. Защита информации в компьютерных сетях. Практический курс: учебное пособие / А. Н. Андрончик, В. В. Богданов, Н. А. Домуховский, А. С. Коллеров, Н. И. Синадский, Д. А. Хорьков, М. Ю. Щербаков; Под ред. Н. И.Синадского – Екатеринбург: ГОУ ВПО УГТУ - УПИ, 2008. – 246 с.
4. Анохин М. И., Варновский Н. П., Сидельников В. М., Ященко В. В. Криптография в банковском деле. —М.: Изд-во МИФИ, 1997.
5. Аршинов М. Н., Садовский Л. Е. Коды и математика. — М.: Наука, 1983.
6. А.В. Бабаш, Г.П. Шанкин. Криптография. М., Солон-Р, 2002.
8. С. Баричев, Р. Серов "Основы современной криптографии"
9. A.A-Большаков, А.Б. Петряев, В.В. Платонов, Л.М. Ухлинов. "Основы обеспечения безопасности данных в компьютерных системах и сетях. Часть 1. Методы, средства и механизмы защиты данных", ВИККА им. Можайского, СПБ, 1995.
10. Брассар Ж. Современная криптология. М.: Полимед, 1999.
11. Бейкер А. Введение в теорию чисел. Мн.: Вышэйш. шк., 1995.
12. Березин Б. В., Дорошкевич П. В. Цифровая подпись на основе традиционной криптографии // Защита информации.— 1992.— Вып. 2.— С.148—167.
13. Болл У., Коксетер Г. Математические эссе и развлечения (криптография и криптографический анализ). —М.; Мир, 1986.
14. Брассар Ж. Современная криптология. — М.:Полимед,1999.
15. Варфоломеев А. А., Пеленицын М. Б. Методы криптографии и их применение в банковских технологиях. — М.: Изд-во МИФИ, 1995.
16. Варфоломеев А. А., Жуков А. Е., Пудовкина М. А. Поточные криптосистемы. Основные свойства и методы анализа стойкости. — М.: Изд-во МИФИ, 2000.
17. Варфоломеев А. А., Домнина О. С., Пеленицын М. Б, Управление ключами в системах криптографической защиты банковской информации. — М.: Изд-во МИФИ, 1996.
18. Введение в криптографию / Под ред. В.В. Ященко. М.: МЦНМО, 2001.
19. М. Вельшенбах. Криптография на Си и C++ в действии. Под редакцией П.В. Семьянова. М., Триумф, 2004.
20. Гайкович В., Першин А. Безопасность электронных банковских систем.— М.: Единая Европа, 1994.
21. Герасименкo В.А., Малюк A.A. Основы защиты информации: Учеб. пособие. М.:МИФИ, 1997.
22. Диффи У., Хеллман М. Э. Защищенность и имитостойкость. Введение в криптографию // ТИИЭР. — 1979. — Т. 67. — № 3.
23. Духан, Е. И. Применение программно-аппаратных средств защиты компьютерной информации: учеб. пособие / Е. И. Духан, И. Н. Синадский, Д. А. Хорьков. – Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2007. – 174 с.
24. Жельников В. Криптография от папируса до компьютера. М.: ABF, 1996.
25. Зубов, А.Ю. Криптографические методы защиты информации. Совершенные шифры. -М.: Гелиос АРВ, 2005.
26. Дэвид Кан. Взломщики кодов. - М.: Центрполиграф, 2000.
27. Д.Кан "Разведчики и цензура"
28. Нил Коблиц, Курс теории чисел и криптографии, М. ТВП, 2001
29. Конхейм А. Г. Основы криптографии. — М.: Радио и связь, 1987.
30. Кузьминов Т. В. Криптографические методы защиты информации. — Новосибирск: Наука, 1998.
31. Лидл Р., Нидеррайтер Г. Конечные поля: В 2 т. М.: Мир, 1988.
32. Мельников В.В. Защита информации в компьютерных системах. М.: Финансы и статистика, 1997.
33. Молдовян Н.А. Проблематика и методы криптологии. СПб.: Изд-во СПбГУ, 1998.
53. Хоффман Л. Современные методы защиты информации. – М.:Мир,1970.
54. А.Чмора. Современная прикладная криптография. М., Гелиос, 2002.
55. Шеннон К. Теория связи в секретных системах//В кн.: Работы по теории информации и кибернетике.- М.: ИЛ,1963.
56. Брюс Шнайер. Прикладная криптография, 2-е издание: протоколы, алгоритмы.исходные тексты на языке Си. Под редакцией П.В. Семьянова. М., Триумф, 2002.
• Периодические издания
журнал "Защита информации. Конфидент"
журнал "Проблемы информационной безопасности. Компьютерные системы"
ИНТЕРНЕТ-ИСТОЧНИКИ
А. В. Бабаш, Г.П. Шанкин, Криптография, 2007, 511 стр., DJVU, 9.5 мб
http://ifolder.ru/19035938
Панасенко Сергей, Алгоритмы шифрования. Специальный справочник. 2009 г., 576 стр., djvu, 7,41Mb
http://ifolder.ru/14970991
Московский Государственный Технический Университет им. Н.Э. Баумана, Кафедра ИУ-8, Жуков А.Е. Системы блочного шифрования. Пособие по курсу «Криптографические методы защиты информации»
http://stream.ifolder.ru/13203588
Московский Государственный Технический Университет им. Н.Э. Баумана, Кафедра ИУ-8, Жуков А.Е. Системы поточного шифрования. Пособие по курсу «Криптографические методы защиты информации»