Tạo các tham số phiên

Một phần của tài liệu Công nghệ mạng riêng ảo SSL VPN và ứng dụng trong xây dựng hệ thống truyền tệp (Trang 74)

Việc tính toán tham số phiên được thực hiên ngay sau khi xác thực máy chủ tệp. Các tham số phiên sử dụng trong hệ thống gồm khoá bí mật dùng để mã hoá dữ liệu và khoá bí mật dùng để tính toán mã xác thực thông điệp. Quá trình tính toán tham số phiên được thực hiện theo hai bước:

Bước 1: tạo Master Secret.

Các giá trị ngẫu nhiên sinh bởi máy khách và máy chủ tệp, giá trị bí mật sinh bởi máy khách và các ký tự A, BB được dùng vào quá trình tạo Master Secret. Master Secret là một chuỗi 32 byte được sinh ra bởi thuật toán băm MD5 theo sơ đồ trong hình 3.5. Quá trình đó được mình hoạ bằng đoạn giả mã dưới đây:

Master Secret = MD5(Giá trị bí mật + MD5(A`+ Giá trị bí mật + Số ngẫu nhiên máy khách + Số ngẫu nhiên máy chủ)) +

+ MD5(Giá trị bí mật + MD5(BB`+ Giá trị bí mật + Số ngẫu nhiên máy khách + Số ngẫu nhiên máy chủ))

`A`

Hash Hash

Master Secret

Hình 3.5 Sơ đồ quá trình tạo Master Secret trong SSLFTP

MD5 MD5 MD5 MD5 Số ngẫu nhiên máy chủ tệp Số ngẫu nhiên máy khách Giá trị bí mật

`BB` Giá trị bí mật Số ngẫu nhiên máy khách Số ngẫu nhiên máy chủ tệp

Giá trị bí mật

Giá trị bí mật

Bước 2: tạo khoá phiên

Master Secret tạo ra cùng với số ngẫu nhiên máy khách, số ngẫu nhiên máy chủ tệp và hàm băm MD5 được dùng để tạo khoá mã hoá dữ liệu và khoá tính toán mã xác thực thông điệp. Quá trình được mô tả trong hình 3.6

`A`

Hash Hash Khoá tính toán

mã xác thực

Hình 3.6 Sơ đồ quá trình tạo khoá phiên

MD5 MD5 MD5 MD5 Số ngẫu nhiên máy chủ tệp Số ngẫu nhiên máy khách Giá trị bí mật `BB` Số ngẫu nhiên máy chủ tệp Số ngẫu nhiên máy khách Giá trị bí mật Master Secret Master Secret Khoá mã hoá dữ liệu

Khoá mã hoá và khoá tính toán mã xác thực là một chuỗi 16 byte và được băm 4 lần bằng hàm băm MD5 mô tả qua đoạn giả mã dưới đây

Master Secret = MD5(Master secret + MD5(A`+ Master secret + Số ngẫu nhiên máy khách + Số ngẫu nhiên máy chủ)) +

+ MD5(Master secret + MD5(BB`+ Master secret + Số ngẫu nhiên máy khách + Số ngẫu nhiên máy chủ))

3.4.5 Đóng gói và gửi các thông điệp

Quá trình đóng gói và gửi các thông điệp tại tầng bản ghi hoàn toán giống với quá trình này trong giao thức SSL. Sau khi phiên giao tiếp được thiết lập, giao thức SSLFTPRecord đóng gói dữ liệu, tính toán giá trị MAC, mã hoá dữ liệu rồi gửi nên đường truyền.

3.4.6 Các thuật toán sử dụng trong hệ thống.

Do SSLFTP là một giao thức được cải tiến từ giao thức SSL nên các thuật toán được sử dụng trong SSLFTP không hoàn toàn giống với các thuật toán sử dụng trong SSL. Trong khuôn khổ của luận văn tác giả không thể cài đặt hết được các thuật toán sử dụng trong giao thức SSLFTP, tuy nhiên đây là một giao thức được thiết kế mở, ta có thể dễ dàng bổ sung thêm các thuật toán mà không làm thay đổi đến hoạt động của giao thức.

