Почему люди используют bouncycastle вместо встроенного в Java провайдера JCE? В чем разница?

79

Почему люди используют bouncycastle вместо расширения Java Cryptography Extension? В чем разница?

clyfe
источник
7
JCE - это стандартный API, который может реализовать любой криптоалгоритм, чтобы он был доступен без зависимостей кодирования от поставщика. Другими словами, используя JCE API, вы можете переключать шифры и поставщиков шифров без изменения кода (во многих случаях). BC - это провайдер, что означает, что они реализуют шифры, к которым можно получить доступ через API JCE. Если появится другой провайдер, который реализует нужный вам алгоритм лучше, чем BC или более новый, более сильный алгоритм, вы можете переключиться, не меняя код (возможно).
nicerobot

Ответы:

81

BouncyCastle имеет гораздо больше наборов шифров и алгоритмов, чем JCE по умолчанию, предоставляемый Sun.

В дополнение к этому, BouncyCastle имеет множество утилит для чтения таинственных форматов, таких как PEM и ASN.1, которые ни один здравомыслящий человек не захочет переписывать.

Кевин
источник
9
Sun никогда не намеревалась быть исчерпывающим поставщиком шифров. Вот почему JCE использует платформу провайдера, которую BC поддерживает bouncycastle.org/specifications.html#install . Любым пользователям BC было бы разумно использовать его через API JCE, когда это возможно.
nicerobot
26

Bouncy Castle имеет австралийское происхождение и поэтому не подлежит экспорту криптографии из США .

Это полезно, если вы находитесь за пределами США и вам нужно управлять размером ключей больше, чем разрешено таким ограничением. В этом случае вам не разрешается использовать для этого программное обеспечение из США.

Лоуренс Р. Угальде
источник
5
Интересно, сколько ограничений осталось на самом деле к 2016 году? Насколько я понимаю, больше нет ограничений на размер ключа, пока вы регистрируетесь в Бюро промышленности и безопасности (BIS) Министерства торговли США, что, я думаю, уже делает Oracle. Но правила непонятны (каламбур).
peterh
1
Ух, если я за пределами США, мне ничего не нужно разрешать. Возможно, проекту потребуется разрешение на поставку чего-либо.
Петар Дончев
Большинство ограничений в западном мире основаны на том, куда он экспортируется, а не на размере ключа в наши дни. Ограничение размера клавиш было одной из вещей, которые ослабили в конце 90-х. Что касается нынешних австралийских правил, то они не такие слабые, как следует из этого ответа, но не так плохо, как опасения, существовавшие несколько лет назад, в отношении любого из них (если только вы не изобретете новый алгоритм и что-то еще. он подпадает под Вассенарские договоренности и правила ITAR (через Министерство обороны Австралии)
Бен,
Дополнение к вышеприведенному комментарию, в котором может быть указано, что можно сделать в Австралии; Я выполнил проверки DoD ITAR, не отключив ни одной точки (все они в любом случае были просто ответами типа «позвоните нам для уточнения»), и поэтому нет никаких препятствий для моей криптографической работы с FOSS, хотя ни один из них не находится в Java. Это связано с тем, что AU больше озабочен новыми и инновационными разработками в области криптографии, а не вещами, которые в любом случае хорошо известны повсюду (также определение DoD AU для "общественного достояния" не является обычным для авторского права, они используют его для обозначения того, что это не классифицируется или ограничено).
Бен
8

На сервере или настольном компьютере я не вижу причин использовать BC, если вам не нужно иметь дело с некоторыми устаревшими шифрами или форматами, не поддерживаемыми Sun JCE.

Однако многие JRE не поставляются с поставщиком JCE, как в мобильных или встроенных средах. BC пригодится в таких случаях.

ZZ Coder
источник
2
На сервере определенно есть причина, если ваш сервер использует TLS, и вы заботитесь о безопасности (если нет, зачем вы вообще используете TLS?). Наборы шифров, включенные в JCE, включают только AES в режиме CBC, который имеет несколько известных проблем: googleonlinesecurity.blogspot.dk/2013/11/… .
Søren Boisen
1
FYI По крайней мере, это не настоящая Java8 (от Oracle).
Усман Исмаил,