15.7. Окончательная версия протокола
291
Пользователь Б
Пользователь А
s
a
минимальный размер
p
N
a
R
0, ..., 2
256
-1
s
a
, N
a
Выбрать
(p, q, g)
,
чтобы
x
R
{1, ...,
q-
1}
(p, q, g), X := g
x
,
AUTH
B
Y := g
y
,
AUTH
A
y
R
{1,...,
q-
1}
Проверить
(p, q, g), X,
AUTH
B
Проверить
Y,
AUTH
A
k
SHA
d
-256(
Y
x
)
k
SHA
d
-256(
X
y
)
s
b
минимальный размер
p
s
max(
s
a
, s
b
)
log
2
1
p
s
s
s
b
2
?
s
p
s
q
a
a
1
2
255
256
2
2
log
log
q
p
g
g
X
X
q
q
1
1
1
1
1
| (
)
Проверить, что
p
и
q
простые
Y
Y
q
1
1
?
?
?
?
?
?
?
?
?
?
?
Рис. 15.5.
Окончательная версия протокола в развернутом виде
максимума влечет за собой все проблемы, присущие любому настраиваемому
параметру, в котором практически никто не разбирается. Поэтому мы решили
использовать динамический максимум. И пользователь А и пользователь Б
отказываются применять простое число, длина которого более чем в два ра-
за превышает заданную ими длину. Наличие динамического максимума не
мешает обновлению системы и в то же время позволяет избежать исполь-
зования слишком больших простых чисел. Конечно, вы можете усомниться
в том, действительно ли множитель 2 будет достаточно эффективным. При
желании можно использовать не 2, а 3; особой роли это не играет.
Оставшаяся часть протокола (см. рис. 15.5) — это всего лишь развернутое
представление этапов его сокращенной формы. Если пользователи А и Б до-
статочно сообразительны, они оба будут кэшировать подходящие параметры
алгоритма DH. Это избавит пользователя Б от необходимости каждый раз