36
сообщения на ключ получателя и отправку. Естественно, такая схема является крайне неудобной.
При использовании асимметричных криптографических систем возможны два подхода к созданию механизма цифровой подписи.
Первый подход состоит в преобразовании сообщения в форму, по которой можно восстановить само сообщение и тем самым проверить его авторство. Здесь цифровой подписью выступает само зашифрованное сообщение. При этом подписанное сообщение имеет ту же длину, что и исходное. Для создания такого подписанного сообщения автор осуществляет зашифрование исходного текста на своем секретном ключе, используя второе преобразование S = D(M). В этой ситуации вычислить значение подписи S может только владелец секретного ключа; проверить правильность подписи может каждый пользователь системы путем ее расшифрования на открытом ключе автора E(S) = M и, тем самым, восстановления текста сообщения. Подобные схемы получили наименование схем цифровой подписи с восстановлением текста.
При втором подходе для заданного сообщения сначала вычисляется значение бесключевой хэш-функции h(M), а затем уже с использованием этого значения формируется цифровая подпись S = D(h(M)). Ясно, что здесь по значению подписи уже нельзя восстановить само сообщение, поэтому подписи передаются вместе с сообщениями. В данном случае длина подписи не зависит от объема сообщения. Такие схемы получили название цифровых подписей с дополнением.
Решение некоторых дополнительных задач
Помимо трех рассмотренных задач, которые с достаточной степенью условности можно назвать основными, криптография решает ряд дополнительных задач, обеспечивающих функционирование криптографических систем. Отметим только некоторые из них: это управление ключами, сертификация открытых ключей, идентификация сторон, осуществляющих информационное взаимодействие.
Управление ключами
Порядок использования криптографической системы в значительной степени определяется системой управления ключами. Система управления ключами обычно выполняет следующие функции: генерацию, распределение, установку и проверку ключей, контроль ис-
37
пользования ключей, смену, хранение и архивирование ключей, замену или изъятие скомпрометированных, а также уничтожение старых ключей.
Одной из важнейших задач криптографии является задача распределения секретных ключей. Очевидно, что любая криптографическая система может начать функционировать только после того, как каждая из взаимодействующих сторон станет обладателем необходимого набора ключей. Самый надежный способ распределения ключей – это обмен ключами в ходе личной встречи всех взаимодействующих сторон либо с помощью службы специальных курьеров. Однако при большом числе взаимодействующих сторон такое решение становится практически трудно реализуемым. Кроме того, оно требует хранения каждым пользователем системы значительного объема не всегда необходимой ключевой информации.
В связи с этим на практике применяют специальные системы предварительного распределения ключей. Они предусматривают распределение и хранение не самих ключей, а некоторой значительно меньшей по объему исходной информации, на основе которой каждый пользователь в дальнейшем может сформировать ключ для взаимодействия с другой стороной. Системы предварительного распределения ключей используют два алгоритма. С помощью первого алгоритма осуществляется генерация исходной информации. Эта информация включает открытую часть, которая передается всем пользователям или размещается на общедоступном сервере, а также секретные предварительные ключевые материалы каждого пользователя, рассылаемые с помощью закрытого канала связи. Второй алгоритм предназначен для вычисления действующего значения секретного ключа для взаимодействия между пользователями по имеющейся у них открытой и секретной части ключевой информации. Заметим, что формирование действующего значения секретного ключа осуществляется пользователями только в случае необходимости.
Пожалуй, наиболее просто распределение ключей выполняется в системах открытого распределения ключей. Для масштабных телекоммуникационных сетей даже предыдущие схемы оказываются недостаточно удобными. В 1976 г. американские исследователи У. Диффи и М. Хеллман впервые показали, как можно решить задачу распределения ключей с использованием незащищенного канала связи. В предложенной исследователями системе каждый из пользователей
38
изначально имеет свой секретный параметр. Для формирования общего секретного ключа, например сеансового ключа связи, взаимодействующие стороны реализуют определенный протокол по открытому каналу связи. При этом они обмениваются некоторыми образованными с помощью своих секретных параметров открытыми сообщениями и в ходе этого обмена вычисляют общий секретный ключ. Поскольку изначально ни одна из взаимодействующих сторон не обладает секретным ключом, предварительное распределение как таковое или пересылки ключей не осуществляются, подобные протоколы получили второе название – протоколы выработки общего ключа.
Еще одной задачей современной криптографии, тесно связанной с проблемой распределения ключей и активно развивающейся в настоящее время, является задача построения схем разделения секрета. Для многих практически важных приложений, связанных с запуском или активизацией критических процессов или определяющих порядок получения доступа к значимым данным, требуется ввести механизм реализации коллективного решения. В подобных схемах каждый член группы, принимающей решение, наделяется определенной долей секрета (специально выбранным набором данных), полная совокупность которых позволяет восстановить секретный ключ. При этом схема разделения секрета строится таким образом, что для восстановления секретного ключа требуется обязательное присутствие всех членов группы; объединение всех имеющихся долей секрета за исключением одной гарантированно не позволяет получить никакой информации о секретном ключе. Таким образом, схема разделения секрета определяется двумя алгоритмами: первый алгоритм устанавливает порядок вычисления значений долей секрета, а второй предназначен для восстановления общего секрета по известным долям.
Сертификация открытых ключей
Создание и широкое применение асимметричных криптографических систем потребовало решения задачи сертификации открытых ключей. Напомним, что пользователь асимметричной криптографической системы для отправки секретного или конфиденциального сообщения получателю должен зашифровать сообщение на открытом ключе получателя. С целью исключения попыток противника за счет подмены открытого ключа выступать от имени легального пользователя отправитель должен быть уверен, что открытый ключ действительно принадлежит получателю сообщения. Гарантированное под-
39
тверждение аутентичности открытого ключа составляет суть задачи сертификации.
Решение этой задачи обычно осуществляется путем создания специальных центров сертификации, которые играют роль доверенной третьей стороны и заверяют открытые ключи каждого из пользователей криптографической системы соответствующими сертификатами. Сертификат открытого ключа представляет собой открытый ключ и ряд дополнительных атрибутов пользователя, заверенных цифровой подписью центра. К дополнительным атрибутам, как правило, относятся следующие данные: имя пользователя, номер и дата выдачи сертификата, срок действия сертификата, предназначение открытого ключа (шифрование, цифровая подпись) и т. д.
Таким образом, центры сертификации осуществляют регистрацию пользователей, изготовление сертификатов открытых ключей, хранение сертификатов, поддержание в актуальном состоянии справочника действующих сертификатов, формирование списка досрочно отозванных сертификатов. В телекоммуникационных сетях с большим числом пользователей обычно создается несколько центров сертификации. Они объединяются в древовидную структуру, в корне которой находится главный центр сертификации, который делегирует ряд полномочий подчиненным ему отраслевым центрам, тем самым обеспечивая доверие к сертификатам открытых ключей этих центров. Каждый центр вышестоящего уровня аналогичным образом делегирует право выпуска сертификатов подчиненным ему центрам. Зная иерархию и подчиненность друг другу центров сертификации, всегда можно точно установить, является ли пользователь владельцем данного открытого ключа.
Идентификация сторон, осуществляющих информационное взаимодействие
Идентификация сторон означает проверку одной из сторон того, что взаимодействующая с ней сторона именно та, за которую она себя выдает. Наиболее распространенными в настоящее время являются следующие виды идентификации: парольная, иногда называемая слабой идентификацией, типа «запрос-ответ», называемая сильной идентификацией, и с нулевым разглашением.
Обычная схема парольной идентификации строится следующим образом. Каждый пользователь системы получает свой пароль из последовательности 6–10 символов. Эта последовательность выступает
40
в качестве общего секрета пользователя и системы. Для получения доступа к системному ресурсу пользователь предъявляет свой идентификатор и пароль, которые в общем случае определяют и его полномочия. По существу идентификатор выполняет роль заявки на идентификацию, а пароль – подтверждения идентичности пользователя. На основании полученного идентификатора осуществляется сравнение предъявленного пароля с соответствующим значением, хранимым системой; при совпадении значений выносится положительное решение о завершении идентификации.
Основным средством проведения «криптографической» идентификации выступают протоколы идентификации. В общем случае протокол – это распределенный алгоритм, устанавливающий содержание и последовательность действий каждой из сторон в решении общей задачи.
Основная идея протоколов сильной идентификации заключается в следующем. Один из пользователей убеждает другого в своей аутентичности путем демонстрации знания некоторого секрета, обычно известного обоим, но без предъявления в явном виде самого секрета. Секрет не предъявляется для исключения возможности его перехвата противником. Знание секрета подтверждается ответами в общем случае на меняющиеся запросы второго пользователя.
Очевидным недостатком парольной идентификации является то, что один из пользователей передает другому (или системе) свой пароль. В связи с этим противник или недобросовестный проверяющий впоследствии может выдать себя за первого пользователя. Протоколы типа «запрос-ответ» ликвидируют этот недостаток. При их выполнении один из пользователей отвечает на запросы другого, не предоставляя информации, которую противник может использовать для мистификации. Тем не менее, в процессе диалога пользователь все же может частично выдать информацию о секрете.
Протоколы с нулевым разглашением устраняют этот недостаток. В них пользователь, проходящий идентификацию, доказывает свою аутентичность путем демонстрации знания секрета, известного только ему без предъявления самого секрета в явном виде. Наиболее известным протоколом с нулевым разглашением является протокол Фиата-Шамира.