logo
Коды и шифры

Стойкость системы Диффи-Хеллмана

Насколько система Диффи-Хеллмана стойкая? Мы предполагаем, что заинтересованное третье лицо, Z, может узнать значения m, p, kx и ky, но не знает чисел x и y. Стойкость, таким образом, зависит от того, насколько сложно для него, скажем, вычислить x по значению kx(=mx(mod p)). Известно, что это крайне трудная задача (она называется задачей дискретного логарифмирования), если только простое число p не принадлежит некоторому специальному классу. В общем случае эта задача считается невыполнимой для значений p, больших 10200. Как мы увидим далее, схожая задача возникает для метода шифрования RSA.

Однако существует и альтернативный способ атаки, который Z может применить, если он в состоянии перехватывать сообщения в пути между X и Y и слегка задерживать их. Поскольку ему известны значения m и p, то он может, запомнив значения kx и ky, заменить их на свое собственное значение kz=mz, которое он посылает как абоненту X, так и абоненту Y. Ничего не подозревающие X и Y начинают использовать значение kz для шифрования, а Z получает возможность читать их сообщения. Затем он перешифровывает их, используя исходный ключ (соответственно, kx или ky), так что ни X, ни Y не догадаются о том, что их сообщения читают.

Способы предотвращения атак, подобных этой, представляют значительный интерес (см., например, [12.7]).

Несмотря на эту потенциальную слабость, система Диффи-Хеллмана представляет собой метод ключевого обмена, способный устоять против любого, кроме самого целеустремленного и хорошо оснащенного противника. В частности, она может быть применена в качестве начального этапа при использовании таких систем шифрования, как DES-алгоритм, который мы рассмотрим ниже.