Không nguy hiểm khi sử dụng các khóa SSH để đăng nhập vào một máy chủ không xác định / bị xâm nhập?


9

Giả sử tôi cung cấp cho ai đó khóa SSH công khai của mình, id_rsa.pub và anh ấy / cô ấy cài đặt nó trên một máy chủ bị xâm nhập và tôi được yêu cầu đăng nhập.

Quá trình đăng nhập có liên quan đến việc gửi khóa riêng của tôi đến máy chủ bị xâm nhập không?

Nếu có, thì kẻ tấn công hiện có quyền truy cập vào khóa SSH riêng của tôi và điều đó thật đáng sợ.

Nếu không, tại sao tôi thấy dòng này trong đầu ra ssh -vvv:

debug1: Server accepts key: pkalg ssh-rsa blen 277

Điều này ngụ ý rằng khóa riêng đã được gửi đến máy chủ và nó đã chấp nhận nó.

Tôi có hiểu nhầm vấn đề không?

Câu trả lời:


11

Bạn đang hiểu sai quá trình.

Khóa không được gửi, thay vào đó là một "thử thách" được xây dựng bằng cách mã hóa thứ gì đó bằng khóa chung chỉ có thể được giải mã bằng khóa riêng phù hợp.

Nếu bạn được yêu cầu nhập mật khẩu hoặc chuyển tiếp X đến máy chủ bị xâm nhập, thì có nguy cơ bảo mật tiềm ẩn.


Cảm ơn. ssh cũng phát ra thông báo debug1: Offering RSA public key: <$HOME>/.ssh/id_rsanày khiến người ta nghĩ rằng khóa riêng đang được chia sẻ mặc dù id_rsa.pub đã được chia sẻ.
Gurjeet Singh

Khóa công khai là, công khai. Bạn có thể đưa nó cho bất cứ ai. Điều đó mang lại cho họ khả năng mã hóa tin nhắn. Khóa riêng là thứ cho phép bạn giải mã tin nhắn. Miễn là bạn giữ khóa riêng của mình cho riêng mình, bạn sẽ ổn thôi.
Pete

7

KHÔNG , khóa riêng của bạn KHÔNG BAO GIỜ được "gửi" hoặc truyền đi bất cứ đâu.

Mật mã khóa công khai không giống như xác thực tên người dùng / mật khẩu truyền thống.

  • Khóa công khai của bạn chỉ có thế - công khai. Nó là hoàn toàn an toàn để chia sẻ nó. Gửi khóa công khai của bạn cho ai đó có thể cho đi danh tính của bạn (mọi người có thể biết rằng đó là từ bạn vì đó là một số duy nhất), nhưng nó không bao giờ có thể cho phép người khác mạo danh bạn hoặc xác thực như bạn. Bạn cũng có thể đăng khóa công khai của mình trên SuperUser hoặc trên trang web của bạn qua HTTP thông thường; nó hoàn toàn an toàn và hoàn toàn vô dụng nếu ai đó không có khóa riêng của bạn.

  • Khóa riêng của bạn chỉ có thế - riêng tư. Nó chỉ nằm trên các hệ thống mà bạn sở hữu và tin tưởng (hy vọng) và phải luôn được mã hóa bằng mật khẩu mở khóa để đảm bảo an toàn tối đa, trong trường hợp ai đó có quyền truy cập vật lý vào hệ thống được lưu trữ trên đó. Khóa riêng không bao giờ được truyền bởi bất kỳ chương trình bảo mật được triển khai đúng nào đang hoạt động theo các quy tắc của mật mã khóa công khai. Đó là, trừ khi bạn có một chương trình trên hệ thống cục bộ bị xâm phạm và có khả năng đọc khóa riêng của bạn (và khóa riêng không được mã hóa bằng mật khẩu), khóa riêng của bạn luôn an toàn.

Tin nhắn được bằng khóa riêng, trên máy tính của bạn , trước khi chúng được gửi đến máy chủ từ xa. Vì vậy, thay vì gửi khóa riêng đến máy chủ từ xa, bạn đang gửi một tin nhắn được mã hóa bằng khóa riêng. Nhưng hai điều này không giống nhau: bạn không thể lấy được khóa riêng từ tin nhắn đã ký; đó là một phần của điểm mật mã khóa công khai.

Nói tóm lại, ngay cả khi kẻ tấn công thù địch lấy khóa công khai của bạn nhận được tin nhắn được ký bởi khóa riêng của bạn, họ vẫn sẽ không thể lấy được khóa riêng của bạn và do đó, họ không thể mạo danh thông tin đăng nhập của bạn hoặc sử dụng khóa riêng của bạn để xác thực "như bạn".


Tôi hiểu quy trình crypo khóa công khai, nhưng bị nhầm lẫn bởi thông báo gỡ lỗi được phát ra bởi ssh. Câu trả lời từ @ pjc50 dường như cung cấp sự đảm bảo mà tôi đang tìm kiếm.
Gurjeet Singh
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.