Как правильно реализовать алгоритм Диффи-Хэллмана? Здравствуйте, я хочу сделать нечто вроде анонимного группового чата. В качестве протокола для получения общего ключа был выбран DH, есть пара вопросов по его реализации: 1. Какие требования к генератору[g] и простому числу[p]? Слышал что-то про “специальные” числа от RFC, которые якобы можно зашить в клиент и не париться, насколько разумно их использование? 2. Как должен идти обмен открытыми ключами для количества пользователей > 3?
Генератор ggg должен быть примитивным корнем по модулю простого числа ppp. Простое число ppp должно быть большим, чтобы предотвратить атаки по методу малых простых чисел. RFC рекомендует использовать простые числа длиной 2048 бит или более для безопасной реализации Диффи-Хеллмана. Можно использовать стандартные простые числа, например из RFC 3526.
Для обмена открытыми ключами между более чем 3 пользователями можно организовать каскадный обмен ключами. Например, каждый пользователь может установить общий секретный ключ с каждым из остальных участников группы. В таком случае, каждый участник должен знать открытый ключ каждого другого участника и использовать их для вычисления общего секретного ключа.
Генератор ggg должен быть примитивным корнем по модулю простого числа ppp. Простое число ppp должно быть большим, чтобы предотвратить атаки по методу малых простых чисел. RFC рекомендует использовать простые числа длиной 2048 бит или более для безопасной реализации Диффи-Хеллмана. Можно использовать стандартные простые числа, например из RFC 3526.
Для обмена открытыми ключами между более чем 3 пользователями можно организовать каскадный обмен ключами. Например, каждый пользователь может установить общий секретный ключ с каждым из остальных участников группы. В таком случае, каждый участник должен знать открытый ключ каждого другого участника и использовать их для вычисления общего секретного ключа.