Цель нашего рассказа - достичь того, чтобы будущие пользователи электронной подписи (или те, кто уже пользуются ею, даже не замечая этого) имели элементарное представление, как электронная подпись «работает».
Напомним, что электронная подпись служит для аутентификации исключительно электронной информации: электронных сообщений и документов.
Электронная информация – это информация, представленная в том или ином виде, пригодном для обработки устройствами цифровой вычислительной техники. Такое представление называется цифровым кодом. Наиболее простым для представления является двоичный код, когда любая информация (текст, картинки, звук) представлены набором нулей и единиц.
Впрочем, существует множество других кодов, применяемых при обработке электронной информации. Если взять какую-то осмысленную информацию и представить ее в электронном виде, то мы получим электронное сообщение или электронный документ, которые могут храниться и передаваться по специальным каналам .
Электронная подпись – это в сущности своей такого же рода электронное сообщение, дополнительный фрагмент к электронному документу. Еще следует напомнить, что электронная подпись, в отличие от личной (ручной), уникальна для каждого документа.
Как же технически получается уникальная подпись документа, при этом однозначно идентифицирующая подписчика?
Различных схем получения подписи много, но чаще всего используются схемы подписи с открытыми ключами, когда для генерации подписи используется личный секретный ключ подписчика, а для проверки подписи – его открытый ключ, известный всем его партнерам. Оба ключа, конечно, тоже представляют собой некоторые кусочки информации, представленной в электронном виде. Как правило, в качестве таких фрагментов информации применяются очень большие числа (настолько большие, что в отличие от триллионов и сискстиллионов, у их старших разрядов даже нет названия). В такой схеме аналогом личной физической подписи подписчика является его секретный ключ, который может быть одним и тем же при подписи различных электронных документов данным лицом. Если при проверке подписи парный секретный открытый ключ предполагаемого подписчика «сработал» и подпись в порядке, то личность подписчика считается идентифицированной.
 |
Для того, чтобы получить электронную подпись, уникальную для сообщения (документа) и аутентифицирующую его, следует данные личного ключа совместить с данными самого сообщения (документа).
Это происходит следующим образом: электронное сообщение обрабатывается так называемым «хэш-алгоритмом», который работает подобно мясорубке одновременно с миксером , то есть рубит на мелкие кусочки электронное сообщение и перемешивает эти кусочки, часть из которых просто выбрасывает вон . Это происходит до тех пор, пока не останется маленький кусочек «электронного фарша», называемого хэшем или дайджестом сообщения, из которого первоначальное сообщение восстановить невозможно. Поэтому, когда специалиста IT спрашивают, что такое «хэш», он, как правило, объясняет популярно : «хэш» это – мусор.
Но поскольку программа, реализующая один и тот же стандартный алгоритм хэширования, работает всегда одинаково, то и получающийся в результате «мусор» для идентичных сообщений будет всегда один и тот же. А вот если в первоначальном сообщении заменить хоть один нолик или одну единичку, то на выходе получим совершенно иной, до неузнаваемости измененный результат.
Полученный дайджест сообщения (документа) шифруется специальным и тоже стандартизованным алгоритмом шифрования с использованием секретного ключа подписчика. Результат шифрования может быть присоединен к документу и отправлен получателю в качестве подписи сообщения (документа).
Реально подпись образуется несколько сложнее. К зашифрованному дайджесту добавляются фрагменты дополнительной информации, которые содержат сведения о том, какой алгоритм применен для хэширования, какой алгоритм использовался для шифрования , возможно некая информация и о самом отправителе и т.д. Все это кодируется специальным стандартным образом. В процессе кодирования добавляется заголовок определенного содержания – так получается электронная подпись, которая и присоединяется к сообщению при его отправке получателю (или в архив).
Получатель проверяет подпись с помощью специальной программы, которая читает заголовки внутри стандартного кода и использует их как руководство к действию в процессе проверки подписи: для разбора полученной подписи на части, для выбора алгоритмов шифрования и хэширования. Суть самой проверки очень проста: полученное сообщение или документ заново хэшируется, и полученный дайджест сравнивается с результатом расшифровки открытым ключем подписчика дайджеста внутри подписи. Если дайджесты совпали – значит подпись верна. В случае их несовпадения, это будет означать, что, либо документ был изменен, либо он подписан посторонним ключем.
Объясняя, как используют электронную подпись подписчик и реципиент сообщения, мы исходили из предположения, что у подписчика уже имеется в наличии секретный ключ, а у его реципиента – открытый ключ подписчика.
Между тем, вопросы генерации и распределения ключей, используемых для подписи заслуживают отдельного обсуждения. Это связано с тем, что для обеспечения достоверности электронной подписи нужно обеспечить строгую сохранность секретного ключа в тайне и недоступности его для посторонних, а также доверие к открытому ключу в смысле его принадлежности подписчику.
Здесь возникает одна проблема - «проблема подложного ключа». По действующему протоколу (сценарию) отправитель документа заранее должен послать получателю свой открытый ключ. Но разве не может так случиться, что это сделает от его имени злоумышленник? Вполне может.
Такой злоумышленник может отправлять затем под чужим именем различные документы и сообщения и подписывать их подложным ключем. Например, он может выслать в банк поручение перевести деньги на его счет, который осуществит это поручение, полагая, что имеет дело с совершенно иным лицом – своим партнером.
Вообще, управление ключами (Key Management) – важнейшая часть любой системы защиты информации. Первостепенное внимание уделяется этому вопросу во всех рекомендациях и стандартах, связанных с созданием PKI (Public Key Infrastucture), о которой мы упоминали в предыдущей статье.
В следующей публикации мы постараемся подробнее осветить вопросы Key Management в популярной форме.