Защита информации в компьютерных системах

Аппаратно-программные средства защиты информации. Защита от несанкционированного доступа. Идентификация и аутентификация пользователя. Защищенный режим работы процессора. Организация оперативной памяти в MS DOS. Безопасность электронных платежных систем.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 18.06.2013
Размер файла 368,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Число двоичных разрядов в блоке Т(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(m) отбрасывается.

Уравнение зашифрования данных в режиме гаммирования может быть представлено в следующем виде:

Ш(i) = A (Y(i-1) [+] C2, Z(i-1) {+} C1) (+) T(i) = Г(i) (+) T(i) .

Здесь Ш(i) - 64-разрядный блок зашифрованного текста,

A - функция шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа),

С1 и С2 - константы, заданные в ГОСТ 28147-89,

Y(i) и Z(i) - величины, которые определяются итерационно по мере формирования гаммы следующим образом:

(Y(0), Z(0)) = A(S), где S - 64-разрядная двоичная последовательность (синхропосылка);

(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) {+} C1) для i = 1, 2,...,m.

Расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с зашированными данными.

Режим гаммирования с обратной связью

Режим гаммирования с обратной связью очень похож на режим гаммирования. Как в и режиме гаммирования открытые данные, разбитые на 64-разрядные блоки Т(i) (i=1, 2,..., m , где m определяется обьемом шифруемых данных), зашифровываются путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит:

Гш = (Г(1),Г(2),...,Г(i),...,Г(m)).

