java - TLS 1.2 - key 对大小和加密 key 长度

标签 java ssl tls1.2

假设一个(基于 java 的)服务器使用 java 1.8 和一个(基于 java 的)客户端也使用 java 8。 鉴于 java 8 默认支持 TLS 1.2。 是否保证将使用 512 位加密?如果不是什么会影响对称 key 的大小?

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

非常感谢 盖伊

最佳答案

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

在任何 SSL/TLS 中根本没有使用“512 位加密”算法。请注意,在我们当前的太阳系中无法通过常规方式突破 AES-256 等 256 位强度;你至少需要在数十亿年内控制银河系的大部分地区,而对于这样的对手来说,你的猫视频、银行账户,甚至商业策略都是完全无趣的。 Quantum 可能会改变这一点,但没有人知道这是否会奏效、何时奏效或效果如何。

是的,RSA key 在证书中,如果您使用 RSA,这是最常见的选择,但不是唯一的选择。 (除了在一些故意破坏的“导出”密码套件中存在临时 RSA key 外,您永远不想使用这些密码套件,并且在 TLSv1.1 2006 和 TLSv1.2 2008 中已被正式禁止,并且 Java 默认情况下已完全禁用自 Java7 大约 2011 年起。)自 2013 年以来,Symantec GoDaddy 等公共(public) CA 没有为小于 2048 位的 RSA key 颁发证书;如果您使用自签名证书或运行您自己的个人 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

关于java - TLS 1.2 - key 对大小和加密 key 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683168/

相关文章:

java - Lucene 4 分页

ssl - 在 TFS Webhook 中使用 TLS 1.2

objective-c - iOS - (kCFStreamErrorDomainSSL, -9813)

java - 如何验证外部进程是否异常终止?

java - 在方法中重新打开扫描仪时出现 NoSuchElementException

java - 如何使用 SimpleDateFormat 解析多种格式的日期

php - 大文件的 cURL SSL 错误

security - 关于SRP算法的问题

sockets - 在发送电子邮件之前确定 TLS 支持

api - 我的 NGINX 反向代理不会将流量重新路由到外部虚拟机