c¸c ho¹t ®éng chuyªn m«n Số hóa bởi Trung tâm Học liệu http //www lrc tnu edu vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TÔ QUANG HIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT TH[.]
ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TÔ QUANG HIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT THÔNG TIN VÀ ĐỀ XUẤT GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG THÔNG TIN TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VĨNH PHÚC LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2014 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TÔ QUANG HIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT THÔNG TIN VÀ ĐỀ XUẤT GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG THÔNG TIN TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VĨNH PHÚC Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Ngƣời hƣớng dẫn khoa học: TS PHÙNG VĂN ỔN THÁI NGUYÊN - 2014 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ i LỜI CÁM ƠN Em xin chân thành cảm ơn bảo tận tình TS Phùng Văn Ổn, ngƣời tận tình hƣớng dẫn, giúp đỡ em suốt thời gian thực luận văn Em xin chân thành cảm ơn PGS TSKH Nguyễn Xuân Huy – ngƣời tận tình giảng dạy hƣớng dẫn, hƣớng dẫn học phần “An toàn bảo mật thông tin”, “phƣơng pháp nghiên cứu khoa học” nguồn kiến thức cho luận văn Em xin chân thành cảm ơn thầy, cô Viện Công nghệ thông tin quý thầy, cô Trƣờng Đại học Công nghệ thông tin truyền thông – Đại học Thái Nguyên giảng dạy, giúp đỡ để chúng em có đƣợc kiến thức quý báu năm học qua Tôi xin chân thành cảm ơn bạn đồng nghiệp Khoa Công nghệ thông tin – Trƣờng Cao đẳng Kinh tế - Kỹ thuật Vĩnh Phúc cung cấp số liệu trạng hệ thống thông tin nhà trƣờng tơi tìm hiểu trạng bảo mật hệ thống thông tin nhà trƣờng, đƣa giải pháp khắc phục nguy bảo mật Con cảm ơn Cha, Mẹ gia đình, ngƣời dạy dỗ, khuyến khích, động viên lúc khó khăn, tạo điều kiện cho chúng nghiên cứu học tập Mặc dù cố gắng với tận tâm thầy giáo hƣớng dẫn song trình độ cịn hạn chế, nội dung đề tài rộng, nên Luận văn khó tránh khỏi thiếu sót hạn chế Do em mong nhận đƣợc thơng cảm góp ý kiến thầy bạn Thái Nguyên, tháng 01/2014 HỌC VIÊN Tô Quang Hiệp Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Nghiên cứu vấn đề bảo mật thông tin đề xuất giải pháp bảo mật cho hệ thống thông tin Trường Cao đẳng Kinh tế - Kỹ thuật Vĩnh Phúc” kết nghiên cứu riêng Các số liệu sử dụng luận văn trung thực Các kết nghiên cứu đƣợc trình bày luận văn chƣa đƣợc công bố công trình khác Thái Ngun, tháng 01/2014 HỌC VIÊN Tơ Quang Hiệp Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ iii MỤC LỤC Trang LỜI CÁM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC CÁC KÝ HIỆU, CHỮ CÁI VIẾT TẮT v DANH MỤC CÁC BẢNG vi DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vii MỞ ĐẦU CHƢƠNG TỔNG QUAN VỀ BẢO MẬT THÔNG TIN 1.1 Các định nghĩa bảo mật thông tin 1.2 Những hiểm hoạ ảnh hƣởng đến bảo mật thông tin 1.2.1 Động ảnh hƣởng đến bảo mật 1.2.2 Các hiểm họa rị rỉ thơng tin 1.2.3 Các hình thức cơng bảo mật hệ thống thơng tin CHƢƠNG CÁC BIỆN PHÁP BẢO MẬT 14 2.1 Các mức bảo mật thông tin 14 2.2 Firewall chế bảo mật Firewall 15 2.2.1 Giới thiệu Firewall 15 2.2.2 Các công nghệ FireWall 18 2.2.2.1 FireWall kiểu lọc gói: 18 2.2.2.2 FireWall kiểu cổng ứng dụng hay gọi máy chủ 19 2.2.2.3 FireWall kiểu kiểm duyệt trạng thái 20 2.2.3 Những đe dọa FireWall chống lại 20 2.3 Các kỹ thuật mã hoá 24 2.3.1 Tổng quan mã hóa: 24 2.3.2 Chuẩn mật mã nâng cao AES 30 2.3.2.1 Giới thiệu mã hóa AES 30 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ iv 2.3.2.2 Cấu trúc AES 32 34 2.3.2.4 Đánh giá thuật toán AES 38 2.3.3 Hệ mật mã khóa cơng khai RSA 39 2.3.3.1 Bài toán phân tích số nguyên 39 2.3.3.2 Định nghĩa tập làm việc hệ RSA 40 2.3.3.3 Quá trình tạo khoá, mã hoá giải mã 40 2.3.3.4 Tính q trình giải mã 42 2.3.3.5 Đánh giá hệ mật mã khóa cơng khai RSA 44 2.3.3.6 Một số phƣơng pháp công hệ mã RSA 45 2.3.3.7 Độ an toàn hệ mã RSA 47 CHƢƠNG BẢO MẬT HỆ THỐNG THÔNG TIN TRONG TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VĨNH PHÚC 49 3.1 Hệ thống thông tin trƣờng cao đẳng kinh tế - kỹ thuật Vĩnh Phúc 49 3.2 Đề xuất giải pháp bảo mật cho hệ thống 52 3.2.1 Biện pháp bảo mật files máy tính 52 3.2.2 Thiết lập sách bảo mật server 55 3.2.3 Sử dụng Firewall 57 3.2.4 Bảo mật sở liệu 61 3.2.5 Thực gửi thông tin bảo mật mạng 66 3.2.6 Cơ chế phân quyền phần mềm đào tạo 67 3.2.7 Xác minh hai bƣớc 70 3.2.8 Sử dụng công nghệ trắc sinh học 70 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 72 TÀI LIỆU THAM KHẢO 73 PHỤ LỤC LUẬN VĂN MÃ NGUỒN LỚP MÃ HÓA AES VÀ RSA Xây dựng lớp AES Xây dựng lớp RSA 21 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ v DANH MỤC CÁC KÝ HIỆU, CHỮ CÁI VIẾT TẮT ADSL AES BCB BSD CFB CPU CTR DES DNS DOS ECB FEAL FTP GNFS HAS ICMP IDEA IP ISA LAN MIPS NIST NNTP NSA NTFS OFB PKCS RSA SMTP TCP/UDP Asymmetric Digital Subscriber Line Advanced Encryption Standard Cipher Block Chaining Berkeley Software Distribution Cipher Feedback Mode Central Processing Unit Counter mode Data Encryption Standard Domain Name System Disk Operating System Electronic code book Fast Encryption Algorithm File Transfer Protocol General Number Field Sieve () Human Auditory System Internetwork Control Message Protocol International Data Encryption Algorithm) Internet Protocol Internet Security Accelerator Local Area Network Million instructions per second National Institute of Standards and Technology Network News Transfer Protocol National Security Agency New Technology File System Output Feedback Mode Public Key Cryptography Standards Revised Statutes Annotated Simple Mail Transfer Protocol Transmission control protocol/ User Datagram Protocol Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ vi DANH MỤC CÁC BẢNG Bảng: Chính sách lọc gói 18 Bảng: Các hàm AES 33 Bảng: Tóm tắt bƣớc tạo khoá, mã hoá, giải mã Hệ RSA 41 Bảng: Thống kê thiết bị CN thông tin trƣờng CĐ Kinh tế - Kỹ thuật VP 50 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ vii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1: Các mức bảo mật thông tin 14 Hình 2: Sử dụng Firewall bảo vệ hệ thống mạng với mơi trƣờng ngồi 16 Hình 3: Tấn cơng cƣớp kênh truyền 22 Hình 4: Tấn cơng thu trộm thông tin kênh truyền 24 Hình 5: Hệ mã hóa đối xứng 26 Hình 6: Hệ Mã hóa cơng khai 28 Hình 7: Cấu trúc khóa AES 32 Hình 8: Sơ đồ thuật tốn AES 34 Hình 9: Sơ đồ hệ thống mạng Trƣờng CĐ Kinh tế - Kỹ thuật Vĩnh Phúc 49 Hình 10: Giao diện chƣơng trình mơ mã hóa 53 Hình 11: Chức chọn kiểu tham số cho mã hóa 54 Hình 12: Cửa sổ chứa Bản gốc - Bản mã - Bản giải mã 55 Hình 13: Thiết lập sách bảo mật 56 Hình 14:Mơ mạng có tƣờng lửa bảo vệ 58 Hình 15:Mơ hình xác thực Cisco Secure 64 Hình 16: Mơ hình sử dụng tầng kiểm soát Proxy 64 Hình 17: Mơ hình cập nhật khai thác liệu máy trạm máy chủ 65 Hình 18: Mơ hình mã hóa liệu đƣờng truyền 66 Hình 19: Giao diện phần mềm quản lý đào tạo 67 Hình 20: Giao diện phần Quản trị hệ thống 68 Hình 21: Chức quản lý ngƣời dùng 69 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ MỞ ĐẦU V phát triển nhanh công nghệ thông tin, đa số lƣu trữ máy tính tạo nên thuận tiện cho ngƣời Sự phát triển mạng máy tính giúp ngƣời khai thác thơng tin cách dễ dàng nhƣng bên cạnh sinh vấn đề quan trọng việc bảo thông tin riêng cá nhân hay tập thể Thơng tin riêng (cá nhân) mật đăng nhập vào hệ thống, chiến lƣợc kinh doanh, phát minh sáng chế chƣa đƣợc công bố, kế hoạch quân … thông tin quan trọng, bị lộ ảnh hƣởng lớn đến cá nhân, tổ chức, hệ thống mặt nhƣ kinh tế, trị, thời gian, ngƣời … Khi có đƣợc thơng tin đăng nhập hệ thống thơng tin có nhiều quyền với hệ thống Khi thơng tin hệ thống bị sửa đổi, chuyển cho ngƣời khác, chí cịn bị phá hệ thống Nhƣ liền với phát triển hệ thống thơng tin bảo vệ hệ thống thông tin vấn đề quan trọng Để hệ thống thông tin hoạt động xác, tin cậy, an tồn đáp ứng đƣợc nhu cầu cá nhân, tập thể cần thiết phải áp dụng biện pháp, sách bảo mật Bảo mật thơng tin phƣơng thức nhằm bảo vệ tính bí mật thơng tin Phƣơng pháp chủ yếu biến đổi thông tin để ngƣời khác đọc, khơng thể hiểu đƣợc Chỉ ngƣời có thẩm quyền biến đổi ngƣợc lại để đọc đƣợc nội dung thơng tin Từ xƣa ngƣời có nhiều cách biến đổi thơng tin nhằm đảm bảo tính bí mật gửi nhƣ thay biểu tƣợng, ký hiệu, viết ngƣợc, viết vào gỗ sau phủ sáp lên, viết vào dây quấn quanh gậy, dùng hóa chất để viết hơ nóng chữ Nếu ngƣời có đƣợc thơng tin biến đổi biết đƣợc phƣơng pháp biến đổi thông tin dễ dàng biết cách để đọc đƣợc thơng tin Vậy để giữ bí mật thơng tin cần phải giữ bí mật phƣơng pháp biến đổi thơng tin Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ // Shift left by t = state[3][0]; state[3][0] = state[3][3]; state[3][3] = state[3][2]; state[3][2] = state[3][1]; state[3][1] = t; } // Tất hàng chuyển trụ bên phải void CAes::InvShiftRows(uchar state[][4]) { int t; // Shift right by t = state[1][3]; state[1][3] = state[1][2]; state[1][2] = state[1][1]; state[1][1] = state[1][0]; state[1][0] = t; // Shift right by t = state[2][3]; state[2][3] = state[2][1]; state[2][1] = t; t = state[2][2]; state[2][2] = state[2][0]; state[2][0] = t; // Shift right by t = state[3][3]; state[3][3] = state[3][0]; state[3][0] = state[3][1]; state[3][1] = state[3][2]; state[3][2] = t; } /******************** ** (Inv)MixColumns ********************/ // Thực bước MixColums nhân với sử dụng ma trận // Nhân Galios trường ^ Tất nhân trước tính bảng // Ngồi equivilent để XOR (Luôn phải tạo cột ban đầu // Giá trị destoyed.) void CAes::MixColumns(uchar state[][4]) { uchar col[4]; // Column col[0] = state[0][0]; col[1] = state[1][0]; col[2] = state[2][0]; col[3] = state[3][0]; Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ state[0][0] = gf_mul[col[0]][0]; state[0][0] ^= gf_mul[col[1]][1]; state[0][0] ^= col[2]; state[0][0] ^= col[3]; state[1][0] = col[0]; state[1][0] ^= gf_mul[col[1]][0]; state[1][0] ^= gf_mul[col[2]][1]; state[1][0] ^= col[3]; state[2][0] = col[0]; state[2][0] ^= col[1]; state[2][0] ^= gf_mul[col[2]][0]; state[2][0] ^= gf_mul[col[3]][1]; state[3][0] = gf_mul[col[0]][1]; state[3][0] ^= col[1]; state[3][0] ^= col[2]; state[3][0] ^= gf_mul[col[3]][0]; // Column col[0] = state[0][1]; col[1] = state[1][1]; col[2] = state[2][1]; col[3] = state[3][1]; state[0][1] = gf_mul[col[0]][0]; state[0][1] ^= gf_mul[col[1]][1]; state[0][1] ^= col[2]; state[0][1] ^= col[3]; state[1][1] = col[0]; state[1][1] ^= gf_mul[col[1]][0]; state[1][1] ^= gf_mul[col[2]][1]; state[1][1] ^= col[3]; state[2][1] = col[0]; state[2][1] ^= col[1]; state[2][1] ^= gf_mul[col[2]][0]; state[2][1] ^= gf_mul[col[3]][1]; state[3][1] = gf_mul[col[0]][1]; state[3][1] ^= col[1]; state[3][1] ^= col[2]; state[3][1] ^= gf_mul[col[3]][0]; // Column col[0] = state[0][2]; col[1] = state[1][2]; col[2] = state[2][2]; col[3] = state[3][2]; state[0][2] = gf_mul[col[0]][0]; state[0][2] ^= gf_mul[col[1]][1]; state[0][2] ^= col[2]; state[0][2] ^= col[3]; state[1][2] = col[0]; state[1][2] ^= gf_mul[col[1]][0]; state[1][2] ^= gf_mul[col[2]][1]; state[1][2] ^= col[3]; state[2][2] = col[0]; state[2][2] ^= col[1]; Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ state[2][2] ^= gf_mul[col[2]][0]; state[2][2] ^= gf_mul[col[3]][1]; state[3][2] = gf_mul[col[0]][1]; state[3][2] ^= col[1]; state[3][2] ^= col[2]; state[3][2] ^= gf_mul[col[3]][0]; // Column col[0] = state[0][3]; col[1] = state[1][3]; col[2] = state[2][3]; col[3] = state[3][3]; state[0][3] = gf_mul[col[0]][0]; state[0][3] ^= gf_mul[col[1]][1]; state[0][3] ^= col[2]; state[0][3] ^= col[3]; state[1][3] = col[0]; state[1][3] ^= gf_mul[col[1]][0]; state[1][3] ^= gf_mul[col[2]][1]; state[1][3] ^= col[3]; state[2][3] = col[0]; state[2][3] ^= col[1]; state[2][3] ^= gf_mul[col[2]][0]; state[2][3] ^= gf_mul[col[3]][1]; state[3][3] = gf_mul[col[0]][1]; state[3][3] ^= col[1]; state[3][3] ^= col[2]; state[3][3] ^= gf_mul[col[3]][0]; } void CAes::InvMixColumns(uchar state[][4]) { int idx; uchar col[4],t; // Column col[0] = state[0][0]; col[1] = state[1][0]; col[2] = state[2][0]; col[3] = state[3][0]; state[0][0] = gf_mul[col[0]][5]; state[0][0] ^= gf_mul[col[1]][3]; state[0][0] ^= gf_mul[col[2]][4]; state[0][0] ^= gf_mul[col[3]][2]; state[1][0] = gf_mul[col[0]][2]; state[1][0] ^= gf_mul[col[1]][5]; state[1][0] ^= gf_mul[col[2]][3]; state[1][0] ^= gf_mul[col[3]][4]; state[2][0] = gf_mul[col[0]][4]; state[2][0] ^= gf_mul[col[1]][2]; state[2][0] ^= gf_mul[col[2]][5]; state[2][0] ^= gf_mul[col[3]][3]; state[3][0] = gf_mul[col[0]][3]; state[3][0] ^= gf_mul[col[1]][4]; Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ state[3][0] ^= gf_mul[col[2]][2]; state[3][0] ^= gf_mul[col[3]][5]; // Column col[0] = state[0][1]; col[1] = state[1][1]; col[2] = state[2][1]; col[3] = state[3][1]; state[0][1] = gf_mul[col[0]][5]; state[0][1] ^= gf_mul[col[1]][3]; state[0][1] ^= gf_mul[col[2]][4]; state[0][1] ^= gf_mul[col[3]][2]; state[1][1] = gf_mul[col[0]][2]; state[1][1] ^= gf_mul[col[1]][5]; state[1][1] ^= gf_mul[col[2]][3]; state[1][1] ^= gf_mul[col[3]][4]; state[2][1] = gf_mul[col[0]][4]; state[2][1] ^= gf_mul[col[1]][2]; state[2][1] ^= gf_mul[col[2]][5]; state[2][1] ^= gf_mul[col[3]][3]; state[3][1] = gf_mul[col[0]][3]; state[3][1] ^= gf_mul[col[1]][4]; state[3][1] ^= gf_mul[col[2]][2]; state[3][1] ^= gf_mul[col[3]][5]; // Column col[0] = state[0][2]; col[1] = state[1][2]; col[2] = state[2][2]; col[3] = state[3][2]; state[0][2] = gf_mul[col[0]][5]; state[0][2] ^= gf_mul[col[1]][3]; state[0][2] ^= gf_mul[col[2]][4]; state[0][2] ^= gf_mul[col[3]][2]; state[1][2] = gf_mul[col[0]][2]; state[1][2] ^= gf_mul[col[1]][5]; state[1][2] ^= gf_mul[col[2]][3]; state[1][2] ^= gf_mul[col[3]][4]; state[2][2] = gf_mul[col[0]][4]; state[2][2] ^= gf_mul[col[1]][2]; state[2][2] ^= gf_mul[col[2]][5]; state[2][2] ^= gf_mul[col[3]][3]; state[3][2] = gf_mul[col[0]][3]; state[3][2] ^= gf_mul[col[1]][4]; state[3][2] ^= gf_mul[col[2]][2]; state[3][2] ^= gf_mul[col[3]][5]; // Column col[0] = state[0][3]; col[1] = state[1][3]; col[2] = state[2][3]; col[3] = state[3][3]; state[0][3] = gf_mul[col[0]][5]; state[0][3] ^= gf_mul[col[1]][3]; state[0][3] ^= gf_mul[col[2]][4]; Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ state[0][3] state[1][3] state[1][3] state[1][3] state[1][3] state[2][3] state[2][3] state[2][3] state[2][3] state[3][3] state[3][3] state[3][3] state[3][3] ^= gf_mul[col[3]][2]; = gf_mul[col[0]][2]; ^= gf_mul[col[1]][5]; ^= gf_mul[col[2]][3]; ^= gf_mul[col[3]][4]; = gf_mul[col[0]][4]; ^= gf_mul[col[1]][2]; ^= gf_mul[col[2]][5]; ^= gf_mul[col[3]][3]; = gf_mul[col[0]][3]; ^= gf_mul[col[1]][4]; ^= gf_mul[col[2]][2]; ^= gf_mul[col[3]][5]; } /******************** ** Tìm lỗi ********************/ // Hiển thị trạng thái dạng hex void CAes::printstate(uchar state[][4]) { int idx,idx2; for (idx=0; idx < 4; idx++) for (idx2=0; idx2 < 4; idx2++); // printf("%02x",state[idx2][idx]); //puts(""); } //Hien thi key hien tai duoi dang hex void CAes::print_rnd_key(uint key[]) { int idx; for (idx=0; idx < 4; idx++); // printf("%08x",key[idx]); // puts(""); } /******************** ** MỞ RỘNG KHÓA ********************/ // Thực thay SubWord cho KeyExpansion Mỗi byte số nguyên cung cấp // Được nhìn lên hộp thay thay giá trị tương ứng uint CAes::SubWord(uint word) { unsigned int result; result = (int)aes_sbox[(word >> 4) & 0x0000000F][word & 0x0000000F]; Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ result += (int)aes_sbox[(word >> 12) & 0x0000000F][(word >> 8) & 0x0000000F] > 20) & 0x0000000F][(word >> 16) & 0x0000000F] > 28) & 0x0000000F][(word >> 24) & 0x0000000F] 24) ) // Thực hành động tạo phím sử dụng tất vòng // Mã hóa "chìa khóa" chìa khóa đầu vào người dùng cung cấp, "w" lịch đầu ra, // "Keysize" chiều dài theo bit "chìa khóa", phải 128, 192, 256 void CAes::KeyExpansion(uchar key[], uint w[], int keysize) { int Nb=4,Nr,Nk,idx; uint temp,Rcon[]={0x01000000,0x02000000,0x04000000,0x08000000,0x1000000 0,0x20000000, 0x40000000,0x80000000,0x1b000000,0x36000000,0x6c000000,0xd8000000, 0xab000000,0x4d000000,0x9a000000}; switch (keysize) { case 128: Nr = 10; Nk = 4; break; case 192: Nr = 12; Nk = 6; break; case 256: Nr = 14; Nk = 8; break; default: return; } for (idx=0; idx < Nk; ++idx) { w[idx] = ((key[4 * idx]) 192) { AddRoundKey(state,&key[56]); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[52]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[48]) ;InvMixColumns(state); } else { AddRoundKey(state,&key[48]); } InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[44]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[40]) ;InvMixColumns(state); } else { AddRoundKey(state,&key[40]); } InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[36]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[32]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[28]) ;InvMixColumns(state); Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[24]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[20]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[16]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[12]) ;InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[8]); InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[4]); InvMixColumns(state); InvShiftRows(state);InvSubBytes(state);AddRoundKey(state,&key[0]); // Copy từ state mảng out[0] = state[0][0]; out[1] = state[1][0]; out[2] = state[2][0]; out[3] = state[3][0]; out[4] = state[0][1]; out[5] = state[1][1]; out[6] = state[2][1]; out[7] = state[3][1]; out[8] = state[0][2]; out[9] = state[1][2]; out[10] = state[2][2]; out[11] = state[3][2]; out[12] = state[0][3]; out[13] = state[1][3]; out[14] = state[2][3]; out[15] = state[3][3]; } CAes::CAes() { }; CAes::~CAes(){} Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Xây dựng lớp RSA a) Tệp RSA.h // -#ifndef RSAH #define RSAH // -#endif #include class CRsa { public: CRsa(); ~CRsa(void); private: unsigned int p; unsigned int q; unsigned int n; unsigned int phi; unsigned int e; unsigned int d; unsigned int SinhSoNgauNhien(unsigned int unMin, unsigned int unMax); bool KiemTraSoNguyenTo(int nNumber); unsigned int TimUSCLN(unsigned int a, unsigned int b); unsigned int TinhToan(unsigned int a,unsigned int b, unsigned int c); unsigned int MaHoaRSA(unsigned int m); unsigned int GiaiMaRSA(unsigned int c); public: UnicodeString MaHoaString(UnicodeString); UnicodeString GiaiMaString(UnicodeString); void TaoKhoaRSA(); unsigned int Getp() { return p; } unsigned int Getq() { return q; } unsigned int Getd() { return d; } unsigned int Gete() { Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ return e; } unsigned int Getn() { return n; } unsigned int Getphi() { return phi; } }; b) Tệp RSA.cpp // -#pragma hdrstop #include "RSA.h" // -#pragma package(smart_init) CRsa::CRsa(void) { srand((unsigned int)time(0)); TaoKhoaRSA(); } CRsa::~CRsa(void) { } UnicodeString CRsa::MaHoaString( UnicodeString String) { const WCHAR * wcStr = String.w_str(); int Length = wcslen(wcStr); WCHAR* wcStrReturn = new WCHAR[Length+1]; for (int i = ; i < Length ; i++) { wcStrReturn[i] = (WCHAR)MaHoaRSA((unsigned short)wcStr[i]); } wcStrReturn[Length] = '\0'; UnicodeString cStr(wcStrReturn); delete[] wcStrReturn; return cStr; } Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ UnicodeString CRsa::GiaiMaString( UnicodeString String) { const WCHAR * wcStr = String.w_str(); int Length = wcslen(wcStr); WCHAR* wcStrReturn = new WCHAR[Length+1]; for (int i = ; i < Length ; i++) { wcStrReturn[i] = (WCHAR)GiaiMaRSA((unsigned short)wcStr[i]); } wcStrReturn[Length] = '\0'; UnicodeString cStr(wcStrReturn); delete[] wcStrReturn; return cStr; } unsigned int CRsa::SinhSoNgauNhien(unsigned int unMin, unsigned int unMax) { return (rand() % (unMax - unMin + 1)) + unMin; } bool CRsa::KiemTraSoNguyenTo(int nNumber) { if (nNumber < 2) { return false; } if (nNumber == 2) { return true; } for (int i = ; i 65536); n = p*q; phi = (p - 1)*(q - 1); < e < phi for (e = ; e < phi ; e++) { if (TimUSCLN(e,phi) == 1) { break; } } for (int x = ; ; x++) { if ((x*phi + 1) % e == 0) { d = (x*phi + 1) / e; break; } } } unsigned int CRsa::TinhToan(unsigned int a,unsigned int b, unsigned int c) Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ { int temp = a; for (int i = b - 1; i > ; i ) { temp = (a*temp) % c; } return temp; } unsigned int CRsa::MaHoaRSA(unsigned int m) { return TinhToan(m,e,n); } unsigned int CRsa::GiaiMaRSA(unsigned int c) { return TinhToan(c,d,n); } Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ... HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TÔ QUANG HIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT THÔNG TIN VÀ ĐỀ XUẤT GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG THÔNG TIN TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VĨNH PHÚC... CHƢƠNG BẢO MẬT HỆ THỐNG THÔNG TIN TRONG TRƢỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT VĨNH PHÚC 49 3.1 Hệ thống thông tin trƣờng cao đẳng kinh tế - kỹ thuật Vĩnh Phúc 49 3.2 Đề xuất giải pháp bảo mật cho. .. http://www.lrc-tnu.edu.vn/ ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn ? ?Nghiên cứu vấn đề bảo mật thông tin đề xuất giải pháp bảo mật cho hệ thống thông tin Trường Cao đẳng Kinh tế - Kỹ thuật Vĩnh Phúc”