Число двоичных разрядов в блоке Т(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(m) отбрасывается.

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

Ш(1) = A(S) (+) T(1) = Г(1) (+) Т(1),

Ш(i) = A(Ш(i-1)) (+) T(i) = Г(i) (+) Т(i), для i = 2,3,...,m.

Здесь Ш(i) - 64-разрядный блок зашифрованного текста,

A - функция шифрования в режиме простой замены. Аргументом функции на первом шаге итеративного алгоритма является 64-разрядная синхропосылка, а на всех последующих - предыдущий блок зашифрованных данных Ш(i-1).

Bыработки имитовставки

Процесс выработки имитовстаки единообразен для любого из режимов шифрования данных.

Имитовставка - это блок из р бит (имитовставка Ир), который вырабатывается либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (например, адресную часть, время, синхропосылку) и не зашифровываться. Значение параметра р (число двоичных разрядов в имитовставке) определяется криптографическими требованиями с учетом того, что вероятность навязывания ложных помех равна 1/2^р.

Для получения имитовставки открытые данные представляются в виде 64-разрядных блоков Т(i) (i = 1, 2,..., m , где m определяется объемом шифруемых данных). Первый блок открытых данных Т(1) подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены. Причем в качестве ключа для выработки имитовставки используется ключ, по которому шифруются данные.

Полученное после 16 циклов работы 64-разрядное число суммируется по модулю 2 со вторым блоком открытых данных Т(2). Результат суммирования снова подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены. Полученное 64-разрядное число суммируется по модулю 2 с третьим блоком открытых данных Т(3) и т.д. Последний блок Т(m) при необходимости дополненный до полного 64-разрядного блока нулями, суммируется по модулю 2 с результатом работы на шаге m-1, после чего зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного 64-разрядного числа выбирается отрезок Ир длиной р бит.

Имитовставка Ир передается по каналу связи или в память ЭВМ после зашифрованных данных. Поступившие зашифрованные данные расшифровываются, и из полученных блоков открытых данных T(i) вырабатывается имитовставка Ир', которая затем сравнивается с имитовставкой Ир, полученной из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок все расшифрованные данные считают ложными.

Концепция криптосистемы с открытым ключом

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

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

Однонаправленные функции

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

Пусть X и Y - произвольные множества. Функция

f(X) -> Y,

является однонаправленной, если для всех х, входящих в Х, легко вычислить функцию f(x), и в то же время для большинства y, входящих в Y, получить любое значение x, входящее в X, такое что f(x) = y достаточно сложно (при этом полагают, что существует, по крайней мере, одно такое значение x).

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

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

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

Но вернемся к теме. Вторым важным классом функций, используемых в практике построения систем с открытым ключом, являются так называемые однонаправленные функции с черным ходом (trap door one way function). Для порядка введем определение.

Функция

f(X) -> Y

относится к классу однонаправленных функций с черным ходом в том случае, если она является однонаправленной и, кроме того, возможно эффективное вычисление инверсной функции, если известен "черный ход" (или, говоря по-русски, секретная строка, число или другая информация, ассоциирующаяся с данной функцией).

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

Система распределения ключей Диффи-Хеллмана

В традиционных криптографических системах каждая пара пользователей применяет один и тот же секретный ключ для шифрования и расшифровки сообщений. Это означает, что необходим надежный способ передачи ключа от одного пользователя к другому. Если пользователи меняют ключ достаточно часто, его доставка превращается в серьезную проблему. И более того, в традиционной криптографической системе просто невозможно передать информацию новому пользователю системы до тех пор, пока ему не будет по надежному каналу связи передан секретный ключ. И если спецслужбы как-то выходят из этой ситуации, то для коммерческих приложений это никуда не годится. И пытливая инженерная мысль нашла выход - была создана система распределения открытых ключей (public-key distribution system), позволяющая своим пользователям обмениваться секретными ключами по незащищенным каналам связи.

Первой системой такого рода стала система Диффи-Хеллмана, разработанная в 1976 году, построенная на задаче о дискретном логарифмировании.

Предположим, что два пользователя, Алекс и Юстас, применяющие традиционную криптосистему, желают связаться друг с другом. Это означает, что они должны прийти к соглашению относительно ключа K, которым будут шифроваться сообщения. Давайте посмотрим, как система Диффи-Хелмана позволит обменяться ключом.

Пусть N - некоторое большое целое число, а G - другое целое, такое что

1 <= G <= N-1.

Рассмотрим процедуру обмена ключами по шагам.

1. Вначале Алекс и Юстас достигают соглашения о значениях N и G (как правило, эти значения являются стандартными для всех пользователей системы).

2. Затем Алекс выбирает некоторое большое целое число X и вычисляет

XX = G^X MOD N.

Аналогичным образом Юстас выбирает число Y и вычисляет

YY = G^Y MOD N.

После этого Алекс и Юстас обмениваются значениями XX и YY. (Мы считаем, что все данные, которые передаются по каналу связи, могут быть перехвачены злоумышленником - стариной Мюллером). Числа X и Y Алекс и Юстас хранят в секрете.

3. Получив от Юстаса число YY, Алекс вычисляет

K(1) = YY^X MOD N,

а Юстас -

K(2) = XX^Y MOD N.

Но (!)

YY^X MOD N = G^(X*Y) MOD N = XX^Y MOD N,

а следовательно,

K(1) = K(2) = K.

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

А что же старина Мюллер? Злоумышленник, перехвативший G, N, XX и YY, тоже должен определить значение ключа K. Очевидный путь для решения задачи состоит в вычислении значения X по G, N, XX или, по крайней мере, некоторого X', такого что

G^X' MOD N = X,

поскольку в этом случае

YY^X' MOD N = K.

Однако это и есть задача дискретного логарифмирования в чистом виде, которая считается неразрешимой.

Система Диффи-Хеллмана позволяет двум пользователям прийти к соглашению относительно общего секретного ключа. Однако система никак не влияет на то, как потом будет шифроваться сама информация. И если Алекс хочет передать Юстасу секретное сообщение M, то после установления ключа по Диффи-Хеллману может быть использована любая система шифрования.

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

Рассмотрим, как же используются системы с открытым ключом.

Пользователь Алекс имеет в своем распоряжении два алгоритма: E для шифрования и D для расшифровки сообщений. При этом алгоритм E делается общедоступным, например, через использование каталога ключей, а алгоритм D хранится Алексом в секрете. Если Юстас или даже старина Мюллер хочет послать Алексу сообщение, он ищет в каталоге ключей алгоритм E и использует его для шифрования передаваемой информации. А вот расшифровать сообщение сможет только Алекс, поскольку алгоритм D есть только у него. Очевидно, что E и D должны удовлетворять условию:

D(E(M)) = M,

для любого сообщения M.

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

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

Система RSA

В настоящее время наиболее развитым методом криптографической защиты информации с известным ключом является RSA, названный так по начальным буквам фамилий его изобретателей (Rivest, Shamir и Adleman). Перед тем как приступить к изложению концепции метода RSA, необходимо определить некоторые термины.

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

Чтобы использовать алгоритм RSA надо сначала сгенерировать открытый и секретный ключи, выполнив следующие шаги:

1. Выберем два очень больших простых числа p и q.

2. Определим n как результат умножения p на q ( n = p*q ).

3. Выберем большое случайное число, которое назовем d. Это число должно быть взаимно простым с результатом умножения (p-1) * (q-1).

4. Определим такое число е, для которого является истинным следующее соотношение: (e * d) mod ((p-1) * (q-1)) = 1.

5. Назовем открытым ключом числа е и n, а секретным ключом числа d и n.

Теперь, чтобы зашифровать данные по известному ключу {e,n}, необходимо сделать следующее:

· разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа M(i) = 0, 1,..., n-1;

· зашифровать текст, рассматриваемый как последовательность чисел M(i), по формуле:

С(i) = (M(i)^e) mod n.

Чтобы расшифровать эти данные используя секретный ключ {d,n}, необходимо выполнить следующие вычисления: M(i) = (C(i)^d) mod n. В результате будет получено множество чисел M(i), которые представляют собой исходный текст.

Приведем простой пример использования метода RSA для шифрования сообщения "CAB". Для простоты будем использовать очень маленькие числа (на практике используются намного большие числа).

1. Выберем р = 3 и q = 11.

2. Определим n = 3*11 = 33.

3. Найдем (р-1) * (q-1) = 20. Следовательно в качестве d выберем любое число, которое является взаимно простым с 20, например d = 3.

4. Выберем число e. В качестве такого числа может быть взято любое число, для которого удовлетворяется соотношение (e*3) mod 20 = 1, например 7.

5. Представим шифруемое сообщение как последовательность целых чисел в диапазоне 0...32. Пусть буква A изображается числом 1, буква B - числом 2, а буква C - числом 3. Тогда сообщение можно представить в виде последовательности чисел 3 1 2.

Зашифруем сообщение, используя ключ {7,33}:

C1 = (3^7) mod 33 = 2187 mod 33 = 9,

C2 = (1^7) mod 33 = 1 mod 33 = 1,

C3 = (2^7) mod 33 = 128 mod 33 = 29.

6. Попытаемся расшифровать сообщение {9,1,29}, полученное в результате зашифрования по известному ключу на основе секретного ключа {3,33}:

M1 = (9^3) mod 33 = 729 mod 33 = 3,

M2 = (1^3) mod 33 = 1 mod 33 = 1,

M3 = (29^3) mod 33 = 24389 mod 33 = 2.

Таким образом, в результате расшифрования сообщения получено исходное сообщение "CAB".

Криптостойкость алгоритма RSA основывается на предположении, что исключительно трудно определить секретный ключ по известному, поскольку для этого необходимо решить задачу о существовании делителей целого числа. Данная задача является NP - полной. Известные точные алгоритмы для решения данной задачи имеют экспоненциальную оценку вычислительной сложности, следствием чего является невозможность получения точных решений для задач большой и даже средней размерности. Более того, сам вопрос существования эффективных алгоритмов решения NP - полных задач является до настоящего времени открытым. В связи с этим для чисел, состоящих из 200 цифр (а именно такие числа рекомендуется использовать), традиционные методы требуют выполнения огромного числа операций (около 1023).

Оценки сложности задачи ДИСКРЕТНОГО ЛОГАРИФМИРОВАНИЯ в зависимости от длины двоичной записи простого числа P (при правильном его выборе) приведены в таблице:

Длина P
(в битах)

Сложность
определения
ключа x

Память
используемая
алгоритмом
(в битах)

Время решения задачи
на компьюре типа 109 оп/c

128

2*1012

7*106

Несколько минут

200

1016

108

Несколько месяцев

256

9*1017

109

Несколько десятков лет

512

4*1024

3*1012

Более 100 лет непрерывной работы

1024

1034

1017

1500

1041

8*1020

2000

7*1047

1024

2200

1050

1025

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

Длина симметричного ключа
(в битах)

Длина открытого ключа
(в битах)

56

384

64

512

80

768

112

1792

128

2304

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

В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные ключи были сопоставимы в отношении уровня безопасности, который они обеспечивают. Если используется короткий сеансовый ключ (например, DES), то не имеет значения, насколько велики асимметричные ключи. Хакеры будут атаковать не их, а сеансовые ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем.

Pretty Good Privacy (PGP) (довольно хорошая секретность)

Одной из реализаций асимметричных криптосистем является разработанная Филиппом Циммерманном программа PGP. Эта программа отличается превосходно продуманным и чрезвычайно мощным механизмом обработки ключей. Популярность и бесплатное распространение сделали PGP фактически стандартом для электронной переписки во всем мире.

Программа PGP широко доступна в сети. В связи с ограничениями на экспорт криптографической продукции версия 5.0 запрещена к экспорту, но по старой доброй традиции была немедленно проэкспортирована из США.

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

Электронная подпись в системах с открытым ключом

Пусть пользователь N1 должен передать сообщение m пользователю N2 так, чтобы пользователь N2 в случае надобности мог доказать, что сообщение послано пользователем N1.

Для этого пользователь N1 разрабатывает систему шифрации

E1(D1(X)) = X

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

Получив от пользователя N2 общий ключ шифрования E2 открытой системы

E2(D2(X)) = X,

пользователь N1 вычисляет сигнатуру сообщения

S = D1(m),

затем шифрует ее открытым ключом E2

C = E2(S)

и передает его пользователю N2, который расшифровывает сообщение процедурой

S = D2(C)

m* = E1(S).

Теперь при возникновении спорной ситуации пользователь N1 должен представить арбитру свой личный ключ подписи D1, удовлетворяющий соотношению

E1(D1(X)) = X.

Арбитру необходимо лишь проверить, что

D1(m*) = S,

и следовательно, сообщение мог послать только пользователь N1. Кроме того и пользователь N2 не может исказить сообщение m, т.к. для доказательства в суде ему необходимо изменить и сигнатуру S, а для этого ему нужно знать личный ключ подписи пользователя N1, а его то и нет!

О "двуличии" в алгоритмах цифровой подписи

Анализируя ту или иную схему ЭЦП, обычно ставят вопрос так: "Можно ли быстро подобрать два различных (осмысленных) сообщения, которые будут иметь одинаковые ЭЦП". Ответ здесь обычно отрицательный - трудно это сделать. Поставим вопрос по другому, а именно: "Можно ли, имея два сообщения, подобрать секретные ключи так, чтобы подписи совпадали?". Оказывается, что сделать это чрезвычайно просто!

Вот пример действий злоумышленника.

Он может:

1. Подготовить две платежки:

на 10000000 руб. (m1);

на 3 руб. (m2).

2. Выбрать секретный ключ X1 и рассчитать ключ X2.

3. Зарегистрировать открытые ключи, соответствующие секретным.

4. Отправить в банк требование m1 с подписью на X1 (m1c1).

5. Дождаться выполнения банком поручения.

6. Предъявить банку претензию, состоящую в том, что он якобы посылал требование о переводе 3-х рублей (m2c2), а не 10000000 (m1c1), а то, что кто-то подобрал текст сообщения, не изменяющий ЭЦП - дело не его. Пусть платит банк, удостоверяющий центр, страховая компания - кто угодно, только верните мои деньги!

И главное, что придется вернуть!

В чем же источник успеха такой атаки? Дело в том, что Федеральный Закон "Об электронной цифровой подписи" допускает множественность ЭЦП для одного лица (статья 4, п.2). Именно поэтому злоумышленник получает реальную возможность подбирать не сообщение, а ключ! Более того - не исключен вариант сговора двух лиц - т.е. ЭЦП оказывается уязвимой, если секретный ключ известен хоть кому-нибудь! А если сговорятся два центра по сертификации подписей?

Тем не менее, не все так страшно.

Приведенный пример никак не дискредитирует собственно криптостойкость ЭЦП. Он показывает возможную уязвимость при неправильном применении механизмов ЭЦП. В этой связи особое внимание должно быть уделено способам построения защищенного документооборота на базе ЭЦП.

Для того чтобы лучше понять проблему, упомяну еще одну ассоциацию. Если резистор 1МОм зашунтировать резистором 1 Ом, то общее сопротивление будет порядка 1 Ом. Известно, что по открытому ключу восстановить закрытый очень сложно (1МОм). По закрытому получить открытый очень просто.

Из всего сказанного вытекают следствия:

1. В Интернете не должно быть анонимности.

2. Кроме асимметричной криптографии в электронном документообороте необходимо применять и симметричные методы.

3. Вопросы применения ЭЦП в документообороте должны быть нормативно закреплены в ФЗ "Об электронном документообороте".

Электронная цифровая подпись

1. Проблема аутентификации данных и электронная цифровая подпись

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

Целью аутентификации электронных документов является их защита от возможных видов злоумышленных действий, к которым относятся:

· активный перехват - нарушитель, подключившийся к сети, перехватывает документы (файлы) и изменяет их;

· маскарад - абонент С посылает документ абоненту В от имени абонента А;

· ренегатство - абонент А заявляет, что не посылал сообщения абоненту В, хотя на самом деле послал;

· подмена - абонент В изменяет или формирует новый документ и заявляет, что получил его от абонента А;

· повтор - абонент С повторяет ранее переданный документ, который абонент А посылал абоненту В.

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

При обработке документов в электронной форме совершенно непригодны традиционные способы установления подлинности по рукописной подписи и оттиску печати на бумажном документе. Принципиально новым решением является электронная цифровая подпись (ЭЦП).

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

· удостоверяет, что подписанный текст исходит от лица, поставившего подпись;

· не дает самому этому лицу возможности отказаться от обязательств, связанных с подписанным текстом;

· гарантирует целостность подписанного текста.

Цифровая подпись представляет собой относительно небольшое количество дополнительной цифровой информации, передаваемой вместе с подписываемым текстом.

Система ЭЦП включает две процедуры: 1) процедуру постановки подписи; 2) процедуру проверки подписи. В процедуре постановки подписи используется секретный ключ отправителя сообщения, в процедуре проверки подписи - открытый ключ отправителя.

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

