Итак, мы можем проверить каждое из этих возможных значений общего секрета.
На практике количество возможных значений для общего секрета слишком велико, чтобы сканирование всех возможностей было практичным — всегда есть более простые атаки. И, как вы, кажется, правильно догадались, распознавание общего секрета на основе $g, g^a \bmod p, g^b \bmod p$ считается сложной проблемой (на самом деле мы называем ее «проблемой принятия решений Диффи-Хеллмана»)
Одна атака - взять $г$ и $g^a \bmod p$ и попытаться восстановить $а$ (то есть решить проблему дискретного логарифма) - как только мы имеем $а$, мы можем вычислить $B^a \bmod p$ (который является общим секретом), и это общий секрет.
Другой возможный подход состоит в том, чтобы атаковать симметричную сторону вещей — мы полностью игнорируем операцию DH и просто проводим атаку грубой силы на симметричный ключ. Кстати: незнание точного открытого текста обычно не является проблемой; даже если мы не знаем, что это такое, мы обычно знаем об этом достаточно, чтобы отличить его от случайной тарабарщины (что вы получаете, когда пытаетесь расшифровать его неправильным ключом) — кроме того, если вы используете AEAD алгоритме ключ используется для генерации тега (а также для шифрования), и тег также может использоваться для определения правильного ключа (даже если открытый текст действительно является случайной тарабарщиной).
Для обеих этих атак мы обычно выбираем параметры безопасности (такие как размер $р$ и размер симметричного ключа), чтобы сделать оба этих подхода невозможными.