Một số giấy giới thiệu vai trò hiện tại của khóa công khai và tư nhân như khá đối xứng nhưng bạn chắc chắn không thể hoán đổi vai trò của khóa bí mật và công chúng trong thế giới thực.
Thường sử dụng:
- khóa công khai phải được sử dụng để mã hóa và xác minh chữ ký
- khóa riêng phải được sử dụng để giải mã và ký
Có nhiều lý do cho rằng:
bạn không muốn để lại lựa chọn cho người dùng về khóa nào sẽ được xuất bản và không phải là. Khóa công khai được xuất bản trên toàn thế giới và bạn có thể coi nó là danh tính công khai của bạn. Phần riêng là cần thiết khi bạn phải chứng minh cho người khác rằng bạn có thông tin chi tiết hơn những người khác về danh tính này: bạn có thể đọc tin nhắn được gửi tới đó, bạn có thể ký các thư có thể được xác minh bởi bất kỳ ai biết id công khai của bạn. Nếu phần nào của khóa công khai/khóa riêng tư được xuất bản cho người dùng bạn sẽ kết thúc với người dùng xuất bản cả hai. Nhưng đó không phải là lý do chính.
khi bạn có khóa riêng, bạn thực sự có cả hai khóa mọi triển khai phổ biến tôi biết cung cấp các công cụ để trích xuất khóa công khai từ tệp riêng tư. Điều đó đúng với pgp, gpg, openssl. Nó có nghĩa là các tệp khóa riêng tư được lưu trữ cả khóa riêng và khóa công khai như được mô tả trong thuật toán. Đó là do thiết kế.
Đối dụ với openssl chuỗi các lệnh để tạo ra một RSA cặp khóa có thể là:
openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
Nó phải đủ rõ ràng rằng lệnh đầu tiên tạo ra cả hai phím trong file private key và rằng khóa công khai chỉ được trích xuất từ nó.
Hậu quả là nếu khóa cá nhân của bạn bị xâm phạm, cả hai khóa của bạn sẽ bị xâm phạm. Cách khác xung quanh là an toàn, bạn không thể suy ra khóa riêng nếu bạn biết khóa công khai không phải từ tệp cũng như từ một cuộc tấn công toán học.
- mã hóa với khóa bí mật là toán học yếu: tốt, các điểm trước đó là đã đủ, nhưng một số người dùng ranh ma có thể được xem xét sử dụng bất đối xứng mật mã giữ cả hai phím ẩn để trao đổi dữ liệu. Đừng, sử dụng mật mã đối xứng nếu bạn muốn thực hiện loại trao đổi đó. Có thể mã hóa tin nhắn bằng khóa riêng và giải mã bằng cách sử dụng khóa công khai (về cơ bản những gì được sử dụng để ký, nhưng trường hợp sử dụng khác với bạn cũng có thông báo ban đầu). Các thông số nội bộ của hai khóa không phải là các tên lửa và tất cả độ mạnh của mật mã đã được đề xuất chỉ cho hướng thông thường và cách sử dụng thông thường.
Tôi * nghĩ * điều này phụ thuộc rất nhiều vào thuật toán mã hóa được sử dụng. Trong một số họ có thể hoán đổi cho nhau, ở những người khác thì không. Điều này có liên quan đến câu hỏi này: http://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key –
+1 để hỏi điều gì đó tôi ' d đã tự hỏi về một lúc. –
Liên quan đến http://security.stackexchange.com/questions/52495/can-rsa-keys-be-swapped cho RSA. – Gnubie