¿Por qué la gente usa bouncycastle en lugar del proveedor JCE integrado de Java? ¿Cuál es la diferencia?

79

¿Por qué la gente usa bouncycastle en lugar de Java Cryptography Extension? ¿Cuál es la diferencia?

clyfe
fuente
7
JCE es una API estándar que cualquier algoritmo de cifrado puede implementar para permitir que sea accesible sin tener que codificar dependencias del proveedor. En otras palabras, utilizando las API de JCE, puede cambiar de cifrado y proveedores de cifrado sin cambiar su código (en muchos casos). BC es un proveedor, lo que significa que implementan cifrados a los que se puede acceder a través de las API de JCE. Si aparece otro proveedor que implementa el algoritmo que desea mejor que BC o un algoritmo más nuevo y más fuerte, puede cambiar sin cambiar su código (probablemente).
nicerobot

Respuestas:

81

BouncyCastle tiene muchos más conjuntos de cifrado y algoritmos que el JCE predeterminado proporcionado por Sun.

Además de eso, BouncyCastle tiene muchas utilidades para leer formatos arcanos como PEM y ASN.1 que ninguna persona en su sano juicio querría reescribir.

Kevin
fuente
9
Sun nunca tuvo la intención de ser un proveedor exhaustivo de cifrados. Es por eso que JCE usa el marco del proveedor que BC admite bouncycastle.org/specifications.html#install . Cualquier usuario de BC debería utilizarlo a través de las API de JCE cuando sea posible.
nicerobot
26

Bouncy Castle es de origen australiano y, por lo tanto, no está sujeto a la exportación de criptografía de los Estados Unidos .

Es útil si se encuentra fuera de los Estados Unidos y necesita administrar tamaños de clave superiores a los permitidos por dicha restricción. En ese caso, no se le permite usar software de Estados Unidos para eso.

Laurence R. Ugalde
fuente
5
Me pregunto cuántas restricciones quedan realmente, anno 2016. Por lo que tengo entendido, ya no existe una restricción en el tamaño de la clave siempre que se registre en la Oficina de Industria y Seguridad (BIS) del Departamento de Comercio de EE. UU., Algo que supongo que Oracle ya está haciendo. Pero las regulaciones son crípticas (juego de palabras).
Peterh
1
Uf, si estoy fuera de EE. UU. No necesito que me permitan nada. Es posible que sea necesario permitir que el proyecto envíe algo.
Petar Donchev
La mayoría de las restricciones en el mundo occidental se basan en el lugar al que se exporta en lugar del tamaño de la clave en estos días. La limitación del tamaño de la clave fue una de las cosas que se relajaron a finales de los 90. En cuanto a las regulaciones australianas actuales, no es tan laxo como implica esta respuesta, pero no es tan malo como se refería a los temerosos de hace unos años (a menos que inventes un nuevo algoritmo y una o dos cosas más. En general está cubierto por el Acuerdo de Wassenar y las regulaciones ITAR (a través de AU DoD).
Ben
Un apéndice al comentario anterior y que podría indicar qué se puede hacer desde Australia; Completé las verificaciones del DoD ITAR sin tropezar con un solo punto (todas las cuales eran simplemente respuestas de tipo "llámenos para una aclaración" de todos modos) y así no hay barreras para mi trabajo de cifrado FOSS, aunque ninguna de ellas está en Java. Esto se debe a que las preocupaciones de AU son más con desarrollos de criptografía nuevos e innovadores, no cosas que son bien conocidas en todas partes de todos modos (también la definición de AU DoD de "dominio público" no es la habitual de derechos de autor, la usan para significar que no está clasificado o restringido).
Ben
8

En el servidor o en el escritorio, no veo ninguna razón para usar BC a menos que tenga que lidiar con algunos formatos o cifrados heredados que no son compatibles con Sun JCE.

Sin embargo, muchos JRE no vienen con un proveedor de JCE, como en entornos móviles o integrados. BC es útil en tales casos.

Codificador ZZ
fuente
2
En el servidor definitivamente hay una razón, si su servidor está usando TLS y usted se preocupa por la seguridad (si no es así, ¿por qué está usando TLS?). Las suites de cifrado incluidas con JCE solo incluyen AES en modo CBC, que tiene un par de problemas conocidos: googleonlinesecurity.blogspot.dk/2013/11/… .
Søren Boisen
1
FYI Esto no es cierto Java8 (de Oracle) al menos.
Usman Ismail