短暂的RSA密钥与短暂的DH密钥?

时间:2014-05-26 21:21:50

标签: java security ssl encryption applet

我尝试设计加密文件(音频)并将其存储在光盘中的系统,以便只有我的客户端(applet)解密并播放它们。所以我决定使用AES密码进行批量加密并将密钥存储在数据库中。我的问题是安全地传输密钥。

在现代系统中,使用SSL传输未以密码方式存储的密钥和数据。在SSL/TLS设计中,会话密钥以两种方式生成;

第一种方式客户端创建密钥并加密服务器的公钥(证书)。 第二个选项更安全,在检测到heartbleed安全漏洞后变得更加重要。在此选项中,密钥由客户端和服务器创建,每个会话都有(EC)DHE密钥协议。

就我的情况而言,还有两种选择。

第一个案例;

  1. 客户端(applet)可以创建短暂的RSA密钥对,并将公钥发送给服务器。
  2. 服务器使用客户端的公钥加密密钥并发送给客户端。
  3. 客户端(applet)使用私钥解密密钥。
  4. 客户端(小程序)可以流式解密音频文件并播放。
  5. 第二种情况;

    1. 客户端(小程序)和服务器使用(EC)DHE同意会话密钥。
    2. 服务器使用会话密钥对称加密密钥并发送给客户端。
    3. 客户端(applet)使用会话密钥解密密钥。
    4. 客户端(applet)可以流畅地解密音频文件并播放。
    5. 哪种选择适合我的情况?每种情况的利弊是什么?

      感谢您的回答。

1 个答案:

答案 0 :(得分:0)

由于密钥交换未经过身份验证,因此这两种解决方案都容易受到攻击者的攻击,处于中间位置。通过使用X.509 PKI在SSL / TLS中解决了此问题。例如,也可以通过让客户事先了解服务器的公钥来解决这个问题。 话虽如此,在你的两个选项之间,使用(EC)DHE,因为从预先计算的DH组(也称为DH参数)生成新的DH密钥很快,而生成新的RSA密钥非常慢。