Tại sao Amazon phát hành khóa riêng thay vì khóa công khai?


20

Bộ não của tôi được quấn quanh trục trên các khóa công khai và riêng tư. Khi bạn tạo một máy chủ đám mây (ví dụ) trên dịch vụ EC2 của Amazon và sau đó muốn kết nối với nó thông qua SSH, Amazon yêu cầu bạn phải tải xuống một khóa riêng để tạo kết nối. Không phải ý tưởng đằng sau khóa công khai / riêng tư cho thấy Amazon nên yêu cầu bạn tải xuống khóa công khai?

Hơn nữa, nếu tôi thiết lập máy chủ SFTP cho khách hàng sử dụng, tôi có nên cài đặt khóa của họ trên máy chủ hoặc cung cấp cho họ khóa từ máy chủ không? Trong cả hai trường hợp, nó nên là một khóa công khai hay riêng tư?


1
Đối với những người trong chúng ta ít quen thuộc với EC2, Amazon có yêu cầu bạn tải xuống khóa riêng không?
Zoredache

2
Khi bạn thiết lập máy chủ đám mây trên Amazon EC2 và sau đó muốn kết nối với nó thông qua SSH, bảng điều khiển Amazon cho phép bạn tải xuống khóa riêng mà bạn sử dụng để tạo kết nối. Bạn được yêu cầu bảo vệ chìa khóa, tất nhiên.
Seth

@Zoredache Công bằng, đó là một lựa chọn. Ai đó đang tìm kiếm công cụ nhanh chóng trên một hộp Windows có thể chưa bao giờ sử dụng OpenSSH trước đây, vì vậy đây là một khởi đầu tốt đẹp.
ceejayoz

Câu trả lời:


36

Suy nghĩ sâu hơn về quá trình xác thực, những gì cần được giữ bí mật? Amazon biết một nửa công khai của khóa và bất kỳ ai cũng có thể biết một nửa công khai. Nửa công khai của khóa, khi khớp với nửa riêng, biểu thị rằng một nửa riêng được sử dụng để xác thực.

Khóa riêng của bạn được cung cấp cho bạn khi Amazon tạo ra một cặp khóa cho bạn chỉ hữu ích nếu bạn là người duy nhất có nó. Nếu nó không phải là một bí mật, thì bất cứ ai khác biết nó cũng có thể xác thực với bất kỳ ai nắm giữ một nửa công khai của khóa.

Bất cứ ai đang được xác thực phải giữ một nửa tư nhân . Sẽ ổn thôi nếu mọi người trên thế giới có thể xác thực bạn bằng cách giữ một nửa khóa công khai, nhưng chỉ bạn mới nên kiểm soát một nửa riêng tư.


18

Amazon cung cấp các dịch vụ tạo khóa vì một số hệ điều hành (ho, Windows, ho) có thể không dễ dàng tạo ra các khóa bàn phím SSH.

Với SSH (và SFTP), khóa chung được cài đặt trong tệp ủy quyền của người dùng khi phiên bản EC2 khởi động. Khóa riêng chỉ được giữ bởi người dùng và được trình bày để xác thực với máy chủ.

Từ các tài liệu tại:

http://docs.amazonwebservice.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

có vẻ như Amazon tạo ra cặp khóa trên máy chủ của họ và gửi cho bạn khóa riêng thông qua HTTPS. Điều này có lẽ chưa hoàn hảo (lý tưởng là bạn và không ai khác sẽ sở hữu khóa riêng), nhưng có lẽ không quá tệ, vì tất cả điều này xảy ra trong bối cảnh phiên xác thực của bạn và chỉ bạn (và Amazon tạm thời) nhìn thấy khóa riêng. Bạn cũng luôn có thể tạo và tải lên khóa chung của riêng mình để sử dụng EC2, trong khi vẫn giữ khóa riêng ở chế độ riêng tư.

Để thiết lập người dùng SFTP để xác thực khóa, họ nên tạo khóa SSH trên máy của họ. Khi họ tạo một cặp khóa, họ chỉ nên gửi cho bạn khóa chung để cài đặt trong tệp ủy quyền có liên quan. Khóa riêng, như tên ngụ ý, là riêng tư.


5
Tôi thường xuyên tạo các cặp chìa khóa trên máy windows. Điều đó không khó, mặc dù đã hoàn thành bằng phần mềm đã cài đặt và không phải bởi chính Windows.
Đaminh Cronin

2
Đồng ý với Đaminh. Thực tế là người dùng windows trung bình rất sợ hãi và lạc lối khi nhìn thấy CLI và Windows vẫn không có tùy chọn "đăng nhập bằng khóa SSH".
HoplessN00b

Ồ, vâng, đồng ý. Tôi sử dụng Cygwin, v.v., với openssh, vì vậy mọi thứ hoạt động sạch sẽ. Tôi tưởng tượng hầu hết người dùng Windows làm điều này sẽ sử dụng PuTTY và phải thực hiện một số chuyển đổi chính. Đó chỉ là nhiều bước hơn.
cjc

