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