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

pdf 141 trang dienloan 5700
Bạn đang xem 20 trang mẫu của 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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

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:

  • pdfluan_an_nghien_cuu_xay_dung_giai_phap_tich_hop_mat_ma_vao_qu.pdf
  • pdfTomTat LuanAn NCS NNĐiệp.pdf
  • pdfTrangTT_NCS NN Điệp (TA).pdf
  • pdfTrangTT_NCS NN Điệp (TV).pdf