Tại sao mọi người sử dụng bouncycastle thay vì trình cung cấp JCE tích hợp sẵn của Java? Sự khác biệt là gì?


79

Tại sao mọi người sử dụng bouncycastle thay vì Java Cryptography Extension? Sự khác biệt là gì?


7
JCE là một API tiêu chuẩn mà bất kỳ thuật toán tiền điện tử nào cũng có thể triển khai để cho phép nó có thể truy cập được mà không cần mã hóa phụ thuộc vào nhà cung cấp. Nói cách khác, bằng cách sử dụng JCE API, bạn có thể chuyển đổi mật mã và nhà cung cấp mật mã mà không cần thay đổi mã của bạn (trong nhiều trường hợp). BC là một nhà cung cấp có nghĩa là họ triển khai các mật mã có thể được truy cập thông qua các API JCE. Nếu một nhà cung cấp khác triển khai thuật toán bạn muốn tốt hơn BC hoặc một thuật toán mới hơn, mạnh hơn, bạn có thể chuyển đổi mà không cần thay đổi mã của mình (có thể là).
nicerobot

Câu trả lời:


81

BouncyCastle có nhiều bộ mật mã và thuật toán hơn JCE mặc định do Sun cung cấp.

Ngoài ra, BouncyCastle có rất nhiều tiện ích để đọc các định dạng phức tạp như PEM và ASN.1 mà không một người lành mạnh nào muốn tự viết lại.


9
Sun không bao giờ có ý định trở thành một nhà cung cấp toàn diện về mật mã. Đó là lý do tại sao JCE sử dụng khung nhà cung cấp BC hỗ trợ bouncycastle.org/specification.html#install . Bất kỳ người dùng BC nào cũng nên sử dụng nó thông qua các API của JCE khi có thể.
nicerobot

26

Lâu đài Bouncy có nguồn gốc từ Úc, và do đó không thuộc đối tượng Xuất khẩu mật mã từ Hoa Kỳ .

Sẽ rất hữu ích nếu bạn ở bên ngoài Hoa Kỳ và bạn cần quản lý các kích thước chính lớn hơn mức cho phép của giới hạn đó. Trong trường hợp đó, bạn không được phép sử dụng phần mềm từ Hoa Kỳ cho việc đó.


5
Tôi tự hỏi có bao nhiêu hạn chế thực sự vẫn còn, đến năm 2016? Theo như tôi hiểu thì không còn giới hạn về kích thước khóa miễn là bạn đăng ký với Cục Công nghiệp và An ninh (BIS) của Bộ Thương mại Hoa Kỳ, điều mà tôi đoán Oracle đã và đang làm. Nhưng các quy định rất khó hiểu (ý định chơi chữ).
peterh

1
Ugh, nếu tôi ở ngoài nước Mỹ, tôi không cần phải được phép bất cứ điều gì. Dự án có thể cần được phép vận chuyển một thứ gì đó.
Petar Donchev

Hầu hết các hạn chế ở thế giới phương Tây là dựa trên nơi nó được xuất khẩu thay vì kích thước chính ngày nay. Giới hạn kích thước chính là một trong những điều được nới lỏng vào cuối những năm 90. Đối với các quy định hiện tại của Úc, nó không hoàn toàn lỏng lẻo như câu trả lời này ngụ ý, nhưng nó không tệ như nỗi sợ hãi của một vài năm trước đã được lo ngại (trừ khi bạn phát minh ra một thuật toán mới và một hoặc hai thứ khác. Nói chung nó được bao phủ bởi Thỏa thuận Wassenar và các quy định của ITAR (thông qua AU DoD).
Ben

Một phụ lục cho nhận xét trên và có thể chỉ ra những gì có thể được thực hiện từ Úc; Tôi đã hoàn thành kiểm tra DoD ITAR mà không vấp phải một điểm nào (dù sao tất cả đều chỉ là phản hồi kiểu "gọi cho chúng tôi để làm rõ") và vì vậy không có rào cản nào đối với công việc tiền điện tử FOSS của tôi, mặc dù không có gì trong số đó là trong Java. Điều này là do mối quan tâm của AU nhiều hơn về sự phát triển tiền mã hóa mới và sáng tạo, chứ không phải là những thứ nổi tiếng ở khắp mọi nơi (cũng như định nghĩa của AU DoD về "miền công cộng" không phải là định nghĩa bản quyền thông thường, họ sử dụng nó để có nghĩa là nó không được phân loại hoặc hạn chế).
Ben

8

Trên máy chủ hoặc máy tính để bàn, tôi không thấy có lý do gì để sử dụng BC trừ khi bạn phải xử lý một số mật mã hoặc định dạng cũ không được Sun JCE hỗ trợ.

Tuy nhiên, nhiều JRE không đi kèm với nhà cung cấp JCE, như trên thiết bị di động hoặc môi trường nhúng. BC có ích trong những trường hợp như vậy.


2
Trên máy chủ chắc chắn là có lý do, nếu máy chủ của bạn đang sử dụng TLS và bạn quan tâm đến bảo mật (nếu không, tại sao bạn lại sử dụng TLS?). Các bộ mật mã đi kèm với JCE chỉ bao gồm AES ở chế độ CBC, có một số vấn đề đã biết: googleonlinesecurity.blogspot.dk/2013/11/… .
Søren Boisen

1
FYI Ít nhất đây không phải là Java8 đúng (Từ Oracle).
Usman Ismail
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.