SSLFTP được thiết kế với thuật toán mã hoá khoá công khai RSA dùng cho việc trao đổi khoá, thuật toán băm MD5 dùng cho quá trình tính toán MAC và tạo khoá phiên, thuật toán mã hoá khoá đối xứng AES ([18], [19]) dùng cho quá trình mã hoá và giải mã dữ liệu trao đổi trong hệ thống. Với việc sử dụng AES hiệu suất của hệ thống được nâng cao đáng kể, đồng thời đảm bảo được tính an toàn dữ liệu trên đường truyền. Thực nghiệm cho thấy tốc độ và độ mật của AES có thể cao hơn so với thuật toán mã hoá 3DES.

3.5 Thiết kế các thông điệp trao đổi dữ liệu

3.5.1 Khuôn dạng thông điệp của giao thức bản ghi SSLFTP

Khuôn dạng thông điệp trao đổi giữa hai bên gồm hai phấn chính, phần tiêu đề là phần nội dung được mô tả trong hình 3.7 (adsbygoogle = window.adsbygoogle || []).push({});

Kiểu nội

dung Độ dài Thông điệp của giao thức tầng trên Mã xác thực thông điệp

(tuỳ chọn)

Hình 3.7 Khuôn dạng thông điệp bản ghi SSLFTP

Mã hoá (tuỳ chọn)

Phần tiêu đề gồm hai trường, trường kiểu nội dung gồm 1 byte, giá trị của nó cho biết thông điệp của giao thức tầng trên được đóng gói bởi giao thức bản ghi SSLFTPRecord. SSLFTP hỗ trợ 4 kiểu thông điệp của giao thức tầng trên, các kiểu này được liệt kê trong bảng 3-2 dưới đây.

Bảng 3-2: Các kiểu nội dung tầng bản ghi Giá trị trường

kiểu nội dung Thông điệp của giao thức tầng trên

20 Thông điệp của giao thức ChangeCipherSpecFTP 21 Thông điệp của giao thức AlertFTP

22 Thông điệp của giao thức HandshakeFTP 23 Dữ liệu ứng dụng

Trường độ dài gồm 2 byte cho biết độ dài thông điệp của giao thức tầng trên, giá trị của trường này không quá 214.

Phần nội dung là thông điệp của giao thức tầng trên chuyển xuống, phần này có độ dài không cố định, nó có thể được mã hoá hoặc không. Độ lớn của phần nội dung không vượt quá 16KB.

3.5.2 Khuôn dạng thông điệp của các giao thức tầng trên

3.5.2.1 Thông điệp của giao thức SSLFTPHandshake

Mỗi thông điệp của giao thức SSLFTP Handshake gồm hai phần, phần tiêu đề và phần nội dung.

Phần tiêu đề gồm hai trường: trường kiểu thông điệp và trường độ dài thông điệp. Trường kiểu thông điệp gồm 1 byte chứa giá trị cho biết thông điệp cụ thể của giao thức SSLFTPHandshake. Bảng 3-3 liệt kê các giá trị của trường kiểu thông điệp.

Bảng 3-3: Các kiểu thông điệp SSLFTPHandshake Giá trị trường kiểu

thông điệp Ý nghĩa

1 Thông điệp ClientHelloFTP 2 Thông điệp ServerHelloFTP 11 Thông điệp AuthenRequestFTP 12 Thông điệp AuthenRespondFTP 13 Thông điệp ServerHelloDoneFTP 14 Thông điệp ClientkKeyExchangeFTP 15 Thông điệp FinishedFTP

Trường độ dài thông điệp gồm 2 byte chứa giá trị cho biết độ dài nội dung mỗi thông điệp của giao thức SSLFTPHandshake.

(1). Thông điệp ClientHelloFTP

Cấu trúc thông điệp ClientHelloFTP được mô tả trong hình vẽ 3.8.

Hình 3.8 Thông điệp ClientHelloFTP Độ dài thông điệp: 32 Độ dài: 36 Kiểu nội dung: 22 Kiểu thông điệp: 1

Giá trị ngẫu nhiên (32 bytes)

Hình 3.9 Thông điệp ServerHelloFTP Độ dài thông điệp: 32 Độ dài: 36 Kiểu nội dung: 22 Kiểu thông điệp: 2

Giá trị ngẫu nhiên (32 bytes)

