Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы и средства защиты информации

.pdf
Скачиваний:
197
Добавлен:
03.03.2016
Размер:
5.1 Mб
Скачать

Анализ основных криптографическихметодов ЗИ 381

превышает длину шифруемого текста, то такой шифр теоретически является абсолютно стойким. Это, однако, не означает, что дешифрирование такого текста вообще не возможно: при наличии некоторой дополнительной информации исходный текст может быть частично или полностью восстановлен даже при использовании бесконечной гаммы.

В качестве бесконечной гаммы может быть использована любая последовательность случайных символов, например, последовательность цифр числа π или е. При шифровании с помощью ЭВМ последовательность гаммы формируется с помощью датчика псевдослучайных чисел. В настоящее время разработаны алгоритмы работы таких датчиков, которые обеспечивают удовлетворительные характеристики.

Комбинированные методы шифрования

Как уже отмечалось, одним из важнейших требований, предъявляемых к системе шифрования, является ее стойкость. Однако повышение стойкости любого метода шифрования приводит, как правило, к существенному усложнению самого процесса шифрования и увеличению затрат ресурсов (времени, аппаратных средств, уменьшению пропускной способности и т.п.).

Достаточно эффективным средством повышения стойкости шифрования является комбинированное использование нескольких различных способов шифрования, т.е. последовательное шифрование исходного текста с помощью двух или более методов.

Стойкость комбинированного шифрования Sk не ниже произведения стойкости используемых способов S: Sk ³ П Si.

Совершенно очевидно, что если какой-либо способ шифрования при независимом его применении может обеспечить стойкость не ниже Sk (например, гаммирование с бесконечной гаммой), то комбинирование этого способа с другими будет целесообразно лишь при выполнении условия ΣRi < R *, где Ri — ресурсоемкость i-го способа, используемого при комбинированномi шифровании; R* — ресурсоемкость того способа, который обеспечивает стойкость не ниже Sk.

Комбинировать можно любые методы шифрования и в любом количестве, однако на практике наибольшее распространение получили следующие комбинации:

подстановка + гаммирование;

перестановка + гаммирование;

гаммирование + гаммирование;

подстановка + перестановка.

Типичным примером комбинированного шифра является национальный стандарт США криптографического закрытия данных (DES).

Кодирование

382 Глава 18. Криптографическая защита

Одним из средств криптографического закрытия информации, также имеющим длительную историю практического использования, является кодирование, под которым понимается замена элементов закрываемых данных некоторыми цифровыми, буквенными или комбинированными сочетаниями — кодами. Нетрудно заметить, что между кодированием информации и ее шифрованием подстановкой существует значительная аналогия. Однако между этими методами можно найти различия.

При шифровании подстановкой заменяемыми единицами информации являются символы алфавита, и, следовательно, шифрованию могут подвергаться любые данные, для фиксирования которых используется выбранный алфавит. При кодировании замене подвергаются смысловые элементы информации, поэтому для каждого специального сообщения в общем случае необходимо использовать свою систему кодирования. Правда, в последнее время разработаны специальные коды, имеющие целью сократить объем информации при ее записи. Специфика этих кодов заключается в том, что для записи часто встречающихся символов используются короткие двоичные коды, а для записи редко встречающихся — длинные. Примером такого кода может служить код Хоффмана.

Двоичный код для букв алфавита образуется путем последовательной записи нулей и единиц на маршруте от вершины графа до конца ветви, соответствующего данной букве. Если граф кодирования сохраняется в тайне, то такое кодирование имеет криптографическую стойкость на уровне шифрования простой заменой.

При смысловом кодировании основной кодируемой единицы является смысловой элемент текста. Для кодирования составляется специальная таблица кодов, содержащая перечень кодируемых элементов и соответствующих им кодов.

Иногда код состоит из списка слов и фраз вместе с соответствующими им случайными группами чисел и букв, называемыми кодовыми группами. Поскольку кодовые группы обычно короче выражений, которые они представляют, коды, помимо секретности, обеспечивают также и сжатие информации.

При правильном использовании коды намного труднее раскрыть, чем другие классические системы. Успех их использования объясняется тремя причинами. Наиболее важной их них является большая длина используемого ключа. В типичной системе шифрования используется ключ длиной максимум несколько сотен бит. Например, ключом шифра на основе простой подстановки является переставленный алфавит, представляющий в среднем 90 бит, тогда как кодовая книга хорошего размера может содержать сотни тысяч и даже миллион бит. Как показал Шеннон, работа криптоаналитика затрудняется, когда из сообщения удаляется избыточность, а коды удаляют избыточность. Причем, коды работают с относительно большими блоками открытого текста ( словами и фразами) и, следовательно, скрывают локальную информацию, которая в противном случае могла бы дать ценные “зацепки” для криптоанализа.

Анализ основных криптографическихметодов ЗИ 383

Кнедостаткам следует отнести то, что ключ при кодировании используется недостаточно хорошо, так как при кодировании отдельного слова и фразы используется лишь очень малая часть кодовой книги. В результате код при интенсивном использовании поддается частичному анализу и оказывается особенно чувствительным к вскрытию при наличии известного открытого текста. По этим причинам для обеспечения большей надежности коды необходимо чаще менять.

Кдругим видам криптографического закрытия отнесены рассечение/разнесение и сжатие данных. Рассечение/разнесение данных состоит в том, что массив защищаемых данных рассекается на такие элементы, каждый из которых не позволяет раскрыть содержание защищаемой информации, и выделенные таким образом элементы размещаются в различных зонах памяти. Обратная процедура называется сборкой данных. Совершенно очевидно, что алгоритм разнесения и сборки данных должен сохраняться в тайне.

Шифрование с открытым ключом

