假设一个(基于java)服务器使用java 1.8和一个(基于java)客户端也使用java 8。 并且鉴于java 8默认支持TLS 1.2。 是否可以保证使用512位加密?如果不是影响对称密钥大小的是什么?
关于RSA密钥的另一个问题(1024或2048)。在TLS握手期间是否确定了RSA密钥部分或RSA密钥?
非常感谢 盖
答案 0 :(得分:3)
(对称)数据加密的密钥大小作为密码套件的一部分进行协商,例如TLS_RSA_WITH_AES_256_CBC_SHA使用具有256位密钥的AES,而TLS_RSA_WITH_AES_128_CBC_SHA使用具有128位密钥的AES。来自Oracle (以及之前的Sun)开箱即用的Java包仅限于128位强度对称加密;要使用AES-256密码套件,你需要安装“无限的力量”#39;策略,请参阅SSLHandshakeException while connecting to a https site,但 OpenJDK 没有此限制。请注意,强度与大小不同; SSL / TLS(键控选项1)中使用的3DES具有键大小 168但强度仅为112,并且在“限制”条件下允许使用。政策。
没有' 512位加密'任何SSL / TLS中使用的算法。请注意,在我们目前的太阳能系统中,无法通过常规方法破解像AES-256这样的256位强度;你需要控制至少数十亿的银河系数十年,而对于这样的对手你的猫视频,银行账户,甚至商业策略都是完全无趣的。量子可能会改变这一点,但没有人知道这是否会起作用,何时或如何。
是的,RSA密钥在证书中,如果您使用RSA,这是最常见的选择,但不是唯一的选择。 (除了在你曾经不想使用的一些故意破坏的出口密码套件中有短暂的RSA密钥,并且在TLSv1.1 2006和TLSv1.2 2008中已被正式禁止,自Java7大约在2011年以来,Java已完全禁用。)自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
答案 1 :(得分:0)
SSL实验室有一个github页面,自2013年以来,他们一直在就这样的事情提出建议:https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
您问题的具体答案在这里: https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices#11-use-2048-bit-private-keys
我在下面粘贴了它,但是知道我的答案可能会过时,而他们的文档仍在不断更新:
1.1使用2048位专用密钥。 对于大多数网站,由2,048位RSA密钥提供的安全性已足够。 RSA公钥算法得到广泛支持,这使得这种类型的密钥成为安全的默认选择。在2,048位时,此类密钥可提供约112位的安全性。如果您想获得更多的安全性,请注意RSA密钥的伸缩性不是很好。要获得128位安全性,您需要3,072位RSA密钥,速度明显慢一些。 ECDSA密钥提供了更好的安全性和更好的性能的替代方法。 ECDSA密钥为256位,提供128位安全性。少数老客户不支持ECDSA,而现代客户则支持。如果您不介意管理此类设置的开销,则可以同时利用两者,并同时使用RSA和ECDSA密钥进行部署。