
lecter / Цифровая подпись.7 раздел
.docЭлектронная цифровая подпись
Действующие системы передачи данных в большинстве своем имеют недостаток, который заключается в том, что они не дают возможности проверки подлинности и авторства пересылаемых документов. С их помощью в настоящее время невозможно заключение юридически признаваемых сделок и пересылка юридически подтверждаемых документов, например, платежных поручений. Это часто сводит на нет их преимущества по сравнению с почтовой пересылкой. Как правило, все полученные через компьютерную связь документы копируются из памяти машины на бумажный носитель, подписываются физическими лицами и удостоверяются печатями юридических лиц. Решение проблемы авторства документа может быть достигнуто лишь с использованием электронной цифровой подписи - средства, позволяющего на основе криптографических методов надежно установить авторство и подлинность документа.
Определение подлинности (аутентификация) информации состоит в том, чтобы установить тот факт, что полученная информация была передана подписавшим ее отправителем, и что она при этом не была искажена.
Проблему аутентификации можно решить на основе криптографического подхода, разработав специальные алгоритмы и программы.
Рассмотрим возможные угрозы электронным документам.
Существуют следующие виды злоумышленных действий при обмене электронными документами:
1) отказ: абонент А заявляет, что не посылал документа абоненту В, хотя на самом деле он его послал;
2) модификация: абонент В изменяет документ и утверждает, что именно таким получил его от абонента А;
3) подмена: абонент В сам формирует документ и заявляет, что получил его от абонента А;
4) активный перехват: нарушитель (подключившийся к сети) перехватывает документы (файлы) и изменяет их;
5) "маскарад": абонент С посылает документ от имени абонента А;
6) повтор: абонент С повторяет посылку документа, который абонент А ранее послал абоненту В.
Все перечисленные виды злоумышленных действий наносят существенный ущерб работе банковских систем. Кроме того, возможность злоумышленных действий подрывает доверие к компьютерной технологии.
При выборе алгоритма и технологии аутентификации необходимо предусмотреть надежную защиту от всех перечисленных видов злоумышленных действий (угроз). Однако в рамках классической (одноключевой) криптографии защититься от всех этих видов угроз трудно, поскольку имеется принципиальная возможность злоумышленных действий одной из сторон, владеющих секретным ключом.
Никто не может помешать абоненту, например, самому создать любой документ, зашифровать его с помощью имеющегося ключа, общего для клиента и банка, а потом заявить, что он получил этот документ от законного отправителя.
Значительно эффективнее схемы, основанные на двухключевой криптографии. В этом случае каждый передающий абонент имеет свой секретный ключ подписи, а у всех абонентов есть несекретные открытые ключи передающих абонентов. Эти открытые ключи можно трактовать как набор проверочных соотношений, позволяющих судить об истинности подписи передающего абонента, но не позволяющих восстановить секретный ключ подписи. Передающий абонент несет единоличную ответственность за свой секретный ключ. Никто кроме него не в состоянии сформировать корректную подпись. Секретный ключ передающего абонента можно рассматривать как личную печать, и владелец должен всячески ограничивать доступ к нему посторонних лиц.
Преобразование, используемое для выработки цифровой подписи, является криптографической функцией. Оно выбирается таким образом, чтобы при отсутствии у злоумышленника секретного ключа сделать невозможным подделку цифровой подписи, незаметное изменение документа, а также дать возможность любому лицу при наличии у него общедоступного ключа, документа и цифровой подписи удостовериться в подлинности документа и соответствующей цифровой подписи. Только секретный ключ гарантирует невозможность подделки злоумышленником документа и цифровой подписи от имени заверяющего. Общедоступный несекретный ключ используется для проверки подлинности документа и цифровой подписи, а также предупреждении мошенничества со стороны заверяющего в виде отказа его от подписи документа.
Цифровая подпись не имеет ничего общего с последовательностью символов, соответствующих изображениям печати или подписи, приписанной к документу. Если бы это было так, то, перехватив один раз эту последовательность, злоумышленник мог бы впредь приписывать ее к произвольному документу от чужого имени. При построении цифровой подписи вместо обычной связи между печатью или рукописной подписью и листом бумаги выступает сложная математическая зависимость между документом, секретным и общедоступным ключами, а также цифровой подписью. Невозможность подделки электронной подписи опирается не на отсутствие специалиста, который может повторить рукописную подпись и обычную печать, а на большой объем необходимых математических вычислений. В современной криптографии есть примеры функций, для которых сложность подделки цифровой подписи при отсутствии секретной информации заверяющего такова, что самая мощная из существующих сверхбыстродействующих ЭВМ не сможет осуществить необходимые вычисления и за десятки лет.
Другое приложение цифровая подпись находит при снабжении абонентов криптографической информационной сети ключами. Простейший способ выделить группу пользователей сети - снабдить их общим секретным ключом. Недостатком такого подхода является то, что компрометация пароля у одного из членов группы ведет к краху всей системы подтверждения подлинности.
Простейший вариант усиления системы - снабжение пользователей индивидуальными секретными паролями. Однако при таком варианте возникает проблема надежного хранения большого количества секретных паролей, а это приемлемо лишь для крупных абонентских пунктов. К тому же пользователи не могут непосредственно представляться друг другу, минуя центр. Чтобы обеспечить возможность непосредственного представления пользователей друг другу, процедура проверки пароля должна быть общедоступной. В то же время алгоритм должен быть устроен так, чтобы подделать пароль на основании известной процедуры проверки было невозможно.
Для использования цифровых подписей при обмене ключами требуется общедоступный каталог секретной сети, где хранятся процедуры проверки подписи всех абонентов. Для системы RSA этот каталог содержит имена-идентификаторы абонентов ID с парой чисел (n, d). Для системы ЭльГамаля в каталоге против каждого имени ID записываются простое число Р и целые числа n и y. Подлинность каталога с подписями может быть обеспечена путем подписывания каждой записи в каталоге или всего каталога сразу центром и выдачей в таком виде их абоненту. При установлении связи абоненты обмениваются этими подписанными сообщениями и на этом основании проверяют полномочия друг друга: просят партнера подписать случайное сообщение. Для системы ЭльГамаля общий объем ключевой информации в сети может быть сокращен за счет использования всеми одних и тех же чисел р и n. Для системы RSA общим можно сделать только число n, а числа d должны быть у всех различными. Из-за перестановочности операции умножения в алгоритме RSA не имеет значения, будет ли опубликовано d или е, для него функции шифрования и расшифровывания одинаковы. Это позволяет реализовать процедуру получения цифровой подписи сменой е и d. Если отправитель хочет, чтобы получатели его сообщений могли удостовериться, что эти сообщения действительно исходят от него, то он посылает шифровку S' вместе с подписью R, вычисленной как:
S = R**e mod n
Для разрешения споров между отправителем и получателем информации, связанных с возможностью искажения ключа проверки подписи [S', R], достоверная копия этого ключа выдается третьей стороне - арбитру и применяется им при возникновении конфликта. Каждый может расшифровать сообщение S', но так как ключ е известен только отправителю, то никто другой кроме него не мог бы послать шифрованное сообщение или подтвердить подпись как:
S = R**d mod n
Для того, чтобы обеспечить подобную процедуру подтверждения подлинности отправителя сообщения, ЭльГамаль предложил следующий простой протокол:
-
Отправитель A и получатель B знают р и случайное число n из интервала (1,р). A генерирует случайные числа х и y из того же интервала. х нужно хранить в секрете, а y должно быть взаимно простым с р-1.
-
Далее A вычисляет Q=n**x mod р и R=n**y mod р, решает относительно S уравнение T=x*R+y*S mod (р-1) и передает В документ с подписью [Q,R, S, Т].
-
Получатель проверяет подпись, контролируя тождество А**S =(В**R)*R**T mod р.
В этой системе секретным ключом для подписывания сообщений является число x, а открытым ключом для проверки достоверности подписи - число Q. Особенностью этих протоколов, как нетрудно видеть, является наличие у абонента секретного ключа, служащего цифровой подписью идентификатора. Он не позволяет абоненту самому сменить свой идентификатор или выработать подпись для другого идентификатора. Также он предъявляет контролеру не сам секретный элемент, а некоторое значение функции, вычисляемое с помощью секретного ключа из случайного запроса, тем самым доказывая, что обладает секретом, путем его косвенной демонстрации при вычислениях. Именно отсюда происходит название "доказательство при нулевом знании", то есть абонент доказывает, что обладает секретом, не раскрывая самого секрета. Как вырожденный случай алгоритма цифровой подписи можно рассматривать шифрование и расшифровывание передаваемой информации на общем секретном ключе абонентов, изготовленном и распространенном заранее, как это применяется в классических криптографических системах.
Еще одно, не менее важное назначение электронной подписи — подтверждение авторства сообщения. Обычно в файлы ключей ЭЦП помимо собственно ключа записываются разные дополнительные сведения вроде ФИО и места работы его владельца, срока действия подписи и т. п. А в подпись, стоящую под сообщением или документом, копируются данные из секретного ключа, и, прежде всего сведения о его хозяине, что позволяет установить авторство. Значит, не потребуется запоминать, кто именно прислал открытый ключ, при проверке показавший, что ЭЦП верна, и это очень важно, ведь реально может быть не одна сотня открытых ключей. Кстати, «правильные» программы при расчете собственно электронной подписи сообщения включают и информацию об авторе, чтобы никому не пришло в голову изменить ее. Результат проверки ЭЦП обычно выводится на экран в таком, например, виде:
Подпись файла compromat.bmp верна
(Автор: Иванов Василий Семенович).
Постановка подписи
Чтобы поставить ЭЦП под конкретным документом, необходимо проделать довольно большой объем вычислительной работы. Эти вычисления разбиваются на два этапа.
1. Генерация ключей. На этом этапе для каждого абонента генерируется пара ключей: секретный и открытый. Секретный ключ хранится абонентом в тайне. Он используется для формирования подписи. Открытый ключ связан с секретным особым математическим соотношением. Открытый ключ известен всем другим пользователям сети и предназначен для проверки подписи. Его следует рассматривать как необходимый инструмент для проверки, позволяющий определить автора подписи и достоверность электронного документа, но не позволяющий вычислить секретный ключ.
Возможны два варианта проведения этого этапа. Естественным представляется вариант, когда генерацию ключей абонент может осуществлять самостоятельно. Не исключено, однако, что в определенных ситуациях эту функцию целесообразно передать центру, который будет вырабатывать для каждого абонента пару ключей секретный и открытый и заниматься их распространением. Второй вариант имеет ряд преимуществ административного характера, однако обладает принципиальным недостатком: у абонента нет гарантии, что его личный секретный ключ уникален. Другими словами, можно сказать, что здесь все абоненты находятся "под колпаком" центра, и центр может подделать любую подпись.
2. Подписание документа. Прежде всего, документ "сжимают" до нескольких десятков или сотен байтов с помощью так называемой хеш-функции, значение которой сложным образом зависит от содержания документа, но не позволяет восстановить сам документ.
Далее, к полученному значению хеш-функции применяют то или иное математическое преобразование (в зависимости от выбранного алгоритма ЭЦП), и получают собственно подпись документа.
Эта подпись может быть составлена из читаемых символов (букв), но часто ее представляют в виде последовательности произвольных "нечитаемых" символов. ЭЦП может храниться вместе с документом, например, стоять в его начале или конце, либо в отдельном файле. Естественно, в последнем случае для проверки подписи необходимо располагать как самим документом, так и файлом, содержащим его ЭЦП.
Проверка подписи
При проверке подписи проверяющий должен располагать открытым ключом абонента, поставившего подпись. Этот ключ должен быть аутентифицирован, т.е. проверяющий должен быть полностью уверен, что данный ключ соответствует именно тому абоненту, который выдает себя за его "хозяина". Если абоненты самостоятельно обмениваются ключами, эта уверенность может подкрепляться связью по телефону, личным контактом или любым другим способом. Если же абоненты действуют в сети с выделенным центром, открытые ключи абонентов подписываются (сертифицируются) центром, и непосредственный контакт абонентов между собой (при передаче или подтверждении подлинности ключей) заменяется контактами каждого из них в отдельности с центром.
Процедура проверки подписи состоит из двух этапов: вычисления хеш-функции документа и проведения математических вычислений, определяемых алгоритмом подписи. Последние заключаются в проверке того или иного соотношения, связывающего хеш-функцию документа, подпись под этим документом и открытый ключ подписавшего абонента.
Если рассматриваемое соотношение оказывается выполненным, то подпись признается правильной, а сам документ подлинным, в противном случае документ считается измененным, а подпись под ним недействительной.
Математические схемы
Формула для электронной подписи в полном виде выглядит так:
S = f(h(M),ks), где h(M) — хэш-функция.
Дело в том, что текстовое письмо может иметь самый разный размер — от пустого сообщения до объемного файла, к тому же включающего графику, а алгоритмы ЭЦП предназначены для подписи сообщений определенной длины, в частности, ГОСТ Р34.10-94 для 32 байт. Поэтому задача хэш-функции заключается в том, чтобы из письма произвольного объема вычислить цифровую последовательность стандартного размера, скажем, те же 32 байта, равных 256 бит.
Хэш-функция должна быть однонаправленной. Тогда, во-первых, даже зная хэш h(M) (хэш - результат работы хэш-функции), невозможно вычислить само сообщение M и, во-вторых, для каждого сообщения M нельзя подобрать такое сообщение M', для которого выполнялось бы условие:
h(M) = h(M’).
Невыполнение второго условия позволило бы злоумышленнику подменять письма, оставляя подпись в них верной. Кроме того, у многих сообщений хэш одинаковый, поскольку, как говорят математики, множество допустимых писем (их количество практически безгранично) существенно больше множества хэш-значений, максимально возможное число которых всего-навсего 2256.
Хэш-функции также широко используются для аутентификации пользователей и появилась масса криптографических протоколов, основанных на их применении.
Технология применения систем ЭЦП рассчитана на сеть абонентов, посылающих друг другу электронные документы, например платежные поручения. Абонентами могут быть клиенты банка и сам банк в системах клиент-банк, или банки при обмене документами в межбанковской сети. Некоторые из этих абонентов могут только проверять подписанные другими сообщения, другие (назовем их абонентами с правом подписи) могут как проверять, так и подписывать сообщения. Кроме того, могут быть случаи, когда кто-либо может ставить свою ЭЦП только в качестве второй подписи после подписи определенного абонента-начальника (например, директор или бухгалтер); это не меняет существа дела.
Далее, возможны две ситуации: либо в этой сети есть центр (абонент, наделенный особыми полномочиями), либо все абоненты с правом подписи равноправны. Не исключен, однако, и вариант, при котором функции центра рассредоточены по нескольким "локальным центрам". В сетях с центрами могут быть заложены разные степени "доверия" центра к абонентам. Образно говоря, сети могут быть "тоталитарными" и "демократическими", т.е. центры в сетях могут (потенциально) либо полностью контролировать абонента, либо выполнять чисто формальные функции администрирования, скажем, по приему в сеть новых абонентов.
Наиболее известные математические схемы ЭЦП: RSA (названа по первым буквам фамилий авторов: R. L. Rivest, A. Shamir, L. Adleman), OSS (H. Ong, C. P. Schnorr, A. Shamir), Эль-Гамаля (T. ElGamal), Рабина (M. Rabin), Окамото Сираиси (T. Okamoto, A. Shiraishi), схемы с использованием эллиптических кривых и др.
В схемах RSA, Рабина, Эль-Гамаля и Шнорра (C. P. Schnorr) трудность задач подделки подписи обусловлена вычислительной сложностью задач факторизации или дискретного логарифмирования. Среди схем, предложенных российскими учеными, можно отметить оригинальную схему А.А.Грушо (1992 г.). Ее однонаправленная функция, в отличие от перечисленных выше, основана не на сложности теоретико-числовых задач, а на сложности решения систем нелинейных булевых уравнений.
В принятых не так давно стандартах США и России на цифровую подпись (DSS - Digital Signature Standard, ГОСТы Р 34.10-94 и Р 34.11-94) используются специально созданные алгоритмы. В основу этих алгоритмов положены схемы Эль-Гамаля и Шнорра.