Одно из главных ограничений использования обычных криптографических систем связано с трудностью распространения ключей. Диффи и Хеллман, а также, независимо от них, Меркль, показали, что можно исключить защищенный канал передачи ключей и при этом обеспечить защиту при передаче сообщений по незащищенному каналу без осуществления каких-либо предварительных мероприятий. Как видно из рис. 18.6, между отправителем и получателем допускается двухсторонний обмен, но перехватчик здесь пассивный и только слушает. В отличие от обычных систем, в которых ключ должен сохранятся в секрете, системы, допускающие такую работу, называются системами с открытым клю-

чом.

Рис. 18.6. Поток информации в криптографической системе с открытым ключом

Для решения этой проблемы предлагаются два подхода. При открытом распространении ключей отправитель и получатель могут договориться о ключе, используемом в обычной криптографической системе. Несмотря на то, что противник слушает все переговоры, он не в состоянии вычислить ключ и не может

384 Глава 18. Криптографическая защита

понять последующего обмена сообщениями. Второй подход реализует криптографические системы с открытыми ключами, в которых для шифрования используются разные ключи.

Причина, по которой ключи в обычных криптографических системах должны столь тщательно защищаться, состоит в том, что функции шифрования и дешифрования в ней неразделимы. Любое лицо, получившее ключ для шифрования сообщений, может также дешифровать сообщения. Если средства шифрования разделены, то секретность можно обеспечить без засекречивания ключа шифрования, так как его нельзя использовать для расшифровывания.

Взаимодействуя по открытым каналам связи, абоненты А и В решают следующие задачи:

вначале у А и В нет никакой общей секретной информации, но в конце процедуры такая общая секретная информация (общий ключ) у А и В появляется, т.е. вырабатывается;

противник, который перехватывает все передачи и знает, что хочет получить А и В, тем не менее не может восстановить выработанный общий ключ А и В.

Предложено решать эти задачи с помощью функции F(x) = αx (mod p), где р

— большое простое число, x — произвольное натуральное число, α — некоторый примитивный элемент поля G F(p).

Примитивным называется такой элемент α из G F(p), что каждый элемент поля, может быть представлен в виде степени α. Доказывается, что примитивный элемент всегда существует.

Общепризнанно, что инвертирование функции αx (mod p), т.е. дискретное логарифмирование, является трудной математической задачей.

Саму же процедуру или, как принято говорить, протокол выработки общего ключа, можно описать следующим образом.

Числа р и α считаются общедоступными.

Абоненты А и В независимо друг от друга случайно выбирают по одному натуральному числу — скажем xA и xB и. Эти элементы они держат в секрете. Далее каждый из них вычисляет новый элемент:

уA = αxA (mod p), уB = αxB (mod p)

Потом они обмениваются этими элементами по каналу связи. Теперь абонент А, получив уB и зная свой секретный элемент xA, вычисляет новый элемент:

уxBA = (αxB)xA (mod p)

Аналогично поступает абонент В:

уxAB = (αxA)xB (mod p)

Анализ основных криптографическихметодов ЗИ 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.

Система такого рода упрощает проблему распределения ключей. Каждый пользователь генерирует пару взаимно обратных преобразований Е и Д. Он держит преобразование дешифрования Д в секрете, а преобразование шифрования публикует в открытом справочнике наподобие технического справочника. Теперь любой желающий может шифровать сообщения и посылать их пользова-

386 Глава 18. Криптографическая защита

телю, но никто, кроме него, не может дешифровать предназначенные для него сообщения.

Если вместо приведенных условий 1–4 множество преобразований обеспечивает, что для каждого K {K} EK является обратным ДK, т.е. при любых К и М

справедливо утверждение ЕКДК(М) = М, то возможно, а часто и желательно осуществлять шифрование с помощью ключа Д, а дешифрование — с помощью ключа Е. По этой причине часто называют EK открытым ключом, а ДK лич-

ным ключом.

За время, истекшее после того, как была предложены эта система, разработано несколько путей ее реализации.

Цифровая подпись

Идея цифровой подписи (ее еще называют электронной подписью) была предложена Диффи и Хеллманом. Суть ее заключается в использовании односторонней функции с секретом FК. В настоящее время эта идея реализована в большом количестве систем передачи данных. Сообщение, подписанное цифровой подписью, можно представить в виде пары (x,y), где x — сообщение, FК: x → y односторонняя функция, известная всем взаимодействующим абонентам, y — решение уравнения FК(y) = x . Из определения функции FК очевидны следующие достоинства цифровой подписи.

1.Подписать сообщение x, т.е. решить уравнение FK(y) = x, может только абонент, являющийся обладателем данного секрета К; другими словами, подделать подпись невозможно.

3.Проверить подлинность подписи может любой абонент, знающий открытый ключ, т.е. саму функцию FK.

4.При возникновении споров отказаться от подписи невозможно в силу ее неподделываемости.

5.Подписанные сообщения (x,y) можно, не опасаясь ущерба, пересылать по любым каналам связи.

Именно перечисленные достоинства и обусловили широкой применение и распространение систем цифровой подписи.

Как практически выглядит использование цифровой подписи? Рассмотрим, как осуществляется работа банка с платежными поручениями своих клиентов. Все абоненты этой сети знают одностороннюю функцию FK, и каждый клиент имеет собственный, никому неизвестный секрет К. Клиент подписывает платежное поручение x с помощью функции FK со своим секретом К и посылает подписанное платежное поручение в банк. Банк, получив сообщение от клиента и зная открытый ключ, проверяет подлинность подписи клиента и только после этого выполняет его платежное поручение. В силу отмеченных достоинств цифровой подписи и банк, и клиент уверены, что их интересы не пострадают.

Криптографическаясистема 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 бит — для коммерческой информации;