Luận án Nghiên cứu, xây dựng giải pháp tích hợp mật mã vào quá trình truyền tin đảm bảo an toàn thông tin trên mạng máy tính
Mạng máy tính là một hệ thống mở bao gồm nhiều máy tính và các thiết bị
được kết nối với nhau nhằm chia sẻ tài nguyên chung và liên lạc với nhau. Mạng
máy tính đã kết hợp được khả năng xử lý thông tin của các máy tính đơn lẻ và chức
năng truyền thông. Các mạng máy tính ở Việt nam hiện nay chủ yếu là các mạng sử
dụng hệ điều hành Windows, Linux, Unix với bộ giao thức truyền thông TCP/IP.
Sự phát triển bùng nổ của Internet đã tạo điều kiện cho các loại hình xâm
nhập trái phép vào các hệ thống công nghệ thông tin cả về chiều rộng (lây lan trên
quy mô toàn thế giới) lẫn chiều sâu (can thiệp vào hạt nhân hệ thống đích). Mỗi
ngày, các hệ thống mạng phải đối phó với hàng loạt đợt tấn công của tin tặc, khiến
nhiều hệ thống bị đình trệ, tắc nghẽn và tê liệt, gây ra những tổn hại to lớn. Các
phương thức tấn công ngày càng tinh vi, phức tạp có thể dẫn đến mất mát, sai lệch
thông tin, thậm chí có thể làn sụp đổ hoàn toàn hệ thống thông tin của các cơ quan
chính phủ, các ngân hàng, doanh nghiệp. Trong quá trình đẩy mạnh ứng dụng, phát
triển công nghệ thông tin, hội nhập quốc tế, với sự phát triển nhanh chóng của các
mạng thông tin truyền thông, các hệ thống thông tin phân tán và đặc biệt là mạng
thông tin toàn cầu Internet thì nhu cầu đảm bảo an ninh an toàn thông tin càng trở
lên cấp thiết. An toàn thông tin một vấn đề vừa mang tính thời sự, vừa mang tính
thách thức không chỉ đối với các chuyên gia tin học mà còn đối với sự phát triển của
các hệ thống thông tin toàn cầu
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu, xây dựng giải pháp tích hợp mật mã vào quá trình truyền tin đảm bảo an toàn thông tin trên mạng máy tính
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Ngọc Điệp NGHIÊN CỨU, XÂY DỰNG GIẢI PHÁP TÍCH HỢP MẬT MÃ VÀO QUÁ TRÌNH TRUYỀN TIN ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN MẠNG MÁY TÍNH LUẬN ÁN TIẾN SĨ KỸ THUẬT Hà Nội - 2017 ii BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Ngọc Điệp NGHIÊN CỨU, XÂY DỰNG GIẢI PHÁP TÍCH HỢP MẬT MÃ VÀO QUÁ TRÌNH TRUYỀN TIN ĐẢM BẢO AN TOÀN THÔNG TIN TRÊN MẠNG MÁY TÍNH CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN MÃ SỐ: 62.48.01.04 LUẬN ÁN TIẾN SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS HOÀNG MINH Hà Nội - 2017 i LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các nội dung, số liệu và kết quả nghiên cứu trình bày trong luận án là hoàn toàn trung thực và chưa có tác giả nào công bố trong bất cứ một công trình nào khác, các dữ liệu tham khảo được trích dẫn đầy đủ. Người cam đoan Nguyễn Ngọc Điệp ii LỜI CẢM ƠN Luận án này được thực hiện tại Học viện Công nghệ Bưu chính Viễn thông - Bộ Thông tin và Truyền thông. Nghiên cứu sinh xin được bày tỏ lòng biết ơn sâu sắc đến Thầy giáo PGS. TS. Hoàng Minh đã tận tình hướng dẫn, giúp đỡ, trang bị phương pháp nghiên cứu, kiến thức khoa học để tôi hoàn thành các nội dung nghiên cứu của luận án. Nghiên cứu sinh xin bày tỏ lòng biết ơn chân thành tới các thầy, cô của Học viện Công nghệ Bưu chính Viễn thông, các nhà khoa học thuộc Viện Khoa học - Công nghệ mật mã, Học viện Kỹ thuật mật mã đã đóng góp nhiều ý kiến quý báu giúp tôi hoàn thành các nội dung nghiên cứu của luận án. Nghiên cứu sinh xin trân trọng cảm ơn Học viện Công nghệ Bưu chính Viễn thông, Khoa Khoa Quốc tế và Đào tạo Sau đại học là cơ sở đào tạo và đơn vị quản lý, các đồng chí Lãnh đạo Viện Khoa học - Công nghệ mật mã, nơi tôi đang công tác đã tạo điều kiện thuận lợi, hỗ trợ và giúp đỡ tôi trong suốt quá trình học tập, nghiên cứu thực hiện luận án. Tôi xin trân trọng cảm ơn các bạn bè người thân và gia đình đã cổ vũ, động viên giúp đỡ, tạo điều kiện cho tôi hoàn thành luận án. Nghiên cứu sinh iii MỤC LỤC LỜI CAM ĐOAN ............................................................................................................ i LỜI CẢM ƠN ................................................................................................................. ii MỤC LỤC ...................................................................................................................... iii DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT .................................................... vi DANH MỤC CÁC HÌNH VẼ...................................................................................... viii DANH MỤC CÁC BẢNG ............................................................................................. ix MỞ ĐẦU .......................................................................................................................... 1 CHƯƠNG I: TỔNG QUAN VỀ GIẢI PHÁP CAN THIỆP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC TCP/IP .............................................................. 7 1.1. TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRÊN MẠNG .................................. 7 1.1.1. Một số khái niệm cơ bản về an toàn thông tin ....................................................... 7 1.1.2. Các nguy cơ mất an toàn thông tin ......................................................................... 8 1.1.3. Các hình thức tấn công thông tin trên mạng .......................................................... 8 1.1.4. Một số biện pháp an toàn ..................................................................................... 10 1.1.5. Các dịch vụ an toàn .............................................................................................. 10 1.1.5.1. Dịch vụ bí mật ................................................................................................... 11 1.1.5.2. Dịch vụ xác thực ................................................................................................ 12 1.1.5.3. Dịch vụ toàn vẹn dữ liệu. .................................................................................. 13 1.1.5.4. Dịch vụ không thể chối bỏ ................................................................................. 14 1.1.5.5. Dịch vụ kiểm soát truy nhập ............................................................................. 14 1.2. TÍCH HỢP MẬT MÃ VÀO HỆ THỐNG MẠNG DÙNG GIAO THỨC TCP/IP 15 1.2.1. Cấu trúc giao thức TCP/IP ................................................................................... 15 1.2.2. Tích hợp mật mã vào các tầng của giao thức TCP/IP .......................................... 17 1.2.2.1. Tích hợp mật mã vào tầng ứng dụng ................................................................ 19 1.2.2.2. Tích hợp mật mã vào tầng vận tải ..................................................................... 20 1.2.2.3. Tích hợp mật mã vào tầng Internet ................................................................... 21 1.2.2.4. Tích hợp mật mã vào tầng truy nhập mạng ...................................................... 22 1.2.3. Cài đặt các dịch vụ an toàn dùng kỹ thuật mật mã .............................................. 22 1.3. GIẢI PHÁP BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN ............................ 27 1.3.1. Một số chuẩn về an toàn và bảo mật thông tin..................................................... 27 1.3.2. Chuẩn về an toàn tầng vận tải SSL/TLS .............................................................. 31 1.3.2.1. Giới thiệu bộ giao thức ..................................................................................... 31 1.3.2.2. Các thành phần trong giao thức SSL ................................................................ 31 1.3.3. Một số tấn công cơ bản đối với giao thức SSL .................................................... 34 1.3.3.1. Tấn công quay lui phiên bản, quay lui thuật toán mã hóa. .............................. 34 iv 1.3.3.2. Tấn công làm mất thông điệp ChangeCipherSpec............................................ 35 1.3.3.3. Tấn công quay lui thuật toán trao đổi khoá ...................................................... 36 1.3.3.4. Tấn công padding CBC ..................................................................................... 37 1.3.3.5. Lỗ hổng HeartBleed trong OpenSSL ................................................................ 38 1.3.4. Giải pháp tích hợp mật mã nâng cao độ an toàn và hiệu quả cho bộ giao thức SSL/TLS ......................................................................................................................... 40 KẾT LUẬN CHƯƠNG 1 ............................................................................................... 42 CHƯƠNG II: NÂNG CAO HIỆU QUẢ THỰC THI, ĐỘ AN TOÀN CỦA CÁC THAM SỐ HỆ MẬT RSA VÀ THUẬT TOÁN MÃ KHỐI ......................................... 44 2.1. GIỚI THIỆU CHUNG ............................................................................................ 44 2.2. XÂY DỰNG TIÊU CHUẨN THAM SỐ CHO HỆ MẬT RSA ............................ 46 2.2.1. Một số tiêu chuẩn tham số RSA an toàn đã được công bố .................................. 47 2.2.2. Phương pháp xác định ngưỡng an toàn của Lenstra và Verheul ......................... 49 2.2.2.1. Ngưỡng an toàn ................................................................................................. 49 2.2.2.2. Độ dài modulo của hệ mật RSA ........................................................................ 50 2.2.2.3. Bảng tính ngưỡng an toàn và độ dài modulo an toàn cho hệ mật RSA ............ 51 2.2.3. Xác định ngưỡng an toàn theo quan điểm riêng .................................................. 51 2.2.3.1. Luận cứ xác định đối tượng tấn công ............................................................... 51 2.2.3.2. Công thức xác định các ngưỡng an toàn cho đến năm y (y 2016) .................. 52 2.2.4. Phương pháp mã hóa liên tiếp và tiêu chuẩn cho số công khai ........................... 55 2.2.4.1. Một số công thức, định nghĩa ............................................................................ 55 2.2.4.2. Giải bài toán RSA bằng phương pháp mã hóa liên tiếp ................................... 56 2.2.4.3. Phân tích modulo n của hệ RSA bằng phương pháp mã hóa liên tiếp ............. 57 2.2.4.4. Tiêu chuẩn cho tham số e .................................................................................. 59 2.3. MỘT ĐỀ XUẤT MA TRẬN AN TOÀN, HIỆU QUẢ CHO TẦNG TUYẾN TÍNH TRONG CÁC MÃ PHÁP DẠNG AES .............................................................. 61 2.3.1. Một số định nghĩa, khái niệm ............................................................................... 63 2.3.2. Phép MixColumns sử dụng ma trận dịch vòng và ma trận tựa vòng 4x4 ............ 64 2.3.3. Phân tích phép biến đổi MixColumns của AES ................................................... 66 2.3.4. Đề xuất ma trận tuyến tính tựa vòng cho AES .................................................... 68 2.3.5. Đánh giá cài đặt theo quan điểm phần mềm ........................................................ 71 2.3.6. Đánh giá về độ an toàn, số điểm bất động của tầng tuyến tính ............................ 74 2.3.7. Kết quả cài đặt thực nghiệm ................................................................................. 76 KẾT LUẬN CHƯƠNG 2 ............................................................................................... 79 CHƯƠNG III: TÍCH HỢP MẬT MÃ TRONG GIAO THỨC VÀ BỘ PHẦN MỀM BẢO MẬT DỮ LIỆU TRÊN ĐƯỜNG TRUYỀN ........................................................ 81 3.1. BỘ PHẦN MỀM OPENVPN ................................................................................. 81 3.1.1. Giới thiệu bộ phần mềm OpenVPN ..................................................................... 81 3.1.2. Sơ đồ tổng quát .................................................................................................... 82 3.1.3. Sơ đồ dòng dữ liệu ............................................................................................... 83 v 3.2. MỘT SỐ MODULE CHÍNH TRONG BỘ PHẦN MỀM ...................................... 85 3.2.1. Module VPN Daemon - Vận hành VPN theo cơ chế dịch vụ hệ thống ............... 85 3.2.2. Module TUN/TAP - quản lý giao diện mạng ảo .................................................. 87 3.2.3. Trao đổi khoá trong OpenVPN ............................................................................ 89 3.2.4. Mã hoá trong OpenVPN....................................................................................... 90 3.2.5. Xác thực tính toàn vẹn gói dữ liệu trong OpenVPN ............................................ 90 3.2.6. Giao thức trong OpenVPN ................................................................................... 91 3.3. TÍCH HỢP THAM SỐ RSA AN TOÀN VÀ THUẬT TOÁN MÃ KHỐI BC_VPN TRONG GIAO THỨC SSL/TLS. ................................................................. 93 3.3.1. Sử dụng tham số RSA an toàn trong giao thức SSL/TLS .................................... 94 3.3.2. Tích hợp thuật toán mã khối BC_VPN vào trong bộ giao thức SSL/TLS. .......... 98 3.3.3. Thử nghiệm, đánh giá bộ phần mềm bảo mật đường truyền PMBM_VPN. ..... 100 KẾT LUẬN CHƯƠNG III........................................................................................... 105 KẾT LUẬN .................................................................................................................. 107 A. Các kết quả Luận án đã đạt được: ........................................................................... 107 B. Những đóng góp mới của luận án: .......................................................................... 108 C. Hướng nghiên cứu tiếp theo: ................................................................................... 108 DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ ............................. 109 TÀI LIỆU THAM KHẢO ............................................................................................ 110 PHỤ LỤC: CÁC MODULE CHƯƠNG TRÌNH, KẾT QUẢ THỬ NGHIỆM .......... 115 vi DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT #(a) Lực lượng của a #(b) Lực lượng của b #{(X,Y)} Lực lượng của tập X, Y #S Số các phần tử của S N Vành số nguyên với phép cộng và phép nhân rút gọn theo modulo N * N Nhóm nhân cực đại của của vành N |e N N là bội của e, còn e là ước của N Gcd(a,b) Ước số chung lớn nhất của a và b Lmc(a,b) Bội số chung nhỏ nhất của a và b AES Advanced Encryption Standard Chuẩn mã hóa dữ liệu mở rộng ACL Access Control List Danh sách điều khiển truy nhập DLP Discrete Logarithm Problem Bài toán Logarith rời rạc DoS Denial of Service Tấn công từ chối dịch vụ DDoS Distributed Denial of Service Tấn công từ chối dịch vụ phân tán ECC Elliptic Curve Cryptosystem Hệ mật Elliptic ESP Encapsulating Security Payload Đóng gói mã hóa dữ liệu FPGA Field Programmable Gate Array Mảng cổng lập trình dạng trường HMAC Hash Message Authentication Code Hàm băm có xác thực KDF Key Derivation Function Hàm dẫn xuất khóa IKE Internet Key Exchange Trao đổi khóa trên Internet IDPS Intruction Detection Prevention System Hệ thống phát hiện và ngăn chặn truy cập IP Internet Protocol Giao thức liên mạng IPSec Internet Protocol Security Giao thức bảo mật IP ISO International Organization for Standardization Tổ chức tiêu chuẩn quốc tế LAN Local Area Network Mạng cục bộ MDS Maximum Distance Separable Phân tách có khoảng cách cực đại MITM Man In The Middle Tấn công kẻ đứng giữa MPLS Multi Protocol Label Switching Chuyển mạch nhãn đa giao thức OSI Open System Interconnection Mô hình tương tác giữa các hệ thống mở. QoS Quality Of Service Chất lượng dịch vụ vii VNI Virtual Networking Interface Giao diện mạng ảo SPN Substitution Permutation Network Mạng thay thế - hoán vị SSL Secure Sockets Layer Giao thức bảo mật tầng Socket RSA Rivest, Shamir and Adlemen Hệ mật khóa công khai RSA TCP Transport Control Protocol Giao thức điều khiển truyền tin TLS Transport Layer Security Giao thức bảo mật tầng vận tải UDP User Datagram Protocol Giao thức gói dữ liệu người dùng VPN Virtual Private Network Mạng riêng ảo viii DANH MỤC CÁC HÌNH VẼ Hình 1.1: Các hình thức tấn công thông tin trên mạng máy tính ................................... 9 Hình 1.2: Cấu trúc của giao thức TCP/IP .................................................................... 16 Hình 1.3: Cấu trúc gói tin IP ........................................................................................ 17 Hình 1.4: Mô hình bảo mật thông tin dùng kỹ thuật mật mã ........................................ 23 Hình 1.5: Mô hình mã hóa khóa đối xứng ............................... ... e1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15]; /* Vong 4: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19]; /* Vong 5: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23]; /* Vong 6: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27]; /* Vong 7: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30]; 124 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31]; /* Vong 8: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35]; /* Vong 9: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; if (Nr > 10) { /* Vong 10: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43]; /* Vong 11: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47]; if (Nr > 12) { /* Vong 12: */ s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48]; s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49]; s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50]; s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51]; /* Vong 13: */ t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52]; t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53]; t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54]; t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55]; } 125 } rk += Nr << 2; /* Vong cuoi Chuyen cac tu 32 bit thanh cac byte: */ s0 = (Te4[(t0 >> 24) ] & 0xff000000) ^ (Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t3 ) & 0xff] & 0x000000ff) ^ rk[0]; PUTU32(ct , s0); s1 = (Te4[(t1 >> 24) ] & 0xff000000) ^ (Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t0 ) & 0xff] & 0x000000ff) ^ rk[1]; PUTU32(ct + 4, s1); s2 = (Te4[(t2 >> 24) ] & 0xff000000) ^ (Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t1 ) & 0xff] & 0x000000ff) ^ rk[2]; PUTU32(ct + 8, s2); s3 = (Te4[(t3 >> 24) ] & 0xff000000) ^ (Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ (Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ (Te4[(t2 ) & 0xff] & 0x000000ff) ^ rk[3]; PUTU32(ct + 12, s3); } void Decrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]) { u32 s0, s1, s2, s3, t0, t1, t2, t3; /* Chuyen cac byte ban ma thanh cac tu 32 bit. Ap dung cong khoa dau: */ s0 = GETU32(ct ) ^ rk[0]; s1 = GETU32(ct + 4) ^ rk[1]; s2 = GETU32(ct + 8) ^ rk[2]; s3 = GETU32(ct + 12) ^ rk[3]; /* Vong 1: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7]; /* Vong 2: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9]; 126 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11]; /* round 3: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15]; /* Vong 4: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19]; /* Vong 5: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23]; /* Vong 6: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27]; /* Vong 7: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31]; /* Vong 8: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35]; /* Vong 9: */ 127 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39]; if (Nr > 10) { /* Vong 10: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43]; /* Vong 11: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47]; if (Nr > 12) { /* Vong 12: */ s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48]; s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49]; s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50]; s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51]; /* Vong 13: */ t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52]; t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53]; t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54]; t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55]; } } rk += Nr << 2; /* Xu ly vong cuoi, Chuyen cac tu 32 bit ve dang byte: */ s0 = (Td4[(t0 >> 24) ] & 0xff000000) ^ (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t1 ) & 0xff] & 0x000000ff) ^ rk[0]; PUTU32(pt , s0); s1 = (Td4[(t1 >> 24) ] & 0xff000000) ^ 128 (Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t2 ) & 0xff] & 0x000000ff) ^ rk[1]; PUTU32(pt + 4, s1); s2 = (Td4[(t2 >> 24) ] & 0xff000000) ^ (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t3 ) & 0xff] & 0x000000ff) ^ rk[2]; PUTU32(pt + 8, s2); s3 = (Td4[(t3 >> 24) ] & 0xff000000) ^ (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^ (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^ (Td4[(t0 ) & 0xff] & 0x000000ff) ^ rk[3]; PUTU32(pt + 12, s3); } 3. Cài đặt và thử nghiệm bộ chương trình PMBM_VPN Cấu hình máy chủ cài đặt PMBM_VPN Server: - Intel® Core™ i3-4160 CPU @ 3.60GHz 3.59GHz - Hệ điều hành: Micrsoft Windows Server 2012, 64 bit - RAM 8G Cấu hình máy trạm cài đặt PMBM_VPN Client: - Intel® Core™ i7-4710HQ CPU @ 2.50GHz 2.50GHz - Hệ điều hành: Micrsoft Windows 8, 64 bit - RAM 8G Nhóm đề tài sử dụng công cụ Jperf 2.2 để đánh giá tốc độ của bộ phần mềm PMBM_VPN. Dưới đây là một số kết quả thử nghiệm với thiết lập cấu hình bộ phần mềm PMBM_VPN sử dụng thuật toán mã khối AES ở chế độ OFB Cấu hình trên máy VPN Server sử dụng mã pháp AES-256-OFB 129 Hình 1: Cấu hình cho VPN Server Cấu hình trên máy VPN Client sử dụng mã pháp AES-256-OFB Hình 2: Cấu hình cho VPN Client 130 Một số kết quả thử nghiệm Hình 3: Tốc độ của phần mềm PMBM_VPN (01 luồng) Hình 4: Tốc độ của phần mềm PMBM_VPN (4 luồng)
File đính kèm:
- luan_an_nghien_cuu_xay_dung_giai_phap_tich_hop_mat_ma_vao_qu.pdf
- TomTat LuanAn NCS NNĐiệp.pdf
- TrangTT_NCS NN Điệp (TA).pdf
- TrangTT_NCS NN Điệp (TV).pdf