2015-01-16 104 views
2

我工作的一個遊戲啓動器,具有用於身份驗證的C#前端和後端PHP密碼,我需要從發射器通過未加密的連接將密碼發送到後端。有沒有辦法安全地做到這一點? (密碼以商店數據庫中的blowfish哈希爲開始,價格爲2美元...)發送通過未加密的連接

回答

4

Establishing an SSL連接是傳輸密碼等敏感信息最常用的方法之一。爲此,至少您必須爲您的服務器/後端提供密鑰對(證書)。如果您的應用程序本身適用於它而不是瀏覽器,則不必由veriSign簽名。

請注意:您真正要做的是'保密'。這意味着除您和您的預定方可以閱讀郵件內容外,沒有人可以閱讀。在大多數情況下,這與「正確使用加密機制」有關。您還希望能夠抵禦諸如Man in the Middle Attack之類的攻擊。

很多時候開發者只是編程一些能夠工作並考慮安全性的東西;但如果您能夠提前想到這一點,那麼這是一個不容置疑的好處。

編輯:如果你只需要安全地發送一個密碼,這一切,然後@ rich.okelly的回答將是答案。由於您可以在應用程序上對服務器的可信公鑰進行硬編碼,並且只需由客戶端對該密碼進行加密。但是,如果您希望爲更多/所有會話建立安全連接,則可能需要考慮採用SSL解決方案。

1

在我看來,最好的事情(假設連接必須是不安全的),會在發送前對密碼進行加密和解密的後端 - 有效地滾動自己的消息級別的加密。

你會需要一個非對稱加密機制,這是可行的 - 公鑰/私鑰可能是去最簡單的方法。

2

在所有情況下,您的要求是這樣的:

與傳輸數據的不安全的,未加密的方式開始,我怎麼結束了傳輸數據的安全加密手段至少足夠長的時間來發送密碼?

  • 互聯網總是作爲一個不安全和未加密的開始!

有很多種方法,rolling your own是其中最差的。選項包括但不限於:

  • 使用C#庫像Bouncy Castle
    • 創建使用AEAD密碼組的TLS 1.2會話
    • 要使用非對稱密碼如RSA,ECDSA,或DSA(用鑰匙> = 2048位)加密密碼
  • 使用VPN軟件,如OpenVPN
  • 呼叫OpenSSL
    • 創建TLS 1。使用AEAD加密套件
    • 要使用非對稱密碼像RSA,ECDSA,或DSA(用鑰匙> = 2048比特)來加密密碼
  • 呼叫GPG到的口令與你的公開密鑰來加密2會話

在任何情況下,您都必須以某種方式直接更改後端和前端,或者在它們之間添加其他圖層(VPN)。

相關問題