1
Tôi chưa bao giờ thực sự sử dụng Amazon, nhưng thay vì đổ lỗi cho các cửa sổ, tôi sẽ cho rằng lý do Amazon gửi cho bạn một khóa là nếu họ không đưa cho bạn một khóa để đăng nhập, bạn sẽ đăng nhập như thế nào để cài đặt công khai chìa khóa ở nơi đầu tiên?
DerfK

1
@DerfK Bạn có thể gửi khóa công khai của riêng mình và chọn khóa đó sẽ được cài đặt trong phiên bản EC2 mới. Chọn một khóa cụ thể là một phần của quy trình tạo cá thể.
cjc

2

Xác thực khóa công khai hoạt động theo hướng ngược lại với cách bạn có thể nghĩ. Khóa công khai mã hóa tin nhắn và khóa riêng giải mã chúng. Máy chủ lưu trữ khóa công khai của chủ tài khoản và sử dụng nó để mã hóa tin nhắn. Chỉ người giữ khóa riêng mới có thể giải mã tin nhắn đó.

Nếu bạn gửi cho ai đó một bí mật được mã hóa bằng khóa chung của họ, nếu họ có thể cho bạn biết bí mật đó là gì, thì bạn biết họ giữ khóa riêng phù hợp. Người dùng sau đó được xác thực.

AWS yêu cầu bạn tải xuống và lưu khóa riêng của bạn vì họ sẽ không lưu trữ nó, vì lý do bảo mật. Vì khóa riêng không được lưu trữ ở bất cứ đâu trên AWS, bạn có thể tin tưởng rằng phiên bản EC2 của bạn an toàn.


1

Theo một nghĩa nào đó, nó không thành vấn đề. Một cặp khóa riêng / chung bao gồm hai phần và phần nào là khóa công khai tùy thuộc vào bạn. Nếu một cái gì đó được mã hóa bằng một khóa, bạn cần một khóa khác để giải mã nó. Nếu bạn đã xuất bản một khóa công khai và không phải khóa khác, khóa riêng là khóa bạn không xuất bản.

Nhận được câu hỏi thực tế của bạn: có lẽ chìa khóa mà Amazon cung cấp cho bạn là cho phép bạn kiểm soát tài nguyên của chính mình, vì vậy nó không nên được trao cho người khác. Trong bối cảnh này, bạn phải tin tưởng Amazon có khóa riêng của mình, ít nhất là đủ lâu để được thiết lập.

Nếu bạn muốn khách hàng của mình đăng nhập theo cách này, bạn cần họ cung cấp cho bạn một khóa họ sẵn sàng chia sẻ với bạn, do đó, khóa công khai của họ. Bạn cài đặt cái này trên máy chủ trong ủy quyền, có nghĩa là "bất kỳ ai sử dụng khóa riêng phù hợp với khóa công khai này đều có thể truy cập tài nguyên này".


1
Uhm, không, điều đó không đúng. Ít nhất với RSA / DH bạn mã hóa bằng khóa chung và giải mã bằng khóa riêng, nó không hoạt động theo cách khác. Việc ký không giống như mã hóa / giải mã.
Zoredache

1
@ErikA Không, khóa công khai không thể được lấy từ khóa riêng. Các tệp khóa riêng thường bao gồm cả hai khóa. Nếu bạn thực sự muốn tham gia vào một cuộc thảo luận, tôi sẽ đề xuất crypto.stackexchange.com . Những người này có thể cung cấp cho bạn các chi tiết bên trong thực sự sâu sắc bao gồm sự khác biệt thực tế của các khóa RSA và tại sao khóa nào được coi là công khai so với riêng tư không chỉ là một đồng xu tùy ý.
Jeff Ferland

@Zoredache - Tôi không biết rằng: cảm ơn. Bạn có một liên kết đến một tài liệu tham khảo tốt?
Đaminh Cronin

vi.wikipedia.org/wiki/Asymmetric_key_alacticm - Một khóa hoặc mã hóa bản rõ, và các khóa khác mở khóa hoặc giải mã bản mã. Không phải phím nào cũng có thể thực hiện cả hai chức năng. - en.wikipedia.org/wiki/RSA_(alacticm) - RSA liên quan đến khóa chung và khóa riêng. Các khóa công khai có thể được biết đến với tất cả mọi người và được sử dụng để mã hóa thông điệp . Tin nhắn được mã hóa bằng khóa chung chỉ có thể được giải mã bằng khóa riêng.
Zoredache

Cả hai tài liệu tham khảo này đều gợi ý những gì bạn đang nói @Zoredache. Tất nhiên , một khi bạn đã quyết định khóa nào là riêng tư và khóa nào, điều đó sẽ quyết định cách bạn sử dụng nó. Tại thời điểm tạo khóa, quyết định này chưa được đưa ra. Đối với giá trị của nó, logic xung quanh việc ký phụ thuộc hoàn toàn vào logic xung quanh mã hóa, vì việc ký yêu cầu mã hóa.
Đaminh Cronin
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.