2013-02-25 69 views
2

即时通讯使用silverlight 5和WCF ..并且该网站使用HTTPS进行保护。但是如果我使用Fiddler,我可以在头看到: GET /ClientBin/XXXX-Web-MyService.svc/binary/GetUsers如何保护对Web服务的呼叫不可见

如果我把我的直接域后:https://www.mydom.com/ClientBin/XXXX-Web-MyService.svc/binary/GetUsers

它会从tabel用户下载所有数据。我如何隐藏和保护这些信息不被看到!没有使用SSL足够?为什么这是可见的反正如果即时通讯使用https!?

谢谢。

编辑:我最初的问题是类型的“大老粗”一个和我道歉,

我发现关于这个问题的更多信息,做更多的研究。在这个问题SO上有解释为什么fiddler能够解密并查看通过https发送的请求和响应。
What is point of SSL if fiddler 2 can decrypt all calls over HTTPS?

并且使事情变得更加困难,解决这一问题的共同解决方案是使用 "Certificate Pinning" 这就需要使用System.Net.ServicePointManager的未包含在Silverlight实现System.Net命名空间。

所以这里我坚持SSL证书。我支付的费用可以由具有网络调试基础知识的任何人“破解”。

+3

https/SSL仅用于保护正在传输的信息。显然,用户必须能够读取另一端的数据。但它会阻止数据在途中被拦截或篡改。您对数据传输的要求究竟是什么?这听起来有点像你有一个不可信的平台问题。 – Aron 2013-02-25 08:58:51

+0

感谢您的评论@Aron,我更新了我的问题,并提供了更多关于该主题的信息。 – Osama 2013-03-09 17:05:02

+0

再次。你想要保护什么? – Aron 2013-03-10 04:24:49

回答

4

从纯理论计算机科学的角度来看,你所要求的几乎是不可能实际上不可能的。您需要实施一个可信平台,以防止此类攻击。

现在的科学位,集中

好了,让我们开始与一些基本理论。 SSL和扩展HTTPS解决了一个非常具体的问题。如何通过不安全的NETWORK机密信息与以前从未与之通信过的一方进行信息交流。在这种情况下,重点放在网络上。它通过解决两个问题,服务器的

  1. 验证这样做(服务器,它说谁是)
  2. 密钥交换

的非对称加密有一些重叠,以保证这是一个步骤。我会专注于第一,因为这是小提琴手“攻击”你的系统的地方。

SSL身份验证适用于信任网络的概念。您的计算机有一个TRUSTED验证者列表。这些公司如Verisign,Thawte,Geotrust等。这些公司通过签名来验证证书(复杂的非对称加密术语,但它非常像手写签名,很难伪造,易于验证)。

提琴手通过将新的可信CA(验证程序)插入到您的计算机中工作。从此,当您访问HTTPS站点时,它将代表您发送请求,然后将其读取,然后将其转发给您的OWN SIGNATURE。既然你的电脑完全信任这个签名,它认为没有错。

现在,您要实施证书锁定。这恕我直言是“血腥可怕”。它的工作原理是告诉你的软件期待一个特定的SSL证书。造成这种情况的两个原因。

  1. 如果我能工作的提琴手,我可以工作dotPeek和重新编译WITHOUT证书钉。
  2. 当您的证书被吊销时,您的客户端将无法连接。

为什么你的证书被撤销?如果您的CA丢失了他们的私钥,那么他们将不得不确保将其撤销,并将替换件发送给您。此外,每个证书都有销售日期,并且在开始闻之前必须更换。

那么最后你能做什么?

SSL不是为保护您的计算机而进行保护而设计的。最简单的做法是简单地将WCF调用包装在额外的对称(甚至不对称)加密层中。但是再次。密钥必须存在于某个地方,所以你的客户可以从简单的二进制反汇编中获得密钥,并能够构建他们自己的代理。

总之

这是几乎完全一样的DRM问题。你想给你的客户访问他们机器上的东西,但不能告诉他们它是如何工作的。如果您确实设法解决了这个问题,那么请发布后续内容,因为索尼,任天堂和微软(仅举几例)会对您的发现非常感兴趣。