Методы и средства защиты информации
.pdfАнализ основных криптографическихметодов ЗИ 383
Кнедостаткам следует отнести то, что ключ при кодировании используется недостаточно хорошо, так как при кодировании отдельного слова и фразы используется лишь очень малая часть кодовой книги. В результате код при интенсивном использовании поддается частичному анализу и оказывается особенно чувствительным к вскрытию при наличии известного открытого текста. По этим причинам для обеспечения большей надежности коды необходимо чаще менять.
Кдругим видам криптографического закрытия отнесены рассечение/разнесение и сжатие данных. Рассечение/разнесение данных состоит в том, что массив защищаемых данных рассекается на такие элементы, каждый из которых не позволяет раскрыть содержание защищаемой информации, и выделенные таким образом элементы размещаются в различных зонах памяти. Обратная процедура называется сборкой данных. Совершенно очевидно, что алгоритм разнесения и сборки данных должен сохраняться в тайне.
Шифрование с открытым ключом
Одно из главных ограничений использования обычных криптографических систем связано с трудностью распространения ключей. Диффи и Хеллман, а также, независимо от них, Меркль, показали, что можно исключить защищенный канал передачи ключей и при этом обеспечить защиту при передаче сообщений по незащищенному каналу без осуществления каких-либо предварительных мероприятий. Как видно из рис. 18.6, между отправителем и получателем допускается двухсторонний обмен, но перехватчик здесь пассивный и только слушает. В отличие от обычных систем, в которых ключ должен сохранятся в секрете, системы, допускающие такую работу, называются системами с открытым клю-
чом.
Рис. 18.6. Поток информации в криптографической системе с открытым ключом
Для решения этой проблемы предлагаются два подхода. При открытом распространении ключей отправитель и получатель могут договориться о ключе, используемом в обычной криптографической системе. Несмотря на то, что противник слушает все переговоры, он не в состоянии вычислить ключ и не может
Анализ основных криптографическихметодов ЗИ 385
Из свойств поля следует, что тем самым у А и В появится общий элемент, который и является общим ключом А и В.
Из описания протокола видно, что противник знает p, α, αxA, αxB, не знает xA, xB и хочет узнать αxAxB. В настоящее время нет алгоритмов действий противника, более эффективных, чем дискретное логарифмирование, а это — труднейшая математическая задача.
Эти системы должны разрабатываться таким образом, чтобы облегчить генерацию случайных пар инверсных ключей Е для шифрования и Д для дешифрования и работу с этими ключами, но чтобы вычисления Д по Е было вычислительно нереализуемым.
Криптографическая система с открытым ключом представляет собой пару семейств алгоритмов {EK}K {K} и {ДK}K {K}, определяющих обратимые преобразования
EK:{M}→{m} ДK:{M}→{m},
на конечном пространстве сообщений {M} со следующими свойствами.
1.Для каждого K {K} ДK обратно к EK , т.е. при любых К и М справедливо
ДКЕК(М) = М.
2.Для каждого K {K} и M {M} нетрудно вычислить величины ЕК(М) и ДК(М).
3.Для почти каждого K {K} невозможно в вычислительном отношении вывести из ЕК какой-либо легко выполнимый алгоритм, эквивалентный ДК.
4.По каждому заданному K {K} можно получить инверсную пару ЕК и ДК.
Свойство 3 позволяет не засекречивать ключи шифрования пользователя ЕК и при этом не компроментировать секретность ключа дешифрования ДК. Следовательно, криптогафические системы распадаются на две части (семейство преобразований шифрования и семейство преобразований дешифрования) таким образом, что по данному члену одного семейства невозможно определить соответствующий член другого.
Свойство 4 гарантирует наличие реализуемого пути вычисления соответствующих пар обратных преобразований, когда не наложено никаких ограничений на то, каким должно быть преобразование шифрования или дешифрования. На практике криптографическое оборудование должно содержать генератор истинных случайных чисел для генерации К, а также генерирующий пару EК и ДК по заданному K.
Система такого рода упрощает проблему распределения ключей. Каждый пользователь генерирует пару взаимно обратных преобразований Е и Д. Он держит преобразование дешифрования Д в секрете, а преобразование шифрования публикует в открытом справочнике наподобие технического справочника. Теперь любой желающий может шифровать сообщения и посылать их пользова-
Криптографическаясистема RSA 387
Широкое развитие систем электронных платежей, электронной почты и других систем передачи данных потребовало большого разнообразия цифровых подписей. Это привело к развитию теории протоколов цифровой подписи, которая в настоящее время составляет большой раздел теоретической криптографии. В рамках этой теории систематизированы различные виды взломов систем цифровой подписи, различные виды успехов, которых противник может достигнуть, различные виды стойкости схем цифровой подписи. Удалось также доказать эквивалентность существования двух гипотетических объектов: односторонней функции и стойкой схемы цифровой подписи.
Криптографическая система RSA
Как бы ни были сложны и надежны классические криптографические системы, их слабым местом при практической реализации является проблема распределения ключей. Для того чтобы был возможен обмен конфиденциальной информацией между двумя абонентами, ключ должен быть сгенерирован одним из них, а затем каким-либо образом передан другому в конфиденциальном порядке. В общем случае для передачи ключа по каналам связи требуется использование еще одной криптосистемы, для которой вновь возникает проблема распределения ключей и т.д.
Для решения этой и ряда других проблем были предложены криптоси-
стемы с открытым ключом, называемые также асимметричными криптосистемами.
Перед отправкой сообщения адресату исходный текст шифруется открытым (общедоступным) ключом адресата. Алгоритм шифрования построен таким образом, что расшифровывание сообщения возможно только с использованием личного (секретного) ключа адресата.
Впервые модель системы секретной связи с открытым ключом была предложена Диффи и Хеллманом в 1976 году.
Суть этой модели состоит в том, что ключ известен полностью только получателю сообщения и представляет собой тройку чисел k = (е, d, n), где подключ e служит ключом шифрования, а ключ d — ключом расшифровывания. При этом только d является секретным (личным) ключом. Стойкость системы обеспечивается за счет особых свойств шифрпреобразования, которое представляет собой так называемую одностороннюю функцию с лазейкой. Вычисление значения такой функции (от открытого текста и параметра e) должно быть несложным, в то же время ее обращение должно быть вычислительно нереализуемым без знания секретной информации, “лазейки”, связанной с секретным ключом d.
В криптосистеме с открытым ключом сообщение, предназначенное абоненту, зашифровывается отправителем с помощью ключа e и расшифровывается получателем с помощью ключа d. Если шифрпреобразование действительно является односторонней функцией, то сам отправитель не в состоянии расшифровать сформированную им криптограмму.
388 Глава 18. Криптографическая защита
Широко известным примером криптосистемы с открытым ключом является криптосистема RSA, разработанная в 1977 году и получившая название в честь ее создателей: Ривеста, Шамира и Эйдельмана. Стойкость этой системы осно-
вывается на сложности обратимости степенной функции в кольце вычетов целых чисел по составному модулю n (при надлежащем выборе модуля).
Необходимые сведения из элементарной теории чисел
1.Простым числом называется натуральное число, имеющее только два неравных натуральных делителя.
2.Каждое натуральное число единственным образом, с точностью до порядка записи сомножителей, представляется в виде произведения степеней про-
стых чисел.
3.Наибольшим общим делителем двух целых чисел НОД(a,b) (или (a,b)) на-
зывается наибольшее целое, на которое без остатка делится как a, так и b.
4.Пусть a > b и d = (a,b) . Тогда существуют целые x и у, являющиеся реше- нием уравнения xa + yb = d . Если d = 1, то a и b называются взаимно про-
стыми.
5.Наибольший общий делитель двух чисел можно найти с помощью алгоритма
Эвклида. Для этого a делится с остатком на b, т.е. а = q1b + r1. Далее вместо a и b, рассматриваем соответственно b и r1: b = q2r1+ r2. На следующем шаге роль b и r1, играют r1 и r2: r1 = q3r2 + r3 и т.д. Процесс заканчивается на некотором шаге k+1, для которого rk+1= 0 . Тогда НОД(a,b) = r k. Рассмотрим пример.
Найти НОД(1547, 560) 1547 = 2 х 560 + 427 560 = 1 х 427 + 133 427 = 3 х 133 + 28 133 = 4 х 28 + 21 28 = 1 х 21 + 7 21 = 3 х 7 + 0
НОД(1547,560)=7
6.Для решения уравнения xa + yb = d можно использовать данные, полученные в каждом шаге алгоритма Эвклида, двигаясь снизу вверх, с помощью выра-
жения остатка через другие элементы, используемые в соответствующем шаге. Например, из r2 = q4r3 + r4 следует r4 = r2 +q4r3. В последнем равенстве r3 можно заменить, исходя из соотношения r1 = q 3r2 + r 3, т.е. r4 = r 2 – q4(q3r2 – r1). Поэтому r4 = (1 – q4q3)r2 + q4r1. Таким образом, мы выразили r4 в виде целочисленной комбинации остатков с меньшими номерами, которые, в свою очередь, могут быть выражены аналогично. Продвигаясь “снизу вверх”, в конце концов, мы выразим r4 через исходные числа a и b. Если
Криптографическаясистема RSA 389
бы мы начали не с r4, а с rk, то получили бы rk = xa + yb = d . Рассмотрим пример.
Решить |
1547х + 560y |
= 7 |
|
||||||||
7 |
= |
|
28 |
– 1 х 21 |
= 28 |
– 1 х |
(133 — 4 х 28) = 5 х 28 - 1 х 1ЗЗ = |
||||
= 5 |
х (427 |
- |
3 х |
133) |
— 1 х |
13З = 5 х 427 – 16 х (560 - 1 х 427)= |
|||||
= 21 |
х |
427 |
- |
16 |
х |
560 |
= 21 х (1547 - 2 х 560) - 16 х 560 = |
||||
= |
21 |
х |
|
547 - 58 х |
560 |
|
Решение: x = 21, y = -58
7.Число a сравнимо с числом b по модулю n, если a – b делится на n. Запись данного утверждения имеет следующий вид: а = b(mod n) . Наименьшее неотрицательное число а, такое, что а = A(mod n) называется выче-
том числа A по модулю n. Если (a,n) = 1 , то существует x, такое, что x = a-1 (mod n).
Действительно, (a,n) = 1 = d = ax + ny , поэтому ax = 1(mod n). Такое число x называетсяобратным к а по модулю n и записываетсяв виде a-1 (mod n).
8.Пусть функция ϕ(n), где n — натуральное число, равна количеству натуральных чисел, меньших n, для которых (а,n)=1. Такая функция называется функ-
цией Эйлера. Для чисел n вида n = Пpi (pi — простое) функция Эйлера опре-
деляется как φ(n) = П(pi – 1).
i
i
9. Теорема Эйлера. Пусть (а,n) = 1. Тогда aφ(n) = 1(mod n). Следствие. Если ed = 1(mod φ(n)) и (a, n) = 1, то (аe)d = а(mod n).
10. Для большинства вычетов по модулю n = pq показатель степени в соотношении aφ(n) = 1(mod n) может быть уменьшен, но в этом случае он зависит от a. Наименьший показатель k(a), для которого ak(a) = 1(mod n) , называется по- рядком числа a по модулю n и обозначается как оrdn(a). Для любого a значение оrdn(a) является делителем значения функции Эйлера φ(n).
Алгоритм RSA
Криптосистема RSA на каждом такте шифрования преобразует двоичный блок открытого текста m длины size(n), рассматриваемый как целое число, в соответствии с формулой: c = me(mod n).
При этом n = pq , где p и q — случайные простые числа большой разрядности, которые уничтожаются после формирования модуля и ключей. Открытый
ключ состоит из пары чисел e и n. Подключ e выбирается как достаточно большое число из диапазона 1 < e < φ(n), с условием: НОД(e, ϕ(n)) = 1, где ϕ(n) —
наименьшее общее кратное чисел p–1 и q–1. Далее, решая в целых числах x, y уравнение xe + yφ(n) = 1, полагается d = х, т.е. ed = 1(ϕ(n)). При этом для всех
m выполняется соотношение med = m(n) , поэтому знание d позволяет расшифровывать криптограммы.
390 Глава 18. Криптографическая защита
Чтобы гарантировать надежную защиту информации, к системам с открытым ключом предъявляются два следующих требования.
1.Преобразование исходного текста должно исключать его восстановление на основе открытого ключа.
2.Определение закрытого ключа на основе открытого также должно быть вычислительно нереализуемым. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.
Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах.
Рассмотрим построение криптосистемы RSA на простом примере.
1.Выберем p = 3 и q = 11.
2.Определим n = 3 · 11 = 33.
3.Найдем ϕ(n) = (p – 1)(q – 1) = 20.
4.Выберем e, взаимно простое с 20, например, e = 7.
5.Выберем число d, удовлетворяющее 7d = 1(mоd 20).
Легко увидеть, что d = 3(mоd 20).
Представим шифруемое сообщение как последовательность целых чисел с помощью соответствия: А = 1, B = 2, С = 3, ..., Z = 26. Поскольку size(n) = 6, то наша криптосистема в состоянии зашифровывать буквы латинского алфавита, рассматриваемые как блоки, Опубликуем открытый ключ (e, n) = (7, 33) и предложим прочим участникам системы секретной связи зашифровывать с его помощью сообщения, направляемые в наш адрес. Пусть таким сообщением будет CAB, которое в выбранном нами кодировке принимает вид (3, 1, 2). Отправитель должен зашифровать каждый блок и отправить зашифрованное сообщение в наш адрес:
RSA(C) = RSA(3) = 37 = 2187 = 9(mod 33);
RSA(A) = RSA(1) = 17 = 1(mod 33);
RSA(B) = RSA(1) = 27 = 128 = 29(mod 33).
Получив зашифрованное сообщение (9, 1, 29), мы сможем его расшифровать на основе секретного ключа (d, n) = (3, 33), возводя каждый блок в степень d = 3:
93 = 729 = 3(mоd 33);
13 = 1(mоd 33);
293 = 24389 = 2(mоd 33).
Для нашего примера легко найти секретный ключ перебором. На практике это невозможно, т.к. для использования на практике рекомендуются в настоящее время следующие значения size(n):
∙512–768 бит — для частных лиц;
∙1024 бит — для коммерческой информации;