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

đồ án môn học bảo mật thông tin đề tài giao thức secure shell ssh

35 5 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Trong thực tế, người ta còn sử dụng SSH để phát triển tunnel bảo mật cho các giao thức ứng dụng.. Xác thực bằng public key Cách này sử dụng một cặp khóa – public-key và private-key – đư

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM

ĐỒ ÁN MÔN HỌCBẢO MẬT THÔNG TIN

Đề tài

Ngành: CÔNG NGHỆ THÔNG TIN

Chuyên ngành: CÔNG NGHỆ PHẦN MỀM

Giảng viên hướng dẫn: Ths Đặng Văn Thành Nhân

Sinh viên thực hiện:

Võ Duy Khang 1911062456 –Phạm Trung Tín - 1911060595 Ngô Trí Trường - 1911061502 Lê Văn Thắng - 1911060565

Lớp: 19DTHB2

TP Hồ Chí Minh, 2022

Trang 2

2.1.1 Mã hóa Symmetric Encryption 8

2.1.2 Mã hóa Asymmetric Encryption 8

2.3.1 The transport layer (Lớp truyền tải) 11

2.3.2 The user authentication layer (Lớp xác thực người dùng) 11

2.3.3 The connection layer (Lớp kết nối) 12

2.4 RSA 12

2.4.1 Thuật toán RSA là gì? 12

2.4.2 RSA được sử dụng ở đâu? 13

2.4.3 RSA được sử dụng như thế nào? 14

2.4.4 Áp dụng RSA với SSH 16

CHƯƠNG 3 ƯU ĐIỂM, NHƯỢC ĐIỂM VÀ LỖ HỔNG 21

3.1 Ưu điểm của giao thức SSH 21

3.2 Nhược điểm của giao thức SSH 21

Trang 3

1

LỜI CẢM ƠN

Lời đầu tiên, nhóm em xin được bày tỏ lòng biết ơn đến quý thầy cô Trường đại học Công nghệ TP.HCM, quý thầy cô khoa Công nghệ thông tin đã tạo điều kiện cho nhóm em tiếp cận, thực hiện Đồ án môn học môn Bảo mật thông tin

Đặc biêt, nhóm em xin bày tỏ lòng biết ơn chân thành sâu sắc đến thầy ThS Đặng Văn Thành Nhân đã trực tiếp hướng dẫn, chỉ bảo, truyền thụ những kiến thức, kỹ năng quý giá để giúp nhóm em có thể hoàn thành đồ án

Trong quá trình làm đồ án, do kiến thức, kỹ năng cũng như kinh nghiệm chuyên ngành còn nhiều hạn chế nên nhóm em vẫn còn nhiều thiếu sót khi tìm hiểu, trình bày về đồ án môn học Nhóm em rất mong nhận được sự quan tâm, đánh giá, góp ý của thầy để bài của nhóm em được hoàn thiện hơn

Xin chân thành cảm ơn!

Trang 4

2

LỜI CAM ĐOAN

Tôi cam đoan đây là đề tài của nhóm chúng tôi Những kết quả và các số liệu trong đồ án là do nhóm tôi tự thực hiện dưới sự hướng dẫn của thầy Võ Hoàng Khang Không sao chép bất cứ các nguồn nào khác Tôi hoàn toàn chịu trách nhiệm trước nhà trường về sự cam đoan này

TP HCM, Ngày 15 tháng 10 năm 2022

Sinh viên thực hiện Võ Duy Khang

Phạm Trung Tín Lê Văn Thắng Ngô Trí Trường

Trang 5

3

DANH MỤC HÌNH ẢNH

Hình 1 1 SSH là gì? 4

Hình 1 2 Cơ chế hoạt động 5

Hình 2 1 Mô hình hệ mã hóa đối xứng 8

Hình 2 2 Mô hình Client - Server 9

Hình 2 3 SSH2 10

Hình 2 4 Thuật toán RSA 13

Hình 2 5 Các thành phần SSH key 16

Hình 2 6 Cách thức hoạt động SSH key 17

Hình 2 7 Tạo SSH Keys bằng PuTTyGen 18

Hình 2 8 Sau khi tạo SSH key 19

Trang 6

