JSSE包创建两个需要两次unwraps的tls包。 为什么?
我正在使用连接的openssl客户端检查jsse tls加密和解密的java应用程序的行为。
首先,我观察到当我为客户端数据调用unwrap时,它总是解包消耗37个字节并产生0.下一个unwrap消耗一些字节并产生一些。
起初我以为客户端会首先包装一个空数组。 但后来我发现jsse代码做的相同,只不过它产生1个字节而不是0。
因此,对wrap
每次调用都会消耗X个字节并产生Y个字节,但需要两个unwrap
而第一个消耗37个字节并产生1个字节,第二个消耗Y-37字节并产生X-1个字节。
虽然openssl和jsse几乎一样,但我希望这是正确的。 但是我想知道,为什么会这样。 我没有看到这个原因,需要额外的资源……?
您所看到的是两种略微不同的缓解BEAST攻击的方法。 这样做的一种方法是使用OpenSSL完成的空片段 。 JSSE通过发送1个字节的数据来完成类似的操作,其余的则分别进行 。
以下是一些可能感兴趣的链接:
- 这回答了类似的问题。
- 使用TLS 1.1 / 1.2和更多版本击败BEAST 。
- BEAST摘要 – TLS,CBC,对策(更新4) 。
- Tor和BEAST SSL攻击 。
- 检查Java字节码是否包含调试符号
- SmartGWT中的ListGrid.setEditorCustomizer
- jdbc中的外键问题
- 为什么子类中的静态块不会被执行?
- Tomcat和Eclipse Zero Turnaround部署
- Force Maven仅使用第一级依赖项
- java.lang.IllegalStateException:org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient中没有可用于学生服务的实例
- java LoginContext.login()如何工作?
- JCEKS keyStore在JavaTM Cryptography Extension中使用的加密..?