Хотя двухсторонняя криптография с открытым ключом очень хорошо продумана в .net framework, n-party меня очень волнует.Например, защита двустороннего видео-конф.связь довольно проста:
1) Каждая сторона генерирует пары ключей RSA для конкретных сеансов и получает свои открытые ключи, подписанные доверенным органом (т. е. доверенным сервером).2) Каждая сторона обменивается ключами, используя ECDiffieHellmanCng
, таким образом, соединение теперь является аутентичным и безопасным (думая, что они используют Vista / W7).
Теперь добавление третьего участника в это сообщение не будет работать, потому что алгоритмы обмена ключамипредназначены для получения общего секрета только из 2 открытых ключей (особенно с использованием .NET и BouncyCastle).Таким образом, вопрос заключается в том, как бы вы пошли на реализацию n-сторонней схемы криптографии с открытым ключом, которая все еще аутентична (т.е. устойчива к атаке в середине атаки) и безопасна (то есть защищена от прослушивания).
Edit : В настоящее время идеи, как показано ниже, я продолжу и реализую самый популярный в составе библиотеки NBusy.Communicator :
- Использованиедвухсторонняя схема связи, в которой одна сторона выступает в качестве сервера федерации.
- Инициируйте двухстороннюю связь и разрешите одной стороне аутентифицировать третьих сторон и совместно использовать секретный / симметричный ключ.
- Использовать схему многопартийного соглашения о ключах.
Edit2 : Я использую алгоритм "n-Party Diffie Hellman", аналогичный описанному здесь, но с некоторыми изменениями.: http://www.codeproject.com/KB/cs/diffy_helman.aspx