Giá trị của trường kiểu nội dung là 1, trường độ dài thông điệp là 32. Phần nội dung thông điệp gồm một số ngẫu nhiên 32 byte.

Cấu trúc thông điệp ServerHelloFTP được mô tả trong hình 3.9. Trường kiểu thông điệp có giá trị 2, trường độ dài thông điệp có giá trị là 32 và phần nội dung là giá trị ngẫu nhiên 32 byte.

(3). Thông điệp AuthenRequestFTP

Thông điệp AuthenRequestFTP được mô tả trong hình 3.10. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.10 Khuôn dạng thông điệp

AuthenRequestFTP Kiểu nội dung: 22 Độ dài: 3 Kiểu thông điệp: 11 Độ dài thông điệp: 0

Trường kiểu thông điệp có giá trị 11, trường độ dài có giá trị 0, phần nội dung thông điệp rỗng.

(4). Thông điệp AuthenRespondFTP

Nội dung của thông điệp AuthenRespond được mô tả trong hình 3.11

Hình 3.11 Khuôn dạng thông điệp

AuthenRespondFTP Type: 14 Giá trị băm 1 (16 byte) ……….. Kiểu nội

dung: 22 Độ dài thay đổi Kiểu thông

điệp: 12 điệp: thay đổiĐộ dài thông

Giá trị băm n (16 byte)

Trường kiểu thông điệp có giá trị là 12, trường độ dài thông điệp có giá trị phụ thuộc vào số máy chủ tệp mà máy chủ xác thực quản lý. Phần nội dung chứa danh sách các thông tin dùng để xác thực, mỗi phần tử trong danh sách gồm 16 byte là giá trị của tên máy và khoá công khai tương ứng trong danh sách mà máy chủ tệp quản lý.

(5). Thông điệp ServerHelloDoneFTP

Hình 3.12 Khuôn dạng thông điệp ServerHelloDoneFTP Kiểu nội

dung: 22 Độ dài: 3 Kiểu thông

điệp: 13 Độ dài thông điệp: 0

Trường kiểu thông điệp có giá trị 13, trường độ dài có giá trị 3 và phần nội dung rỗng.

(6). Thông điệp ClientKeyExchangeFTP

Khuôn dạng của thông điệp được mô tả trong hình 3.13.

Hình 3.13 Thông điệp ClientKeyExchangeFTP

Type: 14

Giá trị bí mật được mã hoá (46 byte) Độ dài thông điệp: 46 Độ dài: 51 Kiểu nội dung: 22 Kiểu thông điệp: 14

Trường kiểu thông điệp có giá trị là 14, độ dài thông điệp là 46. Phần nội dung thông điệp là 46 byte giá trị bí mật được mã hoá bằng khoá công khai của máy chủ tệp.

(7). Thông điệp Finished

Khuôn dạng thông điệp này được mô tả trong hình 3.14.

Hình 3.14 Khuôn dạng thông điệp Finished

Giá trị băm nội dung các thông điệp đã gửi

(16 bytes) Mã xác thực thông điệp (16 bytes) Được mã hoá Kiểu nội dung: 22 Độ dài: 35 Kiểu thông

Trường kiểu thông điệp có giá trị là 15, trường độ dài có giá là 16. Phần nội dung là 16 byte giá trị băm MD5 của tất cả các thông điệp đã gửi trong pha bắt tay. Thông điệp Finished được mã hoá bằng thuật toán và khoá phiên đã tạo ra.

3.5.2.2 Thông điệp của giao thức SSLFTPChangeCipherSpec

Giao thức SSLFTPChangeCipherSpec được dùng để báo hiệu sự thay đổi trạng thái các tham số bảo mật, đồng thời các bên kích hoạt các dịch vụ bảo mật đã thương lượng. Thông điệp ChangeCipherSpecFTP rất đơn giản, chỉ gồm 1 byte với giá trị 1. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.15 Khuôn dạng thông điệp ChangeCipherSpecFTP Nội dung: 1

Kiểu nội

dung: 22 Độ dài: 1

3.5.2.3 Thông điệp của giao thức SSLFTPAlert

Giao thức AlertFTP dùng để thông báo lỗi xảy ra giữa các bên trong quá trình giao tiếp. Thông điệp Alert được đóng gói bởi giao thức bản ghi SSLFTP, ngoài phần tiều đề của tầng bản ghi, thông điệp AlertFTP gồm 1 trường mô tả lỗi.

