1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn an toàn thông tin Tìm Hiểu về SSH

33 2,3K 26

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vì thế, tuy SSH2 đã xuất hiện, nhưng hầu hết những người đang sửdụng SSH1 đều nhận ra vài ưu điểm của SSH1 so với SSH2 và tiếp tục sử dụng SSH1, banăm sau khi SSH2 ra đời thì SSH1 vẫn là

Trang 1

BÀI TẬP LỚN

AN TOÀN THÔNG TIN

Đề tài: “Tìm Hiểu về SSH “

Giáo viên hướng dẫn : NGUYỄN VĂN HOÀNG

Nhóm sinh viên thực hiện : Tin học C – 52

- Nguyễn Thị Nga

- Nguyễn Thị Phương Thảo

Hà Nôi, Tháng 3/2011

Trang 2

MỤC LỤC

1 Khái niệm về SSH 4

2 Lịch sử phát triển của SSH 5

3 Các đặc điểm của SSH 6

4 Kiến trúc chung của một hệ thống SSH 8

5 Bên trong SSH 11

5.1 Bên trong SSH-2 11

5.2 Tóm tắt cơ chế hoạt động của SSH-2 11

5.3 Giao thức lớp vận chuyển SSH (SSH- TRANS) 12

5.3.1 Tiến trình tạo kết nối 12

5.3.2 Tiến trình chọn lựa phiên bản giao thức 13

5.3.3 Tiến trình thương lượng tham số 14

5.3.4 Tiến trình trao đổi khóa và xác thực server 17

5.4 Giao thức chứng thực SSH (SSH - AUTH) 18

5.4.1 Tiến trình yêu cầu chứng thực 18

5.4.2 Tiến trình hồi đáp chứng thực 18

5.4.3 Chứng thực khóa công khai 19

5.4.4 Xác thực password 19

5.4.5 Xác thực dựa trên host (hostbased) 19

5.5 Giao thức kết nối SSH-CONN 19

5.5.1 Kênh (channels) 20

5.5.2 Yêu cầu (request) 20

5.6 Bên trong SSH-1 21

6 Các thuật toán được sử dụng trong SSH 22

6.1 Những thuật toán khóa công khai 22

6.1.1 Rivest-Shamir-Adleman (RSA) 22

Trang 3

6.1.2 Thuật toán chữ ký số (DSA) 23

6.1.3 Thuật toán thoả thuận khoá Diffie-Hellman 23

6.2 Những thuật toán khoá bí mật 24

6.2.1 Thuật toán mã hoá dữ liệu bí mật quốc tế (IDEA) 24

6.2.2 Chuẩn mã hoá tiên tiến (AES) 24

6.2.3 Chuẩn mã hoá dữ liệu (DES) 24

6.2.4 Trible-DES (3DES) 24

6.2.5 ARCFFOUR (RC4) 24

6.2.6 Blowfish 24

6.2.7 Twofish 25

6.2.8 CAST 25

6.3 Những hàm băm 25

6.3.1 CRC-32 25

6.3.2 MD5 25

6.3.3 SHA-1 25

6.3.4 RIPEMD-160 25

6.3.5 Thuật toán nén: Zlib 26

7 Các loại tấn công mà SSH có thể cản được 26

7.1 Eavesdropping 26

7.2 Dịch vụ đặt tên và giả mạo IP 26

7.3 Chiếm đoạt kết nối 27

7.4 Các kiểu tấn công Man-in-the-Middle 27

8 Các mối đe dọa mà SSH không thể cản 28

8.1 Phá mật khẩu 29

8.2 IP và các kiểu tấn công TCP 29

Trang 4

Các chương trình mã hóa trước đây như: telnet, rlogin không sử dụng phương pháp

mã hóa Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung củaphiên làm việc bằng cách sử dụng một số công cụ đơn giản Sử dụng SSH là biện pháp hữuhiệu bảo mật dữ liệu trên đường truyền từ hệ thống này đến hệ thống khác

