人们为什么使用bouncycastle而不是Java的内置JCE提供程序?有什么不同?


79

人们为什么使用Bouncycastle而不是Java Cryptography Extension?有什么不同?


7
JCE是任何加密算法都可以实现的标准API,从而无需对提供者进行编码依赖性即可访问它。换句话说,使用JCE API,您可以在不更改代码的情况下切换密码和密码提供者(在许多情况下)。BC是提供者,这意味着它们实现可以通过JCE API访问的密码。如果有其他提供者实现了比BC更好的算法或更新,更强大的算法,则可以切换而无需更改代码(可能)。
nicerobot

Answers:



26

有弹性的城堡起源于澳大利亚,因此不受美国出口密码术的约束。

如果您在美国以外的地方并且需要管理比该限制所允许的更大的密钥大小,这将非常有用。在这种情况下,您不得使用美国的软件。


5
我想知道,在2016年以前,实际上还有多少限制?据我了解,只要您在美国商务部工业和安全局(BIS)进行注册,密钥大小就不再受限制,我想Oracle已经在这样做。但是规定是含糊的(双关语意)。
peterh '16

1
gh,如果我不在美国,则不需要任何许可。该项目可能需要被允许运送一些东西。
Petar Donchev

如今,西方国家的大多数限制都是基于其出口地而不是关键尺寸。密钥大小限制是90年代末放松的事情之一。至于当前的澳大利亚法规,虽然不像这个答案所暗示的那么松懈,但是还不如几年前的恐慌关注的那样糟糕(除非您发明了一种新算法和另外一两个东西。)它是由瓦圣纳协定和ITAR的规定(通过AU国防部)覆盖。

上述评论的增编,可能表明澳大利亚可以做什么;我完成了DoD ITAR检查,而没有遇到任何问题(无论如何,所有这些都只是“打电话给我们澄清”类型的响应),因此我的FOSS加密工作没有任何障碍,尽管Java都不是。这是因为非盟的关注更多地在于新的和创新的密码学发展,而不是反正众所周知的事物(同样,非盟国防部对“公共领域”的定义也不是通常的版权,它们用它来表示未分类或限制)。

8

在服务器或台式机上,除非您必须处理Sun JCE不支持的某些旧密码或格式,否则我看不出使用BC的任何理由。

但是,许多JRE都不带有JCE提供程序,例如在移动或嵌入式环境中。在这种情况下,卑诗省很方便。


2
在服务器上,绝对有一个原因,如果您的服务器使用的是TLS并且您关心安全性(如果不使用,那么为什么还要使用TLS?)。JCE随附的密码套件仅包含CBC模式下的AES,它具有两个已知问题:googleonlinesecurity.blogspot.dk/2013/11/…
索伦Boisen

1
仅供参考,这至少不是真正的Java8(来自Oracle)。
Usman Ismail 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.