Hình 3.16 Khuôn dạng thông điệp AlertFTP Mô tả lỗi: 1

Kiểu nội

dung: 21 Độ dài: 1

Trường mô tả lỗi có thể nhận một trong các giá trị trong bảng 3-4.

Bảng 3-4: Các thông báo lỗi của giao thức AlertFTP

Giá trị Ý nghĩa

10 Bên gửi cho biết nó nhận được một thông điệp sai.

20 Bên gửi cho biết nó nhận được một thông điệp với mã xác thực bị sai. 30 Bên gửi thông báo nó nhận được một thông điệp, và không giải mã được. 40 Bên gửi chó biết nó không thể thương lượng được tập dịch vụ an ninh.

Phần khai cấu trúc các thông điệp trao đổi trong hệ thống bằng ngôn ngữ lập trình cụ thể được mô tả trong phần phụ lục D ở cuối luận văn.

Các thông điệp được bảo vệ thông qua mã hoá và tính toán mã xác thực. Một mã xác thực được bổ sung vào thông điệp trước khi truyền. Tại nơi nhận, dữ liệu được giải mã, loại b mã xác thực, tính toán mã xác thực mới và so sánh với mã xác thực dữ liệu được gửi kèm. Nếu hai giá trị này giống nhau, dữ liệu không bị thay đổi trên đường truyền. Ngược lại, dữ liệu bị thay đổi trên đường truyền.

3.6.1 Tính toán m xác thực thông điệp

Hệ thống sử dụng hàm băm MD5 vào việc tính toán mã xác thực thông điệp MAC, giá trị MAC tạo ra có độ dài 16 byte được bổ sung vào đoạn dữ liệu.

Quá trình tính toán MAC được thực hiện qua 2 giai đoạn:

Giai đoạn 1 khoá tính toán mã xác thực, số thứ tự các thông điệp và nội dung thông điệp được cho qua hàm băm MD5 để tạo bản tóm lược của dữ liệu vào.

Giai đoạn 2 khoá tính toán mã xác thực thông điệp cùng với giá trị băm của giai đoạn 1 được cho qua hàm băm MD5 lần nữa. Kết quả băm trong giai đoạn hai chính là giá trị MAC được bổ sung vào thông điệp để kiểm tra tính toàn vẹn dữ liệu. Các giai đoạn trên được thể hiện qua hình vẽ 3.17.

MAC

Hình 3.17 Sơ đồ tính toán MAC trong SSLFTP

MD5 MD5 Số thứ tự của thông điệp Nội dung thông điệp Khoá tính mã xác thực Giá trị băm Khoá tính mã xác thực

Số thứ tự của thông điệp là số thông điệp mà hai bên đã trao đổi, giá trị khởi đầu của nó là 0 với thông điệp ChangeCipherSpecFTP, giá trị này được tăng thêm 1 mỗi khi thông điệp của giao thức bản ghi SSLFTP được gửi.

Sau khi tính toán và bổ sung mã xác thực tệp dữ liệu, cả dữ liệu và mã xác thực được mã hoá thuật toán mã hoá khoá đối xứng AES với độ dài khoá là 128 bit. Chi tiết thuật toán mã hoá AES có thể xem phụ lục A cuối luận văn. Thông điệp sau khi được bổ sung MAC và mã hoá có dạng như hình 3.18.

Hình 3.18 Bảo vệ thông điệp với MAC

Dữ liệu ứng dụng Mã xác thực (16 byte) Được mã hoá Kiểu nội dung: 23 Độ dài

3.7 Thiết kế module chương trình

Chương trình được viết bằng ngôn ngữ lập trình Visual Basic, công cụ giao tiếp là điều khiển Winsock hoạt động dựa trên kết nối TCP. Trong khuôn khổ luận văn tác giả chỉ trình bày lưu đồ thuật toán hoạt động của các module chương trình trong hệ thống, phần mã nguồn có thể xem chi tiết trong chương trình. Toàn bộ hệ thống gồm các module sau:

3.7.1 Module chương trình trên máy chủ xác thực (adsbygoogle = window.adsbygoogle || []).push({});

