使用公钥加密技术将Silverlight保护到没有IIS的Web服务通信

时间:2009-09-01 20:32:12

标签: silverlight web-services security

如果我有一个Silverlight客户端连接到Windows服务中托管的Web服务,如果您不使用IIS,则没有明显的方法来保护两者之间的通信。 SSL不可用,Silverlight不支持wsHttpBinding。

所以这就是我打算做的事情,只是想看看我是否错过了任何明显的安全漏洞。这将全部位于Intranet上,如果我们启用了基于Internet的SSL,则将使用IIS上的SSL安全主机。

  1. 创建证书并将其放在用户存储中,以用于Web服务的服务帐户。 Web服务在启动时检索证书密钥。
  2. 向Web服务添加明文方法,以便将证书中的公钥作为字符串返回。
  3. 从Silverlight客户端调用Web服务以获取公钥。
  4. 使用公钥加密从Silverlight客户端发送到Web服务的所有数据。返回到Silverlight客户端的数据不需要加密。
  5. 我错过了什么吗?我无法想出任何其他方法来做到这一点!

1 个答案:

答案 0 :(得分:0)

您无法使用RSA加密技术加密大量数据,因此速度太慢(我认为每个RSA模数长度为100毫秒)。所有方案都使用RSA来引导对称密钥并使用此密钥加密数据。使用任何已建立的密钥交换协议。如果您有Rescorla的书籍副本SSL and TLS: Designing and Building Secure Systems

,那么实施SSL 3.0或TLS 1.0会有多么轻松。