Nghiên cứu phương pháp tấn công chuẩn mật mã khối (DES) nhờ hệ thống tính toán hiệu năng cao

84 38 0
Nghiên cứu phương pháp tấn công chuẩn mật mã khối (DES) nhờ hệ thống tính toán hiệu năng cao

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC LỤC Trang phụ bìa Lời cam đoan i Lời cảm ơn ii Mục lục iii Danh mục từ viết tắt tiếng Anh vi Danh mục bảng vii Danh mục hình vẽ, đồ thị viii MỞ ĐẦU Chƣơng I GIỚI THIỆU VỀ CHUẨN MÃ HÓA DỮ LIỆU DES (DATA ENCRYPTION STANDARD) 1.1 Giới thiệu Thuật toán mã hoá DES 1.2 Quy trình mã hóa theo DES 1.3 Lập mã giải mã DES 1.3.1 Quy trình lập mã DES 1.3.2 Thực mã hóa DES theo sơ đồ 1.3.3 Tính khóa k1, k2, , k16 từ khóa gốc K 1.3.4 Tính hàm f(Ri-1, ki) 1.3.5 Quy trình giải mã DES 12 1.3.6 Độ an toàn Chuẩn mã hóa liệu DES 12 1.4 Các chế độ mã hóa DES 13 1.4.1 Chế độ mã (EBC) 13 1.4.2 Chế độ liên kết khối mã (CBC) 14 Chƣơng II CÁC PHƢƠNG PHÁP THÁM MÃ CHUẨN MÃ HÓA DỮ LIỆU DES, CÁC HỆ THỐNG CHUYÊN DỤNG PHỤC VỤ THÁM MÃ DES 15 2.1 Một số khái niệm 15 2.2 Các phƣơng pháp thám mã 16 2.2.1 Thám mã đƣờng tắt 16 2.2.1.1 Thám mã vi sai 16 iii 2.2.1.2 Thám mã tuyến tính 19 2.2.1.3 Thám mã phi tuyến 19 2.2.1.4 Thám mã vi sai tuyến tính 20 2.2.1.5 Một số phƣơng pháp thám mã đƣờng tắt khác 20 2.2.2 Thám mã hộp đen (vét cạn để tìm khóa) 20 2.3 Các hệ thống chuyên dụng phục vụ thám mã 21 2.3.1 Các phần cứng chuyên dụng 21 2.3.2 Các hệ thống tính tốn hiệu cao 22 Chƣơng III NGHIÊN CỨU, ĐỀ XUẤT PHƢƠNG PHÁP THÁM MÃ DES .24 3.1 Mơ tả tốn thám mã DES 24 3.1.1 Các giả thiết toán 24 3.1.2 Chi tiết hóa tốn yếu tố đầu vào 24 3.2 Xây dựng thuật toán nhận dạng rõ tiếng Anh 25 3.2.1 Vai trò nhận dạng rõ tự động thám mã “vét cạn” 26 3.2.2 Một số phƣơng pháp nhận dạng rõ tự động 26 3.2.2.1 Nhận dạng dựa vào từ điển 26 3.2.2.2 Nhận dạng dựa tập hợp từ, cụm từ giả định 27 3.2.2.3 Nhận dạng dựa vào phƣơng pháp thống kê đặc trƣng ngôn ngữ .27 3.2.3 Xây dựng thuật toán nhận dạng rõ dựa vào phƣơng pháp thống kê đặc trƣng ngôn ngữ 28 3.2.3.1 Một số khái niệm sở “bản rõ” 28 3.2.3.2 Thuật toán nhận dạng rõ 29 3.3 Tìm hiểu thuật tốn di truyền (GAs) 36 3.3.1 Giới thiệu 36 3.3.2 Thuật toán di truyền nhị phân 36 3.3.2.1 Thuật toán di truyền nhị phân - chọn lọc tự nhiên máy tính 36 3.3.2.2 Các thành phần thuật tốn di truyền nhị phân 37 3.4 Đề xuất phƣơng pháp thám mã DES 46 3.4.1 Xây dựng thuật tốn di truyền dị tìm khóa 46 3.4.1.1 Xác định hàm phù hợp (hàm chi phí) 47 iv 3.4.1.2 Tạo lập họ khóa khởi tạo 48 3.4.1.3 Giải mã mã cho trƣớc với khóa họ 49 3.4.1.4 Tính mức độ phù hợp khóa 50 3.4.1.5 Chọn lọc 50 3.4.1.6 Ghép cặp 50 3.4.1.7 Kết hợp 51 3.4.1.8 Đột biến 51 3.4.1.9 Thế hệ 52 3.4.1.10 Kiểm tra hội tụ 53 3.4.2 Vai trị hệ thống tính tốn song song 53 3.4.3 Ƣớc lƣợng thời gian, độ phức tạp tính tốn 56 KẾT LUẬN 58 TÀI LIỆU THAM KHẢO 59 PHỤ LỤC Bảng trọng số tần suất đôi chữ tiếng Anh 60 PHỤ LỤC Mã nguồn chƣơng trình thám mã DES áp dụng thuật tốn di truyền chạy máy tính đơn 61 v DANH MỤC CÁC TỪ VIẾT TẮT TIẾNG ANH Viết tắt DES Data FEAL Fast D AES Adva IDEA Intern Algo DES Tripl GA Gene ECB Elect CBC Ciphe vi DANH MỤC CÁC BẢNG Số hiệu Bảng 2.1 Bảng 3.1 Bảng 3.2 Bảng 3.3 vii DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Số hiệu Hình 1.1 Hình 1.2 Hình 1.3 Hình 1.4 Hình 1.5 Hình 1.6 Hình 2.1 Hình 3.1 Hình 3.2 Hình 3.3 Hình 3.4 Hình 3.5 Hình 3.6 Hình 3.7 Hình 3.8 Hình 3.9 Hình 3.10 Hình 3.11 viii MỞ ĐẦU DES (viết tắt Data Encryption Standard, hay Chuẩn mã hóa liệu) hệ mật mã khóa đối xứng Công ty IBM thiết kế dựa hệ mật mã họ nghiên cứu trƣớc - hệ mật mã Lucifer đƣợc FIPS (Tiêu chuẩn xử lý thông tin Liên bang Hoa Kỳ) chọn làm chuẩn thức vào năm 1976 Sau đó, Chuẩn đƣợc sử dụng rộng rãi phạm vi giới Ngay từ đầu, thuật tốn gây nhiều tranh luận liên quan đến thành phần thiết kế mật, độ dài khóa tƣơng đối ngắn Do đó, DES đƣợc giới nghiên cứu xem xét kỹ lƣỡng, việc thúc đẩy hiểu biết đại mật mã khối (block cipher) phƣơng pháp cơng (hay thám mã) tƣơng ứng Có thể nói, xuất DES tạo nên sóng, nguồn cảm hứng nghiên cứu giới khoa học lĩnh vực mật mã học, đặc biệt phƣơng pháp thám mã mã khối Với DES, giới khoa học có thuật tốn mật mã để nghiên cứu Mặc dù thời gian qua có nhiều kết nghiên cứu thám mã DES đƣợc cơng bố, DES bị phá khố hệ thống chun dụng vịng chƣa đầy 24 giờ, nhƣng việc nghiên cứu thám mã DES có ý nghĩa để hƣớng tới thám mã hệ mật mã khối có độ dài khóa mật lớn hơn, dần thay DES nhƣ AES, IDEA, DES, RC4, RC5, Phân tích mật mã hay thám mã đƣa khuyến cáo, phản hồi cho chuyên gia thiết kế lại hệ mật mã để chống lại dạng cơng Đồng thời, có ý nghĩa hỗ trợ cơng tác tình báo, phản gián v.v Với lý trên, tác giả chọn đề tài: “Nghiên cứu phƣơng pháp thám mã Chuẩn mật mã DES nhờ hệ thống tính tốn hiệu cao” Trong phạm vi nghiên cứu đề tài này, toán đặt với mã đƣợc mã hố từ thơng điệp tiếng Anh Thuật toán mã hoá DES, với giả thiết ngƣời thám mã truy cập đến chức mã hóa/giải mã DES Từ giả thiết này, u cầu ứng dụng hệ thống tính tốn hiệu cao, thuật toán di truyền (Genetic Algorithm) để xây dựng thuật tốn dạng thám mã “hộp đen” để tìm khố mật sử dụng để mã hố thơng điệp thời gian ngắn (dự kiến khoảng đến 15 phút) Tác giả nghiên cứu, trình bày Luận văn thành ba chƣơng Nội dung chính, kết nghiên cứu chƣơng nhƣ sau: Chƣơng I: Giới thiệu chuẩn mã hoá liệu - DES (Data Encryption Standard) Chƣơng II: Các phƣơng pháp thám mã Chuẩn mã hoá liệu DES, hệ thống chuyên dụng phục vụ thám mã DES Chƣơng III: Nghiên cứu, đề xuất phƣơng pháp thám mã DES Do mức độ phức tạp công việc thám mã lớn nên toán đặt với giả thiết ngƣời thám mã biết đƣợc thông tin mã đƣợc mã hóa DES (chế độ ECB) từ “bản rõ” tƣơng ứng thông điệp tiếng Anh Từ giả thiết này, xây dựng thuật toán di truyền để xác định khóa mật k sử dụng để mã hóa nhƣ tìm “bản rõ” tƣơng ứng Để giải u cầu đặt tốn nói trên, toán đƣợc chia thành toán để gải vấn đề: - Xây dựng thuật toán nhận dạng “bản rõ” “tiêu chuẩn rõ” sở xác định hàm “phù hợp”, thành phần quan trọng thuật tốn di truyền nói chung thuật tốn di truyền thám mã nói riêng - Tìm hiểu thuật tốn di truyền, xây dựng thuật tốn di truyền để thực tìm kiếm khố mật với phƣơng pháp “vét cạn có định hƣớng” khơng gian khố (K 2) xác định khoảng 209 tỷ khóa Độ phức tạp phƣơng pháp chủ yếu phụ thuộc phán đốn, nhận dạng ngơn ngữ “bản rõ” tƣơng ứng với mã phụ thuộc độ dài khóa (số lƣợng bit khóa), hồn tồn khơng phụ thuộc vào thuật tốn mã hóa khối mã DES Vì vậy, để đạt đƣợc kết quả, mục tiêu nghiên cứu, tác giả sử dụng phƣơng pháp thống kê đặc trƣng ngơn ngữ áp dụng thuật tốn di truyền Đề tài tập trung nghiên cứu, xây dựng thuật toán nhận dạng rõ thuật toán di truyền Đồng thời, tác giả đề xuất ứng dụng mơ hình hệ thống tính tốn song song, mơ hình GA master - slave giúp rút ngắn thời gian thám mã khoảng 100 lần Để đạt đƣợc kết thám mã cách tốt nhất, địi hỏi phải có đƣợc hệ thống tính tốn song song kỹ lập trình song song Tuy nhiên, với điều kiện khả thực tế, tác giả xây dựng dựng chƣơng trình thám mã thử nghiệm ngơn ngữ Visual Basic NET 2008 chạy máy tính đơn, giả định thuật toán di truyền hội tụ sau hai triệu hệ tổng thời gian thám mã ƣớc lƣợng khoảng 19,4 Chƣơng I GIỚI THIỆU VỀ CHUẨN MÃ HÓA DỮ LIỆU - DES (DATA ENCRYPTION STANDARD) [4] 1.1 GIỚI THIỆU VỀ THUẬT TOÁN MÃ HOÁ DES DES đƣợc phân biệt hai khái niệm Chuẩn mã hoá liệu (DES - Data Encryption Standard) Thuật toán mã hoá liệu (DEA - Data Encryption Algorithm) Thuật toán mã hoá thành phần Chuẩn mã hố Việc nghiên cứu, phân tích DES nghiên cứu, phân tích thuật tốn Trong lĩnh vực mật mã học, có hai loại hệ mật mã thƣờng đƣợc đề cập đến, mật mã khố cơng khai (khố bất đối xứng) mật mã khố bí mật (khố đối xứng) Riêng hệ mật mã đối xứng lại chia làm hai loại mã hoá, giải mã theo khối mã hố, giải mã theo dịng DES (Data Encryption Standard) hay Chuẩn mã hóa liệu thuộc hệ mật mã khoá đối xứng thực mã hoá, giải mã theo khối Độ dài khối thông tin mã hố, giải mã 64 bit Quy trình mã hố, giải mã khối gồm hai thuật toán mã hoá (ký hiệu E) giải mã (ký hiệu D) Cả hai thuật toán tác động lên khối đầu vào 64 bit sử dụng khoá 56 bit khối 64 bit Đối với khoá nào, giải mã hàm ngƣợc mã hoá, nghĩa là: - Mã hoá khối: Ek(M), - Giải mã khối: M = Dk(Ek(M)), đó, M khối thơng tin 64 bit k khoá 56 bit Bản rõ 64 bit Bản mã 64 bit Khoá K 56 bit Bản rõ 64 bit Bản mã 64 bit b Quy trình giải mã a Quy trình mã hố Hình 1.1 Mơ mã hố (a) giải mã (b) theo DES 56 Hình 3.11 Số lƣợng vi xử lý tối ƣu áp dụng mơ hình GA master - slave theo tỷ lệ Tf/Tc Npop [12, pp.143] Qua việc nghiên cứu lý thuyết ứng dụng hệ thống tính tốn song song mức độ tăng tốc tiến trình ứng dụng thuật tốn di truyền với nhiều góc độ tác giả đề xuất ứng dụng hệ thống máy tính cụm cluster đƣợc xây dựng theo mơ hình GA master slave Hệ thống có máy chủ (master) 100 máy thành viên (slave) Tất nhiên máy chủ máy thành viên máy tính có tốc độ cao thời điểm Ứng dụng mơ hình GA master - slave có 100 máy slave với dân số (số khóa duyệt hệ) thuật toán di truyền 100 giúp tiến trình thám mã tăng tốc độ gần 100 lần so với máy tính đơn Thời gian thám mã ứng dụng mơ hình GA master - slave có 100 máy slave nói là: 1162 phút / 100 = 11,62 phút 57 KẾT LUẬN Kết nghiên cứu Đề tài xây dựng đƣợc “tiêu chuẩn rõ” tiếng Anh ứng dụng thuật toán di truyền với “tiêu chuẩn rõ” để xây dựng thuật tốn “vét cạn có định hƣớng” khơng gian khố giới hạn Nhờ thuật toán này, với mã cho trƣớc (có rõ tƣơng ứng tiếng Anh) đƣợc mã hóa Chuẩn mã hóa liệu DES để dị tìm khố mật Đề tài đạt đƣợc kết nghiên cứu sau: - Xây dựng thuật toán nhận dạng “bản rõ” “tiêu chuẩn rõ” tiếng Anh sở để xác định hàm “phù hợp” áp dụng cho thuật toán di truyền - Xây dựng quy trình thám mã dựa thuật toán di truyền gồm bƣớc tạo lập họ khoá khởi tạo, giải mã với khoá, chọn lọc, ghép cặp, đột biến, kiểm tra hội tụ Với đặc trƣng thuật tốn di truyền, bƣớc tính giá trị mức phù hợp, loại bỏ khóa có giá trị mức phù hợp thấp kiểm tra hội tụ đƣợc thực hàm “phù hợp” đóng vai trị cốt lõi - Đề xuất mơ hình tính tốn song song cho thuật tốn di truyền thám mã - Mơ hình “GA master - slave” để rút ngắn thời gian thám mã khoảng 100 lần Hƣớng phát triển đề tài Đây đề tài áp dụng thuật toán di truyền để thám mã DES nói riêng thám mã mã khối nói chung Do vậy, kết nghiên cứu đề tài mở hƣớng phát triển gồm: - Mục tiêu đề tài thám mã DES với thông điệp mã hoá đƣợc giả định tiếng Anh nhƣng mở rộng nghiên cứu thám mã với mã cho trƣớc đƣợc mã hố từ thơng điệp tiếng Pháp, tiếng Việt, tiếng Nga, không đƣợc biết trƣớc ngôn ngữ thông điệp mã hố, áp dụng phƣơng pháp phân tích đặc trƣng chung ngôn ngữ phổ dụng - Độ phức tạp phƣơng pháp chủ yếu phụ thuộc vào độ dài khóa (số lƣợng bit khóa), hồn tồn khơng phụ thuộc vào thuật tốn mã hóa bên khối mã nên mở rộng thám mã hệ mật mã khối có độ an tồn cao hơn, độ dài khố lớn DES, nhƣ IDEA, AES, FEAL, RC4, RC5, 3DES , miễn đƣợc cho trƣớc mã, thuật tốn mã hóa, giải mã Việc mở rộng thám mã đòi hỏi phát triển thuật toán đồng thời với tăng cƣờng hệ thống tính tốn hiệu cao, tăng số lƣợng máy thành viên so với hệ thống tính tốn song song đề xuất 58 TÀI LIỆU THAM KHẢO Tiếng Việt Hoàng Minh Tuấn (2008), Thám mã khối máy tính song song dùng hệ điều hành Linux, Luận án Tiến sĩ, Học viện Kỹ thuật Quân sự, Bộ Quốc phịng, tr.3471 Hồ Văn Canh, Hồng Minh Tuấn (2010), “Thám mã văn đƣợc mã hóa chuẩn mã hóa khối” Trần Bá Ánh (2007), Nhận dạng ngôn ngữ tự nhiên ứng dụng, Luận văn cao học, Đại học Công nghệ, ĐHQG Hà Nội Trịnh Nhật Tiến (2008), Giáo trình An tồn liệu, Đại học Quốc gia, Hà Nội, tr.59-70 Tiếng Anh Alan Silvester (2004), “Differential Cryptanalysis and the Data Encryption Standard” Billingsley, Patrick (1961), “Statistical Methods in Markov Chains” Annals of mathematical statistics, 23:1 C.R Rao’s (1968), Linear statistical methods and their applications, Moscow, pp.45-60 Curtin, Matt (2005): Brute-Force: Cracking the DES, Springer - Verlag Erick Cantú-Paz (2001), “A Survey of Parallel Genetic Algorithms”, Department of Computer Science and Illinois Genetic Algorithms Laboratory, University of Illinois at Urbana-Champaign, United States 10 Juan M E Tapiador, Julio C Hernandez-Castro, John A Clark (2007), “Heuristic Search for Non-Linear Cryptanalytic Approximations”, IEEE Congress on Evolutionary Computation (CEC 2007) 11 Mitsuru Matsui (1998), “Linear Cryptanalysis Method for DES Cipher”, Springer- Verlag 12 Randy L Haupt, Sue Ellen Haupt (2004), Practical Genetic Algorithms (second edition), John Wiley & Sons, Canada 13 Ravi Ganesan, Alan T.Sherman (1993), Statistical Techniques for Language Recognition: An Introduction and Guide for Cryptanalysts, IEEE - Transactions on Information Theory, IT-28(4) 14 Susan K Langford, Martin E Hellman (1994) “Differential-Linear Cryptanalysis”, Springer-Verlag Websites 15 http://www.wikipedia.org 59 PHỤ LỤC BẢNG TRỌNG SỐ TẦN SUẤT ĐÔI CHỮ CÁI TIẾNG ANH (Ma trận vuông S cấp 26 x 26, với phần tử s(x, y), x = A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B -2 -3 -3 -2 -2 -3 -4 -1 -2 -1 -3 -4 -1 -3 11 -3 -3 -1 -1 -2 -1 -2 -5 , ,y= ,) C 11 11 -1 11 11 -1 11 2 1 11 11 11 D 11 -1 -2 11 11 -2 11 11 11 -3 11 60 E -2 11 -3 11 11 11 11 -4 11 11 11 11 11 11 F -6 -5 -4 -1 -2 -4 -7 -2 -5 -4 -5 -2 -4 11 -5 -3 -2 -7 11 -1 -5 PHỤ LỤC MÃ NGUỒN CHƢƠNG TRÌNH THÁM MÃ DES ÁP DỤNG THUẬT TOÁN DI TRUYỀN CHẠY TRÊN MÁY TÍNH ĐƠN (Ngơn ngữ Visual Basic.net 2008) Chƣơng trình thám mã gồm có lớp (class) sau: Khởi tạo thƣ viện cần thiết để xây dựng chƣơng trình Lớp gồm hàm mã hóa giải mã DES Lớp tính hàm phù hợp (fitness function), gồm hàm tính số đơi, hàm tính giá trị phù hợp, dựa kết nối đến sở liệu SQL server trọng tần suất đôi chữ tiếng Anh đƣợc xây dựng Lớp tạo 100 khóa khởi tạo, gồm hàm kiểm tra ký tự xâu vào có thuộc bảng chữ tiếng Anh, hàm tạo khóa Lớp chuyển đổi kiểu liệu khóa, gồm hàm chuyển liệu khóa từ “byte” sang “bit”, hàm chuyển liệu khóa từ “bit” sang “byte” Lớp hàm thực thám mã, gồm hàm chọn lọc 50 khóa có mức phù hợp cao nhất, hàm thực ghép cặp, sinh sản đột biến, thủ tục thám mã Giao diện chƣơng trình thám mã DES, mã nguồn kết nối sở liệu SQL server trọng số đôi chữ tiếng Anh, mã nguồn nút lệnh, thông báo ' Khởi tạo thƣ viện cần thiết để xây dựng chƣơng trình Imports System Imports System.Object Imports System.IO Imports System.Text Imports System.Data.SqlClient Imports System.Security.Cryptography Imports System.Security.Cryptography.DESCryptoServiceProvider ' Lớp gồm hàm mã hóa giải mã Public Class DES_Algorithm Public Shared cipher_text() As Byte Public Shared plain_text As String Public Shared Decrypted As String ' Hàm mã hóa Shared Function EncryptStringToBytes(ByVal plain_text As String, ByVal Key() As Byte) As Byte() ' Tạo đối tƣợng DES với khóa xác định, sử dụng chế độ mã hóa ECB ' khơng sử dụng véc tơ khởi tạo Initiation Vector (IV) Using Des_Provider = DES.Create() Des_Provider.Mode = CipherMode.ECB Des_Provider.Key = Key 61 Dim encryptor As ICryptoTransform = Des_Provider.CreateEncryptor(Des_Provider.Key, Des_Provider.IV) Using msEncrypt As New MemoryStream() Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write) Using swEncrypt As New StreamWriter(csEncrypt, Encoding.ASCII) swEncrypt.Write(plain_text) End Using cipher_text = msEncrypt.ToArray() End Using End Using End Using Return cipher_text End Function ' Hàm giải mã Shared Function DecryptStringFromBytes(ByVal cipherText() As Byte, ByVal Key() As Byte) As String ' Tạo đối tƣợng DES với khóa xác định, sử dụng chế độ mã hóa ECB ' khơng sử dụng véc tơ khởi tạo Initiation Vector (IV) Using Des_Provider = DES.Create() Des_Provider.Mode = CipherMode.ECB Des_Provider.Key = Key Dim decryptor As ICryptoTransform = Des_Provider.CreateDecryptor(Des_Provider.Key, Des_Provider.IV) Using msDecrypt As New MemoryStream(cipherText) Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read) Using srDecrypt As New StreamReader(csDecrypt, Encoding.ASCII) plain_text = srDecrypt.ReadToEnd() End Using End Using End Using End Using Return plain_text End Function End Class ' Lớp tính giá trị Hàm phù hợp Public Class Fitness Public Shared Public Shared Public Shared Public Shared F As Integer dbConnection As New SqlConnection Bigram_Char_Array(20) As String Bigram_Number_Array(20) As Integer Max_Index As Integer Public Shared ' Hàm xác định đôi số lƣợng đôi Shared Function Calculate_Bigram(ByVal X As String) Dim i, j, k, Last_Index, length As Integer 62 Dim Y(20) As String Dim Check(20) As Boolean Dim Biagram As String length = Len(X) i = -1 Last_Index = -1 Last_Index = -1 X = X.ToUpper() Do While i < length - i = i + j = i + If (X(i) " ") And (X(j) " ") Then Biagram = X(i) & X(j) Last_Index = Last_Index + Y(Last_Index) = Biagram End If Loop For i = To Last_Index Check(i) = False Next For i = To Last_Index Bigram_Number_Array(i) = Bigram_Char_Array(i) = Nothing Next k = -1 For i = To Last_Index - If Check(i) = False Then k = k + Bigram_Char_Array(k) = Y(i) Bigram_Number_Array(k) = For j = i + To Last_Index If Y(i) = Y(j) Then Bigram_Number_Array(k) = Bigram_Number_Array(k) + Check(j) = True End If Next End If Next If Check(Last_Index) = False Then k = k + Bigram_Char_Array(k) = Y(Last_Index) Bigram_Number_Array(k) = End If For i = k + To 19 Bigram_Char_Array(i) = Nothing Bigram_Number_Array(i) = Nothing Next Max_Index = k Return Bigram_Char_Array(Max_Index + 1) Return Bigram_Number_Array(Max_Index + 1) 63 Return Max_Index End Function ' Hàm tính giá trị phù hợp xâu giải mã X Shared Function Calculate_fitness(ByVal X As String) Dim sqlCommand As New SqlCommand Dim Read_bigram As SqlDataReader Dim Bigram_X As String Dim Num_Bigram As Integer Dim Weight As Integer Fitness.Calculate_Bigram(X) F = sqlCommand.Connection = dbConnection For i = To Max_Index Bigram_X = Bigram_Char_Array(i) Num_Bigram = Bigram_Number_Array(i) sqlCommand.CommandText = "select * from Weight_Values Where Letters=" & "'" & Bigram_X & "'" Read_bigram = sqlCommand.ExecuteReader() Read_bigram.Read() Weight = Read_bigram.Item("Value") F = F + Num_Bigram * Weight Read_bigram.Close() Next Return F End Function End Class ' Lớp tạo 100 khóa dựa mã cho trƣớc Public Class Create_100_keys Public Shared Initiation_keys(99)() As Byte Public Shared Initiation_keys_done As Boolean = False ' Hàm kiểm tra tất ký tự giải mã X có thuộc bảng chữ cái? Shared Function Test_Alphabet(ByVal X As String) As Boolean Dim Alphabet() As Char = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "} For Each xi In X Test_Alphabet = False For Each letter In Alphabet If xi = letter Then Test_Alphabet = True End If Next Next Return Test_Alphabet End Function ' Hàm tạo 100 khóa khởi tạo Shared Function Create(ByVal Cipher_sample As String) Dim i As Integer Dim X_Decrypted As String 64 Dim DES_Provider As New DESCryptoServiceProvider Dim trial_key() As Byte Dim Cipher_sample_Byte() As Byte Cipher_sample_Byte = ASCIIEncoding.ASCII.GetBytes(Cipher_sample) DES_Provider.Mode = CipherMode.ECB i = -1 Do While i < 99 DES_Provider.GenerateKey() trial_key = DES_Provider.Key X_Decrypted =_ DES_Algorithm.DecryptStringFromBytes(Cipher_sample_Byte, trial_key) If Create_100_keys.Test_Alphabet(X_Decrypted) = True Then i = i + Initiation_keys(i) = trial_key End If Loop Return Initiation_keys(99) Initiation_keys_done = True End Function End Class ' Lớp chuyển đổi khóa từ dạng "byte" sang dạng "bit" ngƣợc lại Public Class Convert_keys Public Shared Keys_bits(49) As String Public Shared Keys_bytes(99)() As Byte ' Hàm chuyển đổi khóa sang dạng bit khục vụ cho kết hợp (mating) đột biến (mutation) Shared Function To_bits(ByVal Keys_bytes_convert()() As Byte) Dim i As Integer Dim DES_Provider As New DESCryptoServiceProvider Array.Clear(Keys_bits, 0, 49) For i = To 49 For Each Key_byte In Keys_bytes_convert(i) Keys_bits(i) = Keys_bits(i) & Convert.ToString(Key_byte, 2).PadLeft(8, "0") Next Next Return Keys_bits(49) End Function ' Hàm chuyển đổi khóa sang dạng byte sau đột biến Shared Function To_bytes(ByVal Keys_bits_convert() As String) Dim i, j, k As Integer Dim BitStr As String j = For i = To 99 For j = To 65 k = * (j - 1) + BitStr = Keys_bits(i).Substring(k, 8) Keys_bytes(i)(j - 1) = Convert.ToByte(BitStr, 2) Next Next Return Keys_bytes(99) End Function End Class ' Lớp gồm hàm thực thám mã Public Class DES_GA_Cryptanalyse Public Public Public Public Shared Shared Keys_selected()() As Byte Shared Keys_mutated(99)() As Byte Shared Found As Boolean = False Shared Key_found() As Byte Public Plain_text As String ' Hàm chọn lọc 50 khóa có mức phù hợp cao Shared Function Selection(ByVal Fitness_values_select() As Integer, ByVal Keys_select()() As Byte) Dim A(100) As Integer Dim B(50) As Integer Dim i As Integer Dim k As Integer = -1 Array.Copy(Fitness_values_select, A, 100) Array.Sort(A) Array.Copy(A, B, 50) For Each Value In B For i = To 99 If Fitness_values_select(i) = Value Then k = k + Keys_selected(k) = Keys_select(i) Exit For End If Next Next Return Keys_selected(49) End Function ' Hàm thực ghép cặp, sinh sản đột biến Shared Function Mating_Mutation(ByVal Keys_mate_mutate()() As Byte) Dim Keys_bytes_1(49)() As Byte Dim Keys_bits_1(99) As String Dim Bits_arrays(99)() As Char 66 Dim i, j, k As Integer Array.Resize(Keys_mate_mutate, 100) ' Ghép cặp 25 cặp bố - mẹ, sinh sản để dân số trở lại số lƣợng 100 For i = To 48 Step For j = To Step k = j + Keys_mate_mutate(50 Keys_mate_mutate(50 Keys_mate_mutate(51 Keys_mate_mutate(51 + + + + i)(j) i)(k) i)(j) i)(k) = = = = Keys_mate_mutate(i)(j) Keys_mate_mutate(i + 1)(k) Keys_mate_mutate(i + 1)(j) Keys_mate_mutate(i)(k) Next Next ' ĐỘT BIẾN ' Chuyển đổi 100 khóa dạng byte sang dạng bit Keys_bits_1 = Convert_keys.To_bits(Keys_mate_mutate) For i = To 99 Bits_arrays(i) = Keys_bits_1(i).ToCharArray Next ' Tạo 634 tọa độ bit cần đột biến Dim Row As Integer Dim Col As Integer Randomize() For i = To 633 Row = CInt(Int((100 * Rnd())) + 1) Col = CInt(Int((64 * Rnd()))) Bits_arrays(Row)(Col) = IIf(Bits_arrays(Row)(Col) = "0", "1", "0") Next For i = To 99 Keys_bits_1(i) = New String(Bits_arrays(i)) Next Keys_mutated = Convert_keys.To_bytes(Keys_bits_1) Return Keys_mutated(99) End Function Shared Sub Cryptanalyse(ByVal Keys_Initiation()() As Byte, ByVal Cipher_sample As String) Dim i As Integer Dim Cipher_byte_sample() As Byte Dim Decrypted() As String = Nothing Dim Fitness_values() As Integer = Nothing Dim Key_str As String = Nothing 67 Cipher_byte_sample = ASCIIEncoding.ASCII.GetBytes(Cipher_sample) For i = To 99 Decrypted(i) = DES_Algorithm.DecryptStringFromBytes(Cipher_byte_sample, Keys_Initiation(i)) Next For i = To 99 Fitness_values(i) = Fitness.Calculate_fitness(Decrypted(i)) If Fitness_values(i) < Then Key_found = Keys_Initiation(i) Plain_text = Decrypted(i) Found = True GoTo Inform_secret_key End If Next Keys_selected(49) = Selection(Fitness_values, Keys_Initiation) Keys_mutated(99) = Mating_Mutation(Keys_selected) ' Vòng lặp (các hệ khóa) thực thám mã Repeat_Cryptanalyse: For i = To 99 Decrypted(i) = DES_Algorithm.DecryptStringFromBytes(Cipher_byte_sample, Keys_mutated(i)) Next For i = To 99 Fitness_values(i) = Fitness.Calculate_fitness(Decrypted(i)) If Fitness_values(i) < Then Key_found = Keys_Initiation(i) Plain_text = Decrypted(i) Found = True GoTo Inform_secret_key End If Next Keys_selected(49) = Selection(Fitness_values, Keys_mutated) Keys_mutated(99) = Mating_Mutation(Keys_selected) GoTo Repeat_Cryptanalyse ' Thơng báo tìm đƣợc khóa mật Inform_secret_key: For Each keyi In Key_found Key_str = Key_str & Convert.ToChar(keyi) MsgBox("Đã tìm thấy khóa mật k: " & Key_str) Next End Sub End Class 68 ‘ FORM GIAO DIỆN CỦA CHƢƠNG TRÌNH THÁM MÃ DES ‘ MÃ LỆNH CỦA FORM GIAO DIỆN THÁM MÃ ' Khởi tạo thƣ viện cần thiết Imports System Imports System.Data.SqlClient Public Class Form1 Public Shared dbConnection As New SqlConnection Public Shared cipher_sample As String ' Khởi tạo kết nối đến sở liệu đặc trƣng tần suất đôi chữ viết tiếng Anh Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dbConnection.ConnectionString = "Data Source=(local)\SQLEXPRESS;Initial Catalog=Bigram_Weights;Integrated Security=True" dbConnection.Open() End Sub ' Nút lệnh bắt đầu thực tạo 100 khóa khởi tạo cho thuật toán di truyền Public Sub Create_Initiation_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Create_Initiation_button.Click If RichTextBox1.Text.Length < Then MsgBox("Bản mã có độ dài tối thiểu ký tự!") Exit Sub End If cipher_sample = Microsoft.VisualBasic.Left(RichTextBox1.Text, 8) Create_100_keys.Create(cipher_sample) If Create_100_keys.Initiation_keys_done = False Then 69 Status_Label.Text = "Đang tạo lập họ khóa khởi tạo " Else Status_Label.Text = "Đã tạo lập xong 100 khóa khởi tạo" End If End Sub ' Nút lệnh bắt đầu thám mã Private Sub Cryptanalyse_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cryptanalyse_button.Click Dim Key_str As String = Nothing Dim Key_found_1() As Byte If Create_100_keys.Initiation_keys_done = False Then MsgBox("Chƣa tạo lập họ khóa khởi tạo!") Else DES_GA_Cryptanalyse.Cryptanalyse(Create_100_keys.Initiation_keys, cipher_sample) End If If DES_GA_Cryptanalyse.Found = False Then Status_Label.Text = "Đang dị tìm khóa mật " Else Status_Label.Text = "Đã tìm khóa mật rõ tƣơng ứng" End If If DES_GA_Cryptanalyse.Found = True Then Key_found_1 = DES_GA_Cryptanalyse.Key_found For Each key_byte In Key_found_1 Key_str = Key_str & Convert.ToChar(key_byte) Next RichTextBox2.Text = DES_GA_Cryptanalyse.Plain_text RichTextBox3.Text = Key_str End If End Sub End Class 70 ... thuộc hệ mật mã khoá đối xứng thực mã hoá, giải mã theo khối Độ dài khối thơng tin mã hố, giải mã 64 bit Quy trình mã hố, giải mã khối gồm hai thuật toán mã hoá (ký hiệu E) giải mã (ký hiệu D)... cấu trúc bên hệ mật mã Cơ sở phƣơng pháp chủ yếu dựa vào sức mạnh hệ thống tính tốn hiệu cao để thực vét cạn tìm khố mật Đây phƣơng pháp thám mã đơn giản hệ mật mã khối Việc thám mã đơn thử tất... phức tạp công việc thám mã lớn xác định đƣợc mã đƣợc mã hóa từ ngơn ngữ nào, đƣợc mã hóa từ hệ mật mã nào, chế độ mã hóa (nếu biết hệ mật mã sử dụng để mã hóa), mã đƣợc mã hóa lớp, hệ mã hóa v.v

Ngày đăng: 11/11/2020, 22:00

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan