Криптография с открытым ключом n-Party - PullRequest
5 голосов
/ 13 апреля 2011

Хотя двухсторонняя криптография с открытым ключом очень хорошо продумана в .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

Ответы [ 3 ]

4 голосов
/ 13 апреля 2011

(просто мысли вслух)

Вам не нужна (полная) сетка безопасных отношений.

Суть сертификата PK + заключается в распространении симметричного ключа.

Любой новый участник должен установить личность только с 1 существующим узлом и затем может получить копию этого сим-ключа.

3 голосов
/ 13 апреля 2011

Я считаю, что причина, по которой он еще не реализован, заключается в том, что в этом нет необходимости.Большинство схем безопасности работают по принципу «точка-точка», где есть две стороны.Если имеется более двух сторон, это обычно реализуется как 2 двусторонних сообщения, где одна сторона работает как Федерация .

1 голос
/ 13 апреля 2011

Мне кажется, что "Схема многопартийного соглашения о ключах" также возможна, но в настоящее время, по-видимому, практически нет практических реализаций с использованием .net / c #.Очень аккуратная академическая (но очень сложная для реализации) идея от Giuseppe Atenies (IEEE): Согласованное многопартийное соглашение о ключах .

Я также натолкнулся на очень аккуратную статью в CodeProjectо 3-х уровневом Диффи-Хеллмане, который можно распространить на n-party, как в моем случае: http://www.codeproject.com/KB/cs/diffy_helman.aspx

...