Điểm:0

Tạo cặp khóa RSA và chỉ lưu trữ khóa riêng PKCS#11

lá cờ in

Tôi nhận thấy rằng PKCS#11 hỗ trợ C_GenerateKey chức năng cho các phím đối xứng và không đối xứng chỉ có C_GenerateKeyPair chức năng. Vì vậy, từ định nghĩa, điều này cho phép chúng tôi chỉ tạo cả hai cặp khóa riêng/khóa chung. Theo hiểu biết của tôi, khóa riêng lưu trữ thông tin khóa chung (mô-đun và số mũ chung), cần thiết để tạo khóa chung, do đó, nó có thể được tìm nạp mỗi lần để tạo khóa chung.

Để sử dụng, tôi chỉ cần khóa riêng trong kho lưu trữ mã thông báo và không thực sự cần khóa chung cho đến khi sử dụng trong tương lai.

Có bất kỳ hạn chế nào không nếu tôi chỉ lưu trữ khóa riêng và tạo khóa chung mỗi khi tôi cần?

lá cờ tr
Như bạn lưu ý, có thể phần công khai của khóa được lưu trữ cùng với phần riêng tư, do đó, thực sự sẽ không có bất kỳ nhược điểm nào khi xóa đối tượng khóa chung. Nhưng không có cách nào để biết chắc chắn liệu điều đó có xảy ra hay không trong triển khai PKCS#11 cơ bản.
Maarten Bodewes avatar
lá cờ in
Hãy đảo ngược câu hỏi đó: bạn đang mong đợi loại lợi thế nào khi chỉ lưu trữ khóa riêng? Thông thường, khóa riêng RSA là một đối tượng lớn hơn nhiều so với khóa chung do các tham số CRT được lưu trữ.
simonskof avatar
lá cờ in
Tôi có chương trình hệ thống quản lý khóa (KMS) và tôi chỉ lưu trữ và sử dụng khóa riêng trên KMS. Khóa chung không được sử dụng trong trường hợp của tôi và chỉ được xuất (trích xuất từ ​​khóa riêng) cho mỗi yêu cầu, phần lớn sẽ là sự kiện một lần hoặc một vài sự kiện dịp hiếm hoi. Lợi thế của tôi trong trường hợp này là quản lý chỉ bằng một phím điều khiển và tiết kiệm dung lượng lưu trữ mã thông báo.
Điểm:1
lá cờ tr

Cách tiếp cận của bạn chỉ có thể được áp dụng cho RSA và chỉ khi bạn đang sử dụng các khóa được tạo theo phiên bản PKCS#11 >= 2.40. Tiêu chuẩn PKCS#11 xác định (phần 2.1.3 "Đối tượng khóa riêng RSA" trong đặc tả cơ sở 3.0): "Có hiệu lực với phiên bản 2.40, mã thông báo cũng PHẢI lưu trữ CKA_PUBLIC_EXPONENT."

Do đó, bạn có thể lấy các thuộc tính mô-đun và số mũ công khai (C_GetAttributeValue) và tạo một đối tượng khóa công khai từ nó bằng cách sử dụng C_CreateObject. Nhưng như DannyNiu đã chỉ ra rằng điều này chắc chắn sẽ ảnh hưởng đến hiệu suất.

Tùy thuộc vào mã thông báo, bạn có thể sử dụng đối tượng khóa riêng thay vì khóa chung cho các hoạt động như C_Encrypt* hoặc C_Verify* vì mã thông báo sẽ chỉ sử dụng các thuộc tính chung.

Đối với các khóa bất đối xứng khác, vd. Khóa EC, không có định nghĩa tương tự như định nghĩa cho RSA trong tiêu chuẩn PKCS#11. Do đó, sẽ không có phần công khai nào được lưu trữ. Nó sẽ phụ thuộc vào mã thông báo nếu khóa công khai được tính toán nhanh chóng (xác nhận nhận xét của Conrado). Điều này chắc chắn có tác động hiệu suất thậm chí còn cao hơn. Nếu mã thông báo không tự động thực hiện, thì không có cách nào để kích hoạt tính toán khóa chung từ khóa riêng từ PKCS#11.Và tất nhiên, bạn không bao giờ nên làm điều đó ở bên ngoài - tại sao bạn lại sử dụng mã thông báo (HSM) nếu bạn sử dụng khóa riêng ở bên ngoài?

Cuối cùng, nếu bạn sử dụng các ứng dụng tiêu chuẩn, cách tiếp cận của bạn có thể sẽ thất bại vì các ứng dụng thường thêm CKA_CLASS=CKO_PUBLIC_KEY vào mẫu tìm kiếm khi chúng tìm kiếm khóa chung mà chúng muốn sử dụng.

Điểm:1
lá cờ vu

Rõ ràng nhất: hiệu suất.

Tôi biết SPHINCS+ là một ví dụ trong đó việc tạo khóa chung từ khóa riêng đặc biệt tốn kém, có thể có các kế hoạch khác mà điều này đúng, nhưng tôi không biết về bất kỳ kế hoạch nào.

Ngoài ra, vì chúng ta đang nói đến phần cứng PKCS#11 và hiện tại chúng ta đã đề cập đến chữ ký không trạng thái dựa trên hàm băm SPHINCS+, nên chúng ta cũng nên đề cập rằng NIST đã phê duyệt triển khai phần cứng của XMSS và LMS có trạng thái chữ ký dựa trên hàm băm.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.