2013-02-25 41 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問題。你想給你的客戶訪問他們機器上的東西,但不能告訴他們它是如何工作的。如果您確實設法解決了這個問題,那麼請發佈後續內容,因爲索尼,任天堂和微軟(僅舉幾例)會對您的發現非常感興趣。