При проверке ЭЦП получатель сообщения снова вычисляет хэш-функцию m = h(М) принятого по каналу текста М, после чего при помощи открытого ключа отправителя проверяет, соответствует ли полученная подпись вычисленному значению m хэш-функции.

Принципиальным моментом в системе ЭЦП является невозможность подделки ЭЦП пользователя без знания его секретного ключа подписывания.

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

Каждая подпись содержит следующую информацию:

· дату подписи;

· срок окончания действия ключа данной подписи;

· информацию о лице, подписавшем файл (Ф.И.0., должность, краткое наименование фирмы);

· идентификатор подписавшего (имя открытого ключа);

· собственно цифровую подпись.

2. Однонаправленные хэш-функции

Хэш-функция (англ. hash - мелко измельчать и перемешивать) предназначена для сжатия подписываемого документа до нескольких десятков или сотен бит. Хэш-функция h(·) принимает в качестве аргумента сообщение (документ) М произвольной длины и возвращает хэш-значение h(М)=Н фиксированной длины. Обычно хэшированная информация является сжатым двоичным представлением основного сообщения произвольной длины. Следует отметить, что значение хэш-функции h(М) сложным образом зависит от документа М и не позволяет восстановить сам документ М.

Хэш-функция должна удовлетворять целому ряду условий:

