C#Web服务中的加密

我正在寻找一种简单的方法来加密我在C#Web服务中的肥皂通信。

我正在研究WSE 3.0,但似乎微软放弃了对它的支持,因此使用它并不简单。
看来WCF可能是一个选项,但我不想从.NET 2.0升级。

任何简单 ,直接的加密方法?

我认为这可以提供帮助; 去年我们使用它来压缩Web服务并且表现非常好,我相信它可以通过加密类来增强;

创建自定义SOAP扩展 – 压缩扩展

您提供的任何不使用SSL / TLS的“加密”都可能容易受到攻击。 现在你必须问问自己,是否值得花费时间来开发橡胶鸡安全措施的function? 也许是。

像DPAPI和Win32 crypt32 API这样的.NET API可以使用静态密钥轻松加密数据blob。 但是您的客户将如何获得钥匙? 任何已安装的SOAP客户端都必须将密钥烧录到其配置中,或者通过不安全的Internet接收密钥。

这是SSL / TLS为您解决的问题; 您使用TLS证书进行的舞蹈解决了通过不受信任的渠道传递公钥的问题。

也许我是天真的,但强迫通过https通信是可以接受的吗? 我开发了运行在2.0上的Web服务,并且成功地让IIS在虚拟目录上强制执行https。

这可能是最简单的方法,但不幸的是我无法控制IIS配置,并且不能保证它可以运行https。

在这种情况下,也许最好的选择是逐个加密SOAP消息的部分(毕竟,您可能不需要加密整个消息 – 只是某些敏感字段?),或者您可以选择使用一个HttpModule拦截所有消息并对内容进行操作。 在任何一种情况下,您可能都必须提供自定义代理。

也许我是天真的,但强迫通过https通信是可以接受的吗? 我开发了运行在2.0上的Web服务,并且成功地让IIS在虚拟目录上强制执行https。

或者,或者另外,您可以检查HttpRequest.IsSecureConnection属性 。

我们实际上在我们的Web服务中使用WSE 3.0,它最初是在WCF之前开发的。 为了安全起见,我们使用基于System.Security中的Cryptography类构建的基于SAML令牌的系统。

它工作得很好。 但是,这种方法绝不“简单”。

您可以使用System.Security.Cryptography扩展在C#中使用参数加密。

加密您的参数并解密它们会更难,但更安全。

如何:使用对称(Rijndael)密钥(C#/ VB.NET)加密和解密数据

我正在使用这个方法获得OTP(一次性密码)Web服务,它对我来说很好用。