Dlaczego ludzie używają bouncycastle zamiast dostawcy JCE wbudowanego w Javę? Jaka jest różnica?

79

Dlaczego ludzie używają bouncycastle zamiast Java Cryptography Extension? Jaka jest różnica?

clyfe
źródło
7
JCE to standardowy interfejs API, który może zaimplementować dowolny algorytm kryptograficzny, aby był dostępny bez zależności kodowania od dostawcy. Innymi słowy, używając interfejsów API JCE, możesz zmieniać szyfry i dostawców szyfrów bez zmiany kodu (w wielu przypadkach). BC jest dostawcą, co oznacza, że ​​implementuje szyfry, do których można uzyskać dostęp za pośrednictwem interfejsów API JCE. Jeśli pojawi się inny dostawca, który implementuje algorytm, który chcesz lepiej niż BC lub nowszy, silniejszy algorytm, możesz przełączyć się bez zmiany kodu (prawdopodobnie).
nicerobot

Odpowiedzi:

81

BouncyCastle ma o wiele więcej zestawów szyfrów i algorytmów niż domyślny JCE dostarczany przez firmę Sun.

Oprócz tego BouncyCastle ma wiele narzędzi do czytania tajemniczych formatów, takich jak PEM i ASN.1, których żaden rozsądny człowiek nie chciałby samodzielnie przepisać.

Kevin
źródło
9
Sun nigdy nie zamierzał być wyczerpującym dostawcą szyfrów. Dlatego JCE używa platformy dostawców, którą BC obsługuje bouncycastle.org/specifications.html#install . Każdy użytkownik BC byłby mądry, gdyby korzystał z niego za pośrednictwem interfejsów API JCE, gdy jest to możliwe.
nicerobot
26

Bouncy Castle ma australijskie pochodzenie i dlatego nie podlega eksportowi kryptografii ze Stanów Zjednoczonych .

Jest to przydatne, jeśli znajdujesz się poza Stanami Zjednoczonymi i musisz zarządzać kluczami o rozmiarach większych niż zezwala na to ograniczenie. W takim przypadku nie możesz używać do tego oprogramowania ze Stanów Zjednoczonych.

Laurence R. Ugalde
źródło
5
Zastanawiam się, ile ograniczeń faktycznie pozostało, anno 2016? O ile rozumiem, nie ma już ograniczeń co do rozmiaru klucza, o ile zarejestrujesz się w Biurze Przemysłu i Bezpieczeństwa (BIS) Departamentu Handlu USA, coś, co wydaje mi się, że Oracle już robi. Ale przepisy są tajemnicze (gra słów zamierzona).
peterh
1
Ugh, jeśli jestem poza Stanami Zjednoczonymi, nie muszę niczego pozwalać. Projekt może wymagać pozwolenia na wysłanie czegoś.
Petar Donchev
Większość ograniczeń w świecie zachodnim opiera się obecnie na miejscu eksportu, a nie na rozmiarze klucza. Ograniczenie rozmiaru klucza było jedną z rzeczy, które złagodzono pod koniec lat 90. Jeśli chodzi o obecne przepisy australijskie, nie są one tak luźne, jak sugeruje ta odpowiedź, ale nie są tak złe, jak obawy o strach sprzed kilku lat (chyba że wymyślisz nowy algorytm i jedną lub dwie inne rzeczy. jest objęty Porozumieniem z Wassenar i przepisami ITAR (przez AU DoD).
Ben
Dodatek do powyższego komentarza, który może wskazywać, co można zrobić z Australii; Ukończyłem testy DoD ITAR bez potknięcia się o jeden punkt (z których wszystkie i tak były po prostu odpowiedziami typu „zadzwoń do nas w celu wyjaśnienia”), więc nie ma żadnych przeszkód w mojej pracy kryptograficznej FOSS, chociaż żadna z nich nie jest w Javie. Dzieje się tak, ponieważ obawy AU dotyczą bardziej nowych i innowacyjnych rozwiązań kryptograficznych, a nie rzeczy, które i tak są dobrze znane wszędzie (również definicja „domeny publicznej” w AU DoD nie jest typową definicją dotyczącą praw autorskich, używają jej do oznaczenia, że ​​nie jest ona sklasyfikowana lub ograniczony).
Ben
8

Na serwerze lub komputerze stacjonarnym nie widzę powodu, aby używać BC, chyba że masz do czynienia z niektórymi starszymi szyframi lub formatami nieobsługiwanymi przez Sun JCE.

Jednak wiele JRE nie jest dostarczanych z dostawcą JCE, na przykład w środowiskach mobilnych lub osadzonych. BC przydaje się w takich przypadkach.

ZZ Coder
źródło
2
Na serwerze z pewnością jest powód, jeśli Twój serwer korzysta z TLS i zależy Ci na bezpieczeństwie (jeśli nie, to dlaczego w ogóle używasz TLS?). Zestawy szyfrów zawarte w JCE zawierają tylko AES w trybie CBC, z którym wiąże się kilka znanych problemów: googleonlinesecurity.blogspot.dk/2013/11/… .
Søren Boisen
1
FYI To przynajmniej nie jest prawda Java8 (od Oracle).
Usman Ismail