2017-01-16 329 views
0

假设使用java 1.8的基于(基于java的)服务器和使用java 8的(基于java的)客户端。 并且考虑到java 8默认支持TLS 1.2。 是否保证会使用512位加密?如果不影响对称密钥大小?TLS 1.2 - 密钥对大小和加密密钥长度

关于RSA密钥(1024或2048)的另一个问题。 RSA证书的关键部分或RSA密钥是否在TLS握手期间确定?

非常感谢 盖伊

+1

启用的密码套件的列表确定所使用的算法和密钥强度。客户端和服务器将协商已启用的密码套件。服务器在共享候选人中选择。 --- RSA密钥是证书的一部分。 – Andreas

+0

Thanks @Andreas默认情况下,有几个密码可用,哪一个会被选中?我想知道两端支持TLS 1.2有没有保证512位密钥会被使用?用来选择密码的算法是什么? – Guy

回答

2

为关键尺寸(对称)加密数据协商作为密码组的一部分,例如TLS_RSA_WITH_AES_256_CBC_SHA使用AES与256位密钥而TLS_RSA_WITH_AES_128_CBC_SHA使用AES与128位密钥。来自Oracle(和之前的Sun)的Java软件包即装即用,仅限于128位强度的对称密码;要使用AES-256密码套件,您需要安装“无限强度”策略,请参阅SSLHandshakeException while connecting to a https site,但OpenJDK没有此限制。请注意,强度与尺寸不一样;在SSL/TLS(密钥选项1)中使用的3DES具有密钥大小 168但强度只有112并且在“有限”策略下允许。

在任何SSL/TLS中都没有使用'512位加密'算法。请注意,通过传统方式打破AES-256这样的256位强度是无法在我们当前的太阳系中完成的。你需要控制至少几十亿年的银河系,而对于这样的对手来说,你的猫视频,银行账户,甚至是商业策略都是完全没有意义的。量子公司可能会改变这一点,但没人知道这种情况是否会奏效,何时或如何。

是的,RSA密钥在证书中,如果您使用RSA这是最常见的选择,但不是唯一的。 (除了在一些故意破坏的“导出”密码套件中存在短暂的RSA密钥,您并不想使用这些密钥,并且这些密钥已在TLSv1.1 2006和TLSv1.2 2008中正式禁止,并且Java默认已完全禁用自2011年以来Java7)。自2013年以来,像Symantec GoDaddy等公共CA尚未颁发小于2048位的RSA密钥的证书;如果您使用自签名证书或运行自己的个人CA,则可以这样做,但浏览器可能会给出错误或警告。请注意,RSA-1024只有大约80位的强度(这就是为什么它不再被认为是安全的),RSA-2048大约是112;看到https://www.keylength.com
https://crypto.stackexchange.com/questions/1978/how-big-an-rsa-key-is-considered-secure-today
https://crypto.stackexchange.com/questions/6236/why-does-the-recommended-key-size-between-symmetric-and-assymetric-encryption-
https://crypto.stackexchange.com/questions/8687/security-strength-of-rsa-in-relation-with-the-modulus-size