Tổng số lần xuất hiện của 15 bộ đôi đó là 0,2703 ∼ 0,27 như sau:

Một phần của tài liệu NGHIÊN CỨU TÍNH TOÁN MỀM VÀ ỨNG DỤNG (Trang 54 - 62)

như sau:

16. e∪: 0,0202 17. s∪: 0,0129 18. ∪t: 0,0160

Như vậy tần xuất xuất hiện các ký tự trong tập gồm 18 bộ đôi xuất hiện nhiều nhất:

G2 = {an, at, ed, en, er, es, he, in, on, or, re, st, te, th, ti, e, s, t } là 0, 3194 0, 32.

Nói cách khác, trong văn bản tiếng Anh gồm 100 ký tự, thì số lần xuất hiện của các bộ đôi trong G2 là xấp xỉ 32. Nếu chúng xuất hiện ít đến mức nào đó, thì ta coi văn bản này không phải là bản rõ tiếng Anh tự nhiên.

G1 = {∪, e, t, a, o, i, n, s, r, h }

G2 = {an, at, ed, en, er, es, he, in, on, or, re, st, te, th, ti, e, s, t }.

Dựa vào thống kê tần suất xuất hiện các ký tự trên hai tập chữ cái tiếng Anh G1

G2, áp dụng tiêu chuẩn 3σ với mức sai lầm (quyết định sai) α = 0, 005, người ta tìm được cận dưới ST, mà với nó trong một bản rõ bất kỳ độ dài N thì: Số lần xuất hiện các ký tự trong tập G1 G2 không bé hơn ( ≥ ) ST.

Nếu Số lần xuất hiện các ký tự trên bé hơn (<) ST, thì văn bản đó “khó

hiểu được.

Cận dưới ST đó là S(N) + T(N), trong đó

S(N) = 0,88 N – 2,805 √ N (1)

T(N) = 0,32 (N-1) – 1,399 √ (N -1) (2)

S(N) + T(N) còn gọi là Hàm phù hợp (fitness), để “đo” sự gần gũi giữa các ký tự rõ với ký tự mã tương ứng.

4.2. DÒ TÌM KHÓA BẰNG THỐNG KÊ NGÔN NGỮ HỌC VÀ THUẬT TOÁN GA

Thuật toán:

Input: Bản mã m độ dài N được mã hóa bằng Hệ mật DES.

Output: Khóa mật k.

Thuật toán gồm 2 giai đoạn ::

Giai đoạn 1 “Lọc thô”: Loại 92 % số khoá chắc chắn không phải là khoá đúng. (Bằng phương pháp thống kê ngôn ngữ học)

Giai đoạn 2: “Lọc” 8 % các khoá còn lại bằng thuật toán GA .

4.2.1. Giai đoạn 1:

Input: Bản mã m độ dài N được mã hóa bằng Hệ mật DES.

Output: Là tập các khóa kK1 thỏa mãn tính chất F(k) > S(N) + T(N). (Ghi trong tập khóa K)

1/. Bước 1:

Ta xét bảng chữ cái (theo mã cơ số 16) (không có z, q, j, x, k) để biểu diễn bản rõ:

A1 = {a, b, c, d, e, f, g, h, i, l, m, n, o, p, r, s, t, u, v, w, y } =

{61, 62, 63, 64, 65, 66, 67, 68, 69, 6C, 6D, 6E, 6F, 70, 72, 73, 74, 75, 76, 77, 79}. Trong thực hành khi kiểm tra một mẫu văn bản độ dài 8 byte, mà có một kí tự không thuộc A1, thì ta có thể loại ngay mẫu đó cùng với khoá để giải mã.

Bằng phương pháp này ta chỉ cần giải một khối mã (8 bytes) của m, khoá nào cho kết quả giải mã là bản rõ, mà chỉ chứa ký tự thuộc A1 thì được giữ lại, và sẽ là

