2013-09-23 30 views
1

我正在努力保護我爲學校寫的應用程序和服務器後端之間的通信。我最初的計劃是在Android客戶端和我的PHP服務器之間建立一個Diffie-Hellman交換。但是,我知道SSL使用了一個相當類似的(如果我理解正確,它可能是相同的)公共密鑰交換協議,並且似乎具有更多本機支持和更好的文檔。自簽名SSL與Diffie-Hellman交換移動應用程序?

會切換到自簽名的SSL,在我的應用程序硬編碼的證書,更好/更差比建立一個Diffie-Hellman交換?會提供更好的網絡/電池/ CPU性能?

我知道,這兩種方法並不真正保護免受中間人攻擊,但是,在這一點上,我的首要任務只是保護防止偷聽。

+0

SSL可以使用不同的密鑰交換協議,不僅DH。密鑰交換也僅僅是圖片的一部分,即使您設法正確,協議實際上需要安全(密鑰派生,完整性檢查,重播保護等)也需要其他許多東西。因此,請參閱下面的內容,瞭解如何使用SSL。 –

回答

3

使用SSL。它已經完成了,如果正確使用它,它不易受MITM影響。

+1

+1,並表示同意。如果你可以避免它,不要推出你自己的加密系統,你應該總是儘量避免它。 – Dev

1

正如前面的作家說,DH是容易受到中間人攻擊所以從它留下來的方式。

用戶自簽名的SSL。這將爲您提供數據完整性和機密性。 SSL不易受MITM影響,其性能也非常快。在SSL性能自動 谷歌的研究... https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

導入服務器證書到您的客戶端,使客戶端可以與服務器做了SSL握手。

+1

我打算把-1,但因爲這是第一個答案,我不會。 [1]只有DH的基本實現易受MITM影響。 DH認證的實現不是。 [2]自簽名SSL證書是一種虛假的安全感,受MITM約束。任何人都可以攔截證書交換並將自簽名證書替換爲另一個自簽名證書。坐在中間並加密/解密流量,沒有辦法理解你是否與真實的服務器交談。餿主意。要正確使用它,證書必須由受信任方簽名。 – oleksii

+0

@oleksii但是,如果您在自己的應用中對自簽名證書進行了硬編碼,那麼自簽名證書將成爲信任根,並且沒有問題。 – ntoskrnl

+0

@ntoskrnl您可能可以做到這一點,但問題會隨着證書維護而變爲:過期,撤銷,可伸縮性。還有一個根本的缺陷:你不能相信別人沒有信任的東西。使用自簽名證書進行本地測試是完全正確的。但不在生產代碼中。 – oleksii

相關問題