Наряду с использованием сертифицированного справочника для аутентификации абонентов в протоколах распределения ключей используется также метод, основанный на идентификационной информации (identity-based). Каждый абонент A при регистрации в сети связи получает идентификатор
и соответствующее ему значение
, для вычисления которого по
требуется инвертировать некоторую (предположительно одностороннюю) функцию. Идентификатор
публикуется в общедоступном сертифицированном справочнике, а значение
хранится абонентом A в секрете. В протоколе распределения ключей, основанном на идентификационной информации, абонент A использует
при вычислении своего сообщения, а любой другой абонент, зная
, может убедиться, что сообщение действительно пришло от A.
Приведем описания двух протоколов, основанных на идентификационной информации. В них
является подписью
согласно некоторым схемам электронной подписи.
Протокол Гюнтера
Этот протокол появился в работе [G] (см. также [Bur]). Пусть
-- большое простое число, а
-- некоторый порождающий группы
, известные как центру доверия, так и всем абонентам сети связи. Центр доверия выбирает свой секретный ключ
и сообщает абонентам открытый ключ
. При регистрации абонента (скажем, A) центр доверия вычисляет подпись его идентификатора
по схеме Эль Гамаля [EG85], т. е.
и
, где
секретно, а
-- некоторая хэш-функция. После этого центр доверия передает
(секретный ключ A) только абоненту A, а
(открытый ключ A) помещает в общедоступный сертифицированный справочник. Теперь если абоненты A и B хотят выработать общий секретный ключ, они выполняют следующие действия:
1. A выбирает
, вычисляет
и посылает его вместе с
участнику B, сохраняя
в секрете.
2. B выбирает
, вычисляет
и посылает его вместе с
участнику A, сохраняя
в секрете.
3. A вычисляет
.
4. B вычисляет
. Из сравнений

и

следует, что
является искомым общим секретным ключом.
Протокол типа Диффи -- Хеллмана, основанный на идентификационной информации
Описание этого протокола, предложенного в работе Окамото и Танаки [OT], взято из работы Л. М. Ухлинова [У2]. Этот протокол разработан (и реализован) для интеллектуальных карточек. Пусть центром доверия выбраны различные большие простые числа
и
, числа
и
такие, что
, и элемент
достаточно большого порядка. Для каждого абонента A центр доверия вычисляет
, где
-- идентификатор A, и сообщает
,
,
и
этому абоненту, сохраняя
,
и
в секрете. Отметим, что
является подписью
по схеме RSA (см. [RSA]). Считается также, что всем абонентам известна некоторая трехместная хэш-функция
. Протокол заключается в следующем:
1. A выбирает
, вычисляет
,
,
, где
-- текущее время, и посылает
,
,
,
абоненту B, сохраняя
в секрете.
2. B вычисляет
и проверяет истинность сравнения
. Если оно истинно, то сообщение, пришедшее от A, признается подлинным. В этом случае B выбирает
, вычисляет
,
,
, где
-- текущее время, и посылает
,
,
,
абоненту A, сохраняя
в секрете.
3. A вычисляет
и проверяет истинность сравнения
. Если оно истинно, то сообщение, пришедшее от B, признается подлинным. В этом случае A вычисляет
.
4. B вычисляет
. Ясно, что
. Поэтому
является искомым общим секретным ключом.
Протокол Ингемарссона -- Танга – Вонга.
Мы приведем протокол для конференц-связи, являющийся обобщением протокола Диффи -- Хеллмана и предложенный в работе Ингемарссона, Танга и Вонга [ITW]. Введем обозначения. Пусть
-- число абонентов, желающих выработать общий секретный ключ. Обозначим этих абонентов элементами кольца
, сложение и вычитание в котором будет обозначаться через
и
. Предполагается, что всем абонентам известны большое простое число
и порождающий
группы
.
Протокол состоит из
шагов. Каждый шаг (скажем,
-й) состоит в том, что каждый абонент
вычисляет сообщение
и, если
, посылает его абоненту
. Действия абонента
на
-м шаге в этом протоколе имеют следующий вид:
I. Если
, то выбрать
, вычислить
и переслать его абоненту
.
II. Если
, то вычислить
, используя сообщение
, полученное от абонента
на
-м шаге. Если
, то переслать сообщение
абоненту
. Если же
, то положить
в качестве общего секретного ключа. Очевидно, что в этом протоколе
, и общий секретный ключ каждого абонента равен 