1. хэш-функция должна быть чувствительна к всевозможным изменениям в тексте М, таким как вставки, выбросы, перестановки и т.п.;

2. хэш-функция должна обладать свойством необратимости, то есть задача подбора документа М', который обладал бы требуемым значением хэш-функции, должна быть вычислительно неразрешима;

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

Большинство хэш-функций строится на основе однонаправленной функции f(·), которая образует выходное значение длиной n при задании двух входных значений длиной n. Этими входами являются блок исходного текста М, и хэш-значение Нi-1 предыдущего блока текста (рис.1).

Рис.1. Построение однонаправленной хэш-функции

Нi = f(Мi, Нi-1) .

Хэш-значение, вычисляемое при вводе последнего блока текста, становится хэш-значением всего сообщения М.

В результате однонаправленная хэш-функция всегда формирует выход фиксированной длины n (независимо от длины входного текста).

Основы построения хэш-функций

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

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

Входные данные разбиваются на блоки по (k-n) бит. На каждой итерации хэширования со значением промежуточной величины, полученной на предыдущей итерации, объединяется очередная (k-n)-битная порция входных данных, и над получившимся k-битным блоком производится базовое преобразование. В результате весь входной текст оказывается "перемешанным" с начальным значением вспомогательной величины. Из-за характера преобразования базовую функцию часто называют сжимающей. Значение вспомогательной величины после финальной итерации поступает на выход хэш-функции (рис.2). Иногда над получившимся значением производят дополнительные преобразования. Но в том случае, если сжимающая функция спроектирована с достаточной степенью стойкости, эти преобразования излишни.

При проектировании хэш-функции по итеративной схеме возникают два взаимосвязанных вопроса: как поступать с данными, не кратными числу (k-n), и как добавлять в хэш-сумму длину документа, если это требуется. Есть два варианта решения этих вопросов. В первом варианте в начало документа перед хэшированием добавляется поле фиксированной длины (например, 32 бита), в котором в двоичном виде записывается исходная длина текста. Затем объединенный блок данных дополняется нулями до ближайшего кратного (k-n) бит размера. Во втором варианте документ дополняется справа одним битом "1", а затем до кратного (k-n) бит размера битами "0". В этом варианте необходимость в поле длины отпадает - никакие два разных документа после выравнивания по границе порций не станут одинаковыми.

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