1 Khái niệm về SSH

SSH (tiếng anh :Secure Shell ) là một giao thức mạng dùng để thiết lập kết nối mạngmột cách bảo mật SSH hoạt động ở lớp trên trong mô hình phân lớp TCP/IP Các công cụSSH (như là OpenSSH, PuTTy….) cung cấp cho người dùng cách thức để thiết lập kết nốimạng được mã hóa để tạo một kênh kết nối riêng tư Hơn nữa tính năng tunneling (hoặc còngọi là port forwarding) của các công cụ này cho phép chuyển tải các giao vận theo các giaothức khác Do vậy có thể thấy khi xây dựng một hệ thống mạng dựa trên SSH, chúng ta sẽ cómột hệ thống mạng riêng ảo VPN đơn giản

Mỗi khi dữ liệu được gửi bởi một máy tính vào mạng, SSH tự động mã hóa nó Khi

dữ liệu được nhận vào, SSH tự động giải mã nó Kết quả là việc mã hóa được thực hiện trongsuốt, người dùng có thể làm việc bình thường mà không biết rằng việc truyền thông của họ đãđược mã hóa an toàn trên mạng SSH có thể được sử dụng để :

- Đăng nhập vào trình bao trên một máy chủ từ xa ( thay thế cho telnet và rlogin)

- Thực thi một lệnh duy nhất trên máy chủ từ xa

- Truyền tập tin an toàn ( giao thức truyền tập tin SSH-SFTP, sao chép an toàn _ SCP)

- Sao lưu, sao chép và nhân bản tập tin một cách hiệu quả và an toàn

- Chuyển tiếp hoặc truyền đa giao thực một cổng

- Sử dụng làm VPN được mã hóa chính thức ( chỉ đối với OpenSSH)

- Chuyển tiếp X từ một máy chủ từ xa

- Duyệt web thông qua sự kết nối proxy có mã hóa với các khách hàng SSH ( giaothức SOCKS)

- Lắp đặt một thư mục vào một máy chủ từ xa để làm hệ thống file trên máy tính nội

bộ một cách an toàn

- Tự động giám sát và quản lý máy chủ từ xa

Trang 5

- Cộng tác an toàn với nhiều người sử dụng kênh shell SSH (truyền, trao đổi, chia sẻ).

2 Lịch sử phát triển của SSH

Năm 1995, Tatu Ylõnen, một nhà nghiên cứu ở trường đại học kĩ thuật Helsinki củaPhần Lan đã nghiên cứu và trình bày về SSH1 và giao thức SSH-1 Sau khi mạng trường đạihọc của ông ta là nạn nhân của một cuộc tấn công đánh cắp password vào đầu năm đó

Tháng 7 năm 1995, SSH1 được phát hành rộng rãi dưới dạng một phần mềm miễn phí

có source code, cho phép mọi người sao chép và sử dụng mà không thu phí Vào cuối năm