Hình 1 1 SSH là gì? SSH tạo ra cơ chế xác thực qua mật khẩu mạnh, hình thành mối liên kết giao tiếp dữ liệu mã hóa ra giữa hai máy qua môi trường internet Ngày nay giao thức SSH được giấy quản trị mạng sử dụng phổ biến trong quá trình quản lý, điều chỉnh ứng dụng từ xa Nó cho phép vị tự đăng nhập vào mạng máy tính và thực hiện một số tác vụ cơ bản như dịch chuyển file

1.1.2 Cơ chế hoạt động

SSH gồm cả giao thức mạng và bộ tiện ích cơ bản để triển khai chính giao thức đó Cụ thể, SSH ứng dụng ảnh mô hình client-server, kết nối với vùng hiển thị Session và vùng Session chạy

Trang 7

5 Hình 1 2 Cơ chế hoạt động

Khi triển khai SSH hệ thống sẽ hỗ trợ cả giao thức ứng dụng, sử dụng cho trình giả lập Terminal hoặc truyền file Trong thực tế, người ta còn sử dụng SSH để phát triển tunnel bảo mật cho các giao thức ứng dụng

Mục đích SSH được tạo ra là để thay thế cho trình giả lập Terminal, cơ chế đăng nhập không an toàn (Telnet, Rlogin) Giao thức SSH hỗ trợ tính năng đăng nhập, khởi chạy Terminal Session thông qua hệ thống điều khiển từ xa

Chức năng cơ bản nhất của giao thức SSH là liên kết với một host từ xa, ứng với một phiên Terminal bằng dòng lệnh “ssh server.example.org” Dòng lệnh này có thể liên kết Client với một máy chủ server.example.com thông qua ID người dùng UserName

Trang 8

Vào tháng 12 năm 1995, Ylönen thành lập SSH Communications Security để tiếp thị và phát triển SSH Phiên bản gốc của phần mềm SSH sử dụng nhiều phần mềm miễn phí khác nhau, chẳng hạn như GNU libgmp, nhưng các phiên bản sau do SSH Communications Security phát hành ngày càng phát triển thành phần mềm độc quyền

Người ta ước tính rằng đến năm 2000, số lượng người dùng đã tăng lên 2 triệu người

1.2.2 Phiên bản 2

"Secsh" là tên chính thức của Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF) cho nhóm công tác IETF chịu trách nhiệm về phiên bản 2 của giao thức SSH Năm 2006, một phiên bản sửa đổi của giao thức, SSH 2, đã được thông qua -làm tiêu chuẩn Phiên bản này không tương thích với SSH-1 SSH-2 có cả tính năng bảo mật và cải tiến tính năng so với SSH 1 Ví dụ, bảo mật tốt hơn thông -qua trao đổi khóa Diffie – Hellman và kiểm tra tính toàn vẹn mạnh mẽ thông qua mã xác thực tin nhắn Các tính năng mới của SSH 2 bao gồm khả năng chạy bất -kỳ số lượng phiên trình bao nào qua một kết nối SSH duy nhất Do tính ưu việt và phổ biến của SSH 2 so với SSH 1, một số triển khai như libssh (v0.8.0 +), Lsh - -và Dropbear chỉ hỗ trợ giao thức SSH-2

1.2.3 Phiên bản 1.99

Vào tháng 1 năm 2006, ngay sau khi phiên bản 2.1 được thành lập, RFC 4253 chỉ định rằng máy chủ SSH hỗ trợ 2.0 cũng như các phiên bản trước phải

Trang 9

7 xác định phiên bản giao thức của nó là 1.99 Số phiên bản này không phản ánh bản sửa đổi phần mềm lịch sử mà là một phương pháp để xác định khả năng tương thích ngược

1.2.4 OpenSSH và OSSH

Năm 1999, các nhà phát triển, mong muốn có một phiên bản phần mềm miễn phí, đã khởi động lại quá trình phát triển phần mềm từ bản phát hành 1.2.12 của chương trình SSH gốc, chương trình được phát hành cuối cùng theo giấy phép nguồn mở Đây là cơ sở mã cho phần mềm OSSH của Björn Grönvall Ngay sau đó, các nhà phát triển OpenBSD đã tách mã của Grönvall và tạo ra OpenSSH, được xuất xưởng với Bản phát hành 2.6 của OpenBSD Từ phiên bản này, một nhánh "tính di động" đã được hình thành để chuyển OpenSSH sang các hệ điều hành khác

