SslStream .NET всегда ведет переговоры с наименее защищенным шифром, который у меня есть.Как я могу это изменить?
-
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 SHARSA С 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...