2010-03-12 21 views
6

Cách nào tốt hơn để sử dụng openssl hoặc windows capi cho các vấn đề về giải mã sinh thái danh sách chuyên nghiệp và con của cả hai. và nếu nó có thể viết chương trình mã hóa của tôi trên openssl và giải mã nó với cửa sổ capi không có vấn đề hoặc có một số vấn đề với điều này.openssl so với windows capi

Trả lời

9

Vì mục đích mã hóa, trước tiên tôi thấy dễ dàng hơn khi nghĩ về quản lý khóa. Các khóa được lưu trữ ở đâu, chúng được tạo ra như thế nào, ai sử dụng chúng và cách chúng được tiêu hủy một cách an toàn. Theo kinh nghiệm của tôi, quản lý khóa là điều hạn chế hầu hết cấu trúc ứng dụng.

CryptoAPI cung cấp API để truy cập các khóa được lưu trữ ở các vị trí tùy ý, thông qua trình điều khiển ("CSP") được đăng ký trong hệ điều hành. OpenSSL có thể cung cấp một cái gì đó tương tự với sự giúp đỡ của OpenSC, nhưng trình điều khiển sau đó sẽ hỗ trợ PKCS # 11 API. Dù bằng cách nào, trình điều khiển là một số loại DLL được cung cấp bởi bất cứ ai đã xây dựng thiết bị lưu trữ (giả sử rằng khóa được lưu trữ và sử dụng trong thiết bị phần cứng).

Nếu bạn muốn có thể sử dụng các khóa được lưu trữ trong thiết bị phần cứng (nơi thiết bị có thể là thẻ thông minh, HSM, ... bất kỳ thứ gì có thể thực hiện một số mã hóa nhưng sẽ từ chối tự cung cấp khóa) phải trải qua cả CryptoAPI hoặc PKCS # 11. CryptoAPI, theo bản chất, chỉ dành cho Windows, vì vậy PKCS # 11 là cách để đi nếu bạn muốn mã của bạn có khả năng chạy trên các hệ thống không phải Windows (MacOS, Linux, Solaris ...). Nếu bạn đi theo cách PKCS # 11, bạn có thể muốn thử NSS thay cho OpenSSL. NSS là thư viện được sử dụng trong trình duyệt có nguồn gốc từ Netscape (ví dụ: Firefox). Nó là mã nguồn mở.

Mặt khác, nếu bạn chỉ nhắm mục tiêu hệ thống Windows, thì CryptoAPI sẽ giảm bớt phân phối, vì nó đã có sẵn, không cần thêm DLL.

Nếu bạn sẵn sàng bỏ phần cứng và muốn sử dụng mã hóa phần mềm, với các khóa được giữ trong RAM, có thể bạn sẽ không muốn sử dụng CryptoAPI, vốn không đủ mạnh về số thuật toán mà nó thực hiện và các biến thể nó chấp nhận (ví dụ: CryptoAPI nhấn mạnh vào các số mũ công khai RSA nhỏ hơn 32 bit - đây là trường hợp bình thường, nhưng giới hạn vẫn tùy ý và có khả năng gây phiền toái). Có rất nhiều thư viện mã hóa ngoài kia; ngoài OpenSSL và NSS, bạn có thể muốn điều tra Crypto++, khá trưởng thành và được cho là thân thiện với C++.

+1

[Tôi đã đấu tranh] (http://stackoverflow.com/q/43802185/267874) để làm cho OpenSSL trên Windows hoạt động với HSM trong nhiều tuần và tôi phải nói, câu trả lời đơn giản của bạn ở đây đã xóa toàn bộ hình ảnh cho tôi! Bạn của tôi, thực sự biết cách cung cấp thông tin rõ ràng và có liên quan. Cảm ơn bạn! Tôi đi ngay bây giờ, hãy thử cách PKCS # 11, có thể là đa nền tảng ngay bây giờ! –

Các vấn đề liên quan