đó, ước tính có khoảng 20.000 người dùng trên 50 quốc gia đã sử dụng SSH1, và mỗi ngàyYlõnen nhận 150 mail yêu cầu hỗ trợ Để đáp lại, Ylõnen đã thành lập SSH CommunicationsSecurity (SCS, http://www.ssh.com) vào tháng 12 năm 1995 để duy trì, thương nghiệp hoá vàtiếp tục phát triển SSH

Cũng trong năm 1995, Ylõnen soạn thảo giao thức SSH-1 còn gọi là InternetEngineering Task Force (IETF), nó diễn tả hoạt động cơ bản của phần mềm SSH1 trên thực

tế Nó là một giao thức có phần quảng cáo nhưng còn một số lỗi và giới hạn nhưng rất phổbiến Năm 1996, SCS giới thiệu một phiên bản mới đó là phiên bản chính của giao thức, SSH2.0 hay SSH-2, phiên bản này được kết hợp chặt chẽ những thuật toán mới và không hợp vớiSSH-1 Trong lúc đó, IETF thành lập một nhóm làm việc gọi là SECSH (Secure Shell) đểchuẩn hoá giao thức và chỉ đạo sự phát triển của nó trên lợi ích chung Nhóm làm việcSECSH đã trình bày bản phác thảo Internet đầu tiên đối với giao thức SSH-2 vào tháng 2năm 1997

Năm 1998, SCS phát hành sản phẩm phần mềm “SSH Secure Shell” (SSH2), dựatrên giao thức SSH-2 Tuy nhiên, SSH2 không thay thế SSH1 trong một số lĩnh vực, có 2 lí

do Thứ nhất, SSH2 không có một số tiện ích, các đặc điểm có ích và cấu hình tuỳ chọn nhưSSH1 Thứ hai, SSH2 có nhiều giới hạn về việc đăng kí Bản chính SSH1 đã có sẵn miễn phí

từ Ylõnen và trường đại học kĩ thuật Helsinki Phiên bản mới hơn của SSH1 từ SCS vẫn cósẵn miễn phí cho hầu hết người dùng, thậm chí cả cấu hình thương mại cũng miễn phí chỉ cầnphần mềm đó không được trực tiếp bán cho việc thu lợi nhuận hoặc được tặng như là mộtdịch vụ cho khách hàng Vì thế, tuy SSH2 đã xuất hiện, nhưng hầu hết những người đang sửdụng SSH1 đều nhận ra vài ưu điểm của SSH1 so với SSH2 và tiếp tục sử dụng SSH1, banăm sau khi SSH2 ra đời thì SSH1 vẫn là phiên bản được sử dụng phổ biến trên Internet vàvượt qua cả SSH2 là giao thức tốt hơn và bảo mật hơn

Trang 6

Tuy nhiên, SSH2 cũng có hai sự phát triển hứa hẹn, đó là một bản nới lỏng của SSH2bản quyền và sự xuất hiện SSH-2 bổ sung Năm 2000, SCS mở rộng SSH2 bản quyền để chophép sử dụng khi làm việc riêng lẻ đối với các tổ chức hoạt động phi lợi nhuận Nó cũngđược mở rộng cho phép dùng miễn phí đối với Linux, NetBSD, FreeBSD và hệ điều hànhOpenBSD Cùng thời gian đó, OpenSSH (http://www.openssh.com) đã được phát triển nổibật như là một SSH bổ sung, được phát triển dưới hoạt động của dự án OpenBSD(http://www.openbsd.org) và miễn phí sẵn bên dưới OpenBSD có đăng kí OpenSH hỗ trợ cảSSH-1 và SSH-2 trong một chương trình Tuy OpenSSH được phát triển trên nền OpenBSDnhưng nó cũng hoạt động được trên Linux, Solais, AIX và những hệ điều hành khác Mặc dùOpenSSH tương đối mới và không có vài đặc điểm có trong SSH1 và SSH2 nhưng nó đangtrên đà phát triển nhanh chóng và hứa hẹn trở thành bản SSH chính trong tương lai không xa.

3 Các đặc điểm của SSH

- Tính bí mật ( Privacy / Encryption)

Tính bí mật có nghĩa là bảo vệ dữ liệu không bị phơi bày Mạng máy tính bình thường không bảo đảm tính bí mật, bất cứ ai truy cập vào mạng hoặc đến những host kết nối với mạng đều có thể sẽ đọc được mọi dữ liệu đi qua mạng Hiện nay tuy việc đảm bảo bí mật đã được quan tâm rất nhiều nhưng trong mạng vùng cục bộ thì vẫn còn xảy ra một số vấn đề nhưviệc mật khẩu bị kẻ xấu ăn cắp…

SSH cung cấp tính bí mật bằng việc mã hoá dữ liệu đi qua mạng Đó là việc mã hoá hai đầu dựa trên khoá ngẫu nhiên (-session key) (sinh ra để phục vụ cho một phiên kết nối vàđược huỷ đi khi phiên kết nối thành công) SSH hỗ trợ nhiều thuật toán mã hoá đối với phiên

dữ liệu, đó là những thuật toán mã hoá chuẩn như: AES, ARCFOUR, Blowfish, Twofish, IDEA, DES và triple-DES (3DES)

-Tính toàn vẹn (Integrity)

Là đảm bảo dữ liệu được truyền từ đầu này đến đầu kia của mạng không bị thay đổi Giao thức SSH sử dụng phương pháp kiểm tra toàn vẹn mật mã, phương pháp này kiểm tra cảviệc dữ liệu có bị biến đổi hay không và dữ liệu đến có đúng là do đầu kia gửi hay không Nó

sử dụng thuật toán băm khóa là MD5 và SHA-1

-Chứng minh xác thực (authentication)

Trang 7

Chứng minh xác thực là việc kiểm tra định danh của ai đó để xác định chính xác đúng

là người đó hay không Mỗi kết nối SSH bao gồm hai việc xác thực: client kiểm tra định danhcủa SSH server (server authentication) và server kiểm tra định danh của người sử dụng yêu cầu truy cập (user authentication) Server authentication chắc chắn rằng SSH server là chính xác và không phải là kẻ lừa đảo để đề phòng kẻ tấn công lại gửi kết nối mạng đến một máy khác Server authentication cũng bảo vệ việc bị kẻ xấu ngồi ở giữa hai bên, lừa gạt cả hai bên nghĩa là kẻ xấu sẽ nói với server nó là client và nói với client nó là server để đọc được dữ liệutrao đổi giữa hai bên

User authentication theo truyền thống là làm việc với mật khẩu Để xác thực định danh của bạn, bạn phải đưa ra mật khẩu, và dễ bị lấy cắp Thêm nữa, để dễ nhớ một mật khẩu, người ta thường đặt nó ngắn và có ý nghĩa nào đó nên dễ bị kẻ xấu đoán ra Đối với mật khẩu dài hơn thì người ta thường chọn những từ hoặc câu trong ngôn ngữ bẩm sinh nên cũng dễ bị bẻ khoá

Mỗi định danh và truy cập của người sử dụng có thể được cung cấp theo nhiều cách khác nhau Chẳng hạn,kiểu chứng thực rhost có thể được sử dụng, nhưng không phải là mặc định, nó đơn giản chỉ kiểm tra định danh của máy khách được liệt kê trong file rhost ( theo DNS và địa chỉ IP) Việc chứng thực mật khẩu là một cách rất thông dụng để định danh người sử dụng, nhưng ngoài ra cũng có các cách khác như chứng thực RSA, sử dụng ssh-keygen và ssh-agent để chứng thực các cặp khóa

-Phân quyền (authorization)

Việc phân quyền có tác dụng quyết định ai đó có thể hoặc không thể làm gì đó Nó diễn ra sau khi xác thực, vì bạn không thể biết là nên trao quyền nào đó mà không biết họ là ai.SSH server có nhiều cách khác nhau để giới hạn hành động của client Truy cập đến phiên đăng nhập tác động lẫn nhau: TCP port và X Window forwarding, key agent forwarding.Việcphân quyền có thể được điều khiển tại một mức server rộng (ví dụ: /etc/ssh/sshd_config file đối với OpenSH) hoặc theo tài khoản phụ thuộc vào phương thức xác thực sử dụng

- Chuyển tiếp (forwarding) hoặc tạo đường hầm (tunneling)

Chuyển tiếp hoặc tạo đường hầm là đóng gói dịch vụ dựa trên TCP khác như là Telnet hoặc IMAP trong một phiên SSH mang lại hiệu quả bảo mật của SSH đến với các dịch vụ dựa trênTCP khác SSH hỗ trợ 3 kiểu chuyển tiếp :

Trang 8

+ X là một hệ thống window phổ biến đối với các trạm làm việc Unix, một trong những đặcđiểm của nó là tính trong suốt Sử dụng X bạn có thể chạy ứng dụng X từ xa để mở các cửa

sổ của chúng trên màn hình hiển thị cục bộ của bạn

+ Agent forwarding SSH client có thể làm việc với một SSH agent trên cùng một máy Sử dụng một đặc trưng gọi là agent forwarding, client cũng có thể liên lạc với các agent trên những máy từ xa Điều thuận lợi là nó cho phép client trên nhiều máy làm việc với một agent

và có thể tránh vấn đề liên quan đến tường lửa

+ TCP port forwarding : SSH sử dụng TCP/IP làm cơ chế vận chuyển của nó, thường là cổng

22 trên máy chủ, vì nó mã hóa và giải mã lưu lượng truy cập qua kết nối

Những ứng dụng khác sử dụng giao thức TCP như telnet, SMTP, NNTP, IMAP vàmột số giao thức khác cũng có thể được hướng tới các port TCP khác dùng SSH Quá trìnhnày được gọi là TCP port forwarding Port forwarding được gọi là đường hầm vì kết nối SSHcung cấp một “đường hầm” xuyên qua để cho các kết nối TCP khác có thể đi qua Tuy nhiênSSH Port forwarding chỉ hoạt động trên giao thức TCP và không làm việc được trên các giaothức khác như UDP hay AppleTalk

Trang 9

4 Kiến trúc chung của một hệ thống SSH

SSH có khoảng một bộ 12 thuộc tính riêng lẻ, các thành phần tác động lẫn nhau cho

ra các nét đặc trưng riêng SSH cũng có khoá (keys), phiên (sessions) và những thành phầnkhác Dưới đây là một bản tóm tắt tổng quan của tất cả các thành phần

Server

Một chương trình cho phép đi vào kết nối SSH với một bộ máy, trình bày xác thực,cấp phép, … Trong hầu hết SSH bổ sung của Unix thì server thường là sshd

Client

Một chương trình kết nối đến SSH server và đưa ra yêu cầu như là “log me in” hoặc

“copy this file” Trong SSH1, SSH2 và OpenSSH, client chủ yếu là ssh và scp

Session

Một phiên kết nối giữa một client và một server Nó bắt đầu sau khi client xác thựcthành công đến một server và kết thúc khi kết nối chấm dứt Session có thể được tương tácvới nhau hoặc có thể là một chuyến riêng

Key

Một lượng dữ liệu tương đối nhỏ, thông thường từ mười đến một hoặc hai ngàn bit.Tính hữu ích của việc sử dụng thuật toán ràng buộc khoá hoạt động trong vài cách để giữkhoá: trong mã hoá, nó chắc chắn rằng chỉ người nào đó giữ khoá (hoặc một ai có liên quan)

có thể giải mã thông điệp, trong xác thực, nó cho phép bạn kiểm tra trễ rằng người giữ khoáthực sự đã kí hiệu vào thông điệp Có hai loại khóa: khoá đối xứng hoặc khoá bí mật vàkhoá bất đối xứng hoặc khóa công khai Một khoá bất đối xứng hoặc khoá công khai có haiphần: thành phần công khai và thàn phần bí mật

Trang 10

bị lộn với host key Khoá này thì không bao giờ được lưu trên đĩa và thành phần bí mật của

nó không bao giờ được truyền qua kết nối ở bất cứ dạng nào, nó cung cấp “perfect forwardsecrecy” cho phiên SSH-1

Session key

Là một giá trị phát sinh ngẫu nhiên, là khoá đối xứng cho việc mã hoá truyền thônggiữa một SSH client và SSH server Nó được chia ra làm 2 thành phần cho client và servertrong một loại bảo mật trong suốt quá trình thiết lập kết nối SSH để kẻ xấu không phát hiệnđược nó

Key generator

Một chương trình tạo ra những loại khoá lâu dài( user key và host key) cho SSH.SSH1, SSH2 và OpenSSH có chương trình ssh-keygen

Known hosts database

Là một chồng host key Client và server dựa vào cơ sở dữ liệu này để xác thực lẫnnhau

Agent

Một chương trình lưu user key trong bộ nhớ Agent trả lời cho yêu cầu đối với khoáquan hệ hoạt động như là kí hiệu một giấy xác thực nhưng nó không tự phơi bày khoá củachúng Nó là một đặc điểm rất có ích SSH1, SSH2 và OpenSSH có agent ssh-agent và

Trang 11

chương trình ssh*add để xếp vào và lấy ra khoá được lưu

5 Bên trong SSH

5.1 Bên trong SSH-2

Giao thức SSH-2 được chia làm 4 bộ phận chính, được diễn tả như 4 giao thức riêng

rẽ trong nhiều tài liệu IETF khác nhau Theo thông thường, chúng được sắp xếp cùng vớinhau để cung cấp thiết lập các dịch vụ mà hầu hết người dùng kết hợp chúng thành mộtSSH-2 đầy đủ

- Giao thức lớp vận chuyển SSH (SSH-TRANS)

- Giao thức xác thực SSH (SSH-AUTH)

- Giao thức kết nối SSH (SSH-CONN)

- Giao thức truyền file SSH (SSH-SFTP)

Trang 12

5.2 Tóm tắt cơ chế hoạt động của SSH-2

Một phiên hoạt động của SSH-2 trải qua 4 bước chủ yếu như sau:

+ Thiết lập kết nối ban đầu (SSH-TRANS) + Tiến hành xác thực lẫn nhau (SSH-AUTH) +

Mở phiên kết nối để thực hiện các dịch vụ (SSH-CONN) + Chạy các dịch vụ ứng dụng SSH( có thể là SSH-SFTP)

SSH-TRANS là khối xây dựng cơ bản cung cấp kết nối ban đầu, ghi chép giao thức,xác thực server, mã hoá cơ bản và các dịch vụ bảo toàn Sau khi thiết lập một kết nốiSSH-TRANS, client có một kết nối đơn, bảo mật Kế đến, client có thể dùng SSH-AUTHthông qua kết nối SSH-TRANS đến xác thực nó với server SSH-AUTH định nghĩa mộtkhung đối với việc nhiều cơ chế xác thực có thể được sử dụng, sửa chữa mọi thứ như là địnhdạng và những yêu cầu khác của xác thực, những điều kiện để thành công hoặc có thể bị lỗi

và làm thế nào client sử dụng được những phương thức có sẵn Có thể một phương thức bất

kỳ nào đó được thi hành, và giao thức cho phép trao đổi tùy ý một phần của bất kỳ cơ chếriêng nào để phần mở rộng giao thức dễ định nghĩa để kết hợp chặt chẽ với bất cứ phươngthức xác thực mong muốn nào trong tương lai SSH-AUTH chỉ yêu cầu một phương thức:public key với thuật toán DSS Ngoài ra còn có hai phương pháp xác định thêm: mật khẩu

và hostbased

Trang 13

Sau khi xác thực, SSH client yêu cầu giao thức SSH-CONN để cung cấp dịch vụ thôngqua một kênh đơn cung cấp bởi SSH-TRANS Điều này bao gồm mọi thứ cần để hỗ trợnhiều phiên tương tác và phiên không tương tác: những luồng đa thành phần khác nhau(hoặc channel) ngang qua kết nối bên dưới, quản lý X, TCP và agent forwarding, truyền tínhiệu thông qua kết nối, nén dữ liệu và thực thi chương trình từ xa Cuối cùng, một ứng dụng

có thể sử dụng SSH-SFTP qua một kênh SSH-CONN để cung cấp truyền file và các chứcnăng thao tác hệ thống tập tin từ xa

5.3 Giao thức lớp vận chuyển SSH (SSH- TRANS)

5.3.1 Tiến trình tạo kết nối

Để minh họa, chúng ta lấy một ví dụ một Client SSH chạy trên một máy Macintosh

sẽ đọc cấu hình file của nó và sau đó tạo một kết nối TCP đến phía bên đầu xa (ví dụhost.foo.net) như sau:

$ ssh -vv host.foo.net

OpenSSH_3.6.1p1+CAN-2003-0693, SSH protocols 1.5/2.0, OpenSSL 0x0090702f

debug1: Reading configuration data /Users/res/.ssh/config

debug1: Applying options for com

debug1: Applying options for *

debug1: Reading configuration data /etc/ssh/ssh_config

debug1: Connecting to host.foo.net [10.1.1.1] port 22.

debug1: Connection established.

5.3.2 Tiến trình chọn lựa phiên bản giao thức

Càng sớm càng tốt khi server chấp nhận kết nối, giao thức SSH bắt đầu Server thôngbáo phiên bản giao thức của nó bằng một chuỗi văn bản :

 Debug1: Remote protocol version 2.0, remote software version 4.1.0.34 SSH Secure Shell

 Bạn có thể thấy chuỗi này trong kết nối đơn giản của bạn đến server như telnet:

$ telnet host.foo.net 22

Trying 10.1.1.1…

Trang 14

Định dạng của thông báo là : SSH-<Phiên bản giao thức >-<Lời chú thích>

Trong trường hợp này, server dùng giao thức SSH-2 và phần mềm 4.1.0.34 của SSH

từ công ty bảo mật truyền thông (SSH Communication Sercurity) Mặc dù trường chú thích

có thể bao gồm mọi thức nhưng SSH server thường chỉ đưa vào đó tên và phiên bản sảnphẩm Điều này rất có ích để client nhận biết chính xác server dùng sản phẩm và phiên bảnnào để làm việc cho đúng và tránh lỗi hoặc không tương thích với nhau

Phiên bản giao thức số “1.99” có ý nghĩa đặc biệt: nó hỗ trợ cả hai giao thức SSH-1

và SSH-2 Tiếp theo, OpenSSH phân tích lời chú thích:

debug1: no match: 4.1.0.34 SSH Secure Shell

debug1: Enabling compatibility mode for protocol 2.0

debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2003-0693

Khi không tìm thấy một cái hợp với danh sách của nó thì nó biết là có vấn đề Nóchọn SSH-2 (chỉ chọn trong ví dụ này) và gửi chuỗi phiên bản của nó đến server giống nhưcách mà server đã gửi Nếu client và server đồng ý phiên bản của chúng đã tương thích thìtiến trình kết nối tiếp tục, nếu không thì cả hai có thể kết thúc kết nối

5.3.3 Tiến trình thương lượng tham số

Khi thiết lập kết nối và đồng ý trên một phiên bản, nhiệm vụ đầu tiên củaSSH-TRANS là chuẩn bị các thuộc tính bảo mật cơ bản của SSH:

 Tính bí mật (Privacy)

 Tính toàn vẹn (Integrity)

 Xác thực server

Trang 15

 Nén dữ liệu

Nhưng đầu tiên, hai bên phải đồng ý các thông số phiên, bao gồm các phương thức đểđạt được các thuộc tính Tiến trình diễn ra trong giai đoạn này gọi là tiến trình trao đổi khóa

 Debug1: SSH2_MSG_KEXINIT sent

Debug1: SSH2_MSG_KEXINIT receive

Client gửi thông báo KEXINIT (khởi tạo tạo đổi khoá) của nó và nhận một cái từserver Ở đây có sự chọn lựa nó đưa cho server:

 Thuật toán trao đổi khoá mà client hỗ trợ là: diffie-hellman-group1-sha1

  Thuật toán này được định nghĩa và yêu cầu bởi SSH-TRANS, chỉ rõ cho biết là dùngthủ tục Diffie-Hellman để thoả thuận khoá cùng với những tham số cụ thể khác (OakleyGroup 2 và thuật toán băm SHA-1)

diffie-hellman-group-exchange-sha1

  Tương tự, nó cho phép client chọn từ một danh sách các nhóm tham số, địa chỉ liênquan về những khả năng có thể bị tấn công dựa trên một nhóm được bố trí trước, định nghĩatrong tài liệu phác thảo IETF “secsh-dh-group-exchange”

gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==

gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==

  Những các tên trông kỳ quặc là được mã hóa Base64 – chúng hiển thị hai giá trị khácnhau của xác thực Kerberos, trao đổi Diffe-Hellman Một cơ sở hạ tầng Kerberos có sẵn cungcấp xác thực server tự động và linh hoạt mà không cần xác nhận SSH host key và file known-host riêng Xác thực Kerberos được cung cấp bởi GSSAPI và những tên phía sau là mã hóaBase64 của hàm băm MD5

 Trong điều kiện tóm tắt của thỏa thuận, một thuật toán trao đổi khoá SSH có hai đầu ra :

Trang 16

Một share secret, K Một “exchange hash”, H

  K là tham số bí mật chính đối với phiên: SSH-TRANS định nghĩa một phương thứcđối với secret K từ những nguồn gốc khoá khác nhau và những tham số mã hoá khác cần thiếtcho việc mã hoá cụ thể và thuật toán toàn vẹn dữ liệu được sử dụng trong kết nối SSH.Exchange hash H thì không  bí mật, mặc dù nó không cần thiết để lộ ra và nó là duy nhấttrong mỗi phiên

  Trao đổi khoá cũng diễn ra trên xác thực server để đề phòng việc giả mạo và tấn côngman-in-the-middle và có thể được lặp lại trong một kết nối để thay thế một cái cũ hoặc xácthực lại server Tiếp theo, client cung cấp một kiểu SSH host key mà nó có thể chấp nhận :

 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,null

  Trong trường hợp này, nó cung cấp RSA, DSA và null đối với trường hợp không cókhoá Nó bao gồm cả null bởi vì nó hỗ trợ Kerberos cho xác thực host Nếu dùng trao đổikhoá Kerberos thì không có SSH host key nào cần thiết đối với việc xác thực server Sau đó,client liệt kê những thuật toán mã hoá dữ liệu mà nó hỗ trợ :

 debug2: kex_parse_kexinit: aes128-cbc,3des-cbc, blowfish-cbc, cast128-cbc,arcfour,

   aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

 Dữ liệu chính thì không bao giờ được mã hoá trực tiếp với phương thức khoá côngkhai như RSA hoặc DSA bởi vì chúng làm quá chậm Thay vào đó, chúng ta sử dụng mộtthuật toán khoá đối xứng như trong danh sách phía trên để bảo vệ khoá phiên đối với việc mãhoá bằng  phương thức khoá công khai nếu thích hợp

Kế đến, client hiển thị danh sách các thuật toán toàn vẹn dữ liệu mà nó có sẵn:

 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,

 hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

  Thuật toán toàn vẹn được ứng dụng để mỗi thông điệp được gửi bởi giao thức hồ sơSSH cùng với một chuỗi số và một khoá phiên tạo ra một mã xác nhận thông điệp(MAC:message authentication code) được thêm vào mỗi thông điệp Bên nhận có thể dùngMAC và bản sao chép khoá phiên của nó để kiểm tra thông điệp không bị biến đổi trên đường

Ngày đăng: 21/03/2015, 00:06

TỪ KHÓA LIÊN QUAN

w