Рис.2. Итерактивная хэш-функция

Однонаправленные хэш-функции на основе симметричных блочных алгоритмов

Однонаправленную хэш-функцию можно построить, используя симметричный блочный алгоритм. Наиболее очевидный подход состоит в том, чтобы шифровать сообщение М посредством блочного алгоритма в режиме СВС или СFВ с помощью фиксированного ключа и некоторого вектора инициализации IV. Последний блок шифртекста можно рассматривать в качестве хэш-значения сообщения М. При таком подходе не всегда возможно построить безопасную однонаправленную хэш-функцию, но всегда можно получить код аутентификации сообщения МАС (Message Authentication Code).

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

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

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

Н0 = Iн,

Нi = ЕA(В) С,

где - сложение по модулю 2 (исключающее ИЛИ); Iн - некоторое случайное начальное значение; А, В, С могут принимать значения Мi, Нi-1, (Мi ? Нi-1) или быть константами.

Рис.3. Обобщенная схема формирования хэш-функции

Сообщение М разбивается на блоки Мi принятой длины, которые обрабатываются поочередно.

Три различные переменные А, В, С могут принимать одно из четырех возможных значений, поэтому в принципе можно получить 64 варианта общей схемы этого типа. Из них 52 варианта являются либо тривиально слабыми, либо небезопасными. Остальные 12 схем безопасного хэширования, у которых длина хэш-значения равна длине блока перечислены в табл.1.

Таблица 1

Номер схемы

Функция хэширования

1

Нi = ЕHi-1 ( Мi ) ? Мi

2

Нi = ЕHi-1 ( Мi ? Нi-1 ) ? Мi ? Нi-1

3

Нi = EHi-1 ( Мi ) ? Мi ? Нi-1

4

Нi = ЕHi-1 ( Мi ? Нi-1 ) ? Мi

5

Нi = ЕMi ( Нi-1 ) ? Нi-1

6

Нi = ЕMi ( Мi ? Нi-1 ) ? Мi ? Нi-1

7

Нi = ЕMi ( Нi-1 ) ? Мi ? Нi-1

8

Нi = EMi ( Мi ? Нi-1) ? Нi-1

9

Нi = ЕMi ? Hi-1 ( Мi ) ? Мi

10

Нi = ЕMi ? Hi-1 ( Нi-1) ? Нi-1

11

Нi = ЕMi ?Hi-1 ( Mi ) ? Нi-1

12

Нi = ЕMi ? Hi-1 ( Нi-1 ) ? Мi

Первые четыре схемы хэширования, являющиеся безопасными при всех атаках, приведены на рис.4.

Рис.4. Четыре схемы безопасного хэширования

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

Алгоритм MD5

Алгоритм MD5 (Message Digest №5) разработан Роналдом Риверсом. MD5 использует 4 многократно повторяющиеся преобразования над тремя 32-битными величинами U, V и W:

f(U,V,W)=(U AND V) OR ((NOT U) AND W)

g(U,V,W)=(U AND W) OR (V AND (NOT W))

h(U,V,W)=U XOR V XOR W

k(U,V,W)=V XOR (U OR (NOT W)).

В алгоритме используются следующие константы:

· начальные константы промежуточных величин -

H[0]=6745230116, H[1]=EFCDAB8916, H[2]=98BADCFE16, H[3]=1032547616;

· константы сложения в раундах -

y[j]=HIGHEST_32_BITS(ABS(SIN(j+1))) j=0...63,

где функция HIGHEST_32_BITS(X) отделяет 32 самых старших бита из двоичной записи дробного числа X, а операнд SIN(j+1) считается взятым в радианах;

· массив порядка выбора ячеек в раундах -

· z[0...63] = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,

· 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12,

· 5, 8, 11, 4, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2,

0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9);

· массив величины битовых циклических сдвигов влево -

· s[0...63] = (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,

· 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,

· 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,

6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21).

На первоначальном этапе входной блок данных дополняется одним битом "1". Затем к нему добавляется такое количество битов "0", чтобы остаток от деления блока на 512 составлял 448. Наконец, к блоку добавляется 64-битная величина, хранящая первоначальную длину документа. Получившийся входной поток имеет длину кратную 512 битам.

Каждый 512-битный блок, представленный в виде 16 32-битных значений X[0]...X[15], проходит через сжимающую функцию, которая перемешивает его со вспомогательным блоком (H[0],H[1],H[2],H[3]):

(A,B,C,D) = (H[0],H[1],H[2],H[3])

цикл по j от 0 до 15

