Tính mức độ phù hợp của các khóa

Một phần của tài liệu 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 (Trang 55)

Mức phù hợp của các khóa k đƣợc tính dựa trên hàm phù hợp f(X) (3.13). Qua trình tính toán đƣợc lập thành một bảng sau đây:

Bảng 3.3. Tính toán mức độ phù hợp của các khoá trong một thế hệ STT ki Fitness 1 k1,1k1,2 ... k1,64 f1 2 k2,1k2,2 ... k2,64 f2 3 k3,1k3,2 ... k3,64 f3 ... ... ... 100 k100,1k100,2 ... k100,64 f100 trong đó, fi đƣợc xác định ở biểu thức (3.14) ứng với khoá ki, i = 1,100

50

3.4.1.5. Chọn lọc

Sau khi xác định đƣợc các giá trị của hàm phù hợp, các khóa ki đƣợc sắp xếp theo thứ tự từ giá trị thấp nhất đến giá trị cao nhất của fi, i = 1,100 . Trên cơ sở đó, 50 khóa có mức phù hợp thấp nhất sẽ bị loại, 50 khóa có mức phù hợp cao nhất đƣợc giữ lại để ghép cặp, kết hợp và tạo ra thế hệ mới.

3.4.1.6. Ghép cặp

Nhƣ đã tìm hiểu, bƣớc ghép cặp để giao phối trong thuật toán di truyền có bốn cách tiếp cận gồm ghép cặp từ trên xuống, ghép cặp ngẫu nhiên, ghép cặp ngẫu nhiên theo trọng số (trọng số bánh xe Rulet), và ghép cặp đấu loại. Mỗi một phƣơng pháp lựa chọn các khóa làm bố mẹ cho kết quả một tập hợp khóa bố mẹ khác. Sự cấu thành thế hệ các khóa k tiếp theo sẽ khác nhau khi áp dụng các phƣơng pháp ghép cặp khác nhau. Rất khó để đƣa ra đánh giá cách tiếp cập nào là tốt nhất.

Ghép cặp từ trên xuống tuy không gần với sự chọn lọc tự nhiên nhƣng đƣợc áp dụng trong trƣờng hợp này để ghép cặp khóa k làm bố mẹ với lý do lập trình đơn giản hơn, thời gian, độ phức tạp tính toán nhỏ. Tức là, các khoá ở các vị trí lẻ i = 1, 3, ..., 49 đƣợc xác định là bố, các khoá ở các vị trí chẵn i = 2, 4, ..., 50 đƣợc xác định là mẹ. Quá trình ghép cặp để sinh sản đƣợc mô tả nhƣ sau:

Bố(1) + Mẹ(2) → Con(51), Con(52) Bố(3) + Mẹ(4) → Con(53), Con(54) .... Bố(49) + Mẹ(50) → Con(99), Con(100) hay: k1 + k2→ k51, k52 k3 + k4→ k53, k54 .... k49 + k50→ k99, k100 3.4.1.7. Kết hợp

Để mô tả quá trình kết hợp, các khoá ki = ki1 ki2 ... ki8 ... ki64 đƣợc biểu diễn thành các byte (mỗi byte gồm 8 bit) đƣợc đánh số từ 1 đến 7:

51

Chẳng hạn khi khoá k1 kết hợp với khoá k2 sẽ tạo ra hai con k50 và k51 là: k50 = k0(1) k1(2) k0(3) k1(4) k0(5) k1(6)k0(7) k1(8)

k51 = k1(1) k0(2) k1(3) k0(4) k1(5) k0(6)k1(7) k0(8)

Tiến hành nhƣ vậy đối với 24 cặp bố mẹ còn lại để tạo ra 24 cặp con cái. Kết thúc giai đoạn sinh sản này, họ khoá trở về số lƣợng 100 nhƣ ban đầu.

3.4.1.8. Đột biến

Để mô tả quá trình đột biến, ta vẫn sử dụng ký hiệu khoá ki = ki1 ki2 ... ki8 ... ki64 để biểu thị 64 bit của một khoá (gồm cả 8 bit kiểm tra chẵn lẻ - parity)