Tính đến năm 2005, OpenSSH là cách triển khai SSH phổ biến nhất, là phiên bản mặc định trong một số lượng lớn các bản phân phối hệ điều hành OSSH trong khi đó đã trở nên lỗi thời OpenSSH tiếp tục được duy trì và hỗ trợ giao thức SSH 2, sau khi xóa hỗ trợ SSH 1 khỏi cơ sở mã trong bản phát hành - -OpenSSH 7.6

Trang 10

8

CHƯƠNG 2 KIẾN TRÚC VÀ THUẬT TOÁN

2.1 Các kỹ thuật mã hóa

2.1.1 Mã hóa Symmetric Encryption

Là một dạng mã hóa sử dụng secret key (chìa khóa bí mật) ở cả 2 chiều mã hóa và giải mã tin nhắn bởi cả host và client Quá trình tạo symmetric key được thực hiện bởi key exchange algorithm Khi thực hiện kỹ thuật này, chỉ những người có chìa khóa (mật khẩu) mới có thể giả mã tin nhắn trong quá trình chuyển

Hình 2 1 Mô hình hệ mã hóa đối xứng

2.1.2 Mã hóa Asymmetric Encryption

Khác với Symmetric Encryption, phương thức Asymmetric Encryption lại dùng 2 khóa riêng biệt để phục vụ mã hóa và giải mã Bao gồm khóa công khai Public Key và khóa riêng tư Private Key, hình thành cặp khóa Public-private key pair

Public key luôn công khai, Private key luôn được giữ tuyệt mật và không chia sẽ với bất kỳ bên thứ ba nào Vậy nhưng cũng cần lưu ý rằng Asymmetric Encryption không thể mã hóa tất cả SSH Nó chỉ có thể sử dụng khi trao đổi thuật toán khóa Trước thời điểm bắt đầu một phiên, phía 2 đầu trao đổi cần đồng ý khởi tạo cặp khóa Public – Private trong ngắn hạn Đồng thời, chia sẻ Private Key để tạo ra một Secret Key chung

Trang 11

9

2.1.3 Mã hóa Hashing

Hashing một chiều là phương thức mã hóa ứng dụng phổ biến trong Secure Shell Connection Khác với Symmetric Encryption và Asymmetric Encryption, Hashing không sử dụng vào mục đích giải mã Chúng hình thành sau mỗi lần nhập liệu, không thể khai thác Như vậy, Hashing sẽ không thể quay lại để giải mã

2.2.2 Xác thực bằng public key

Cách này sử dụng một cặp khóa – public-key và private-key – được tạo ra dựa trên thuật toán mã hóa public key Cặp khóa sau khi được tạo ra từ một máy -tính, ta sẽ lấy public key lưu vào server, khi truy cập ta sẽ dựa vào private- -key lưu trên máy local và đặc tính liên quan mật thiết tới nhau của chúng để thiết lập kết nối Kiểu xác thực này còn cho cho phép chúng ta thiết lập một kết nối an toàn một cách tự động hóa (automation)

Hình 2 2 Mô hình Client - Server

Trang 13

11

2.3.1 The transport layer (Lớp truyền tải)

Thường sử dụng Giao thức điều khiển truyền (TCP) của TCP / IP , dành riêng cổng số 22 làm cổng lắng nghe máy chủ Lớp này xử lý trao đổi khóa ban đầu cũng như xác thực máy chủ và thiết lập mã hóa, nén và xác minh tính toàn vẹn Nó hiển thị cho lớp trên một giao diện để gửi và nhận các gói tin rõ ràng với kích thước mỗi gói lên đến 32,768 byte, nhưng mỗi lần triển khai có thể cho phép nhiều hơn Lớp truyền tải cũng sắp xếp để trao đổi lại khóa, thường là sau khi 1 GB dữ liệu đã được chuyển hoặc sau một giờ trôi qua, tùy điều kiện nào xảy ra trước

2.3.2 The user authentication layer (Lớp xác thực người dùng)