Module chương trình trên máy chủ xác thực làm nhiệm vụ lắng nghe các kết nối từ máy khách và cung cấp thông tin xác thực cho máy khách. Sơ đồ quá trình hoạt động của module trên máy chủ xác thực được mô tả trong hình 3.19

Gửi thông điệp AlertFTP

Kiểu nội dung =22

Hình 3.19 Sơ đồ hoạt động của module chương trình trên

máy chủ xác thực

Nhận một thông điệp

Đúng Đúng

Kiểu thông

điệp =11 Gửi thông điệp

AuthenRespondFTP Sai

Khi có yêu cầu xác thực từ máy khách, máy chủ xác thực kiểm tra thông điệp do máy khách gửi. Nếu kiểu của nội dung là 22 (thông điệp của giao thức bắt tay) và kiểu thông điệp là 11 (thông điệp AuthenRequest) thì máy chủ xác thực tính toán các giá trị băm từ thông tin mà nó quản lý rồi đóng gói trong thông điệp AuthenRespond và gửi cho máy khách. Ngược lại, máy chủ xác thực gửi trả lại máy khách một thông báo lỗi nhận được một thông điệp mà nó không hiểu.

3.7.2 Module chương trình trên máy chủ tệp

Module chương trình trên máy chủ tệp thực hiện nhiệm vụ khởi tạo phiên giao tiếp với máy khách, thiết lập kết nối và trao đổi dữ liệu với máy khách. Hoạt động của module trên máy chủ tệp được mô tả trong hình vẽ 3.20

Kích hoạt dịch vụ mã hoá

Đóng kết nối

Gửi thông điệp AuthenRequestFTP

Kiểu nội dung =20 Kiểu nội dung =21 Kiểu nội dung =22 Kiểu nội dung =23 Kiểu thông điệp =1 Kiểu thông điệp =14

Gửi thông điệp ChangeCipherSpecFTP Gửi thông điệp ServerHelloDoneFTP

Gửi thông điệp FinishedFTP

Kiểu thông điệp =15

Gửi thông điệp AlertFTP

Nhận một thông điệp Đúng Đúng Đúng Sai Đúng Sai Kiểm tra tính toàn vẹn Sai Đúng Đúng Tính toán MAC Giải mã dữ liệu So sánh MAC Xử lý dữ liệu Đúng Sai Đúng Sai Sai Sai

Tạo khoá phiên

Hình 3.20 Sơ đồ hoạt động của module chương trình trên

máy chủ tệp Sai

Sai

Khi nhận được một thông điệp từ máy khách nó phân tích kiểu nội dung và kiểu thông điệp nhận được rồi có bước xử lý tiếp theo dựa trên sơ đồ hình 3.20.

3.7.3 Module trên máy khách

Module chương trình trên máy khách thực hiện việc phân tích các thông điệp nhận được từ máy chủ tệp và máy chủ xác thực. Dựa trên kết quả phân tích được từ đó có các hành động tiếp theo. Sơ đồ hoạt động được mô tả trong hình 3.21

Kích hoạt dịch vụ mã hoá (adsbygoogle = window.adsbygoogle || []).push({});

Đóng kết nối

Gửi thông điệp AuthenRequestFTP

Kiểu nội dung =20 Kiểu nội dung =21 Kiểu nội dung =22 Kiểu nội dung =23 Kiểu thông điệp =13 Kiểu thông điệp =12

Gửi thông điệp ChangeCipherSpecFTP

Xác thực máy chủ tệp Gửi thông điệp ClientKeyExchangeFTP

Tạo khoá phiên

Kiểu thông điệp =15

Gửi dữ liệu đã mã hoá Tính toán MAC

Mã hoá dữ liệu

Thành công ?

Gửi thông điệp AlertFTP

Gửi hết ? Kết thúc Nhận một thông điệp Đúng Đúng Đúng Sai Đúng Sai Sai Đúng Kiểm tra tính toàn vẹn Sai Đúng Đúng Tính toán MAC Giải mã dữ liệu So sánh MAC Xử lý dữ liệu Đúng Sai Đúng Sai Đúng Sai Sai Sai

Một phần của tài liệu Công nghệ mạng riêng ảo SSL VPN và ứng dụng trong xây dựng hệ thống truyền tệp (Trang 74)