Реализация цифровой подписи
Чтобы поставить цифровую подпись под конкретным документом, необходимо проделать довольно большой объем вычислений. Эти действия осуществляются в два этапа:
· генерация ключей;
· подписание документа.
При использовании несимметричного шифрования, а именно его и применяют для цифровой подписи, каждый абонент, обладающий правом подписи, самостоятельно на своем компьютере формирует два ключа подписи, секретный (собственный) и открытый (общий).
Секретный ключ применяют для выработки подписи (рис. 3.6). Только секретный ключ гарантирует невозможность подделки злоумышленником документа и цифровой подписи от имени заверяющего. Никто, кроме владельца, не сможет сформировать ЭЦП под документом. Зато любой может проверить (с помощью доступного всем открытого ключа), что документ подписал именно владелец и что документ не искажен (так как значение ЭЦП зависит и от содержимого документа). Логичное следствие состоит в том, что невозможно просто перенести ЭЦП с одного документа на другой (по аналогии с ксерокопированием или сканированием обычной подписи на бумажном документе или использованием факсимиле). Таким образом, можно сказать, что электронная цифровая подпись является реквизитом данного конкретного электронного документа.
Открытый ключ вычисляется как значение некоторой функции от секретного, но знание открытого ключа не дает возможности определить секретный ключ. Открытый ключ можно опубликовать и использовать для проверки подлинности документа и цифровой подписи, а также для предупреждения мошенничества со стороны заверяющего в виде отказа его от подписи документа. Открытым ключом можно пользоваться только в том случае, если известны его подлинность и авторство, которые подтверждаются сертификатом. Поэтому во избежание подделки или внесения искажений, обмен и хранение открытых ключей должны осуществляться в защищенном виде. Для этого можно использовать секретный канал связи или в открытом канале связи средства электронной цифровой подписи, а при работе со средствами криптографической защиты необходимо контролировать целостность справочника открытых ключей.
Открытые ключи всех участников обмена информацией должны быть доступны всем для возможности проверки ЭЦП. То есть их можно размещать на серверах, передавать по радио, писать на заборах и публиковать в колонке частных объявлений в газете.
Естественно, говорить об этом с уверенностью можно только в том случае, если генерацию ключей производил сам владелец ключа либо (если он не располагает соответствующей техникой) удостоверяющий центр в его присутствии. В этой связи вызывает недоумение практика, распространенная в некоторых системах, когда организатор системы генерирует ключи заранее, а потом раздает пользователям.
На первом этапе для каждого абонента генерируют пару ключей ‑ секретный и открытый, которые связаны между собой с помощью особого математического соотношения. Открытый ключ следует рассматривать как необходимый инструмент, позволяющий определить автора подписи и достоверность электронного документа, но не позволяющий вычислить секретный ключ.
Возможны два варианта проведения этого этапа. Естественным представляется вариант, когда генерацию ключей абонент может осуществлять самостоятельно. Не исключено, однако, что в определенных ситуациях эту функцию целесообразно передать центру, который будет вырабатывать пары «секретный-открытый» ключ для абонентов и заниматься их распространением. Второй вариант имеет целый ряд преимуществ административного характера, однако обладает принципиальным недостатком ‑ у абонента нет гарантии, что его личный секретный ключ уникален. Другими словами, можно сказать, что здесь все абоненты находятся «под колпаком» центра и он может подделать любую подпись.
Первый вариант заключается в том, что пользователь передает сам свой открытый ключ всем, с кем собирается вести переписку. По очевидным причинам он технически сложен (не со всеми можно встретиться лично, невозможно заранее предусмотреть всех адресатов).
Второй вариант заключается в создании центра сертификации (Certificate Authority). В качестве такого центра выбирают человека, которому все доверяют и с которым хотя бы один раз могут встретиться лично либо имеют надежный (т. е. не допускающий искажений/подделок) канал связи. После выбора такого лица все участники обмена генерируют свои пары ключей и, прихватив свой открытый ключ, выстраиваются в очередь к центру сертификации, который за умеренную плату удостоверяет личность пришедшего и подписывает его открытый ключ своим секретным ключом.
Кроме собственно открытого ключа, в блок подписываемых данных входят дополнительные сведения: имя владельца, другие идентифицирующие данные, сроки действия ключа, перечень информационных систем, в которых допустимо его использовать и др. Все это вместе (открытый ключ, блок данных и ЭЦП) называется сертификатом открытого ключа.
Владелец ключа получает на руки сертификат и открытый ключ центра. Поскольку другие участники системы также получают вместе с сертификатом копию открытого ключа центра (получают лично), они могут удостовериться в принадлежности любого открытого ключа, не встречаясь лично с его владельцем, потому что теперь при установлении связи пользователи обмениваются не просто открытыми ключами, а сертификатами. Так, к почти строгому математическому механизму ЭЦП добавился организационный.
Таким образом, каждому пользователю, обладающему правом подписи, необходимо иметь лишь один секретный ключ и справочник регистрационных записей открытых ключей абонентов сети. Если у пользователя нет права подписи, но в процессе работы ему необходимо проверять подписи, проставленные под документами, он должен иметь лишь справочник открытых ключей.
Базовые правила для каждой сети цифровой подписи должны быть тщательно проработаны. К примеру, необходимо определить, какой метод шифрования будет использоваться, кто будет выступать в роли уполномоченного по сертификатам.
Математические схемы, используемые в алгоритмах, реализующих цифровую подпись, основаны на однонаправленных функциях. Гипотеза о существовании односторонних функций является одним из результатов теории сложности и теории функций. Напомним, что односторонней называется функция, определенная (например) на множестве натуральных чисел и не требующая для вычисления своего значения больших вычислительных ресурсов. Но вычисление обратной функции (то есть по известному значению функции восстановить аргумент) оказывается невозможно теоретически или (в крайнем случае) вычислительно.
Строгого доказательства существования односторонних функций пока нет. Поэтому все используемые в настоящее время хэш-функции являются лишь кандидатами в односторонние функции, хотя и имеют достаточно хорошие свойства. Основными свойствами криптографически надежной хэш-функции являются:
· рассеивание;
· стойкость к коллизиям;
· необратимость.
Свойство рассеивания требует, чтобы минимальные изменения текста, подлежащего хэшированию, вызывали максимальные изменения значения хэш-функции. К таким изменениям относятся вставки, выбросы, перестановки и т.п.
Коллизией хэш-функции называется ситуация, когда два различных текста (вне зависимости от длины) могут иметь одинаковые хэш-функции. Значение хэш-функции всегда имеет фиксированную длину, а на длину исходного текста не накладывается никаких ограничений. Из этого следует, что коллизии существуют. Требование стойкости к коллизиям обозначает, что для криптографически надежной хэш-функции для заданного текста вычислительно невозможно найти другой текст, вызывающий коллизию. Иными словами, вероятность того, что значения хэш-функции двух различных документов совпадут, должна быть ничтожно мала.
Свойство необратимости заключается в том, что задача подбора документа, который обладал бы требуемым значением хэш-функции, вычислительно неразрешима. Для данной функции нельзя вычислить, какие два исходные сообщения могут генерировать одно и то же хэш-значение, поскольку хэш-значения двух 256-битных документов могут совпасть лишь в одном из 2256 (1077) случаев.
При подписании прежде всего документ «сжимают» до нескольких десятков или сотен байт с помощью хэш-функции. Здесь термин «сжатие» вовсе не аналогичен термину «архивирование». После архивирования информация может быть восстановлена. Значение же хэш-функции лишь только зависит от документа, но не позволяет восстановить сам документ.
Если к полученному хэш-значению применяется некоторое математическое преобразование (шифрование секретным ключом), то на выходе и получается цифровая подпись документа.
Размер собственно ЭЦП довольно велик, например, для ГОСТ Р 34.10-11.94 он равен 64-м байтам. После добавления служебной информации (порядка 50 ‑ 200 байт в зависимости от реализации) эта величина существенно возрастает. Поскольку алгоритмы вычисления ЭЦП используют сложные алгебраические преобразования и являются сравнительно медленными, то для крупных центров обработки, где суточный объем электронных баз данных составляет величину порядка 50000 ‑ 60000 шт., временные затраты на вычисление и проверку ЭЦП становятся значительными и заметно влияют на производительность системы в целом.