Bước 2: “Lọc”các khóa trong tập K1. (adsbygoogle = window.adsbygoogle || []).push({});

B1: Lấy khóa tuỳ ý k1K1 .

B2: Giải bản mã m bằng thuật toán DES và khóa k1. Kết quả là bản rõ

r = D (m, k1).

B3: Tính tần số xuất hiện của các ký tự thuộc G1 và kí hiệu là: f1, f2 , ... , f10. Tính tần số xuất hiện của các cặp ký tự thuộc G2 và kí hiệu là f1,1, f1,2, … , f1,18.

B4: Tính Độ phụ thuộc (fitness) theo bản rõ r = D (m, k1) là:

F(k1) = ∑ i10 fi + ∑ i18 f 1, i

B5: Nếu F(k1) > S(N) + T (N) thì k1 là khóa “ứng cử viên”.

• Kết quả: Là tập các khóa kK1 thỏa mãn tính chất F(k) > S(N) + T(N).

Kết quả giai đoạn 1 có khả năng loại 92 % số khoá chắc chắn không phải là khoá đúng với xác xuất sai là 0,005. Gọi K là tập gồm 8 % các khoá còn lại sau lần “lọc” của giai đoạn 1.

Ví dụ: Bản mã có độ dài N = 101.

1). Tính cận dưới ST = S(N) + T(N) = 61 + 18 = 79, trong đó:

S(N) = S(101) = 0,88 * 101 - 2,8 * √ 101 ∼ 89 – 28 = 61

T(N) = T(101) = 0,32 * (101 – 1) - 1,399 * √ (101-1) = 32 – 13, 99 ∼ 32 – 14 = 18

Khoá ki được chấp nhận nếu:

Độ phụ thuộc F(ki) = ∑ i10 fi + ∑ i18 f 1, i > S(N) + T(N) = 61 + 18 = 79.

2). Cho bản mã m, ta thử khóa k1 K1. Dùng DES với khóa k1 giải mã m, ta nhận được bản rõ: r = “77652077652061677265656420746F20656469746F7220 7468697320626F6F6B20666F722061207365636F6E6420 65646974696F6F207765206C6F6F6B656420666F727761 6420746F206120626974206F66207570646174696E6720 616E6420696E636C75”.

Ta nhận được thống kê sau:

+ Tần số xuất hiện các ký tự trong G1 là

20: 20 lần 61: 6 65: 9 68: 2

69: 6 6E: 6 6F: 11 72: 4

73: 2 74: 7

Số lần xuất hiện các ký tự đơn trong G1 là S(N) = 73. + Tần số xuất hiện các cặp ký tự trong G2 là

616E: 1 lần 6174: 1 6564: 4 656E: 1

6572: 0 6573: 0 6574: 1 696E: 2

6F6E: 2 6F72: 2 7265: 1 7374: 0

7465: 0 7468: 1 7469: 2 6520: 1

7320: 1 2074: 3

Số lần xuất hiện các bộ đôi ký tự trong G2 là T(N) = 23.

Độ phụ thuộcF(k1) = ∑ i10 fi + ∑ i18 f1, i > S(N) + T(N) = 73 + 23 = 96 > 79. Như vậy mẫu r là bản rõ có nghĩa.

4.2.2. Giai đoạn 2 (adsbygoogle = window.adsbygoogle || []).push({});

Input: Bản mã m độ dài N được mã hóa bằng Hệ mật DES.

Output: Khóa mật k.

Giai đoạn 2 cũng gồm có 2 bước.

Bước 1 : Giống như trong giai đoạn 1.

Bước 2 để “lọc” 8 % khóa còn lại (ghi trong tập khóa K) bằng thuật toán GA.

Bước 2:

• B1: Chọn hàm đánh giá (Fitness) Fit. Chọn p là số chẵn.

• B2: Trong tập khóa K, chọn ngẫu nhiên bộ khóa gồm p khóa k1, k2, … , kp. (Ví dụ p=10).

