对称密钥传输Vs不对称,用于在移动设备上进行加密和签名

时间:2012-05-14 17:37:33

标签: soap encryption-asymmetric encryption-symmetric

方案

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

使用WS-Security,客户端和服务器都加密并签署整个SOAP信封。

问题

用于签名的私钥是否应该编译到应用程序中并存储在设备上,还是应该由服务器使用密钥交换协议提供(可能是在用户认证之后)?

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

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

2 个答案:

答案 0 :(得分:1)

只有几个建议:

- 由于逆向工程,您应该将嵌入服务器外部任何内容的对称密钥视为公共对象(即如果密钥在野外,也不要打扰加密)。

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

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

答案 1 :(得分:0)

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

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