为什么JCE无限强度默认情况下不包括?

37

设置

问题

  • 为什么这些不被提供并被视为黑羊?

1
我相信这与美国对密码学出口限制有关:https://en.wikipedia.org/wiki/Export_of_cryptography_from_the_United_States - Henrik Aasted Sørensen
这个问题在以下链接中有很好的解释:- https://crypto.stackexchange.com/questions/20524/why-are-there-limitations-on-using-encryption-with-keys-beyond-certain-length - Vinicius Biondi
3个回答

36
  • 事实证明,这不是严格的加密出口法规,而只是因为还没有人处理
  • 实际上,长期计划是不必再跳过这些障碍。
  • 在Java 9中,仪式将被压缩成一个一行代码Security.setProperty("crypto.policy", "unlimited");

14
自Java 8u151以来也适用,可以通过将jre/lib/security/java.security中的“crypto.policy = unlimited”取消注释来启用,而无需更改任何Java代码。这是一个使用sed执行此操作的一行命令:sed -i 's/^#crypto.policy=unlimited/crypto.policy=unlimited/' $JAVA_HOME/jre/lib/security/java.security - joelhardi
在ChaCha20-Poly1305出现之前,这可能不值得费力去做。 - Yuhong Bao
@dminuoso,你救了我的命!有一篇文章使用了Security.setProperty("crypto.policy", "limited")而不是"unlimited"……太好了,我在这里看到了你的答案!非常感谢你! - Artanis Zeratul

20

JDK现在默认启用了不限制的加密功能

JDK使用Java Cryptography Extension (JCE)权限策略文件来配置加密算法限制。之前,JDK中的策略文件对各种算法进行了限制。本次更新同时配备有有限和无限制权限策略文件,其中无限制是默认设置。该行为可以通过/lib/java.security文件中的新“crypto.policy”安全属性来控制。有关此属性的更多信息,请参阅该文件。

参见:http://www.oracle.com/technetwork/java/javase/8u161-relnotes-4021379.html#JDK-8170157


这也适用于JRE 8u161吗? - youfu

4
美国对加密技术的出口有限制:

https://en.wikipedia.org/wiki/Export_of_cryptography_from_the_United_States

他们曾经非常严格--密码学被归类为军火,只能从美国和其他白名单国家下载完整强度的产品。
自那时以来,限制已经放松了很多,但仍有一些限制,完整强度的JCE不能像JRE那样在任何地方自由分发,因此它是一个单独的包。

3
事实证明,也许曾经是这样,但现在不再是真的了。 - dminuoso
3
关于当前情况,这并不完全正确,但仍是有用的历史信息。 - user247702

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接