我會不是建議您使用SRP登錄,然後使用共享的SRP會話密鑰自己執行數據傳輸加密。使用開箱即用的庫和詳細記錄的配置(例如自簽名證書)可以更安全,更容易地使用常規TSL。然後,在加密連接的頂部用SRP作爲密碼證明登錄用戶,完成。
如果您確實想要按照您的建議進行操作,那麼您選擇的對稱加密算法將基於性能開銷和算法的已知優勢/弱點。 AES非常強大但非常昂貴。如果你在磁盤上加密文件,你想保持安全,你想使用一個非常強大的密碼。遊戲流量很少需要受到保護以防止延長的離線攻擊;通常遊戲的結果是公開的,遊戲結束後數小時內解密的遊戲沒有價值。在這種情況下,您可以使用非常便宜的stream cypher來保護流量。
作爲例子,你可以考慮ISAAC這是如此快速和便宜,它也被用作隨機數發生器。這意味着您可以在幾乎所有語言include browser javascript中查找實現。您將使用SRP共享密鑰在客戶端和服務器上對Isaac生成器的初始狀態進行播種。然後,對於要發送的每個32位數據,您將採用下一個Isaac 32位僞隨機數,並對數據進行XOR併發送該數據。在另一端,您與下一個Isaac 32位僞隨機進行異或運算以恢復原始數據。任何偵聽數據包的人都沒有來自SRP共享密鑰的Isaac種子,因此他們無法解碼加擾的數據。 Isaac需要256 x 32位字作爲其初始狀態,SRP密鑰只需8 x 32位字(如果您使用SHA256作爲SRP散列算法)。這意味着你需要拉伸你的SRP鍵,否則重複32次以製造艾薩克種子。可以應用密鑰擴展算法(如PBKDF2)擴展SRP密鑰以填充初始艾薩克表。這應該是「足夠好」,以保護遊戲免受「實時」窺探。 (編輯:遞歸散列鍵32倍以產生以撒種子另一個想法。)
再次我不會建議上述方法;我建議使用標準的TLS/HTTPS來加密連接,然後使用SRP作爲密碼驗證來驗證用戶身份,並通過初始加密連接發送所有流量。
(編輯有上介紹的分配密碼學課程打破Vigenère cipher像上面使用的每個字母出現在加密的文本有足夠大的車身的概率的。所以,你應該壓縮數據你但是實際上這告訴我們「從不寫你自己的加密」,因爲你可能錯過了可能的攻擊,只能使用專業同行評審的代碼,如TSL。)
你的報價不適合你的鏈接提供。文本無處可查。請解決這個問題。也沒有特定的編程相關問題,這似乎更適合[Crypto.SE](http://crypto.stackexchange.com/)。 – 2014-11-06 08:36:20
修正了斯坦福報價,其他人都沒問題。 – douggard 2014-11-06 14:04:08