Dùng các khóa này để giải mã m, sẽ nhận được p “bản rõ” r1, r2, … , rp.

Tính Độ phụ thuộc Fi = F(ki) =∑ i10 fi + ∑ i18 f 1, i cho từng khóa ki theo “bản rõ ” ri.

• B3: Chọn cách “lai ghép” 2 khóa với nhau.

• B4: Chọn cách “đột biến” cho mỗi khóa.

• B5: Nhận được bộ khóa gồm p khóa mới k11, k12, …, k1p. (Ví dụ p=10 khóa).

• B6: Dùng các khóa này để giải mã m, sẽ nhận được p “bản rõ” r11, r12, …, r1p. Tính Độ phụ thuộcF1i = F(k1i) cho từng khóa k1i theo “bản rõ” r1i.

• B7: Xác định p giá trị lớn nhất FT1, FT2, …, FTp trong số 2 p giá trị Fi F1i.

Tương ứng với p giá trị lớn nhất FT1, FT2, …, FTp p khóa kt1, kt2, …, ktp. (Các khóa còn lại sẽ bị loại).

• B8: Kiểm tra sự hội tụ:

Nếu F max = Max {FTi / i = 1, 2, …, p} ≥Fit thì tương ứng với Fmax ta Tính được khóa k cần tìm.

Ví dụ: “Lai ghép” 2 khóa

◊ Khóa “cha” kA= {10001 …….101}.

◊ Khóa “mẹ” kB= {01101 …….111} gồm 56 bit.

◊ Hai khóa “con” được sinh ra như sau:

◊ Chọn ngẫu nhiên một vị trí i (1 ≤ i ≤ 56), sau đó hoán vị bit thứ i của khóa “cha”

và “mẹ”. ◊ Ví dụ nếu chọn i = 2, thì ◊ Khóa “con” 1 là AB1 = {010001 …….101}. Khóa “con” 2 là AB2 = {001101 …….111}. Ví dụ: “Đột biến” 1 khóa ◊ Khóa “gốc” kX = {10001 …….101}, gồm 56 bit.

◊ Khóa “đột biến” được sinh ra như sau:

◊ Chọn ngẫu nhiên một vị trí i (1 ≤ i ≤ 56), sau đó thay đổi giá trị bit thứ i của

khóa “gốc”.

KẾT LUẬN

Thuật giải di truyền (GA) là kỹ thuật chung giúp giải quyết bài toán bằng cách mô phỏng sự tiến hóa của con người, hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện quy định sẵn của môi trường. GA là một thuật giải, nghĩa là mục tiêu của GA không nhằm đưa ra lời giải chính xác mà là đưa ra lời giải tương đối tối ưu.

Kết quả chính của đồ án tốt nghiệp là tìm hiểu và nghiên cứu qua tài liệu để hệ thống lại các vấn đề sau: (adsbygoogle = window.adsbygoogle || []).push({});

1/. Tính toán mềm 2/. Giải thuật di truyền. 3/. Hệ mã hóa dữ liệu DES.

TÀI LIỆU THAM KHẢO

1. Hồ Văn Canh, Trịnh Nhật Tiến, Đào Ngọc Phong. “Thử nghiệm ứng dụng giải thuật di truyền để dò tìm khóa mã thay thế đơn”.

2. Data Structures + Algorithms = Programings.

3. http://www.data-compression.com/english.html. Statistical Distributions of E.Text

4. http://literature.org. The online literature library. 5. www.genetic-programming.com

6. Tính toán mềm và ứng dụng– Nguyễn Như Phong – NXB KHKT.

7. www .ittk.ac.in/kangal. 8. www.math.princeton.edu.

Một phần của tài liệu NGHIÊN CỨU TÍNH TOÁN MỀM VÀ ỨNG DỤNG (Trang 54 - 62)