15.5. Вторая попытка
287
15.5
Вторая попытка
Как же исправить недостатки предыдущего протокола? Мы не хотим ис-
пользовать фиксированный набор параметров алгоритма DH. Пусть эти па-
раметры выберет пользователь А и отошлет их пользователю Б.
Мы также сократим количество сообщений, которыми обмениваются поль-
зователи А и Б, с четырех до двух (рис. 15.2). Пользователь А выбирает па-
раметры алгоритма DH и случайное число
x
, вычисляет
X
и отсылает все
это пользователю Б вместе со значением
функции аутентификации. Пользо-
ватель Б должен проверить, что полученные им параметры алгоритма DH
выбраны правильно и что значение
X
корректно. (Более подробно реализа-
ция этих проверок описана в главе 12, “Алгоритм Диффи–Хеллмана”.) Остав-
шаяся часть протокола полностью аналогична предыдущей версии. Пользо-
ватель А получает значение
Y
и AUTH
B
, проверяет их и вычисляет значение
ключа DH.
У нас больше нет фиксированных параметров алгоритма DH. Мы исполь-
зуем только два сообщения вместо четырех, нигде не применяем ключ сеан-
са, помимо его основного назначения, а наше соглашение об аутентификации
гарантирует, что строки, подвергающиеся аутентификации, не будут одина-
ковыми.
Несмотря на все это, у нас появилось несколько новых проблем.
•
Что делать, если пользователь Б захочет использовать простое число
большего размера, чем было предложено пользователем А? Возможно,
пользователь Б применяет более строгие политики безопасности, и чис-
ло, выбранное пользователем А, кажется ему недостаточно безопасным.
В этом случае пользователю Б придется прервать выполнение протоко-
Пользователь А
Выбрать
подходящие
(p, q, g)
Пользователь Б
x
R
{1, ...,
q-
1}
(p, q, g), X: = g
x
,
AUTH
A
Y := g
y
,
AUTH
B
y
R
{1, ...,
q-
1}
k
Y
x
k
X
y
Проверить
(p, q, g), X,
AUTH
A
Проверить
Y,
AUTH
B
Рис. 15.2.
Вторая попытка согласования ключа