Xử lý xác thực máy khách và cung cấp một bộ thuật toán xác thực Xác thực hướng đến máy khách : khi một người được nhắc nhập mật khẩu, đó có thể là máy khách SSH, không phải máy chủ Máy chủ chỉ phản hồi các yêu cầu xác thực của máy khách Các phương pháp xác thực người dùng được sử dụng rộng rãi bao gồm:

 Mật khẩu: một phương pháp xác thực mật khẩu đơn giản, bao gồm một cơ sở cho phép thay đổi mật khẩu Không phải tất cả các chương trình đều thực hiện phương pháp này

 Khóa công khai: một phương pháp xác thực dựa trên khóa công khai , thường hỗ trợ ít nhất các cặp khóa DSA , ECDSA hoặc RSA , với các triển khai khác cũng hỗ trợ chứng chỉ X.509

 keyboard-interactive (Tương tác bàn phím): một phương pháp linh hoạt trong đó máy chủ gửi một hoặc nhiều lời nhắc để nhập thông tin và máy khách hiển thị chúng và gửi lại phản hồi do người dùng nhập vào Được sử dụng để cung cấp xác thực mật khẩu một lần như S / Key hoặc SecurID Được sử dụng bởi một số cấu hình OpenSSH khi PAM là nhà cung cấp xác thực máy chủ lưu trữ cơ bản để cung cấp hiệu quả xác thực mật khẩu, đôi khi dẫn đến việc không thể đăng nhập bằng máy khách chỉ hỗ trợ phương pháp xác thực mật khẩu thuần túy

mở rộng để thực hiện xác thực SSH bằng các cơ chế bên ngoài như Kerberos 5 hoặc NTLM , cung cấp khả năng đăng nhập một lần vào các

Trang 14

12 phiên SSH Các phương pháp này thường được triển khai bởi các triển khai SSH thương mại để sử dụng trong các tổ chức, mặc dù OpenSSH có triển khai GSSAPI đang hoạt động

2.3.3 The connection layer (Lớp kết nối)

Xác định khái niệm kênh, yêu cầu kênh và yêu cầu chung, xác định các dịch vụ SSH được cung cấp Một kết nối SSH duy nhất có thể được ghép thành nhiều kênh logic đồng thời, mỗi kênh truyền dữ liệu theo hai chiều Yêu cầu kênh được sử dụng để chuyển tiếp dữ liệu kênh cụ thể ngoài băng tần, chẳng hạn như kích thước đã thay đổi của cửa sổ đầu cuối hoặc mã thoát của quy trình phía máy chủ Ngoài ra, mỗi kênh thực hiện điều khiển luồng riêng của mình bằng cách sử dụng kích thước cửa sổ nhận Máy khách SSH yêu cầu chuyển tiếp cổng phía máy chủ bằng cách sử dụng một yêu cầu chung Các loại kênh tiêu chuẩn bao gồm:

 Shell cho các shell đầu cuối, SFTP và các yêu cầu thực thi (bao gồm cả chuyển SCP)

 Direct-tcpip cho các kết nối được chuyển tiếp từ máy khách đến máy chủ

 Chuyển tiếp tcpip cho các kết nối được chuyển tiếp từ máy chủ đến máy khách

- Bản ghi DNS SSHFP (RFC 4255) cung cấp dấu vân tay khóa máy chủ công khai để hỗ trợ xác minh tính xác thực của máy chủ

2.4 RSA

2.4.1 Thuật toán RSA là gì?

RSA là một hệ mã hóa bất đối xứng được phát triển bởi Ron Rivest, Adi Shamir và Leonard Adleman (tên của nó cũng chính là tên viết tắt của 3 tác giả này) và được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử Trong hệ mã hóa này, public key có thể chia sẻ công khai cho tất cả mọi người

Hoạt động của RSA dựa trên 4 bước chính: sinh khóa, chia sẻ key, mã hóa và gi i mã ả

Trang 15

13

Hình 2 4 Thuật toán RSA

2.4.2 RSA được sử dụng ở đâu?

Mã hóa RSA thường được sử dụng kết hợp với các sơ đồ mã hóa khác Và cho các chữ ký kỹ thuật số có thể chứng minh tính xác thực và tính toàn vẹn của một thông điệp Nó thường không được sử dụng để mã hóa toàn bộ thư và file vì nó kém hiệu quả và tốn tài nguyên hơn so với mã hóa key đối xứng

Để làm cho mọi thứ hiệu quả hơn, một file thường sẽ được mã hóa bằng thuật toán key đối xứng Sau đó key đối xứng sẽ được mã hóa bằng mã hóa RSA Theo quy trình này, chỉ người có quyền được truy cập vào RSA private key mới có thể giải mã key đối xứng

Nếu không thể truy cập key đối xứng, thì không thể giải mã file gốc Phương pháp này có thể được sử dụng để bảo mật các thư và file mà không mất nhiều thời gian và tài nguyên

