SslStream .NET всегда ведет переговоры с наименее безопасным шифром, который у меня есть. Как я могу изменить это? - PullRequest
5 голосов
/ 18 сентября 2008

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

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

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

Ответы [ 5 ]

3 голосов
/ 15 октября 2008

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

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 Cipher Suite Order с помощью оснастки «Объект групповой политики» в консоли управления Microsoft (Windows Vista)

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

1 голос
/ 18 ноября 2009

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

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

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

0 голосов
/ 18 сентября 2008

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

0 голосов
/ 20 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

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

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

...