甲SOAP的Web服務提供了用於檢索的文件和數據的接口。安全至關重要。
使用WS-Security,客戶端和服務器都對整個SOAP信封進行加密和簽名。
問題
應該用於簽名的私鑰被編譯到應用程序和存儲在設備上還是應該通過使用密鑰交換協議服務器提供(用戶的認證之後也許)?
解密私鑰應該存儲在設備上還是由服務器提供?
對於要由服務器解密的每個文件(如果從客戶端上傳)或由客戶端解密(如果從服務器下載),具有唯一密鑰是否現實?
甲SOAP的Web服務提供了用於檢索的文件和數據的接口。安全至關重要。
使用WS-Security,客戶端和服務器都對整個SOAP信封進行加密和簽名。
問題
應該用於簽名的私鑰被編譯到應用程序和存儲在設備上還是應該通過使用密鑰交換協議服務器提供(用戶的認證之後也許)?
解密私鑰應該存儲在設備上還是由服務器提供?
對於要由服務器解密的每個文件(如果從客戶端上傳)或由客戶端解密(如果從服務器下載),具有唯一密鑰是否現實?
只是一對夫婦的建議:
- 你應該考慮嵌入到任何您的服務器之外的公共由於逆向工程的對稱密鑰(如果密鑰是在野外,即不打擾甚至加密)。
- 您應該使用由客戶端上的安全RNG生成的每會話對稱密鑰,並將其傳輸到使用全局非對稱公鑰加密的服務器。私鑰具有保質期。
- 對於在該會話中傳輸的所有文件/流,您可以使用會話密鑰,但您應該使用唯一的隨機數來限制每個文件的對稱密鑰加密。根據加密模式的不同,使用具有多個數據流的相同密鑰/隨機數可能會使您易於異或兩個數據流,並恢復混合但未加密的結果。
私鑰的整個概念如果必須從一個設備傳輸到另一個設備,則會被擊敗。通信通道的每一端都必須生成自己的私鑰。請注意,這並不意味着將私鑰編譯到可執行文件中,因爲隨後可執行文件的每個人都共享一個私鑰,這顯然不是您想要的。每個設備都必須使用cryptographically secure source of random numbers來生成它自己的公鑰/私鑰對。然後公共密鑰可以交換清楚,您可以使用它們交換會話密鑰(這可以是每個文件都是唯一的),私鑰可以簽名,每個人都很高興。
但請記住:永遠不要硬編碼私鑰,永遠不會與任何人分享它們。
是否存在爲iOS提供密碼安全隨機數或提供密鑰對生成的標準庫?快速谷歌(https://www.google.co.uk/search?ix=aca&sourceid=chrome&ie=UTF-8&q=ios+private+key+pair+generation)並沒有顯示出太多。 – Jack
我從未做過iOS開發,但[this](http://developer.apple.com/library/ios/#documentation/Security/Conceptual/Security_Overview/CryptographicServices/CryptographicServices.html#//apple_ref/doc/uid/TP30000976-CH3-SW1),特別是[this](http://developer.apple.com/library/ios/#documentation/Security/Reference/RandomizationReference/Reference/reference.html#//apple_ref/doc/uid/TP40007281)看起來像你所需要的。 –