Шифрование в веб-службах C#


16

Я ищу простой способ зашифровать мое сообщение с мылом в моей веб-службе C#.

Я искал WSE 3.0, но, похоже, Microsoft отказалась от поддержки, и поэтому это нецелесообразно использовать.
Кажется, что WCF мог быть вариантом, но я предпочитаю не обновляться с .NET 2.0.

Любой простой, простой способ шифрования?

8

Я думаю, что это может помочь; в прошлом году мы использовали это для сжатия веб-сервисов, и он выполнялся очень хорошо, я считаю, что его можно улучшить с помощью классов шифрования;

Creating Custom SOAP Extensions - Compression Extension


0

Возможно, я наивна, но заставляю общение через https быть приемлемым? Я разрабатываю веб-службы, которые работают на 2.0, и добились успеха, просто запустив IIS для принудительного использования https в виртуальном каталоге.

В качестве альтернативы, или дополнительно, вы можете проверить HttpRequest.IsSecureConnection property.


1

Может быть, я наивный, но будет принуждая связь быть через HTTPS быть приемлемыми? Я разрабатываю веб-службы , которые работают на 2.0, и имели успех с получением IIS до принудительного использования https в виртуальном каталоге .

Это было бы самым простым способом пойти вероятно, но, к сожалению, я не контроль над конфигурацией IIS , и не может гарантировать , что он может работать по протоколу HTTPS.

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


0

Мы на самом деле использовать WSE 3.0 в наших веб-сервисов, которые изначально были разработаны предварительные WCF. Для обеспечения безопасности используется система на основе токенов SAML, построенная на классах криптографии в System.Security.

Он работает очень хорошо. Однако этот метод ни в коем случае не является «простым».


2

Все, что вы делаете для обеспечения «шифрования», которое не использует SSL/TLS, скорее всего, будет уязвимым. Теперь вы должны спросить себя, стоит ли записывать часы, которые вы могли бы потратить на функции на мешке безопасности с резиновой курицей? Может быть это.

.NET API, такие как DPAPI и API-интерфейс Win32 crypt32, позволяют легко шифровать капли данных со статическими ключами. Но как ваши клиенты получат ключи? Любой установленный клиент SOAP должен либо сжать ключ в свою конфигурацию, либо получить его через небезопасный Интернет.

Это проблема SSL/TLS для вас; танец, который вы делаете с сертификатами TLS, решает проблему передачи открытых ключей по ненадежным каналам.


0

Вы можете использовать шифрование параметров в C#, используя расширение System.Security.Cryptography.

Шифрование ваших параметров и их дешифрование будет сложнее, но гораздо более безопасным.

How To: Encrypt and Decrypt Data Using a Symmetric (Rijndael) Key (C#/VB.NET)

Я использую этот ПОДХОД для ОТР (один раз пароль) веб-службы, и она отлично работает для меня.