T = (A + f(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 16 до 31

T = (A + g(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 32 до 47

T = (A + h(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 48 до 63

T = (A + k(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

(H[0],H[1],H[2],H[3]) = (H[0]+A,H[1]+B,H[2]+C,H[3]+D)

После того, как все 512-битные блоки прошли через процедуру перемешивания, временные переменные H[0],H[1],H[2],H[3], а 128-битное значение подается на выход хэш-функции.

Алгоритм MD5, основанный на предыдущей разработке Роналда Риверса MD4, был призван дать еще больший запас прочности к криптоатакам. MD5 очень похож на MD4. Отличие состоит в простейших изменениях в алгоритмах наложения и в том, что в MD4 48 проходов основного преобразования, а в MD5 - 64. Несмотря на большую популярность, MD4 "медленно, но верно" был взломан. Сначала появились публикации об атаках на упрощенный алгоритм. Затем было заявлено о возможности найти два входных блока сжимающей функции MD4, которые порождают одинаковый выход. Наконец, в 1995 году было показано, что найти коллизию, т.е. "хэш-двойник" к произвольному документу, можно менее чем за минуту, а добиться "осмысленности" фальшивого документа (т.е. наличия в нем только ASCII-символов с определенными "разумными" законами расположения) - всего лишь за несколько дней.

Алгоритм безопасного хэширования SНА

Алгоритм безопасного хэширования SНА (Secure Hash Algorithm) разработан НИСТ и АНБ США в рамках стандарта безопасного хэширования SHS (Secure Hash Standard) в 1992 г. Алгоритм хэширования SНА предназначен для использования совместно с алгоритмом цифровой подписи DSА.

При вводе сообщения М произвольной длины менее 264 бит алгоритм SНА вырабатывает 160-битовое выходное сообщение, называемое дайджестом сообщения МD (Message Digest). Затем этот дайджест сообщения используется в качестве входа алгоритма DSА, который вычисляет цифровую подпись сообщения М. Формирование цифровой подписи для дайджеста сообщения, а не для самого сообщения повышает эффективность процесса подписания, поскольку дайджест сообщения обычно намного короче самого сообщения.

Такой же дайджест сообщения должен вычисляться пользователем, проверяющим полученную подпись, при этом в качестве входа в алгоритм SНА используется полученное сообщение М.

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

Рассмотрим подробнее работу алгоритма хэширования SНА. Прежде всего исходное сообщение М дополняют так, чтобы оно стало кратным 512 битам. Дополнительная набивка сообщения выполняется следующим образом: сначала добавляется единица, затем следуют столько нулей, сколько необходимо для получения сообщения, которое на 64 бита короче, чем кратное 512, и наконец добавляют 64-битовое представление длины исходного сообщения.

Инициализируется пять 32-битовых переменных в виде:

А = 0х67452301

В = 0хЕFСDАВ89

С = 0х98ВАDСFЕ

D = 0x10325476

Е = 0хС3D2Е1F0

Затем начинается главный цикл алгоритма. В нем обрабатывается по 512 бит сообщения поочередно для всех 512-битовых блоков, имеющихся в сообщении. Первые пять переменных А, В, С, D, Е копируются в другие переменные a, b, с, d, е:

а = А, b = В, с = С, d = D, е = Е

Главный цикл содержит четыре цикла по 20 операций каждый. Каждая операция реализует нелинейную функцию от трех из пяти переменных а, b, с, d, е, а затем производит сдвиг и сложение.

Алгоритм SНА имеет следующий набор нелинейных функций:

ft (Х, Y, Z) = (X Y) ((X) Z) для t = 0...19,

ft (Х, Y, Z) =Х Y Z для t = 20...39,

ft (Х, Y, Z) = (X Y) (X Z) (Y Z) для t = 40...59,

ft (Х, Y, Z) = Х Y Z для t = 60...79,

где t - номер операции.

В алгоритме используются также четыре константы:

Кt = 0х5А827999 для t = 0...19,

Кt = 0х6ЕD9ЕВА1 для t = 20...39,

Кt = 0х8F1ВВСDС для t = 40...59,

Кt = 0хСА62С1D6 для t = 60...79.

Блок сообщения преобразуется из шестнадцати 32-битовых слов (М0...М15) в восемьдесят 32-битовых слов (W0...W79) с помощью следующего алгоритма:

Wt = Мt для t = 0...15,

Wt = (Wt-3 Wt-8 Wt-14 Wt-16) <<< 1 для t = 16...79,

где t - номер операции, Wt - t-й субблок расширенного сообщения, <<< S - циклический сдвиг влево на S бит.

С учетом введенных обозначений главный цикл из восьмидесяти операций можно описать так:

цикл по t от 0 до 79

ТЕМР = (а <<< 5) + ft (b, c, d) + е + Wt + Кt

е = d

d = с

с = (b <<< 30)

b = а

а = ТЕМР

конец_цикла

Схема выполнения одной операции показана на рис.5.

Рис.5. Схема выполнения одной операции алгоритма SHA

После окончания главного цикла значения а, b, с, d, е складываются с А, В, С, D, Е соответственно, и алгоритм приступает к обработке следующего 512-битового блока данных. Окончательный выход формируется в виде конкатенации значений А, В, С, D, Е.

Отличия SHA от MD5 состоят в следующем:

· SНА выдает 160-битовое хэш-значение, поэтому он более устойчив к атакам полного перебора и атакам "дня рождения", чем MD5, формирующий 128-битовые хэш-значения.

· Сжимающая функция SHA состоит из 80 шагов, а не из 64 как в MD5.

· Расширение входных данных производится не простым их повторение в другом порядке, а рекуррентной формулой.

· Усложнен процесс перемешивания

Отечественный стандарт хэш-функции

Российский стандарт ГОСТ Р 34.11-94 определяет алгоритм и процедуру вычисления хэш-функции для любых последовательностей двоичных символов, применяемых в криптографических методах обработки и защиты информации. Этот стандарт базируется на блочном алгоритме шифрования ГОСТ 28147-89, хотя в принципе можно было бы использовать и другои блочный алгоритм шифрования с 64-битовым блоком и 256-битовым ключом.

Данная хэш-функция формирует 256-битовое хэш-значение.

Функция сжатия Нi = f(Мi, Нi-1) (оба операнда Мi и Нi-1 являются 256-битовыми величинами) определяется следующим образом:

1. Генерируются 4 ключа шифрования Кj , j = 1...4, путем линейного смешивания Мi , Нi-1 и некоторых констант Сj .

2. Каждый ключ Кj используют для шифрования 64-битовых подслов hj слова Нi-1 в режиме простой замены:

Si = EKj(hj) . Результирующая последовательность S4, S3, S2, S1 длиной 256 бит запоминается во временной переменной S.

3. Значение Нi является сложной, хотя и линейной функцией смешивания S, Мi, Нi-1.

При вычислении окончательного хэш-значения сообщения М учитываются значения трех связанных между собой переменных:

Нn - хэш-значение последнего блока сообщения;

Z - значение контрольной суммы, получаемой при сложении по модулю 2 всех блоков сообщения;

L - длина сообщения.

Эти три переменные и дополненный последний блок М' сообщения объединяются в окончательное хэш-значение следующим образом:

Н = f (Z М', f ( L, f( М', Нn ) ) ).

Данная хэш-функция определена стандартом ГОСТ Р 34.11-94 для использования совместно с российским стандартом электронной цифровой подписи.

Алгоритмы электронной цифровой подписи

Технология применения системы ЭЦП предполагает наличие сети абонентов, посылающих друг другу подписанные электронные документы. Для каждого абонента генерируется пара ключей: секретный и открытый. Секретный ключ хранится абонентом в тайне и используется им для формирования ЭЦП. Открытый ключ известен всем другим пользователям и предназначен для проверки ЭЦП получателем подписанного электронного документа. Иначе говоря, открытый ключ является необходимым инструментом, позволяющим проверить подлинность электронного документа и автора подписи. Открытый ключ не позволяет вычислить секретный ключ.

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

· задача факторизации (разложения на множители) больших целых чисел;

· задача дискретного логарифмирования.

Алгоритм цифровой подписи RSА

Первой и наиболее известной во всем мире конкретной системой ЭЦП стала система RSА, математическая схема которой была разработана в 1977 г. в Массачуссетском технологическом институте США.

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

N = Р * Q

и значение функции

(N) = (Р-1)(Q-1).

Далее отправитель вычисляет число Е из условий:

Е (N), НОД (Е, ? (N)) = 1

и число D из условий:

D < N, Е*D 1 (mod (N)).

Пара чисел (Е, N) является открытым ключом. Эту пару чисел автор передает партнерам по переписке для проверки его цифровых подписей. Число D сохраняется автором как секретный ключ для подписывания.

Обобщенная схема формирования и проверки цифровой подписи RSА показана на рис.6.

Рис.6. Обобщённая схема цифровой подписи RSA

Допустим, что отправитель хочет подписать сообщение М перед его отправкой. Сначала сообщение М (блок информации, файл, таблица) сжимают с помощью хэш-функции h(·) в целое число m:

m = h(М).

Затем вычисляют цифровую подпись S под электронным документом М, используя хэш-значение m и секретный ключ D:

S = mD (mod N).

Пара (М,S) передается партнеру-получателю как электронный документ М, подписанный цифровой подписью S, причем подпись S сформирована обладателем секретного ключа D.

После приема пары (М,S) получатель вычисляет хэш-значение сообщения М двумя разными способами. Прежде всего он восстанавливает хэш-значение m', применяя криптографическое преобразование подписи S с использованием открытого ключа Е:

m' = SE (mod N).

Кроме того, он находит результат хэширования принятого сообщения М с помощью такой же хэш-функции h(·):

m = h(М).

Если соблюдается равенство вычисленных значений, т.е.

SE ( mod N ) = h ( М ),

то получатель признает пару (М,S) подлинной. Доказано, что только обладатель секретного ключа D может сформировать цифровую подпись S по документу М, а определить секретное число D по открытому числу Е не легче, чем разложить модуль N на множители.

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

Недостатки алгоритма цифровой подписи RSА.

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

2. Для обеспечения криптостойкости цифровой подписи RSА по отношению к попыткам фальсификации на уровне, например, национального стандарта США на шифрование информации (алгоритм DES), т.е. 1018, необходимо использовать при вычислениях N, D и Е целые числа не менее 2512 (или около 10154) каждое, что требует больших вычислительных затрат, превышающих на 20...30% вычислительные затраты других алгоритмов цифровой подписи при сохранении того же уровня криптостойкости.

3. Цифровая подпись RSА уязвима к так называемой мультипликативной атаке. Иначе говоря, алгоритм цифровой подписи RSА позволяет злоумышленнику без знания секретного кпюча D сформировать подписи под теми документами, у которых результат хэширования можно вычислить как произведение результатов хэширования уже подписанных документов.

Пример. Допустим, что злоумышленник может сконструировать три сообщения М1, М2, М3, у которых хэш-значения

m1 = h (М1), m2 = h (М2), m3 = h (М3) ,

причем

m3 = m1 * m2 (mod N) .

Допустим также, что для двух сообщений М1 и М2 получены законные подписи

S1 = m1D (mod N)

S2 = m2D (mod N) .

Тогда злоумышленник может легко вычислить подпись S3 для документа М3, даже не зная секретного ключа D:

S3 = S1 * S2 (mod N).

Действительно,

S1 * S2 (mod N) = m1D * m2D (mod N) = (m1m2)D (mod N) = m3D (mod N) = S3 .

Более надежный и удобный для реализации на персональных компьютерах алгоритм цифровой подписи был разработан в 1984 г. американцем арабского происхождения Тахером Эль Гамалем. В 1991 г. НИСТ США обосновал перед комиссией Конгресса США выбор алгоритма цифровой подписи Эль Гамаля в качестве основы для национального стандарта.

Алгоритм цифровой подписи Эль Гамаля (ЕGSА)

Название ЕGSА происходит от слов Е_ Gаmа_ Signaturе Аlgorithm (алгоритм цифровой подписи Эль Гамаля). Идея ЕGSА основана на том, что для обоснования практической невозможности фальсификации цифровой подписи может быть использована более сложная вычислительная задача, чем разложение на множители большого целого числа,- задача дискретного логарифмирования. Кроме того, Эль Гамалю удалось избежать явной слабости алгоритма цифровой подписи RSА, связанной с возможностью подделки цифровой подписи под некоторыми сообщениями без определения секретного ключа.

Рассмотрим подробнее алгоритм цифровой подписи Эль-Гамаля. Для того чтобы генерировать пару ключей (открытый ключ - секретный ключ), сначала выбирают некоторое большое простое целое число Р и большое целое число G, причем G < Р. Отправитель и получатель подписанного документа используют при вычислениях одинаковые большие целые числа Р (~10308 или ~21024) и G (~10154 или ~2512), которые не являются секретными.

Отправитель выбирает случайное целое число X, 1 < Х ? (Р-1), и вычисляет

Y =GX mod Р .

Число Y является открытым ключом, используемым для проверки подписи отправителя. Число Y открыто передается всем потенциальным получателям документов.

Число Х является секретным ключом отправителя для подписывания документов и должно храниться в секрете.

Для того чтобы подписать сообщение М, сначала отправитель хэширует его с помощью хэш-функции h(·) в целое число m:

m = h(М), 1 < m < (Р-1) ,

и генерирует случайное целое число К, 1 < К < (Р-1), такое, что К и (Р-1) являются взаимно простыми. Затем отправитель вычисляет целое число а:

а = GK mod Р

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

m = Х * а + К * b (mod (Р-1)) .

...

Подобные документы

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

    реферат [115,1 K], добавлен 16.03.2014

  • Пути несанкционированного доступа, классификация способов и средств защиты информации. Анализ методов защиты информации в ЛВС. Идентификация и аутентификация, протоколирование и аудит, управление доступом. Понятия безопасности компьютерных систем.

    дипломная работа [575,2 K], добавлен 19.04.2011

  • Методы и средства защиты информационных данных. Защита от несанкционированного доступа к информации. Особенности защиты компьютерных систем методами криптографии. Критерии оценки безопасности информационных компьютерных технологий в европейских странах.

    контрольная работа [40,2 K], добавлен 06.08.2010

  • Необходимость и потребность в защите информации. Виды угроз безопасности информационных технологий и информации. Каналы утечки и несанкционированного доступа к информации. Принципы проектирования системы защиты. Внутренние и внешние нарушители АИТУ.

    контрольная работа [107,3 K], добавлен 09.04.2011

  • Принципы функционирования электронных платежных систем. Основные понятия, алгоритмы и способы защиты информации в электронных платежных системах. Персональный идентификационный номер. Реализация метода генерации PIN-кода из номера счета клиента.

    курсовая работа [631,2 K], добавлен 13.07.2012

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

    презентация [525,3 K], добавлен 09.12.2015

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

    реферат [30,8 K], добавлен 23.10.2011

  • Виды угроз безопасности в экономических информационных системах: цель, источники, средства реализации. Основные пути несанкционированного доступа к информации. Методы и средства защиты, используемые в АИТ маркетинговой деятельности, их классификация.

    реферат [30,1 K], добавлен 12.03.2011

  • Аутентификация пользователя при входе в систему: ввод пароля с клавиатуры, использование электронных ключей. Несанкционированные действия с информацией на ПК. Биометрические методы аутентификации. Физическое хищение компьютерных носителей информации.

    контрольная работа [4,7 M], добавлен 02.01.2018

  • Защита информации и ее виды. Роль информационной безопасности. Защита от несанкционированного доступа к информации. Физическая защита данных на дисках. Виды компьютерных вирусов. Защита от вредоносных программ и спамов (антивирусы, хакерские утилиты).

    презентация [160,9 K], добавлен 04.10.2014

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

    курсовая работа [184,0 K], добавлен 09.03.2009

  • Особенности применения средств криптографической защиты информации в сетях и системах защищенной связи. Уровни реализации, структура, классификация VPN. Процесс подключении удалённого пользователя, идентификация и аутентификация на сервере доступа.

    курсовая работа [434,0 K], добавлен 30.05.2016

  • Защита от несанкционированного доступа. Классификация автоматизированных систем и требования по защите информации. Средство защиты информации от несанкционированного доступа Secret Net 6.0. Разработка интерфейсной части программы, целевых функций.

    дипломная работа [1,2 M], добавлен 20.12.2013

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

    доклад [102,9 K], добавлен 30.04.2011

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

    контрольная работа [25,5 K], добавлен 12.07.2014

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

    курсовая работа [1,3 M], добавлен 11.05.2014

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

    реферат [138,5 K], добавлен 14.07.2015

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

    курсовая работа [72,9 K], добавлен 22.02.2012

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

    курсовая работа [32,1 K], добавлен 12.01.2008

  • Изучение основных понятий, алгоритмов, способов защиты информации электронных пластиковых карт. Реализация метода генерации PIN-кода из номера счета клиента. Персональный идентификационный номер. Обеспечение безопасности систем электронных платежей POS.

    курсовая работа [1,1 M], добавлен 13.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.