Цель лекции: изучить принципы работы некоторых криптографических алгоритмов с открытым ключом.
Алгоритм шифрования с открытым ключом RSA был предложен одним из первых в конце 70-х годов ХХ века. Его название составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA является, наверно, наиболее популярным и широко применяемым
Алгоритм основан на использовании того факта, что задача разложения большого числа на простые сомножители является трудной. Криптографическая система RSA базируется на следующих двух фактах из теории чисел:
Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные должны быть представлены в виде целых чисел между 0 и n -1 для некоторого n.
Итак, рассмотрим сам алгоритм. Пусть абонент А хочет передать зашифрованное сообщение абоненту Б. В этом случае абонент Б должен подготовить пару (открытый ключ; закрытый ключ) и отправить свой открытый ключ пользователю А.
Первым этапом является генерация открытого и закрытого ключей. Для этого вначале выбираются два больших простых числа Р и Q. Затем вычисляется произведение N:
N = PQ.
После этого определяется вспомогательное число f:
f = (Р - l)(Q - 1).
Затем случайным образом выбирается число d < f и взаимно простое с f.
Далее необходимо найти число е, такое, что
еd mod f = 1.
Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом.
Таким образом, на этом этапе у пользователя должна быть информация, указанная в следующей таблице:
| Открытый ключ | Закрытый ключ | |
| Пользователь системы | N, d |
e |
Так как пользователь Б хочет получить зашифрованное сообщение от пользователя А, значит пользователь Б должен отправить свой открытый ключ (d, N) пользователю А. Числа Р и Q больше не нужны, однако их нельзя никому сообщать; лучше всего их вообще забыть.
На этом этап подготовки ключей закончен и можно использовать основной протокол RSA для шифрования данных.
Второй этап – шифрование данных. Если абонент А хочет передать некоторые данные абоненту Б, он должен представить свое сообщение в цифровом виде и разбить его на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков сi.
Абонент А шифрует каждый блок своего сообщения по формуле
ci = mid mod N
используя С=(с1, с2, с3, ...) по открытой линии.
Абонент Б, получивший зашифрованное сообщение, расшифровывает все блоки полученного сообщения по формуле
mi = ce mod N
Все расшифрованные блоки будут точно такими же, как и исходящие от пользователя А.
Злоумышленник, перехватывающий все сообщения и знающий всю открытую информацию, не сможет найти исходное сообщение при больших значениях Р и Q.
Пусть пользователь А хочет передать пользователю Б сообщение. В этом случае вначале пользователь Б должен подготовить открытый и закрытый ключи. Пусть им выбраны, например, следующие параметры:
Р = 3, Q = 11, N = 3x11 = 33.
Тогда f = (Р - l)(Q - 1) = (3-1)(11-1) = 20.
Затем пользователь Б выбирает любое число d, не имеющее общих делителей с f (это необходимо для того, чтобы зашифрованное сообщение можно было потом однозначно восстановить). Пусть d = 13. Это число будет одним из компонентов открытого ключа.
Далее необходимо найти число е, которое можно будет использовать в качестве закрытого ключа для расшифрования сообщения. Значение е должно удовлетворять соотношению
еd mod f = 1.
Для малых значений . В нашем случае подходит е=17. (Проверяем: 13*17 mod 20 = 221 mod 20 = 1.)
Теперь пользователь Б должен запомнить свой закрытый ключ 17, отправить открытый ключ (13, 33) пользователю А и уничтожить числа Р = 3 и Q = 11.
Пользователь А, получивший открытый ключ (13, 33), увидев, что N=33, разбивает исходное сообщение на три блока, причем значение каждого меньше N. Например, пусть имеется три блока m1=8, m2=27, m3,=5. Затем пользователь А шифрует каждый блок:
c1=813 mod 33 = 17 c2 = 2713 mod 33 = 15 c3 = 513 mod 33 = 26
Зашифрованное сообщение, состоящее из трех блоков (17, 15, 26), передается пользователю Б, который, используя свой закрытый ключ е = 17 и N=33, расшифровывает сообщение:
m1 = 1717 mod 33 = 8 m2 = 1517 mod 33 = 27 m3 = 2617 mod 33 = 5
Таким образом, абонент Б расшифровал сообщение от абонента А.
На протяжении многих лет алгоритм RSA активно используется как в виде самостоятельных криптографических продуктов, так и в качестве встроенных средств в популярных приложениях. Открытое шифрование на базе алгоритма RSA применяется в популярном пакете шифрования PGP, операционной системе Windows, различных Интернет-браузерах, банковских компьютерных системах. Кроме того, различные международные стандарты шифрования с открытым ключом и формирования цифровой подписи используют RSA в качестве основного алгоритма.
Для обеспечения высокой надежности шифрования необходимо, чтобы выступающее в качестве модуля число N было очень большим – несколько сотен или тысяч бит. Только в этом случае будет практически невозможно по
Сами авторы RSA рекомендовали использовать следующие размеры модуля N: 768 бит - для частных лиц; 1024 бит - для
С размером ключей связан и другой аспект реализации RSA - вычислительный. При использовании алгоритма вычисления необходимы как при создании ключей, так и при шифровании/расшифровании, при этом, чем больше размер ключей, тем труднее производить расчеты. Для работы с громадными числами приходится использовать аппарат N. При прямых расчетах промежуточные значения были бы невообразимыми. Чтобы упростить процесс вычислений используют специальные алгоритмы для работы с большими числами, основанные на свойствах модульной арифметики, а также оптимизацию при возведении в степень.
Алгоритм RSA реализуется как программным, так и аппаратным путем. Многие мировые фирмы выпускают специализированные микросхемы, производящие шифрование алгоритмом RSA. Программные реализации значительные медленнее, чем аппаратные. К достоинствам программного шифрования RSA относится возможность гибкой настройки параметров, возможность интеграции в различные программные пакеты. В целом, и программная, и аппаратная реализации RSA требуют для выполнения примерно в тысячи раз большего времени по сравнению с
Алгоритм RSA может использоваться для формирования электронной цифровой подписи, а также и для обмена ключами. Возможность применения алгоритма RSA для получения электронной подписи связана с тем, что секретный и открытый ключи в этой системе равноправны. Каждый из ключей, d или e, могут использоваться как для шифрования, так и для расшифрования. Это свойство выполняется не во всех криптосистемах с открытым ключом. Использование алгоритма RSA для формирования ЭЦП рассматривается в .
Первая публикация данного алгоритма появилась в 70-х годах ХХ века в статье Диффи и Хеллмана, в которой вводились основные понятия криптографии с открытым ключом.
Алгоритм основан на трудности вычислений Р. Вначале специальным образом подбирается некоторое натуральное число А, меньшее Р. Если мы хотим зашифровать значение X, то вычисляем
Y = AX mod P.
Причем, имея Х, вычислить Y легко. Обратная задача вычисления X из Y является достаточно сложной. Экспонента X как раз и называется дискретным логарифмом Y. Таким образом, зная о сложности вычисления Y можно открыто передавать по любому каналу связи, так как при большом модуле P исходное значение Х подобрать будет практически невозможно. На этом математическом факте основан
Пусть два пользователя, которых условно назовем пользователь 1 и пользователь 2, желают сформировать общий ключ для алгоритма симметричного шифрования. Вначале они должны выбрать большое простое число Р и некоторое специальное число А, 1 < A < P-1, такое, что все числа из интервала [1, 2, ..., Р-1] могут быть представлены как различные степени А mod Р. Эти числа должны быть известны всем абонентам системы и могут выбираться открыто. Это будут так называемые общие параметры.
Затем первый пользователь выбирает число Х1 (X1<P), которое желательно формировать с помощью датчика случайных чисел. Это будет закрытый ключ первого пользователя, и он должен держаться в секрете. На основе закрытого ключа пользователь 1 вычисляет число
которое он посылает второму абоненту.
Аналогично поступает и второй пользователь, генерируя Х2 и вычисляя
Это значение пользователь 2 отправляет первому пользователю.
После этого у пользователей должна быть информация, указанная в следующей таблице:
| Общие параметры | Открытый ключ | Закрытый ключ | |
| Пользователь 1 | Р, А |
Y1 |
Х1 |
| Пользователь 2 | Y2 |
Х2 |
Из чисел Y1 и Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования. Вот как это должен сделать первый пользователь:
Никто другой кроме пользователя 1 этого сделать не может, так как число Х1 секретно. Второй пользователь может получить то же самое число Z, используя свой закрытый ключ и открытый ключ своего абонента следующим образом:
Если весь протокол формирования общего секретного ключа выполнен верно, значения Z у одного и второго абонента должны получиться одинаковыми. Причем, что самое важное, противник, не зная секретных чисел Х1 и Х2, не сможет вычислить число Z. Не зная Х1 и Х2, злоумышленник может попытаться вычислить Z, используя только передаваемые открыто Р, А, Y1 и Y2. Безопасность формирования общего ключа в алгоритме Диффи-Хеллмана вытекает из того факта, что, хотя относительно легко вычислить экспоненты по модулю простого числа, очень трудно вычислить дискретные логарифмы. Для больших простых чисел размером сотни и тысячи бит задача считается неразрешимой, так как требует колоссальных затрат вычислительных ресурсов.
Пользователи 1 и 2 могут использовать значение Z в качестве секретного ключа для шифрования и расшифрования данных. Таким же образом любая пара абонентов может вычислить секретный ключ, известный только им.
Пусть два абонента, желающие обмениваться через Интернет зашифрованными сообщениями, решили сформировать секретный ключ для очередного сеанса связи. Пусть они имеют следующие общие параметры:
Р = 11, А = 7.
Каждый абонент выбирает секретное число Х и вычисляет соответствующее ему открытое число Y. Пусть выбраны
Х1 = 3, Х2= 9.
Вычисляем
Y1 = 73 mod 11 = 2, Y2= 79 mod 11 = 8.
Затем пользователи обмениваются открытыми ключами Y1 и Y2. После этого каждый из пользователей может вычислить общий секретный ключ:
пользователь 1: Z = 83 mod 11 = 6. пользователь 2: Z = 29 mod 11 = 6.
Теперь они имеют общий ключ 6, который не передавался по каналу связи.
Для того, чтобы Z, необходимо правильным образом выбрать число А, используемое в вычислениях. Число А должно обладать следующим свойством: все числа вида
A mod P, A2 mod P, A3 mod P,... , AP-1 mod P
должны быть различными и состоять из целых положительных значений в диапазоне от 1 до Р-1 с некоторыми перестановками. Только в этом случае для любого целого Y < Р и значения A можно найти единственную экспоненту Х, такую, что
Y = AХmod P, где 0 <= X <= (P - 1)
При произвольно заданном Р задача выбора параметра А может оказаться трудной задачей, связанной с разложением на простые множители числа Р-1. На практике можно использовать следующий подход, рекомендуемый специалистами. Простое число Р выбирается таким, чтобы выполнялось равенство Р = 2q + l, где q — также простое число. Тогда в качестве А можно взять любое число, для которого справедливы неравенства
1<A<P-1 и Aq mod P ≠ 1
На подбор подходящих параметров А и Р необходимо некоторое время, однако это обычно не критично для системы связи и не замедляет ее работу. Эти параметры являются общими для целой группы пользователей. Они обычно выбираются один раз при создании сообщества пользователей, желающих использовать
Следует заметить, что данный алгоритм, как и все
И в случае шифрования, и в случае формирования цифровой подписи каждому пользователю необходимо сгенерировать пару ключей. Для этого, так же как и в схеме Диффи-Хеллмана, выбираются некоторое большое простое число Р и число А, такие, что различные степени А представляют собой различные числа по модулю Р. Числа Р и А могут передаваться в открытом виде и быть общими для всех абонентов сети.
Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Хi < Р-1, и вычисляет соответствующее ему открытое число $$Y_i : Y_i = A^{X_i}\: mod \: P$$. Таким образом, каждый пользователь может сгенерировать закрытый ключ Хi и открытый ключ Yi.
Информация о необходимых параметрах системы сведена в следующую таблицу.
| Общие параметры | Открытый ключ | Закрытый ключ | |
| Пользователь 1 | Р, А |
Y1 |
Х1 |
| … | … | … | |
| Пользователь i | Yi |
Хi |
Теперь рассмотрим, каким образом производится шифрование данных. Сообщение, предназначенное для шифрования, должно быть представлено в виде одного числа или набора чисел, каждое из которых меньше Р. Пусть пользователь 1 хочет передать пользователю 2 сообщение m. В этом случае последовательность действий следующая.
k, взаимно простое с Р-1, и вычисляет
числа$$r=A^k\: mod \: P, \qquad e=m \times Y_2^k \: mod \:P$$
где Y2 – открытый ключ пользователя 2. Число k держится в секрете.(r, е), являющаяся шифротекстом, передается второму пользователю.(r,e), для расшифрования сообщения вычисляет$$m=e \times r^{P-1-X_2} \: mod \:P$$
где Х2 – закрытый ключ пользователя 2. В результате он получает исходное сообщение m.Если злоумышленник узнает или перехватит Р, А, Y2, r, e, то он не сможет по ним раскрыть m. Это связано с тем, что противник не знает параметр k, выбранный первым пользователем для шифрования сообщения m. Вычислить каким-либо образом число k практически невозможно, так как это задача дискретного логарифмирования. Следовательно, злоумышленник не может вычислить и значение m, так как m было умножено на неизвестное ему число. Противник также не может воспроизвести действия законного получателя сообщения (второго абонента), так как ему не известен закрытый ключ Х2 (вычисление Х2 на основании Y2 — также задача дискретного логарифмирования).
По аналогичному алгоритму может производиться и согласование ключа, используемого для симметричного шифрования больших объемов данных. Более того, алгоритм Эль-Гамаля на практике целесообразно использовать именно для согласования общего
Пусть два абонента, обменивающиеся через Интернет зашифрованными сообщениями, имеют следующие общие параметры:
Р = 11, А = 7.
Кроме того, пользователи 1 и 2 имеют пары закрытых и открытых ключей, вычисляемые также, как в п. 5.3.3:
Пользователь 1: закрытый ключ Х1= 3, открытый ключ Y1 = 73 mod 11 = 2, Пользователь 2: закрытый ключ Х2 = 9, открытый ключ Y2 = 79mod 11 = 8.
Первый абонент желает передать второму сообщение. Для этого первый абонент запрашивает из Y2 = 8. Теперь он может зашифровать свое сообщение, которое в числовом виде пусть имеет значение m=9.
Первый абонент выбирает случайно число k, например k = 7. Число k должно быть взаимно простым с Р-1. Значение k = 7 не имеет общих делителей с Р-1=10, значит, оно нам подходит. Первый абонент шифрует свое сообщение по формулам:
r = Ak mod P = 77 mod 11=6 e = m * Y2k mod P = 9 * 87 mod 11 = 7
Пара чисел (6, 7) будет представлять собой шифротекст и передается второму пользователю. Второй пользователь, получив (6,7) и используя свой закрытый ключ Х2 = 9 для расшифрования сообщения, вычисляет
В результате он действительно получает исходное сообщение m.
В 1985 году американские ученые Н. Коблиц (Neal Koblitz) и В. Миллер (Victor Miller) предложили использовать для криптосистем с открытым ключом теорию эллиптических кривых. Дальнейшие исследования подтвердили наличие подходящих свойств у этих математических функций и привели к созданию реальных криптографических систем, использующих математический аппарат эллиптических кривых. С 1998 года использование эллиптических кривых для решения криптографических задач, таких, как цифровая подпись, было закреплено в стандартах США ANSI X9.62 и FIPS 186-2, а в 2001 году аналогичный стандарт, ГОСТ Р34.10-2001, был принят и в России.
Основное достоинство криптосистем на эллиптических кривых состоит в том, что по сравнению с другими асимметричными криптосистемами, рассмотренными нами ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление
Криптография эллиптических кривых использует достаточно сложный аппарат высшей алгебры, поэтому мы, в рамках данного учебного пособия, не сможем подробно рассмотреть используемые на практике алгоритмы и выполнить соответствующие примеры вычислений. Сформулируем основные принципы построения криптографических систем с использованием эллиптических кривых.
В криптографии используются эллиптические кривые на плоскости, определяемые уравнениями вида
Y2= X3+ аХ + b mod р,
где .
(рис 11.1) Варианты графиков эллиптических кривыхПринцип использования эллиптических кривых следующий. Для группы пользователей выбирается общая эллиптическая кривая Е и некоторая точка G на ней. Закрытым ключом пользователя выступает некоторое целое число с, а открытым – точка D на кривой Е, полученная в результате специального преобразования композиции с использованием числа с. Параметры кривой и список открытых ключей абонентов, как и обычно, передаются всем пользователям сети. Открытые и закрытые ключи пользователей используются для выполнения операций шифрования и расшифрования в зависимости от назначения алгоритма.
С помощью эллиптических кривых могут быть реализованы многие известные протоколы с открытым ключом. Любая криптосистема, основанная на дискретном логарифмировании, легко может быть перенесена на эллиптические кривые. Например, можно заменить математические операции вида у = gхmod р на операции математического аппарата эллиптических кривых (операции вычисления композиции точек) в алгоритмах формирования ключа Диффи-Хеллмана или вычисления цифровой подписи Эль-Гамаля. В результате получатся те же алгоритмы, но с другими математическими операциями.
Несмотря на сложность математического аппарата эллиптических кривых, существуют эффективные вычислительные методы, позволяющие достаточно быстро реализовывать необходимые расчеты. За счет использования модуля меньшей длины операции генерации ключей и шифрования выполняются быстрее, чем, скажем, в алгоритме RSA или классическом алгоритме Диффи-Хеллмана. Криптографические методы на эллиптических кривых считаются перспективными и, закрепленные в различных стандартах, находят применение в современных системах защиты информации.
Попробуем проанализировать простейший протокол шифрования с открытым ключом, рассмотренный в , с точки зрения возможности проведения злоумышленником различных атак. Вспомним, что этот протокол предусматривал следующие действия пользователей. Если пользователь А желает передать секретное сообщение пользователю Б так, чтобы никто другой не смог его прочитать, он должен получить от пользователя Б открытый ключ UБ и зашифровать свое сообщение этим открытым ключом. Зашифрованное сообщение может пересылаться по любому каналу связи, например, по электронной почте. Получив сообщение от пользователя А, пользователь Б может расшифровать его своим закрытым ключом RБ. Такая процедура обмена зашифрованными сообщениями с использованием
Однако такая схема уязвима для атак типа "man-in-the-middle" ( "человек-в-середине" ). Эта атака заключается в следующем. Допустим, злоумышленник может не только перехватывать сообщения, но и заменять их другими, т.е. имеет возможность осуществлять
UБ. Противник перехватывает этот ключ, сохраняет его и заменяет его своим открытым ключом UП.М полученным открытым ключом UП, предполагая, что использует открытый ключ абонента Б, и пересылает зашифрованное сообщение пользователю Б.RП, читает или меняет, а затем зашифровывает открытым ключом пользователя Б и посылает пользователю Б.Аналогично взломщик перехватит и открытый ключ пользователя А, чтобы читать ответы пользователя Б. В результате нарушитель сможет читать (а, возможно, и изменять) всю корреспонденцию абонентов. Пользователи А и Б, скорее всего, ничего не заподозрят, так как у них нет способа проверить, действительно ли они общаются друг с другом.
На практике разработано несколько способов предотвращения атаки "man-in-the-middle". Один из способов заключается в разделении каждого зашифрованного сообщения на две части, каждая из которых бесполезна без другой. Части сообщения пересылаются по очереди и не могут быть расшифрованы по отдельности. Вот как может выглядеть этот протокол для обмена сообщениями между двумя пользователями А и Б:
Этот усовершенствованный протокол не позволит злоумышленнику читать или изменять корреспонденцию пользователей А и Б. Нарушитель, как и раньше, может подменить открытые ключи абонентов, а также перехватить передаваемые между ними данные. Однако, получив на шаге 2 протокола в свое распоряжение первую половину зашифрованного сообщения от А к Б, он не сможет расшифровать ее своим закрытым ключом и снова зашифровать открытым ключом абонента Б. Абоненты А и Б тоже не смогут прочитать сообщения до окончания протокола (шагов 5 и 6), но в этом нет ничего плохого, так как в результате они получат корректную корреспонденцию. Для осуществления протокола процесс разделения сообщения на две части может производиться разными способами, например, каждый нечетный байт помещается в первое сообщение, а каждый четный – во второе или как-то иначе.
Атаки "человек-в-середине" можно избежать и другими способами, например, добавляя к передаваемым открытым ключам цифровые подписи специального удостоверяющего центра.
Алгоритмы с открытым ключом чувствительны к атакам по выбранному открытому тексту. Как известно, такая атака имеет место, если криптоаналитик имеет возможность не только использовать предоставленные ему пары "текст-шифротекст", но и сам формировать нужные ему тексты и шифровать их.
Факт возможности проведения атаки по выбранному открытому тексту объясняется следующим образом. Предположим, мы используем F для согласования общего секретного ключа. Пусть один из абонентов отправил другому 64-битовый сеансовый ключ K, зашифрованный открытым ключом y другого абонента C=F(K, y). Злоумышленник, перехватив зашифрованное сообщение С, не сможет его, конечно, дешифровать, так как не имеет закрытого ключа x. Однако нарушитель может поступить по-другому, а именно, попытаться подобрать подходящее значение К. Для этого нужно зашифровать все возможные 64-битовые комбинации открытых текстов открытым ключом y и сравнить результаты с С. Это возможно, так значения y и C передавались в открытом виде. Особенно актуальна угроза такой атаки, если число возможных исходных сообщений не очень велико, например, если длина исходного сообщения мала или если не все исходные тексты допустимы на практике.
Для того, чтобы избежать возможности такой атаки, используют рандомизированные (или вероятностные) алгоритмы шифрования и формирования ЭЦП с открытым ключом. Такие алгоритмы шифруют одно и то же сообщение при наличии одинакового ключа каждый раз по-разному, так как используют некоторый случайный элемент. Примерами рандомизированных алгоритмов с открытым ключом могут служить алгоритмы Эль-Гамаля и алгоритмы формирования ЭЦП по ГОСТ Р34.10.
Другим вариантом предотвращения атаки на основе выбранного открытого текста является добавление в шифруемое сообщение некоторой дополнительной "случайной" информации, например, метки даты времени.
Алгоритм RSA – алгоритм шифрования с открытым ключом. Название алгоритма составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA основан на сложности задачи факторизации больших чисел. Данный алгоритм является, возможно, наиболее популярным и широко применяемым
Алгоритм Диффи-Хеллмана – алгоритм шифрования с открытым ключом. Этот алгоритм основан на трудности вычислений
Алгоритм Эль-Гамаля – алгоритм шифрования с открытым ключом, основанный на трудности вычислений
Атака "человек-в-середине" (англ. "man-in-the-middle") – термин в криптографии, обозначающий ситуацию, когда атакующий способен читать и видоизменять по своей воле сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале связи.
Криптосистемы на эллиптических кривых – группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости.
Алгоритм RSA – алгоритм шифрования с открытым ключом. Алгоритм RSA основан на сложности задачи факторизации больших чисел. Математические основы алгоритма RSA следующие. Выбираются два больших простых числа Р и Q и вычисляется произведение N = PQ. После этого определяется вспомогательное число f = (Р - l)(Q - 1). Затем случайным образом выбирается число d < f и взаимно простое с f. Далее необходимо найти число е, такое, что еd mod f = 1. Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом. Шифруемое сообщение должно быть представлено в цифровом виде и разбито на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков ci = mid mod N. Расшифровывание производится по формуле mi = ce mod N. Алгоритм RSA может использоваться для шифрования данных небольшого размера, формирования электронной цифровой подписи, а также и в протоколах обмена ключами для симметричных систем шифрования.
Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования: $$Z=(Y_2)^{X_1} \: mod \: P==(Y_1)^{X_2} \: mod \: P $$.
Алгоритм Эль-Гамаля может быть использован для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Этот алгоритм фактически использует схему Диффи-Хеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Общими открытыми параметрами в криптосистеме системе Эль-Гамаля являются числа Р (большое простое число) и А (А< P). Закрытыми ключами абонентов являются числа Хi, 1 < Х i < Р-1, открытыми ключами – значения $$Y_i:Y_i=A^{X_i} \: mod \: P$$. Пользователь, передающий сообщение, выбирает случайное число k, взаимно простое с Р-1, и вычисляет числа $$r=A^k \: mod \: P, e=m\times Y_2^k \: mod \: P$$. Пара чисел (r, е), являющаяся шифротекстом, передается другому пользователю. Для расшифрования сообщения необходимо вычислить $$m=e \times r^{P-1-X_2}\: mod \: P$$. В результате получается исходное сообщение m.
Криптосистемы на эллиптических кривых – самая молодая группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости. Основное отличие таких систем состоит в том, что по сравнению с асимметричными криптосистемами, предложенными ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление
Несмотря на достаточную надежность алгоритмов шифрования с открытым ключом, существует возможность проведения атак в системах, использующих асимметричное шифрование. Это связано с тем, что атака может быть направлена не на сам алгоритм шифрования, а на протокол, использующий этот алгоритм. Для исключения возможностей проведения различных атак в системах шифрования с открытым ключом применяют специальные меры, например, заверяют открытые ключи пользователей цифровыми подписями удостоверяющего центра или добавляют к шифруемым сообщениям некоторую случайную информацию.
m=10, зашифрованное с помощью алгоритма RSA. Пользователь Б имеет следующие параметры: P=7, Q=11, d=47. Опишите процесс передачи сообщения m пользователю Б.N = 33, d = 3 передано зашифрованное сообщение c = 13. Расшифруйте это сообщение, взломав систему RSA пользователя.Y1, Y2 и общий ключ Z для системы Диффи-Хеллмана с параметрами А=3, Р=7, Х1=3, Х2=6.m пользователю 2. Найдите недостающие параметры при следующих заданных параметрах P = 19, A = 2, Х2 = 3, k = 5, m = 10.Цель лекции: изучить принципы работы некоторых криптографических алгоритмов с открытым ключом.
Алгоритм шифрования с открытым ключом RSA был предложен одним из первых в конце 70-х годов ХХ века. Его название составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA является, наверно, наиболее популярным и широко применяемым
Алгоритм основан на использовании того факта, что задача разложения большого числа на простые сомножители является трудной. Криптографическая система RSA базируется на следующих двух фактах из теории чисел:
Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные должны быть представлены в виде целых чисел между 0 и n -1 для некоторого n.
Итак, рассмотрим сам алгоритм. Пусть абонент А хочет передать зашифрованное сообщение абоненту Б. В этом случае абонент Б должен подготовить пару (открытый ключ; закрытый ключ) и отправить свой открытый ключ пользователю А.
Первым этапом является генерация открытого и закрытого ключей. Для этого вначале выбираются два больших простых числа Р и Q. Затем вычисляется произведение N:
N = PQ.
После этого определяется вспомогательное число f:
f = (Р - l)(Q - 1).
Затем случайным образом выбирается число d < f и взаимно простое с f.
Далее необходимо найти число е, такое, что
еd mod f = 1.
Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом.
Таким образом, на этом этапе у пользователя должна быть информация, указанная в следующей таблице:
| Открытый ключ | Закрытый ключ | |
| Пользователь системы | N, d |
e |
Так как пользователь Б хочет получить зашифрованное сообщение от пользователя А, значит пользователь Б должен отправить свой открытый ключ (d, N) пользователю А. Числа Р и Q больше не нужны, однако их нельзя никому сообщать; лучше всего их вообще забыть.
На этом этап подготовки ключей закончен и можно использовать основной протокол RSA для шифрования данных.
Второй этап – шифрование данных. Если абонент А хочет передать некоторые данные абоненту Б, он должен представить свое сообщение в цифровом виде и разбить его на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков сi.
Абонент А шифрует каждый блок своего сообщения по формуле
ci = mid mod N
используя С=(с1, с2, с3, ...) по открытой линии.
Абонент Б, получивший зашифрованное сообщение, расшифровывает все блоки полученного сообщения по формуле
mi = ce mod N
Все расшифрованные блоки будут точно такими же, как и исходящие от пользователя А.
Злоумышленник, перехватывающий все сообщения и знающий всю открытую информацию, не сможет найти исходное сообщение при больших значениях Р и Q.
Пусть пользователь А хочет передать пользователю Б сообщение. В этом случае вначале пользователь Б должен подготовить открытый и закрытый ключи. Пусть им выбраны, например, следующие параметры:
Р = 3, Q = 11, N = 3x11 = 33.
Тогда f = (Р - l)(Q - 1) = (3-1)(11-1) = 20.
Затем пользователь Б выбирает любое число d, не имеющее общих делителей с f (это необходимо для того, чтобы зашифрованное сообщение можно было потом однозначно восстановить). Пусть d = 13. Это число будет одним из компонентов открытого ключа.
Далее необходимо найти число е, которое можно будет использовать в качестве закрытого ключа для расшифрования сообщения. Значение е должно удовлетворять соотношению
еd mod f = 1.
Для малых значений . В нашем случае подходит е=17. (Проверяем: 13*17 mod 20 = 221 mod 20 = 1.)
Теперь пользователь Б должен запомнить свой закрытый ключ 17, отправить открытый ключ (13, 33) пользователю А и уничтожить числа Р = 3 и Q = 11.
Пользователь А, получивший открытый ключ (13, 33), увидев, что N=33, разбивает исходное сообщение на три блока, причем значение каждого меньше N. Например, пусть имеется три блока m1=8, m2=27, m3,=5. Затем пользователь А шифрует каждый блок:
c1=813 mod 33 = 17 c2 = 2713 mod 33 = 15 c3 = 513 mod 33 = 26
Зашифрованное сообщение, состоящее из трех блоков (17, 15, 26), передается пользователю Б, который, используя свой закрытый ключ е = 17 и N=33, расшифровывает сообщение:
m1 = 1717 mod 33 = 8 m2 = 1517 mod 33 = 27 m3 = 2617 mod 33 = 5
Таким образом, абонент Б расшифровал сообщение от абонента А.
На протяжении многих лет алгоритм RSA активно используется как в виде самостоятельных криптографических продуктов, так и в качестве встроенных средств в популярных приложениях. Открытое шифрование на базе алгоритма RSA применяется в популярном пакете шифрования PGP, операционной системе Windows, различных Интернет-браузерах, банковских компьютерных системах. Кроме того, различные международные стандарты шифрования с открытым ключом и формирования цифровой подписи используют RSA в качестве основного алгоритма.
Для обеспечения высокой надежности шифрования необходимо, чтобы выступающее в качестве модуля число N было очень большим – несколько сотен или тысяч бит. Только в этом случае будет практически невозможно по
Сами авторы RSA рекомендовали использовать следующие размеры модуля N: 768 бит - для частных лиц; 1024 бит - для
С размером ключей связан и другой аспект реализации RSA - вычислительный. При использовании алгоритма вычисления необходимы как при создании ключей, так и при шифровании/расшифровании, при этом, чем больше размер ключей, тем труднее производить расчеты. Для работы с громадными числами приходится использовать аппарат N. При прямых расчетах промежуточные значения были бы невообразимыми. Чтобы упростить процесс вычислений используют специальные алгоритмы для работы с большими числами, основанные на свойствах модульной арифметики, а также оптимизацию при возведении в степень.
Алгоритм RSA реализуется как программным, так и аппаратным путем. Многие мировые фирмы выпускают специализированные микросхемы, производящие шифрование алгоритмом RSA. Программные реализации значительные медленнее, чем аппаратные. К достоинствам программного шифрования RSA относится возможность гибкой настройки параметров, возможность интеграции в различные программные пакеты. В целом, и программная, и аппаратная реализации RSA требуют для выполнения примерно в тысячи раз большего времени по сравнению с
Алгоритм RSA может использоваться для формирования электронной цифровой подписи, а также и для обмена ключами. Возможность применения алгоритма RSA для получения электронной подписи связана с тем, что секретный и открытый ключи в этой системе равноправны. Каждый из ключей, d или e, могут использоваться как для шифрования, так и для расшифрования. Это свойство выполняется не во всех криптосистемах с открытым ключом. Использование алгоритма RSA для формирования ЭЦП рассматривается в .
Первая публикация данного алгоритма появилась в 70-х годах ХХ века в статье Диффи и Хеллмана, в которой вводились основные понятия криптографии с открытым ключом.
Алгоритм основан на трудности вычислений Р. Вначале специальным образом подбирается некоторое натуральное число А, меньшее Р. Если мы хотим зашифровать значение X, то вычисляем
Y = AX mod P.
Причем, имея Х, вычислить Y легко. Обратная задача вычисления X из Y является достаточно сложной. Экспонента X как раз и называется дискретным логарифмом Y. Таким образом, зная о сложности вычисления Y можно открыто передавать по любому каналу связи, так как при большом модуле P исходное значение Х подобрать будет практически невозможно. На этом математическом факте основан
Пусть два пользователя, которых условно назовем пользователь 1 и пользователь 2, желают сформировать общий ключ для алгоритма симметричного шифрования. Вначале они должны выбрать большое простое число Р и некоторое специальное число А, 1 < A < P-1, такое, что все числа из интервала [1, 2, ..., Р-1] могут быть представлены как различные степени А mod Р. Эти числа должны быть известны всем абонентам системы и могут выбираться открыто. Это будут так называемые общие параметры.
Затем первый пользователь выбирает число Х1 (X1<P), которое желательно формировать с помощью датчика случайных чисел. Это будет закрытый ключ первого пользователя, и он должен держаться в секрете. На основе закрытого ключа пользователь 1 вычисляет число
которое он посылает второму абоненту.
Аналогично поступает и второй пользователь, генерируя Х2 и вычисляя
Это значение пользователь 2 отправляет первому пользователю.
После этого у пользователей должна быть информация, указанная в следующей таблице:
| Общие параметры | Открытый ключ | Закрытый ключ | |
| Пользователь 1 | Р, А |
Y1 |
Х1 |
| Пользователь 2 | Y2 |
Х2 |
Из чисел Y1 и Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования. Вот как это должен сделать первый пользователь:
Никто другой кроме пользователя 1 этого сделать не может, так как число Х1 секретно. Второй пользователь может получить то же самое число Z, используя свой закрытый ключ и открытый ключ своего абонента следующим образом:
Если весь протокол формирования общего секретного ключа выполнен верно, значения Z у одного и второго абонента должны получиться одинаковыми. Причем, что самое важное, противник, не зная секретных чисел Х1 и Х2, не сможет вычислить число Z. Не зная Х1 и Х2, злоумышленник может попытаться вычислить Z, используя только передаваемые открыто Р, А, Y1 и Y2. Безопасность формирования общего ключа в алгоритме Диффи-Хеллмана вытекает из того факта, что, хотя относительно легко вычислить экспоненты по модулю простого числа, очень трудно вычислить дискретные логарифмы. Для больших простых чисел размером сотни и тысячи бит задача считается неразрешимой, так как требует колоссальных затрат вычислительных ресурсов.
Пользователи 1 и 2 могут использовать значение Z в качестве секретного ключа для шифрования и расшифрования данных. Таким же образом любая пара абонентов может вычислить секретный ключ, известный только им.
Пусть два абонента, желающие обмениваться через Интернет зашифрованными сообщениями, решили сформировать секретный ключ для очередного сеанса связи. Пусть они имеют следующие общие параметры:
Р = 11, А = 7.
Каждый абонент выбирает секретное число Х и вычисляет соответствующее ему открытое число Y. Пусть выбраны
Х1 = 3, Х2= 9.
Вычисляем
Y1 = 73 mod 11 = 2, Y2= 79 mod 11 = 8.
Затем пользователи обмениваются открытыми ключами Y1 и Y2. После этого каждый из пользователей может вычислить общий секретный ключ:
пользователь 1: Z = 83 mod 11 = 6. пользователь 2: Z = 29 mod 11 = 6.
Теперь они имеют общий ключ 6, который не передавался по каналу связи.
Для того, чтобы Z, необходимо правильным образом выбрать число А, используемое в вычислениях. Число А должно обладать следующим свойством: все числа вида
A mod P, A2 mod P, A3 mod P,... , AP-1 mod P
должны быть различными и состоять из целых положительных значений в диапазоне от 1 до Р-1 с некоторыми перестановками. Только в этом случае для любого целого Y < Р и значения A можно найти единственную экспоненту Х, такую, что
Y = AХmod P, где 0 <= X <= (P - 1)
При произвольно заданном Р задача выбора параметра А может оказаться трудной задачей, связанной с разложением на простые множители числа Р-1. На практике можно использовать следующий подход, рекомендуемый специалистами. Простое число Р выбирается таким, чтобы выполнялось равенство Р = 2q + l, где q — также простое число. Тогда в качестве А можно взять любое число, для которого справедливы неравенства
1<A<P-1 и Aq mod P ≠ 1
На подбор подходящих параметров А и Р необходимо некоторое время, однако это обычно не критично для системы связи и не замедляет ее работу. Эти параметры являются общими для целой группы пользователей. Они обычно выбираются один раз при создании сообщества пользователей, желающих использовать
Следует заметить, что данный алгоритм, как и все
И в случае шифрования, и в случае формирования цифровой подписи каждому пользователю необходимо сгенерировать пару ключей. Для этого, так же как и в схеме Диффи-Хеллмана, выбираются некоторое большое простое число Р и число А, такие, что различные степени А представляют собой различные числа по модулю Р. Числа Р и А могут передаваться в открытом виде и быть общими для всех абонентов сети.
Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Хi < Р-1, и вычисляет соответствующее ему открытое число $$Y_i : Y_i = A^{X_i}\: mod \: P$$. Таким образом, каждый пользователь может сгенерировать закрытый ключ Хi и открытый ключ Yi.
Информация о необходимых параметрах системы сведена в следующую таблицу.
| Общие параметры | Открытый ключ | Закрытый ключ | |
| Пользователь 1 | Р, А |
Y1 |
Х1 |
| … | … | … | |
| Пользователь i | Yi |
Хi |
Теперь рассмотрим, каким образом производится шифрование данных. Сообщение, предназначенное для шифрования, должно быть представлено в виде одного числа или набора чисел, каждое из которых меньше Р. Пусть пользователь 1 хочет передать пользователю 2 сообщение m. В этом случае последовательность действий следующая.
k, взаимно простое с Р-1, и вычисляет
числа$$r=A^k\: mod \: P, \qquad e=m \times Y_2^k \: mod \:P$$
где Y2 – открытый ключ пользователя 2. Число k держится в секрете.(r, е), являющаяся шифротекстом, передается второму пользователю.(r,e), для расшифрования сообщения вычисляет$$m=e \times r^{P-1-X_2} \: mod \:P$$
где Х2 – закрытый ключ пользователя 2. В результате он получает исходное сообщение m.Если злоумышленник узнает или перехватит Р, А, Y2, r, e, то он не сможет по ним раскрыть m. Это связано с тем, что противник не знает параметр k, выбранный первым пользователем для шифрования сообщения m. Вычислить каким-либо образом число k практически невозможно, так как это задача дискретного логарифмирования. Следовательно, злоумышленник не может вычислить и значение m, так как m было умножено на неизвестное ему число. Противник также не может воспроизвести действия законного получателя сообщения (второго абонента), так как ему не известен закрытый ключ Х2 (вычисление Х2 на основании Y2 — также задача дискретного логарифмирования).
По аналогичному алгоритму может производиться и согласование ключа, используемого для симметричного шифрования больших объемов данных. Более того, алгоритм Эль-Гамаля на практике целесообразно использовать именно для согласования общего
Пусть два абонента, обменивающиеся через Интернет зашифрованными сообщениями, имеют следующие общие параметры:
Р = 11, А = 7.
Кроме того, пользователи 1 и 2 имеют пары закрытых и открытых ключей, вычисляемые также, как в п. 5.3.3:
Пользователь 1: закрытый ключ Х1= 3, открытый ключ Y1 = 73 mod 11 = 2, Пользователь 2: закрытый ключ Х2 = 9, открытый ключ Y2 = 79mod 11 = 8.
Первый абонент желает передать второму сообщение. Для этого первый абонент запрашивает из Y2 = 8. Теперь он может зашифровать свое сообщение, которое в числовом виде пусть имеет значение m=9.
Первый абонент выбирает случайно число k, например k = 7. Число k должно быть взаимно простым с Р-1. Значение k = 7 не имеет общих делителей с Р-1=10, значит, оно нам подходит. Первый абонент шифрует свое сообщение по формулам:
r = Ak mod P = 77 mod 11=6 e = m * Y2k mod P = 9 * 87 mod 11 = 7
Пара чисел (6, 7) будет представлять собой шифротекст и передается второму пользователю. Второй пользователь, получив (6,7) и используя свой закрытый ключ Х2 = 9 для расшифрования сообщения, вычисляет
В результате он действительно получает исходное сообщение m.
В 1985 году американские ученые Н. Коблиц (Neal Koblitz) и В. Миллер (Victor Miller) предложили использовать для криптосистем с открытым ключом теорию эллиптических кривых. Дальнейшие исследования подтвердили наличие подходящих свойств у этих математических функций и привели к созданию реальных криптографических систем, использующих математический аппарат эллиптических кривых. С 1998 года использование эллиптических кривых для решения криптографических задач, таких, как цифровая подпись, было закреплено в стандартах США ANSI X9.62 и FIPS 186-2, а в 2001 году аналогичный стандарт, ГОСТ Р34.10-2001, был принят и в России.
Основное достоинство криптосистем на эллиптических кривых состоит в том, что по сравнению с другими асимметричными криптосистемами, рассмотренными нами ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление
Криптография эллиптических кривых использует достаточно сложный аппарат высшей алгебры, поэтому мы, в рамках данного учебного пособия, не сможем подробно рассмотреть используемые на практике алгоритмы и выполнить соответствующие примеры вычислений. Сформулируем основные принципы построения криптографических систем с использованием эллиптических кривых.
В криптографии используются эллиптические кривые на плоскости, определяемые уравнениями вида
Y2= X3+ аХ + b mod р,
где .
(рис 11.1) Варианты графиков эллиптических кривыхПринцип использования эллиптических кривых следующий. Для группы пользователей выбирается общая эллиптическая кривая Е и некоторая точка G на ней. Закрытым ключом пользователя выступает некоторое целое число с, а открытым – точка D на кривой Е, полученная в результате специального преобразования композиции с использованием числа с. Параметры кривой и список открытых ключей абонентов, как и обычно, передаются всем пользователям сети. Открытые и закрытые ключи пользователей используются для выполнения операций шифрования и расшифрования в зависимости от назначения алгоритма.
С помощью эллиптических кривых могут быть реализованы многие известные протоколы с открытым ключом. Любая криптосистема, основанная на дискретном логарифмировании, легко может быть перенесена на эллиптические кривые. Например, можно заменить математические операции вида у = gхmod р на операции математического аппарата эллиптических кривых (операции вычисления композиции точек) в алгоритмах формирования ключа Диффи-Хеллмана или вычисления цифровой подписи Эль-Гамаля. В результате получатся те же алгоритмы, но с другими математическими операциями.
Несмотря на сложность математического аппарата эллиптических кривых, существуют эффективные вычислительные методы, позволяющие достаточно быстро реализовывать необходимые расчеты. За счет использования модуля меньшей длины операции генерации ключей и шифрования выполняются быстрее, чем, скажем, в алгоритме RSA или классическом алгоритме Диффи-Хеллмана. Криптографические методы на эллиптических кривых считаются перспективными и, закрепленные в различных стандартах, находят применение в современных системах защиты информации.
Попробуем проанализировать простейший протокол шифрования с открытым ключом, рассмотренный в , с точки зрения возможности проведения злоумышленником различных атак. Вспомним, что этот протокол предусматривал следующие действия пользователей. Если пользователь А желает передать секретное сообщение пользователю Б так, чтобы никто другой не смог его прочитать, он должен получить от пользователя Б открытый ключ UБ и зашифровать свое сообщение этим открытым ключом. Зашифрованное сообщение может пересылаться по любому каналу связи, например, по электронной почте. Получив сообщение от пользователя А, пользователь Б может расшифровать его своим закрытым ключом RБ. Такая процедура обмена зашифрованными сообщениями с использованием
Однако такая схема уязвима для атак типа "man-in-the-middle" ( "человек-в-середине" ). Эта атака заключается в следующем. Допустим, злоумышленник может не только перехватывать сообщения, но и заменять их другими, т.е. имеет возможность осуществлять
UБ. Противник перехватывает этот ключ, сохраняет его и заменяет его своим открытым ключом UП.М полученным открытым ключом UП, предполагая, что использует открытый ключ абонента Б, и пересылает зашифрованное сообщение пользователю Б.RП, читает или меняет, а затем зашифровывает открытым ключом пользователя Б и посылает пользователю Б.Аналогично взломщик перехватит и открытый ключ пользователя А, чтобы читать ответы пользователя Б. В результате нарушитель сможет читать (а, возможно, и изменять) всю корреспонденцию абонентов. Пользователи А и Б, скорее всего, ничего не заподозрят, так как у них нет способа проверить, действительно ли они общаются друг с другом.
На практике разработано несколько способов предотвращения атаки "man-in-the-middle". Один из способов заключается в разделении каждого зашифрованного сообщения на две части, каждая из которых бесполезна без другой. Части сообщения пересылаются по очереди и не могут быть расшифрованы по отдельности. Вот как может выглядеть этот протокол для обмена сообщениями между двумя пользователями А и Б:
Этот усовершенствованный протокол не позволит злоумышленнику читать или изменять корреспонденцию пользователей А и Б. Нарушитель, как и раньше, может подменить открытые ключи абонентов, а также перехватить передаваемые между ними данные. Однако, получив на шаге 2 протокола в свое распоряжение первую половину зашифрованного сообщения от А к Б, он не сможет расшифровать ее своим закрытым ключом и снова зашифровать открытым ключом абонента Б. Абоненты А и Б тоже не смогут прочитать сообщения до окончания протокола (шагов 5 и 6), но в этом нет ничего плохого, так как в результате они получат корректную корреспонденцию. Для осуществления протокола процесс разделения сообщения на две части может производиться разными способами, например, каждый нечетный байт помещается в первое сообщение, а каждый четный – во второе или как-то иначе.
Атаки "человек-в-середине" можно избежать и другими способами, например, добавляя к передаваемым открытым ключам цифровые подписи специального удостоверяющего центра.
Алгоритмы с открытым ключом чувствительны к атакам по выбранному открытому тексту. Как известно, такая атака имеет место, если криптоаналитик имеет возможность не только использовать предоставленные ему пары "текст-шифротекст", но и сам формировать нужные ему тексты и шифровать их.
Факт возможности проведения атаки по выбранному открытому тексту объясняется следующим образом. Предположим, мы используем F для согласования общего секретного ключа. Пусть один из абонентов отправил другому 64-битовый сеансовый ключ K, зашифрованный открытым ключом y другого абонента C=F(K, y). Злоумышленник, перехватив зашифрованное сообщение С, не сможет его, конечно, дешифровать, так как не имеет закрытого ключа x. Однако нарушитель может поступить по-другому, а именно, попытаться подобрать подходящее значение К. Для этого нужно зашифровать все возможные 64-битовые комбинации открытых текстов открытым ключом y и сравнить результаты с С. Это возможно, так значения y и C передавались в открытом виде. Особенно актуальна угроза такой атаки, если число возможных исходных сообщений не очень велико, например, если длина исходного сообщения мала или если не все исходные тексты допустимы на практике.
Для того, чтобы избежать возможности такой атаки, используют рандомизированные (или вероятностные) алгоритмы шифрования и формирования ЭЦП с открытым ключом. Такие алгоритмы шифруют одно и то же сообщение при наличии одинакового ключа каждый раз по-разному, так как используют некоторый случайный элемент. Примерами рандомизированных алгоритмов с открытым ключом могут служить алгоритмы Эль-Гамаля и алгоритмы формирования ЭЦП по ГОСТ Р34.10.
Другим вариантом предотвращения атаки на основе выбранного открытого текста является добавление в шифруемое сообщение некоторой дополнительной "случайной" информации, например, метки даты времени.
Алгоритм RSA – алгоритм шифрования с открытым ключом. Название алгоритма составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA основан на сложности задачи факторизации больших чисел. Данный алгоритм является, возможно, наиболее популярным и широко применяемым
Алгоритм Диффи-Хеллмана – алгоритм шифрования с открытым ключом. Этот алгоритм основан на трудности вычислений
Алгоритм Эль-Гамаля – алгоритм шифрования с открытым ключом, основанный на трудности вычислений
Атака "человек-в-середине" (англ. "man-in-the-middle") – термин в криптографии, обозначающий ситуацию, когда атакующий способен читать и видоизменять по своей воле сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале связи.
Криптосистемы на эллиптических кривых – группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости.
Алгоритм RSA – алгоритм шифрования с открытым ключом. Алгоритм RSA основан на сложности задачи факторизации больших чисел. Математические основы алгоритма RSA следующие. Выбираются два больших простых числа Р и Q и вычисляется произведение N = PQ. После этого определяется вспомогательное число f = (Р - l)(Q - 1). Затем случайным образом выбирается число d < f и взаимно простое с f. Далее необходимо найти число е, такое, что еd mod f = 1. Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом. Шифруемое сообщение должно быть представлено в цифровом виде и разбито на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков ci = mid mod N. Расшифровывание производится по формуле mi = ce mod N. Алгоритм RSA может использоваться для шифрования данных небольшого размера, формирования электронной цифровой подписи, а также и в протоколах обмена ключами для симметричных систем шифрования.
Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования: $$Z=(Y_2)^{X_1} \: mod \: P==(Y_1)^{X_2} \: mod \: P $$.
Алгоритм Эль-Гамаля может быть использован для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Этот алгоритм фактически использует схему Диффи-Хеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Общими открытыми параметрами в криптосистеме системе Эль-Гамаля являются числа Р (большое простое число) и А (А< P). Закрытыми ключами абонентов являются числа Хi, 1 < Х i < Р-1, открытыми ключами – значения $$Y_i:Y_i=A^{X_i} \: mod \: P$$. Пользователь, передающий сообщение, выбирает случайное число k, взаимно простое с Р-1, и вычисляет числа $$r=A^k \: mod \: P, e=m\times Y_2^k \: mod \: P$$. Пара чисел (r, е), являющаяся шифротекстом, передается другому пользователю. Для расшифрования сообщения необходимо вычислить $$m=e \times r^{P-1-X_2}\: mod \: P$$. В результате получается исходное сообщение m.
Криптосистемы на эллиптических кривых – самая молодая группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости. Основное отличие таких систем состоит в том, что по сравнению с асимметричными криптосистемами, предложенными ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление
Несмотря на достаточную надежность алгоритмов шифрования с открытым ключом, существует возможность проведения атак в системах, использующих асимметричное шифрование. Это связано с тем, что атака может быть направлена не на сам алгоритм шифрования, а на протокол, использующий этот алгоритм. Для исключения возможностей проведения различных атак в системах шифрования с открытым ключом применяют специальные меры, например, заверяют открытые ключи пользователей цифровыми подписями удостоверяющего центра или добавляют к шифруемым сообщениям некоторую случайную информацию.
m=10, зашифрованное с помощью алгоритма RSA. Пользователь Б имеет следующие параметры: P=7, Q=11, d=47. Опишите процесс передачи сообщения m пользователю Б.N = 33, d = 3 передано зашифрованное сообщение c = 13. Расшифруйте это сообщение, взломав систему RSA пользователя.Y1, Y2 и общий ключ Z для системы Диффи-Хеллмана с параметрами А=3, Р=7, Х1=3, Х2=6.m пользователю 2. Найдите недостающие параметры при следующих заданных параметрах P = 19, A = 2, Х2 = 3, k = 5, m = 10.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.