Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Giao thức SSH

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giao thức SSH

    SSH tên đầy đủ là Secure Shell là một giao thức mạng mang tính bảo mật, cung cấp cách thức truy cập từ xa vào một thiết bị khác một cách an toàn thông qua các cơ chế mã hóa. Bằng cách sử dụng một số kỹ thuật mã hóa, xác thực mỗi bên với nhau để đảm bảo dữ liệu trao đổi giữa các máy trong phiên làm việc được mã hóa và giải mã nhằm mục đích giữ vững tính toàn vẹn của dữ liệu và bảo vệ an ninh thông tin.
    Hoạt động của SSH
    Click image for larger version

Name:	dataurl530753.png
Views:	26
Size:	40.0 KB
ID:	429023
    SSH hoạt động theo mô hình client-server để xác thực hai bên và mã hóa dữ liệu giữa chúng. Client sẽ là thành phần tạo phiên kết nối SSH đến thành phần khác, còn Server sẽ cho phép Client mở phiên SSH kết nối vào chính mình.
    Để làm được điều này Server sẽ lắng nghe trên một port được chỉ định cho SSH, mặc định là port 22. Mỗi kết nối SSH bao gồm hai việc xác thực: xác thực SSH Server và xác thực SSH Client. Client chịu trách nhiệm khởi tạo quá trình bắt tay TCP với Server, thương lượng kết nối an toàn, xác thực Server và cung cấp thông tin đăng nhập để Server xác thực mình. Còn Server có trách nhiệm thương lượng kết nối an toàn, xác thực bên Client và sinh ra phiên làm việc nếu thông tin đăng nhập được chấp nhận. SSH Client và SSH Server thương lượng với nhau để xác định cơ chế xác thực sẽ sử dụng thậm chí có thể yêu cầu nhiều kiểu xác thực để thiết lập kết nối an toàn trong quá tình trao đổi dữ liệu giữa chúng.
    Đối với SSH version 1, Hoạt động của version 1 này có thể được chia làm 3 bước chính:
    1. Khởi tạo 1 kết nối SSH, chính là tạo ra 1 kênh giao tiếp bảo mật giữa Server và Client.
    2. Client xác thực Server. Sau khi Client xác định được định danh của Server, 1 kết nối bảo mật đối xứng được hình thành giữa 2 bên.
    3. Server xác thực Client dựa trên kết nối được thiết lập ở trên.
    Bước 1.Khi Client khởi tạo 1 kết nối TCP tới port 22 ở Server, sẽ có 2 thông tin được trao đổi:
    • Phiên bản Protocol mà Server hỗ trợ
    • Phiên bản của gói cài đặt SSH trên Server

    Nếu phiên bản Protocol của Server phù hợp với Client thì kết nối mới được tiếp tục. Ngay sau khi Client tiếp tục kết nối, Server và Client sẽ chuyển sang sử dụng bộ giao thức Binary Packet Protocol dài 32 bit.
    Bước 2. Server sẽ gửi các thông tin quan trọng tới Client, đây là những thông tin nắm vai trò chính trong session hiện tại:
    • Server cho Client biết định danh của mình bằng RSA Public Key trên Server. Mọi Client kết nối tới Server đều nhận được RSA Public Key giống nhau.
    • Server Key. Server Key này được tái tạo theo mỗi khoảng thời gian nhất định.
    • 1 chuỗi 8 bytes ngẫu nhiên được gọi là checkbytes. Sau này Client sẽ sử dụng chuỗi này để hồi đáp lại cho Server.
    • Cuối cùng, Server cấp cho Client biết toàn bộ các phương thức xác thực, mã hóa mà Server hỗ trợ.

    Dựa vào danh sách các phương thức mã hóa mà Server hỗ trợ, Client tạo ra 1 Symmetric Key ngẫu nhiên và gửi cho Server. Key này sẽ được sử dụng để mã hóa và giải mã trong toàn bộ quá trình giao tiếp giữa 2 bên trong session hiện tại, đây còn được gọi là Session Key. Session Key sẽ được mã hóa kép, mã hóa đầu tiên dựa vào RSA Public Key và mã hóa thứ 2 dựa vào Server Key. Việc mã hóa kép đảm bảo cho dù RSA Public Key có bị lộ thì cũng không thể giải mã gói tin do còn 1 lớp mã hóa bằng Session Key được thay đổi theo thời gian.

    Cho đến lúc này Client vẫn chưa thể xác thực được Server, nó chỉ biết được định danh của Server dựa vào RSA Public Key. Để xác thực Server thì Client phải chắc chắn Server có khả năng giải mã được Session Key. Bởi vậy sau khi gửi Session Key xong Client sẽ chờ hồi âm từ phía Server. Nếu nhận được thông báo xác nhận Client đã sẵn sàng để xác thực được Server thì quá trình này hoàn tất.
    Bước 3. Server xác thực Client: có nhiều phương pháp, trong đó có 2 phương pháp phổ biến nhất:
    1. Password Authentication: Đây là phương pháp phổ biến và đơn giản nhất. Server yêu cầu Client cung cấp user name và password. Server xác nhận password dựa trên cơ sở dữ liệu được lưu trên Server. Và dĩ nhiên, Client sẽ mã hóa Password bằng Session Key trước khi gửi cho Server kiểm chứng Password này.
    2. Public Key Authentication: Để sử dụng Public Key Authentication, Client cần phải tạo ra RSA Public Key và RSA Private Key, 2 Key này chỉ dùng để xác thực Client. Public Key này sẽ được gửi đến Server và được Server lưu lại. Bất kỳ dữ liệu nào được mã hóa bằng Public Key chỉ có thể giải mã bằng Private Key tương ứng.
    Lúc này, Client sẽ gửi cho Server 1 yêu cầu chứng thực Public Key và các chi tiết về thuận toán mã hóa nó sử dụng, Server lấy Public Key ứng với Client đang yêu cầu để mã hóa 1 chuỗi 256 bit ngẫu nhiên rồi gửi cho Client. Client nhận chuỗi này, sử dụng Private Key của mình để giải mã, sau khi giải mã, Client dùng kết quả kết hợp với Session Key ở bước 2 để tạo 1 đoạn hash rồi gửi trả lại cho Server. Sau khi Server nhận được đoạn hash, nó sẽ dùng chuỗi 256 bit ban đầu nó tạo ra kết hợp với Session Key để tạo ra 1 đoạn hash và đem so sánh với đoạn nó nhận được, Nếu 2 đoạn hash khớp nhau thì quá trình Server chứng thực Client thành công.
    Kể từ giờ kết nối SSH đã sẵn sàng, Client và Server cũng đã có thể gửi các gói tin cho nhau
    Tuy nhiên SSH version 1 rất hạn chế trong việc hỗ trợ sử dụng nhiều thuật toán để trao đổi Session Key, Message Authentication Code (MAC), thuật toán nén. Còn đối với SSH version 2 chẵng những cung cấp nhiều lựa chọn cho Client để sử dụng các thuật toán trao đổi Key mà còn có không gian để có thể thêm thuật toán tùy chỉnh riêng của người sử dụng.

    SSH version 2 là giao thức SSH mặc định được sử dụng ngày nay bởi một số tiến bộ trong version 2 so với version 1 như cải tiến các chuẩn mã hóa, Public Key Certification, Message Authentication Code tốt hơn và phân bố lại Session Key. Trong hoạt động của SSH version 1, sau khi chọn một thuật toán trong danh sách từ Server hỗ trợ, Client tạo 1 Session Key, mã hóa kép và gửi đến Server, mã hóa lần đầu bởi Public Key, mã hóa lần 2 bởi Server Key. Trong SSH version 2, không có khái niệm Server Key. Thay vào đó, Server cung cấp thêm danh sách các phương thức trao đổi khóa mà nó hỗ trợ, từ đó Client chọn một phương thức. SSH version 2 hoạt động dựa trên phương thức diffie-hellman-group1-sha1 và diffie-hellman-group14-sha1 để trao đổi khóa.
    Sự thay đổi thứ hai trong SSH version 2 là một khái niệm gọi là cơ quan cấp chứng chỉ (Certificate Authority - CA), CA sẽ ký vào Public Key được sử dụng trong giao tiếp giữa Client và Server.
    Message Authentication Code được sử dụng trong bất kỳ giao tiếp bảo mật nào để xác minh tính toàn vẹn của dữ liệu. Ngay cả phiên bản SSH 1 cũng sử dụng Message Authentication Code được gọi là CRC-32. CRC mặc dù kiểm tra sự thay đổi trong dữ liệu, nhưng không được coi là tốt nhất. SSH version 2 sử dụng Message Authentication Code nâng cao. Một số Message Authentication Code SSH version 2 hỗ trợ như: hmac-md5; hmac-sha1; Hmac-ripemd160
    Rekeying Session Key: Trong SSH version 1, chỉ có một Session Key được sử dụng cho toàn bộ session làm việc của SSH. Trong SSH version 2 có bổ sung tính năng Rekeying Session Key cho phép thay đổi Session Key mà không làm mất session làm việc hiện tại.
    Đặng Quang Minh, CCIEx2#11897 (Enterprise Infrastructure, Wireless), DEVNET, CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X