Автор: Пользователь скрыл имя, 19 Апреля 2011 в 20:02, реферат
Документ является основным способом представления информации на любом предприятии. Эффективность управления предприятием зависит и от того, насколько рационально организовано управление документооборотом. Ведь малоэффективное использование накопленной информации (или, еще хуже, ее потеря) может отрицательно сказаться на ведении бизнеса.
Механизм электронной цифровой подписи (ЭЦП) возник как побочный эффект криптографии с открытым ключом. Поэтому характерное для систем с открытым ключом разделение ключа на 2 части - секретную и несекретную - позволяет реализовать возможность проверки подлинности без возможности подписать другой документ.
Итак, цифровая подпись - это конечная цифровая последовательность, зависящая от самого сообщения или документа и от секретного ключа, известного только подписывающему субъекту, предназначенная для установления авторства. Так как цифровая подпись строится на базе криптосистемы с открытым ключом, то необходимо иметь пару ключей - секретный и открытый. Секретный ключ используется для формирования цифровой подписи, поэтому его нужно хранить в тайне. А открытый ключ используется для проверки соответствия подписи документу, поэтому он должен быть опубликован, например, в общедоступном каталоге.
Предположим, что абонент A уже сформировал свою пару секретного и открытого ключей и на их основе построил функции DKA(x) и EKA(x). Причем для любого x должно выполнятся равенство EKA(DKA(x)) = x. Функцию DKA(x) будем называть функцией подписи сообщения x, а функцию EKA(x) - функцией проверки подписи для сообщения x. В дальнейшем будем отождествлять функции DKA(x) и EKA(x) с секретным и открытым ключами пользователя A соответственно. Надо заметить, что функции DKA(x) и EKA(x) связаны (так как связаны секретный и открытый ключи), однако по опубликованной функции EKA(x) вычислительно невозможно восстановить функцию DKA(x).
Рассмотрим
схему взаимодействия отправителя
(A) и получателя (B), которая позволяет
B проверить подлинность
1. A создает сообщение x, которое он собирается подписать и вычисляет подпись DKA(x).
2. A передает B пару (x,DKA(x)).
3.
B проверяет равенство EKA(DKA(x)
Рассмотренный протокол взаимодействия имеет следующий недостаток: так как функция EKA(x) - опубликована, то злоумышленник C может для любого z вычислить EKA(z) и предать в канал связи пару (EKA(z),z). Несложно видеть, что в этом случае z, будет подписью для EKA(z). Для предотвращения такой возможности пользователи должны подписывать не сами сообщения, а их хэши, то есть значения хэш-функции от сообщения. Напомним определение хэш-функции. Функция h:X -> M называется хэш-функцией, если выполнены следующие условия:
1. Постоянство размера - для входного массива данных любого размера результатом должен быть блок данных фиксированного размера.
2. Функция h(x) легко вычислима.
3. Функцию h(x) трудно инвертировать, то есть почти для всех m из M трудно найти x из X такой, что h(x) = m.
4. Для данного x сложно найти x' неравный x такой, что h(x) = h(x').
5. Сложно найти пару (x, x') из X2 такую, что x неравен x' и h(x) = h(x').
Где M - множество векторов фиксированной длины, а X - вектора произвольной длины. Пара (x, x') из X2 такая, что x неравно x' и h(x) = h(x') называется коллизией хэш-функции h. Помимо устранения рассмотренной выше возможности создания подписи без знания секретного ключа, использование хэш-функции решает еще одну проблему: дело в том, что функции EKA(x) и DKA(x) оперируют с блоками данных фиксированного размера, а размер сообщения может превышать этот размер. Без использования хэш-функции подписывать сообщение x пришлось бы следующим образом:
x = (x1,..,xk) \to ( (x1,DKA(x1)),.., (xk,DKA(xk))),
где x1,..,xk - векторы фиксированной длины, совпадающей с длиной входа функций EKA(x) и DKA(x). Подобная подпись обладает следующими недостатками:
-
для больших документов
- злоумышленник может набрать достаточно большой набор пар (xi, DKA(xi)) и сам формировать сообщения из фрагментов.
Модифицированный протокол выглядит таким образом:
1. A создает сообщение x, которое он собирается подписать и вычисляет его хэш h(x), после чего подписывает DKA(h(x)).
2. A передает B пару (x,DKA(h(x))).
3.
B проверяет равенство EKA(DKA(h(
В
этом протоколе возможность подделки
подписи может быть основана на нахождении
коллизии хэш-функции, то есть по известному
значению h(x) найти x' такой, что h(x) = h(x').
Для предотвращения этой возможности
нельзя использовать непроверенные функции.
Как правило, стойкие к коллизиям хэш-
функции описаны в государственном стандарте.
В Российской Федерации этот стандарт
носит название ГОСТ Р 34.11-94, в США - описывается
документами FIPS 180-1 и FIPS 180-2, а в Евросоюзе
рекомендуется использование стандарта
Whirlpool.
Российский стандарт хэширования был
принят в 1994 году и с тех пор не изменялся,
размер хэш-блока для него составляет
256 бит. В США изначально действовал стандарт
SHS (Secure Hash Standard), где размер хэш-блока был
равен 160 бит. Однако в 2002 году стандарт
был пересмотрен: прежний остался действовать
и получил обозначение SHA-1, но к нему были
добавлены три новых алгоритма, вырабатывающие
хэш-блоки размером 256, 384 и 512 бит, названные
SHA-256/384/512 соответственно.
(+РБ)
(!!!!!!!!!)
Схемы электронной цифровой подписи
Аппарат электронной цифровой подписи позволяет решать задачи проверки целостности и их авторства (без возможности отречения), разумеется, если используются стойкие алгоритмы формирования ЭЦП, надежные криптографические протоколы и сохранен в тайне секретный ключ. Поэтому для того, чтобы документы, подписанные ЭЦП, имели юридическую силу, развитые государства принимают стандарты на алгоритмы ЭЦП, кроме того, существует ряд коммерческих алгоритмов, которые хоть в среднем и слабее национальных, однако достаточно надежны для коммерческого уровня при разумном выборе длины ключей. Ниже будут описаны 9 алгоритмов формирования цифровой подписи:
ГОСТ Р34.10-01,
ECDSA,
ESIGN,
RSA-PSS,
схема Шнорра,
ElGamal.
Электронная цифровая подпись СТБ 1176.2-99
Схема Диффи - Лампорта
Вероятностная схема подписи Рабина
Где
ГГОСТ Р34.10-01 и ECDSA - стандарты в
России и США соответственно, а алгоритмы
ESIGN, RSA-PSS - претенденты в конкурсе проекта
NESSIE (Евросоюз).
Схема цифровой подписи Клауса Шнорра(Schnorr)
Стойкость схемы Шнорра основывается на трудной задаче вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа, p и q так, чтобы q было сомножителем p-1. Затем выбирается a, не равное 1, такое что aq = 1 ( mod p). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей. Для генерации конкретной пары ключей выбирается случайное число, меньшее q. Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = a-s (mod p). Для подписи сообщений используется хэш-функция H(M).
Предварительные вычисления Пользователь A выбирает случайное число r, меньшее q, и вычисляет x = ar (mod p).
Подпись сообщения M Для того, чтобы подписать сообщение M пользователю A необходимо выполнить следующие действия:
Проверка подписи для сообщения M Получатель B вычисляет x' = ay ve (mod p). Затем он проверяет, что хэш-значение для объединения M и x' равно e. e = H(M,x') Если это так, то он считает подпись верной.
В своей работе Шнорр приводит следующие свойства своего алгоритма:
Электронная цифровая подпись СТБ 1176.2-99 (РБ)
Введенный в 1999г. стандарт Республики Беларусь СТБ 1176.2 "Информационная технология. Защита информации. Процедуры выработки и проверки электронной цифровой подписи " базируется на схеме ЭЦП Шнорра.
Параметры. При выработке и проверке подписи используются l-битовое простое число p и r-битовое простое число q, q | (p-1). Допустимые значения указаны в таблице 1. Применяется определяемая СТБ 1176.1 функция хеширования h, параметр L которой устанавливается равным (r-1).
Таблица 1. Допустимые значения параметров r и l.
|
Часть преобразований стандарта выполняется в группе G, определяемой множеством Bp = {1,2, ...,p-1 } и операцией *:
u * v = uvR-1 ( mod p),
где R = 2l+2. Использование операции * вместо обычного умножения по модулю p упрощает применение алгоритма Монтгомери. Далее, u(m) - m-я степень числа u из Bp как элемента G. В стандарте приведены алгоритмы генерации чисел p,q и элемента a из Bp, имеющего порядок q в группе G. Числа p,q,a являются долговременными параметрам СТБ 1176.2-99, едиными для группы пользователей.
Входные данные.
Всякое
сообщение M, подпись к которому вырабатывается
или проверяется, задается последовательностью
байтов. Если t- n-разрядное число по основанию
28 = 256, то есть
t = t0 (256)0+..+tn-1 (256)n-1,
причем 0 <= ti <256, tn-1 неравно
0,
то t||M --- сообщение, полученное вставкой
байтов t0,t1,..,tn-1 в начало
M.
Выработка подписи.
При выработке подписи S к сообщению M используется личный ключ x, 0<x<q. Выполняются следующие шаги.
Выработать случайное секретное число k, 1<k<q.
t = a(k).
U = h(t||M). Если U=0, то вернуться к шагу 1.
V = (k-xU). Если V=0, то вернуться к шагу 1.
S = U2r+V.
Проверка подписи.
При проверке подписи S к сообщению M используется открытый ключ y = a(X). Алгоритм проверки подписи состоит из следующих шагов.
V = S ( mod 2r).
U = (S-V)/2r.
Проверить условия 0<U<2r-1, 0<V<q. Если хотя бы одно из условий нарушается, то подпись признается недействительной и выполнение алгоритма завершается.
t = a(V) * y(U).
W = h(t||M).
Если W неравно U, то подпись признается недействительной. Если W=U, то принимаются решения о том, что:
а) подпись S была создана с помощью личного ключа x, связанного с открытым ключем y;
б)подпись
S и сообщение M не были изменены с момента
их создания.