SslStream .NET всегда ведет переговоры с наименее защищенным шифром, который у меня есть.Как я могу это изменить?

StackOverflow https://stackoverflow.com/questions/91304

  •  01-07-2019
  •  | 
  •  

Вопрос

Предполагается, что SslStream согласовывает тип шифрования, длину ключа, алгоритм хэширования и т.д.с его одноранговым стеком SSL.При использовании его в моем коде я обнаруживаю, что согласование всегда выполняется по умолчанию с использованием RC4 и MD5.Я хотел бы использовать 3DES или AES для некоторой дополнительной безопасности.

Просматривая интернет, я нахожу лишь несколько ссылок на эту проблему и никаких решений;один плакат утверждает, что это на самом деле имеет смысл, поскольку наименьший общий знаменатель между двумя стеками безопасен и имеет дополнительное преимущество в том, что он быстрее / использует меньше ресурсов процессора.Хотя это может быть технически правильно, мой конкретный компромисс между сложностью и стоимостью лежит в другом месте (я предпочитаю использовать AES с длинным ключом).

Если кто-нибудь может помочь, я был бы признателен.

Это было полезно?

Решение

Вы можете выбрать, какие протоколы доступны для выбора, внеся несколько простых изменений в реестр.Например, мы убираем возможность выбора RC4.Вам нужно внести изменения только на одном конце соединения (например, на сервере), потому что клиент и сервер согласовывают поиск общепринятого алгоритма

http://msdn.microsoft.com/en-us/library/ms925716.aspx

С наилучшими пожеланиями Джеймс

Другие советы

SslStream использует Schannel, который поставляется вместе с операционной системой.Наборы перечислены в порядке по умолчанию, в котором они выбраны поставщиком Microsoft Schannel для :

Windows Vista:

RSA С AES_128 CBC SHA
RSA С AES_256 CBC SHA
RSA С RC4_128 SHA

...

Windows XP:

RSA С RC4 128 MD5
RSA С RC4 128 SHA

RSA С 3DES CBC SHA

....

Вы также можете изменить список наборов шифров, настроив Заказ набора SSL-шифров параметры групповой политики с помощью оснастки "Объект групповой политики" в консоли управления Microsoft (Windows Vista)

Но проблема в том, что Windows XP не включает AES в списке шифров, доступных для SslStream.Однако в Windows XP можно изменить настройки реестра:HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy 1 для получения 3ДЭС шифр.

При этом должен использоваться наиболее безопасный набор алгоритмов, которые были в обоих списках.Мне трудно поверить, что это не так, потому что SslStream оборачивает SSPI SChannel, и если бы это было сломано, то Internet Explorer, IIS и все остальное в Windows тоже были бы сломаны.

Возможно, у вас устаревшая версия SChannel.dll/Secur32.dll.Какая операционная система и версия Internet Explorer у вас установлены?

Это возможно для отключите протоколы в SCHANNEL.Не могли бы вы проверить, что этого не было сделано?

Я использую XP SP3 и IE7 со всеми обновлениями.Реестр, похоже, настроен так, что все включено.

В Java вы можете заказать различные алгоритмы / шифры в соответствии с вашими потребностями и предпочтениями.Может быть, в .NET есть аналогичный API...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top