2016-10-26 37 views
1

我目前正在研究客戶端 - 服務器應用程序。我有一些數據,我想加密客戶端和解密服務器端。在客戶端 - 服務器環境中使用AES加密

我有加密/解密部分計算出來並正在工作。我的問題是關鍵和鹽。它們都是在運行時通過網絡發送到服務器之前隨機生成的。

我的問題是:

  • 我如何獲得服務器對數據進行解密如果密鑰和鹽是隨機的?

我現在的解決方案是發送密鑰和salt與加密數據。

  • 但是,這不會使我的努力無效,以確保我的數據?
  • 我應該「隱藏」數據中的密鑰和鹽嗎? (追加在結束/開始)對後

Client server AES encryption

人建議與服務器聯繫,讓他知道我們要發送安全郵件。他然後生成一個密鑰並將其發回給您。對於遊戲網絡而言,這是不是「太多」了,你希望一切都儘可能地打包?

通常做什麼?

謝謝。

+1

是;你的解決方案是無用的。您需要定義一個安全模型,以便了解哪些機密在何處以及如何進行身份驗證。您需要閱讀https://blogs.msdn.microsoft.com/ericlippert/2011/09/27/keep-it-secret-keep-it-safe/ – SLaks

+1

您可能需要非對稱加密(然後您將有不同的設置有關如何傳輸和驗證公鑰的問題)。 – SLaks

回答

2

看起來你不小心絆倒了,並推出自己的加密。呃哦。不用擔心,只需自己選擇,刪除所有加密代碼,然後只使用SSLStream

爲什麼?

  1. TLS是多年的工作,研究和分析的人誰是在密碼好了很多比你和我放在一起,次十億結果。

  2. 與編寫自己的自定義解決方案相比,它的速度會更快,而且不會那麼痛苦。如果您沒有使用AES的認證模式,則需要實施Diffie-Hellman,RSA/DSA簽名,AES和HMAC或兩者的組合,並且最好不要使用AES,您需要注意填充字符,前向保密和一大堆其他東西。

除了笑話,你不應該推出自己的加密。依靠久經考驗的技術。

+0

我沒有做我自己的加密。我使用AES和HMACShA256。我只是不確定如何將我的密鑰安全地發送到客戶端。 我真的很想知道這些東西是如何工作的。您在RSA/DSA和Diffie-Hellman中指出了一對夫婦的解決方案。 – user1505230

+0

@ user1505230不,解決方案是通過'SSLStream'使用TLS。 RSA/DH是你在使用自己的時候使用的。 –

相關問題