2012-05-14 24 views
2

情景对称密钥传送Vs的非对称加密和签名在移动设备

甲SOAP的Web服务提供了用于检索的文件和数据的接口。安全至关重要。

使用WS-Security,客户端和服务器都对整个SOAP信封进行加密和签名。

问题

应该用于签名的私钥被编译到应用程序和存储在设备上还是应该通过使用密钥交换协议服务器提供(用户的认证之后也许)?

解密私钥应该存储在设备上还是由服务器提供?

对于要由服务器解密的每个文件(如果从客户端上传)或由客户端解密(如果从服务器下载),具有唯一密钥是否现实?

回答

1

只是一对夫妇的建议:

- 你应该考虑嵌入到任何您的服务器之外的公共由于逆向工程的对称密钥(如果密钥是在野外,即不打扰甚至加密)。

- 您应该使用由客户端上的安全RNG生成的每会话对称密钥,并将其传输到使用全局非对称公钥加密的服务器。私钥具有保质期。

- 对于在该会话中传输的所有文件/流,您可以使用会话密钥,但您应该使用唯一的随机数来限制每个文件的对称密钥加密。根据加密模式的不同,使用具有多个数据流的相同密钥/随机数可能会使您易于异或两个数据流,并恢复混合但未加密的结果。

0

私钥的整个概念如果必须从一个设备传输到另一个设备,则会被击败。通信通道的每一端都必须生成自己的私钥。请注意,这并不意味着将私钥编译到可执行文件中,因为随后可执行文件的每个人都共享一个私钥,这显然不是您想要的。每个设备都必须使用cryptographically secure source of random numbers来生成它自己的公钥/私钥对。然后公共密钥可以交换清楚,您可以使用它们交换会话密钥(这可以是每个文件都是唯一的),私钥可以签名,每个人都很高兴。

但请记住:永远不要硬编码私钥,永远不会与任何人分享它们。

+0

是否存在为iOS提供密码安全随机数或提供密钥对生成的标准库?快速谷歌(https://www.google.co.uk/search?ix=aca&sourceid=chrome&ie=UTF-8&q=ios+private+key+pair+generation)并没有显示出太多。 – Jack

+1

我从未做过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)看起来像你所需要的。 –