Mã hóa RSA có thể được sử dụng trong một số hệ thống khác nhau Nó có thể vận hành trong OpenSSL, wolfCrypt, cryptlib và một số thư viện mật mã khác

Trang 16

14

2.4.3 RSA được sử dụng như thế nào?

Thuật toán RSA bao gồm 4 bước: T o khóa, phân kh i khóa, mã hóa và ạ ốgi i mã ả

Một nguyên tắc cơ bản đằng sau RSA là quan sát thấy rằng thực tế để tìm ba số nguyên dương rất lớn e , d và n , sao cho với lũy thừa mô-đuncho tất cả các số nguyên m (với 0 ≤ m< n ):

(me) m (mod n) d

và biết rằng e và n, hoặc thậm chí , có thể cực kỳ khó khăn để tìm mra d Thanh ba (≡) ở đây biểu thịsự đồng dạng mô-đun (có nghĩa là khi bạn chia (m ) edcho và n mcho n , cả hai đều có cùng phần dư)

Ngoài ra, đối với một số phép toán, thuận tiện là thứ tự của hai lũy thừa có thể được thay đổi và mối quan hệ này cũng ngụ ý

(md) e≡ m (mod n).

RSA liên quan đếnkhóa công khai và khóa riêng tư Khóa công khai có thể được mọi người biết đến và được sử dụng để mã hóa tin nhắn Mục đích là các thư được mã hóa bằng khóa công khai chỉ có thể được giải mã trong một khoảng thời gian hợp lý bằng cách sử dụng khóa riêng Khóa công khai được biểu diễn bằng số nguyên và n e, và khóa riêng bằng số nguyên d(mặc dù ncũng được sử dụng trong quá trình giải mã, vì vậy nó cũng có thể được coi là một phần của khóa riêng) m đại diện cho thông điệp (được chuẩn bị trước đó với một kỹ thuật nhất định được giải thích bên dưới)

Bước 1: Tạo khóa Các khóa cho thuật toán RSA được tạo theo cách sau: 1 Chọn hai s nguyên t l n q và p ố ố ớ

 Để làm cho việc phân tích khó hơn, p và q nên được chọn ngẫu nhiên, có độ ớn tương tự nhau, nhưng khác nhau về l độ dài

 Các s nguyên nguyên t có thố ố ể được tìm th y m t cách hi u qu ấ ộ ệ ảb ng cách s d ng ki m tra tính nguyên th y ằ ử ụ ể ủ

 P và q nên được giữ bí mật 2 Tính n = pq

 N được sử dụng làm môđun cho cả khóa công khai và khóa riêng Độ dài của nó, thường được biểu thị bằng bit, là độ dài khóa

Trang 17

15

 N được phát hành như một phần c a khóa công khai ủ3. Ta đã biết φ(N) = (p -1)(q - 1), và có thể dùng định lý Trung Hoa đểgi m b t tính toán ả ớ

4 Chọn m t s t nhiên sao cho ộ ố ự e 1 < e < φ(n) và là s nguyên t cùng ố ốnhau với φ(n)

5 Tính d sao cho de = 1 (mod φ(n)) Một số lưu ý:

 Các s nguyên t ố ố thường được chọn bằng phương pháp thử xác su ất. Các bước 4 và 5 có thể thực hiển bằng giải thuật Euclid mở rộng  Bước 5 có cách viết khác sao cho d = cũng là số ự t

nhiên, khi đó sử dụng giá trị d mod (p - 1)(q - 1)Bước 2: Mã hóa

Giả sử người A muốn gửi đoạn thông tin M cho người B Đầu tiên A chuyển M thành một số m < n theo một hàm có thể đạo ngược (từ m có thể xác định lại M) được thỏa thuận trước

Lúc này người A có m và n cũng như e do B gửi A sẽ tính c là bản mã hóa của m theo công thức:

C = m emod nBước 3: Giải mã Người B nhận c từ A và biết khóa bí mật d B có thể tìm được m từ c theo công thức sau:

m = c mod n d

Biết m, B tìm lạ M theo phương pháp đã thỏa thuận trước Quá trình giải mã vì ta có:

cd ≡ (me)d m ed (mod p) Do ed ≡ 1 (mod p - 1) và ed ≡ (mod q -1) nên: m m (mod p) ed

và m m (mod q) ed

Ngày đăng: 20/08/2024, 15:13

w