2009-03-30 68 views
17

Tôi có câu hỏi tiếp theo cho Given a private key, is it possible to derive it’s public key?Các khóa công khai và riêng tư khác nhau như thế nào?

Có phải khóa công khai và riêng tư là 'giống nhau' (theo nghĩa là bạn chỉ chọn công khai) hoặc bạn có thể làm nhiều hơn với khóa riêng hơn là khóa công khai?

EDIT - để nêu tốt hơn câu hỏi của tôi:

Khi hai phím được tạo ra, tôi chỉ có thể ngẫu nhiên chọn một trong số họ là khóa công khai?

+0

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 –

+2

+1 để hỏi điều gì đó tôi ' d đã tự hỏi về một lúc. –

+0

Liên quan đến http://security.stackexchange.com/questions/52495/can-rsa-keys-be-swapped cho RSA. – Gnubie

Trả lời

10

Nó thực sự phụ thuộc vào những gì bạn gọi là "khóa riêng". Trong hầu hết mọi lời nói thực tế, người gửi biết khóa riêng cũng biết khóa công khai. Nó cung cấp cho người khác với khóa công khai của nó để nó cần phải biết nó. Vì vậy, về bản chất, rằng "khóa riêng" sẽ chứa thông tin "khóa công khai" hoặc ít nhất nó có thể được bắt nguồn từ nó.

Nói chung, bạn không thể trao đổi khóa cá nhân và khóa công khai. Trong thực tế, chúng không phải lúc nào cũng có cùng loại (tùy thuộc vào hệ thống mật mã được sử dụng). Ví dụ, trong ECDSA, khóa công khai của bạn là một "điểm" hai chiều trên một đường cong elip, trong khi khóa riêng của bạn là một số.

+4

Trong RSA, khóa công khai được tính từ khóa riêng, chuyển đổi chúng có nghĩa là khóa riêng tư trước đây của bạn bây giờ là khóa công khai, và bất kỳ ai cũng có thể dễ dàng tạo khóa công khai trước đây mà bây giờ bạn sử dụng làm khóa riêng của mình.Việc chuyển đổi khóa công khai/riêng tư trong RSA khiến RSA không an toàn. – Martijn

2

Từ http://www.webopedia.com/TERM/P/public_key_cryptography.html:

Một hệ thống mật mã có sử dụng hai phím - một khóa công khai được biết đến với tất cả mọi người và khóa bí mật hay bí mật chỉ biết đến người nhận tin nhắn. Khi John muốn gửi thư bảo mật tới Jane, anh ta sử dụng khóa công khai của Jane để mã hóa thư. Sau đó, Jane sử dụng khóa riêng của mình để giải mã.

Một yếu tố quan trọng đối với khóa công khai hệ thống là công và tư phím có liên quan theo cách như vậy mà chỉ khóa công khai có thể được sử dụng để thông điệp mã hóa và chỉ có tương ứng khóa riêng có thể được sử dụng để giải mã chúng. Hơn nữa, nó là hầu như không thể suy ra khóa riêng nếu bạn biết khóa công khai .

2

No. Đó là ý tưởng tạo ra một cặp các khóa trong thế giới PPK. Bạn thường mã hóa bằng khóa công cộng và giải mã bằng khóa riêng. Vì vậy, bạn sẽ chia sẻ khóa công khai với bạn bè của mình và yêu cầu họ sử dụng khóa đó khi họ gửi cho bạn số tài khoản ngân hàng của họ.

12

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.
+0

Câu trả lời thú vị. Cảm ơn. Đặt câu chuyện dài ngắn! – egelev

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