Tổng quan về SSH
Tiêu chuẩn Secure Shell (SSH) – một giao thức thiết lập kết nối mạng an toàn bằng cách mã hóa thông tin để cung cấp một kênh kết nối bảo mật, riêng tư.
Giao thức SSH nằm tại tầng ứng dụng của bộ giao thức TCP/IP. (Bộ giao thức TCP/IP là một bộ các giao thức được phân chia làm 04 tầng: tầng ứng dụng gồm các giao thức như BGP, DNS, FTP, HTTP, SSH…; tầng truyền tải gồm các giao thức như TCP, UDP, SCTP…; tầng mạng internet gồm các giao thức IPv4, IPv6… và tầng truy nhập mạng gồm các giao thức ARP, OSPF, DSL…).
SSH phiên bản 1 (thường gọi là SSH-1) lần đầu tiên được công bố bởi nhà nghiên cứu Tatu Ylonen, Đại học công nghệ Helsinki vào năm 1995. Tháng 12/1995, Ylonen thành lập Công ty bảo mật kết nối SSH (SSH Communications Security Corporation - SCS) nhằm phát triển và phổ biến SSH. Ban đầu phần mềm SSH được cung cấp như là phần mềm tự do (free software), các phiên bản SSH-1 tiếp theo do SSH Communication Security phát triển trở thành phần mềm thương mại.
Năm 1996, SCS giới thiệu một giao thức mới, khắc phục một số hạn chế, nhược điểm của SSH-1, gọi là SSH-2 (hay SSH phiên bản 2.0) kết hợp một số thuật toán mới. Sau đó, IETF thành lập nhóm làm việc nghiên cứu về SSH (gọi là SECSH) nhằm chuẩn hóa giao thức và hướng dẫn phát triển SSH trong cộng đồng. Năm 2006, SSH-2 được thông qua như một tiêu chuẩn của IETF. Phiên bản này không tương thích với SSH-1. SSH-2 cải thiện cả chức năng bảo mật và các chức năng khác của SSH-1. Tài liệu tiêu chuẩn SSH-2 được IETF công bố gồm nhiều RFC như sau:
· RFC 4250, Phân bổ số thứ tự của giao thức SSH
· RFC 4251, Kiến trúc của giao thức SSH
· RFC 4252, Xác thực của giao thức SSH
· RFC 4253, Lớp truyền tải của giao thức SSH
· RFC 4254, Kết nối của giao thức SSH
· RFC 4255, Sử dụng DNS để bảo đảm bảo mật khóa vân tay trong SSH
· RFC 4256, Xác thực trao đổi thông điệp trong SSH
· RFC 4335, Mở rộng kênh làm việc trong SSH
· RFC 4344, Chế độ mã hóa tầng truyền tải trong SSH
· Một số RFC hiệu chỉnh, bổ sung khác
Năm 1999, các nhà phát triển phần mềm muốn đưa ra một phiên bản phần mềm tự do cho SSH, một nhóm phát triển phần mềm nguồn mở OpenBSD xây dựng OpenSSH dựa trên phần mềm SSH của Tatu Ylonen. Open SSH được cung cấp dưới giấy phép nguồn mở BSD, từ “Open” (mở) trong OpenSSH thể hiện sản phẩm là một phần mềm mã nguồn mở.
Các đặc điểm chính của giao thức SSH
- Tính bí mật (privacy) của dữ liệu: Tính bí mật có nghĩa là bảo vệ dữ liệu không bị phơi bày. SSH cung cấp tính bí mật thông qua việc mã hóa dữ liệu mạng, SSH hỗ trợ nhiều thuật toán mã hóa đối với các phiên trao đổi dữ liệu, đó là các thuật toán mã hóa được chuẩn hóa như AES, ARCFOUR, Blowfish, IDEA, DES, 3DES.
- Tính toàn vẹn (Integrity): Tính toàn vẹn có nghĩa là bảo đảm dữ liệu được truyền từ đầu vào tới đầu ra không bị thay đổi. SSH sử dụng phương pháp kiểm tra toàn vẹn mật mã, áp dụng các thuật toán MD5 và SHA-1.
- Tính xác thực (Authentication): SSH tiến hành xác thực thông qua việc kiểm tra định danh của người dùng, mỗi kết nối SSH bao gồm hai việc xác thực: máy khách kiểm tra định danh của máy chủ SSH và máy chủ kiểm tra định dạng của người dùng truy cập vào hệ thống. SSH hỗ trợ xác thực bằng mật khẩu được mã hóa trên mạng hay xác thực bằng khóa công khai kết hợp với kiểm tra định danh máy chủ.
Kiến trúc giao thức SSH
Giao thức SSH thiết lập một kênh an toàn bảo mật và có khả năng truy cập an toàn từ xa trong môi trường mạng không được bảo mật. Nó bao gồm 03 thành phần chính:
- Giao thức Lớp truyền tải (Transport) SSH-TRANS cung cấp khả năng xác thực cho máy chủ, khả năng bảo mật và toàn vẹn của dữ liệu. Nó cũng cung cấp chức năng nén dữ liệu. Lớp truyền tải có khả năng hoạt động trên nền TCP/IP và cũng có khả năng hoạt động trên bất kỳ dòng dữ liệu tin cậy nào khác.
- Giao thức Xác thực người dùng SSH-USERAUTH xác thực cho máy khách phía người sử dụng truy cập vào máy chủ. Nó hoạt động trên nền giao thức lớp truyền tải.
- Giao thức Kết nối SSH-CONNECT ghép các kênh dữ liệu đã được mã hóa để truyền tải, giao thức hoạt động trên nền giao thức xác thực người dùng.
Giao thức SSH được xây dựng nhằm cải thiện khả năng bảo mật trong các kết nối Internet, đảm bảo việc triển khai SSH dễ dàng và tiết kiệm chi phí, trong đó:
- Tất cả thuật toán mã hóa, toàn vẹn và khóa công khai được sử dụng trong SSH đều là các thuật toán phổ biến và được biết đến.
- Tất cả các thuật toán sử dụng với các khóa đảm bảo mã hóa để chống lại các nguy cơ tấn công phá khóa mã hóa.
- Tất cả các thuật toán có khả năng chuyển đổi dễ dàng sang thuật toán khác mà không cần chỉnh sửa giao thức.
Một số kiểu dữ liệu được trình diễn trong SSH
- Kiểu Byte: Một byte bao gồm 8 bít có giá trị 0 hoặc 1. Khối dữ liệu được biểu diễn dưới dạng một chuỗi byte liên tục.
- Kiểu Boolean: Một Boolean được lưu trong một byte đơn lẻ. Giá trị 0 biểu diễn FALSE, giá trị 1 biểu diễn TRUE. Tất cả các giá trị không phải zero (0) đều được hiểu là mang giá trị TRUE.
- Khối 32 bít: Dữ liệu được biểu diễn dưới dạng một khối 32 bít, lưu trữ trong 4 byte.
- Khối 64 bít: Dữ liệu được biểu diễn dưới dạng một khối 64 bít, lưu trữ trong 8 byte.
Lớp truyền tải SSH-TRANS
SSH-TRANS cung cấp kết nối ban đầu, ghi chép giao thức, xác thực máy chủ, mã hoá cơ bản và các dịch vụ bảo mật. Sau khi thiết lập một kết nối SSH-TRANS, máy khách có thể tiến hành một kết nối riêng lẻ, đảm bảo tính an toàn, riêng tư. Tiếp theo, máy khách có thể dùng giao thức SSH-USERAUTH thông qua kết nối SSH-TRANS để xác thực với máy chủ. Sau khi xác thực, máy khách yêu cầu giao thức SSH-CONNECT để cung cấp các dịch vụ thông qua một kênh riêng tư do SSH-TRANS thiết lập. Cuối cùng, một ứng dụng có thể sử dụng một giao thức truyền tệp tin như FTP qua kênh SSH-CONNECT để cung cấp truyền tệp tin và thực hiện các chức năng thao tác hệ thống tập tin từ xa.
Lớp xác thực người dùng SSH-USERAUTH
SSH-TRANS duy trì nhiều phương pháp xác thực khác nhau. Trước tiên, máy chủ gửi thông báo xác thực tới máy khách của người sử dụng để có thể tiến thành trao đổi dữ liệu. Sau đó, máy khách có thể tiến hành một số phương pháp xác thực đã được quy định bởi máy chủ. Việc này cho phép máy chủ có thể chủ động điều khiển, giám sát quá trình xác thực nhưng cũng cho phép máy khách linh hoạt sử dụng nhiều phương pháp xác thực để có thể tiến hành trao đổi dữ liệu.
Các phương pháp xác thực có thể là kiểm tra định danh của máy khách (người sử dụng) được liệt kê trong tập tin host của máy chủ theo DNS và địa chỉ IP, sử dụng mật khẩu để kiểm tra định danh người sử dụng hay xác thực khóa công khai. Các phương thức trên được định nghĩa trong nhiều bản thảo Internet khác nhau và đã được chấp nhận rộng rãi.
Một số thuật toán sử dụng trong SSH
- RSA (Rivest-Shamir-Adleman) - Giải thuật mã hóa công khai RSA là một thuật toán được các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman phát triển tại Học viện Công nghệ Massachusetts (MIT) vào năm 1977. Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
- DES (Data Encryption Standard) là một thuật toán mã hóa khối với kích thước khối 64 bít và kích thước khóa 56 bít, được Tổ chức Tiêu chuẩn xử lý thông tin liên bang Hoa Kỳ (FIPS) công bố chính thức vào tháng 11/1976 và được xuất bản trong tài liệu có tên là FIPS PUB 46 vào tháng 01/1977.
- AES (Advanced Encryption Standard) – Thuật toán mã hóa tiên tiến là một thuật toán tiêu chuẩn của chính phủ Hoa Kỳ nhằm mã hóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ (National Institute Standards and Technology – NIST) phát hành ngày 26/11/2001. AES là một thuật toán mã hóa khối đối xứng với độ dài khóa là 128 bít (một chữ số nhị phân có giá trị 0 hoặc 1), 192 bít và 256 bít tương ứng gọi là AES-128, AES-192 và AES-256.
- MD5 (Message-Digest algorithm 5) là một bộ tạo hàm băm được sử dụng phổ biến với giá trị hàm băm dài 128-bít. MD5 được chuẩn hóa bởi IETF công bố trong RFC 1321. MD5 đã được dùng trong nhiều ứng dụng bảo mật để kiểm tra tính toàn vẹn của tập tin.
- SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là giải thuật được chấp nhận bởi Tổ chức Tiêu chuẩn xử lý thông tin liên bang Hoa Kỳ (FIPS) dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao. SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao gồm TLS và SSL, SSH, S/MIME, và IPSec. SHA-1 được coi là thuật giải thay thế MD5, một thuật giải băm 128 bít phổ biến khác.
Thêm bình luận