đổ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
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 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.
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 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 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.
Hình 3.15 Khuôn dạng thông điệp ChangeCipherSpecFTP 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 AlertFTPMô tả lỗi: 1 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
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á
Đó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
Gửi thông điệp FinishedFTP
Đóng kết nối
Hình 3.21 Sơ đồ hoạt động của module chương trình trên máy khách
Sai Sai
3.8 Cài đặt thử nghiệm
Để hệ thống vận hành và đảm bảo hiệu quả cần ít nhất là 3 máy tính được nối Internet, cấu hình mỗi máy tính như sau: bộ vi xử lý Pentium IV 3.0 GHz, 512 MB Ram, ổ cứng 30 GHz…Do điều kiện hạn chế nên trong khuôn khổ luận văn tác giả mới chỉ cài đặt thử nghiệm hệ thống trên 3 máy tính được kết nối mạng LAN với các máy được cài đặt hệ điều hành Windows XP.
3.8.1 Cài đặt trên máy chủ xác thực
Sau khi cài đặt giao diện module chương trình trên máy chủ xác thực có dạng như hình 3.22. Nút lệnh trên Form thực hiện hành động lắng nghe hoặc ngừng lắng nghe các kết nối từ máy khách. Hộp text box có giá trị 8866 là số hiệu cổng mà máy chủ xác thực đang nghe. Phía dưới là bảng trạng thái, mỗi hàng tương ứng với trạng thái của một máy khách kết nối bao gồm số định danh một kết nối (ID), trạng thái kết nối (Connected hoặc Listening) và địa chỉ IP của máy khách kết. Địa chỉ IP của máy khách được thử nghiệm là 192.168.0.20, của máy chủ xác thực là 192.168.0.10 và của máy chủ tệp là 192.168.0.5
Hình 3.22 Giao diện chương trình trên máy chủ xác thực
3.8.2 Cài đặt trên máy chủ tệp
Giao diện module chương trình trên máy chủ tệp có dạng như hình 3.23. Hộp textbox có giá trị 8866 cho biết số hiệu cổng mà máy chủ tệp đang lắng nghe. Nút lệnh thực hiện việc lắng nghe hoặc kết thúc việc lắng nghe các kết nối từ má khách. Phía dưới là bảng trạng thái kết nối và hộp danh sách các tệp đã được gửi. Trường ID là số hiệu máy khách kết nối, Remote là địa chỉ IP của máy khách đang kết nối, File Name là tên tệp mà máy khách đang gửi, Progress là phần trăm kích thước tệp đã gửi.
3.8.3. Cài đặt trên máy khách
Giao diện trên máy khách có dạng như hình 3.24. Các thuộc tính kết nối là tên máy chủ và cổng mà máy khách muốn kết nối. Nút lệnh Connect thực hiện việc kết nối tới máy chủ tệp. Khi máy khách kết nối tới máy chủ tệp, việc xác thực máy chủ tệp được diễn ra ngay trong khi thiết lập kết nối. Nút lệnh Disconnect huỷ b kết nối đang tồn tại. Phần dưới là khung cửa sổ cho phép chọn một tệp trên đĩa cứng để gửi, mục File Name là tên file sẽ gửi, nút lệnh Send File thực hiện việc gửi một file. Phía dưới là thanh trạng thái cho biết số byte đã gửi, tốc độ truyền và thời gian thực hiện.
Hình 3.24. Giao diện chương trình trên máy khách
Trên đây là một số kết quả khi thực hiện hệ thống. Hệ thống chạy ổn định và đáp ứng các yêu cầu cơ bản là mô ph ng được hoạt động của một hệ thống truyền tệp theo giao thức SSL, mức độ bảo mật của hệ thống là khá tốt. Tuy nhiên, do thời gian hạn chế nên việc tối ưu hoá hệ thống chưa được đề cập đến nhiều, tốc độ của hệ thống hệ thống còn chưa được cao….