Nhƣ đã tìm hiểu ở phần Thuật toán di truyền nhị phân, đột biến có ý nghĩa đặc biệt quan trọng. Đột biến có xu hƣớng đa dạng hóa thuật toán làm thay đổi sự hội tụ dựa vào một giải pháp thông thƣờng, và không xảy ra ở vòng lặp cuối cùng. Tất nhiên, nó không thực hiện đối với nhiễm sắc thể có mức phù hợp cao nhất (chi phí thấp nhất). Bởi vì nhiễm sắc thể này là giải pháp tốt nhất cần phải đƣợc giữ lại làm kết quả cuối cùng hoặc phục vụ sinh sản.

Chọn tỷ lệ đột biến là 10% (µ = 0,1). Nếu ký hiệu Npop là số lƣợng các khoá tham gia đột biến, Nbit là số lƣợng các bit của một khoá, khi đó số các bit đột biến sẽ là:

#mutations=µ(Npop–1).Nbit = 0,1(100-1).64 = 633,6 ≈ 634

Các giá trị mrow (hàng), mcol (cột) đƣợc tạo ngẫu nhiên nhƣ sau:

mrow = ceil(rand()*(Npop-1))+1 mcol = ceil(rand()*Nbits)

và Npop = 100, Nbits = 64 cho nên 634 giá trị mrow đƣợc tạo ra một cách ngẫu nhiên trong giới hạn 99 chữ số tự nhiên đầu tiên (từ 2 đến 100) do nhiễm sắc thể đầu tiên không tham gia đột biến; 634 giá trị mcol đƣợc tạo ra một cách ngẫu nhiên trong giới hạn 64 chữ số tự nhiên đầu tiên (từ 1 đến 64). Chẳng hạn,

mrow = [5 92 6 21 11 2 6 8 7 ... 68 15 7 3 5 34] 634 thành phần

mcol = [2 12 5 18 56 1 44 3 11 ... 26 9 18 4 19 31] 634 thành phần

52

Với các giá trị mrow và mcol đƣợc tạo ra nhƣ trên, 634 bit đột biến sẽ là các bit ở các toạ độ dòng và cột tƣơng ứng (5, 2), (92, 12), (6, 5), ..., (5, 19), (34, 31). Những bit tại các toạ độ này sẽ đƣợc chuyển từ 0 thành 1, và ngƣợc lại.

Mã lệnh đột biến cho một phần tử của ma trận các bit nhƣ sau:

pop(mrow,mcol)=1-pop(mrow,mcol)

3.4.1.9. Thế hệ tiếp theo

Sau khi thực hiện xong sự đột biến cho 634 bit của họ, thuật toán tiếp tục thế hệ mới với công việc đầu tiên là giải bản mã gốc với 100 khoá (đã qua kết hợp và đột biến) rồi tính các giá trị mức phù hợp (fitness) để xác định f1, f2, ..., f100 tƣơng ứng. Sau đó sắp xếp lại các khoá (nhiễm sắc thể) của họ khoá theo thứ tự các giá trị fi thấp nhất đến cao nhất. Dựa trên bảng phân hạng mức phù hợp này, thực hiện kiểm tra sự hội tụ (Mục 3.4.2.10). Nếu chƣa có hội tụ, tiếp tục loại 50 khoá có giá trị fi cao nhất, giữ lại 50 khoá có giá trị fi thấp nhất. 50 khoá đƣợc giữ lại này lại tiếp tục các tiến trình ghép cặp, kết hợp, đột biến. Ở mỗi thế hệ, kể từ thế hệ thứ hai đều lặp lại các bƣớc, bắt đầu từ bƣớc đƣợc mô tả ở Mục 3.4.2.3 (Giải mã bản mã cho trƣớc...) theo quy trình đƣợc mô tả nhƣ Hình 3.11.

Một phần của tài liệu 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 (Trang 55)

Tải bản đầy đủ (PDF)

(76 trang)