Я ищу простой способ зашифровать мои мыльные сообщения в моем C # Web-сервисе.
Я изучал WSE 3.0, но, похоже, Microsoft отказалась от его поддержки, и поэтому использовать его не так просто.
Кажется, WCF мог бы быть вариантом, но я предпочитаю не обновлять .NET 2.0.
Какой-нибудь простой , простой метод шифрования?
Я думаю, что это может помочь; в прошлом году мы использовали это для сжатия веб-сервисов, и это работало очень хорошо, я думаю, что это может быть улучшено с помощью классов шифрования;
Создание пользовательских расширений SOAP - расширение сжатия
Возможно, я наивен, но будет ли принуждение к общению через https приемлемым? Я разрабатываю веб-сервисы, которые работают на 2.0 и добились успеха, просто получив IIS для принудительного применения https в виртуальном каталоге.
В качестве альтернативы или дополнения вы можете проверить свойство HttpRequest.IsSecureConnection .
Возможно, я наивен, но будет ли принуждение к общению через https приемлемым? Я разрабатываю веб-сервисы, которые работают на 2.0 и добились успеха, просто получив IIS для принудительного применения https в виртуальном каталоге.
Вероятно, это будет самый простой путь, но, к сожалению, я не могу контролировать конфигурацию IIS и не могу гарантировать, что он может работать по протоколу https.
В таком случае, возможно, лучше всего либо зашифровать отдельные части сообщений SOAP (в конце концов, вам может не понадобиться зашифровать все сообщение - только определенные конфиденциальные поля?), Либо вы можете использовать HttpModule для перехвата всех сообщений и работы с содержимым. В любом случае вам, вероятно, придется предоставлять собственные прокси.
Мы фактически используем WSE 3.0 в наших веб-сервисах, которые были изначально разработаны до WCF. В целях безопасности мы используем систему на основе токенов SAML, построенную на классах криптографии в System.Security.
Это работает очень хорошо. Однако этот метод ни в коем случае не является «простым».
Все, что вы делаете для обеспечения «шифрования» без использования SSL / TLS, может быть уязвимым. Теперь вы должны спросить себя, стоит ли тратить часы на разработку, которые вы могли бы потратить на функции, связанные с мерой безопасности "каучук-курица"? Может быть это.
.NET API, такие как DPAPI и Win32 crypt32 API, упрощают шифрование больших двоичных данных статическими ключами. Но как ваши клиенты получат ключи? Любой установленный клиент SOAP должен будет либо сжечь ключ в своей конфигурации, либо получить его через небезопасный Интернет.
Это проблема, которую SSL / TLS решает для вас; Танец, который вы делаете с сертификатами TLS, решает проблему передачи открытых ключей по ненадежным каналам.
Вы можете использовать шифрование параметров в C # с помощью расширения System.Security.Cryptography.
Зашифровать ваши параметры и расшифровать их будет сложнее, но гораздо безопаснее.
Как: шифровать и дешифровать данные с помощью симметричного (Rijndael) ключа (C # / VB.NET)
Я использую этот подход для веб-службы OTP (одноразовый пароль), и он прекрасно работает для меня.