Mã hóa SSH hoạt động như thế nào?


34

Tôi đã đọc về việc tạo 2 khóa (riêng tư và công khai) trên máy chủ của khách hàng và sao chép khóa chung vào máy chủ.

Theo tôi hiểu, (sửa tôi nếu tôi sai): Máy chủ mã hóa dữ liệu bằng khóa chung và gửi nó đến máy khách, máy khách giải mã nó bằng khóa riêng.

Nhưng nếu tôi cần mã hóa dữ liệu trên máy khách để gửi đến máy chủ thì điều đó xảy ra như thế nào?

Khóa công khai mã hóa dữ liệu trên máy khách? Nhưng làm thế nào máy chủ có thể giải mã nó, nếu nó chỉ có khóa chung?

Mã hóa SSH hoạt động như thế nào?

Câu trả lời:


35

Điều đầu tiên sau khi thiết lập kết nối TCP, cả hai hệ thống đều đồng ý về khóa phiên , sử dụng các giao thức như trao đổi khóa DH , ECDH hoặc GSSAPI. Khóa này là đối xứng và tạm thời - cả hai bên sử dụng cùng một khóa để mã hóa và giải mã dữ liệu bằng các thuật toán như AES hoặc RC4 .

Khóa máy khách không bao giờ được sử dụng để mã hóa dữ liệu, chỉ để xác thực - "khóa công khai" là một trong một số phương thức khả dụng, trong đó máy khách trình bày khóa chung của riêng mình cùng với bằng chứng về quyền sở hữu khóa riêng. Tương tự, cặp khóa máy chủ chỉ được sử dụng để xác thực máy chủ trong quá trình trao đổi khóa DH hoặc ECDH; không có dữ liệu được mã hóa bằng cách sử dụng nó.

Giao thức SSH2 được ghi lại trong một số RFC , bao gồm:

  • RFC 4253 - Giao thức lớp vận chuyển Secure Shell (SSH)
  • RFC 4419 - Trao đổi nhóm Diffie-Hellman
  • RFC 4432 - Trao đổi khóa RSA
  • RFC 4462 - Xác thực & trao đổi khóa GSSAPI

13

Điều đầu tiên tôi nghĩ bạn cần hiểu là trong khi nhiều giao thức mã hóa như SSH và SSL sử dụng PKI cho mục đích xác thực, thì hầu như không có hệ thống nào trong số này sẽ sử dụng PKI để thực sự truyền tải trọng.

PKI quá tốn CPU để sử dụng để truyền dữ liệu tải trọng thực tế. Điều xảy ra là PKI được sử dụng để đàm phán khóa được tạo ngẫu nhiên, được sử dụng với giao thức mã hóa đối xứng. Giao thức được sử dụng cũng được đàm phán và nên là giao thức mạnh nhất mà hai hệ thống có thể đồng ý. Vì vậy, một khi bắt tay và đàm phán ban đầu được thực hiện, hầu hết mọi thứ chỉ là mật mã đối xứng tiêu chuẩn.


2
Để đọc thêm, về cơ bản đã được giải thích trong RFC4253 , trang 15.
slhck

12

Dưới đây là một số ví dụ thực tế, Giả sử Khóa A được giữ bí mật và có khóa riêng và Khóa B đã được đăng ở nơi có thể truy cập công khai và đó là khóa chung.

Vì vậy, nếu bạn muốn gửi tin nhắn cho mọi người và bạn muốn họ xác minh rằng nó đến từ bạn và không bị thay đổi trong khi nó được gửi, bạn sẽ gửi tin nhắn của mình và bao gồm một hàm băm của tin nhắn được mã hóa bằng Key A. Sau đó, bất cứ ai Khóa B có thể giải mã được hàm băm, so sánh nó với tin nhắn họ nhận được và xác minh rằng tin nhắn đó đến từ bạn (do thực tế là chỉ một người có Khóa A mới có thể tạo ra tải trọng được mã hóa đã giải mã thành công hàm băm và bởi vì bạn là người duy nhất có Khóa A, nó chỉ có thể đến từ bạn). Điều này được gọi là Ký .

Bây giờ hãy nói rằng ai đó muốn gửi cho bạn một tin nhắn bí mật nhưng không muốn tiết lộ họ là ai. Họ có thể mã hóa tin nhắn của mình bằng một khóa đối xứng (như Zoredache đã đề cập đối xứng rẻ hơn nhiều), sau đó lấy khóa đó và mã hóa nó bằng Khóa B và gửi cho bạn. Bởi vì chỉ có Khóa A mới có thể Giải mã thứ gì đó được mã hóa bằng Khóa B, không ai khác có thể thấy những gì trong tin nhắn được gửi cho bạn. Đây là cách mã hóa bình thường hoạt động và cách SSH trao đổi dữ liệu.


3

Dưới đây là một mô tả tương đối dễ tiếp cận của các toán học đằng sau cách mã hóa khóa công khai.

Một mô tả thậm chí cơ bản hơn từ BBC là ở đây .


Tôi đã thêm một liên kết mới để BBC giải thích quá trình này và một số lịch sử.
Chogg

1

bạn viết

"Khóa công khai mã hóa dữ liệu trên máy khách? Nhưng làm thế nào máy chủ có thể giải mã nó, nếu nó chỉ có khóa chung?"

Tôi không biết nhiều về nó nhưng tôi nghĩ tôi có thể trả lời câu hỏi đó khá rõ ràng.

Nếu A muốn gửi tin nhắn đến B, A sử dụng khóa chung của B. Đó là cách B sau đó có thể giải mã nó.

Nếu A sử dụng khóa chung của riêng mình để mã hóa tin nhắn, thì quả thực, B sẽ không thể giải mã được.

Điều đó được giải thích ở đây

http://www.comodo.com/resource/small-business/digital-certert2.php

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.