Khóa luận Phân tích hệ thám mã Vigenere

MỤC LỤC

 

Lời mở đầu 1

Chương 1: Hệ mật mã truyền thống 4

1.1 Mở đầu – một số hệ mã hóa đơn giản 4

1.1.1 Định nghĩa về hệ mật mã 4

1.1.2.Một số loại mã hóa truyền thống như 5

1.2. Mã Vigenere và các đặc tính của nó 11

1.2.1 Định nghĩa 11

1.2.2 Tính chất 12

1.3.Phương pháp mã hóa và giải mã Vigenere(khi có khóa cho trước) 13

1.3.1 Mã hóa 13

1.3.2 Giải mã 15

1.3.3 Chương trình mã hóa 15

1.3.4 Kết luận 16

Chương 2: Phân tích trong trường hợp không có khóa cho trước 16

2.1 Những đặc trưng thống kê của bản rõ: Tần số đơn, bộ đôi, trùng lặp 16

2.1.1 Tần suất của 1 ký tự 17

2.1.2 Tần suất bộ đôi phổ biến nhất xuất hiện trong tiếng Anh 18

2.1.3 Những bộ ba phổ biến nhất 19

2.2 Những đặc trưng thống kê của bản mã: Tần số đơn, bộ đôi, trùng lặp 20

2.3. Thống kê của bản mã được mã bởi khóa giả ngẫu nhiên, không có chu kỳ 26

2.3.1 Lý thuyết trùng khớp(coincident theory) 26

2.4 Mô tả 2 cách thám mã Vigenere 30

2.4.1 Phép thử Kasiski 30

2.4.2 Việc xác minh tiếp cho giá trị của m có thể nhận được bằng chỉ số trùng hợp 32

Chương 3: Thực hành phân tích một bản mã Vigenere 33

3.1 Thử với phép thử Kasiski 33

3.2 Tính theo chỉ số trùng hợp 33

Chương 4 Kết Luận và mô tả chương trình nguồn 39

4.1 Mô tả chương trình 39

4.2 Kết luận 39

Các thuật ngữ 39

Danh sách tham khảo 40

 

 

doc48 trang | Chia sẻ: netpro | Lượt xem: 5958 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Khóa luận Phân tích hệ thám mã Vigenere, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hift cipher): Định nghĩa[2]: Giả sử P = C = K = Z26 với 0 £ k £ 25 , định nghĩa: eK(x) = x +K mod 26 và dK(x) = y -K mod 26 (x,y Î Z26) Nhận xét: Trong trường hợp K=3, hệ mật thường được gọi là mã Caeser. Ta sẽ sử dụng mã dịch vòng(với modulo 26) để mã hóa một văn bản tiếng Anh thông thường bằng cách thiết lập sự tương ứng giữa các kí tự và các thặng dư theo modulo 26 như sau: A « 0,B « 1, . . ., Z « 25. A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Ví dụ: Giả sử khóa cho mã dịch vòng là K=11 Bản rõ: “wewillmeetatmidnight” Trước tiên biến đổi bản rõ thành dãy các số nguyên ta có: Bản rõ số: 22 4 22 8 11 11 12 4 4 19 0 9 12 8 3 13 8 6 7 19 Sau đó cộng 11 vào mỗi giá trị rồi rút gọn tổng theo modulo 26, ta được: Bản mã số: 7 15 7 19 22 22 23 15 15 4 11 4 23 19 14 24 19 17 18 4 Cuối cùng biến đổi dãy số nguyên này thành các kí tự thu được bản mã: Bản mã chữ: “HPHTWWXPPELEXTOYTRSE” Tương tự, khi bên B muốn xem bản mã này, trước tiên bên B sẽ biến đổi bản mã thành dãy các số nguyên rồi trừ đi giá trị cho 11 (rút gọn theo modulo 26) và cuối cùng lại biến đổi dãy này thành các ký tự. Kết luận: Mã dịch vòng là không an toàn vì nó có thể bị thám theo phương pháp vét cạn. Do chỉ có 26 khóa nên dễ dàng thử mọi khóa dk có thể cho tới khi nhận được bản rõ có ý nghĩa. 1.1.2.2 Mã thay thế: Định nghĩa[2]: Cho P =C = Z26 . K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, . . . ,25 Với mỗi phép hoán vị p ÎK , ta định nghĩa: ep(x) = p(x) và dp(y) = p -1(y) Trong đó p -1 là hoán vị ngược p. Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ được thay thế bằng ký tự khác trong bản mã (có thể là một chữ cái, một số hoặc một ký hiệu). Có 4 kỹ thuật thay thế sau đây: 1. Thay thế đơn (A simple substitution cipher): Là hệ trong đó một ký tự của bản rõ được thay bằng một ký tự tương ứng trong bản mã. Một ánh xạ 1-1 từ bản rõ tới bản mã được sử dụng để mã hoá toàn bộ thông điệp. 2. Thay thế đồng âm (A homophonic substitution cipher): Giống như hệ thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể được ánh xạ tới một trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1-n (one-to-many). Ví dụ, “A” có thể tương ứng với 5, 13, 25, hoặc 56, “B” có thể tương ứng với 7, 19, 31, hoặc 42, v.v. 3. Thay thế đa mẫu tự (A polyalphbetic substitution cipher): Được tạo nên từ nhiều thuật toán mã hoá thay thế đơn. ánh xạ 1-1 như trong trường hợp thay thế đơn, nhưng có thể thay đổi trong phạm vi một thông điệp. Ví dụ, có thể có năm thuật toán mã hoá đơn khác nhau được sử dụng; đặc biệt thuật toán mã hoá đơn được sử dụng thay đổi theo vị trí của mỗi ký tự trong bản rõ. 4. Thay thế đa sơ đồ (A polygram substitution cipher): Là thuật toán trong đó các khối ký tự được mã hoá theo nhóm. Đây là thuật toán tổng quát nhất, cho phép thay thế các nhóm ký tự của văn bản gốc. Ví dụ, “ABA” có thể tương ứng với “RTQ”, “ABB” có thể tương ứng với “SLL”, v.v. Ta xét ví dụ về phép hoán vị ngẫu nhiên tạo nên một hàm mã hóa( các kí hiệu của bản rõ được viết bằng chữ thường còn các kí hiệu của bản mã là chữ in hoa). Ví dụ: a b c d e f g h I j k l m X N Y A H P O G Z Q W B T n o p q r s t u V w x y z S F L R C V M U E K J D I Như vậy, ep (a) = X, ep (b) = N,. . . .. Hàm giải mã là phép hoán vị ngược. Điều này được thực hiện bằng cách viết hàng thứ 2 lên trước rồi sắp xếp theo thứ tự chữ cái. Ta nhận được: A B C D E F G H I J K L M d l r y v o h e z x w p T A B C D E F G H I J K L M d l r y v o h e z x w p T Bởi vậy, dp (A) = d, dp(B) = 1, . . . Kết luận: Mỗi khóa của mã thay thế là một phép hoán vị của 26 ký tự. Số các hoán vị này là 26! Là một số rất lớn. Bởi vậy phép tìm khóa vét cạn không thể thực hiện được, thậm chí bằng máy tính. Tuy nhiên, sau này sẽ thầy rằng mã thay thế có thể dễ dàng bị thám bằng các phương pháp khác. 1.1.2.3 Hệ mã hoá CAESAR: Hệ mã hoá CAESAR là một hệ mã hóa thay thế đơn làm việc trên bảng chữ cái tiếng Anh 26 ký tự (A, B, …, Z). Trong hệ Caesar và các hệ tương tự còn lại ta sử dụng các số tự nhiên thay cho các ký tự - đánh số các ký tự trong bảng chữ cái theo thứ tự: A B C D E F …. X Y Z 0 1 2 3 4 5 …. 23 24 25 Các phép toán số học thực hiện theo modul 26. Có nghĩa là 26 đồng nhất với 0, 27 đồng nhất với 1, …. Hệ Caesar sử dụng thuật toán mã hóa trong đó mỗi ký tự được thay thế bởi một ký tự khác được xác định bằng cách dịch ký tự cần mã hóa sang phải k bước theo modulo 26: Ek() = ( + k)mod 26. Trong đó là một ký tự, 0 k 26 Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo modul 26: Dk() = ( - k)mod 26 Không gian khóa của hệ Caesar bao gồm 26 số Ví dụ : Mã Hóa Plaint: “TRICH” Bản rõ số: 19 17 8 2 7 Khóa: k=3 Bản mã số: 22 20 11 5 10 Bản mã chữ là : “WULFK” Giải mã: Lùi lại với k=3 ta thu được bản rõ: “TRICH” Nhận xét: hệ mã hóa Caesar là hệ mã hóa cũ và không an toàn vì không gian khóa của nó rất nhỏ, do đó có thể thám mã theo phương pháp vét cạn. Khóa giải mã có thể tính ngay đươc từ khóa mã hóa. Do chỉ có 26 khóa nên ta có thể thử lần lượt các khóa cho đến khi tìm được khóa đúng. 1.1.2.4. Mã Affine: Định nghĩa[2]: Cho P = C = Z26 và giả sử: P = { (a,b) Î Z26 ´ Z26 : UCLN(a,26) =1 } Với K = (a,b) ÎK , ta định nghĩa: eK(x) = ax +b mod 26 và dK(y) = a-1(y-b) mod 26, x,y Î Z26 Ví dụ: giả sử K=(7,3). Áp dụng công thức của hàm mã hóa: Ek(x) = 7x+3 Và hàm giải mã tương ứng là: dk(x)=15(y-3)=15y-19 Bản rõ là: “Iwillwin” Bản số: 8 22 8 11 11 22 8 13 Ta có: 7 ´ 8 +3 mod 26 = 59 mod 26 = 7 7 ´ 22 + 3 mod 26 = 157 mod 26 =1 7 ´ 8 +3 mod 26 = 59 mod 26 = 7 7 ´ 11 +3 mod 26 = 80 mod 26 = 2 7 ´ 11 + 3 mod 26 = 80 mod 26 =2 7 ´ 22 +3 mod 26 = 157 mod 26 = 1 7 ´ 8 +3 mod 26 = 59 mod 26 = 7 7 ´ 13 +3 mod 26 = 94 mod 26 = 16 Bản mã số thu được là: 7 1 7 2 2 1 7 16 Bản mã chữ thu được là: “HBHCCBHQ” Việc giải mã chỉ việc áp dụng dK(y) = a-1(y-b) mod 26, 1.2. Mã Vigenere và các đặc tính của nó: 1.2.1 Định nghĩa: Trong cả hai hệ mã dịch vòng và mã thay thế( một khi khóa đã được chọn) mỗi ký tự được ánh xạ vào một ký tự duy nhất. Vì đó mà các hệ mật còn được gọi là hệ thay thế đơn biểu. Bây giờ ta sẽ trình bày một hệ mật không phải là bộ chữ đơn, đó là hệ mã Vigenere nổi tiếng. Nó được gọi là hệ mã hóa đa biểu Giống như Caesar nhưng ở đây khóa được thay đổi theo từng bước. Định nghĩa[2]: Cho m là một số nguyên dương cố định nào đó. Định nghĩa P=C=K=(Z26)m Với khóa K = (k1,k2, …,km) ta xác định: ek (x1,x2,…,xm) =(x1+k1, x2+k2,….,xm+km) dk(y1,y2,…ym) = (y1-k1, y2-k2,….,ym-km). Trong đó tất cả các phép toán được thực hiện trong Z26. Ta sẽ biến đổi các phần tử của bản rõ theo thặng dư 26, viết chúng thành các nhóm 6 rồi cộng với từ khóa theo modulo 26. Ví dụ: giả sử m=5 và từ khóa là “TRICH”. Từ khóa này tương ứng với dãy số K=(19,17,8,2,7). Giả sử bản rõ là xâu: Bản rõ: “CHIPHEO” Ta sẽ biến đổi các phần tử của bản rõ thành các số từ 0-25, ta được: Bản rõ số: C H I P H E O 2 7 8 15 7 4 14 viết chúng thành các nhóm 5 rồi cộng với từ khóa theo modulo 26 ta được: Bản rõ : C H I P H E O Bản rõ số: 2 7 8 15 7 4 14 Khóa số viết lặp lại: 19 17 8 2 7 19 17 =>> Bản mã số: 21 24 16 17 14 23 5 Bởi vậy, dãy ký tự tương ứng của xâu bản mã sẽ là: “VYQROXF” Để giải mã ta có thể dùng cùng từ khóa nhưng thay cho cộng, ta trừ cho nó theo modulo 26. 1.2.2 Tính chất: Ta thấy, khóa có độ dài là m, nên các khóa có thể là 26m , bởi vậy phương pháp tìm kiếm vét cạn cũng yêu cầu thời gian khá lớn.Việc thám mã là rất phức tạp. Thứ hai, từ khóa có độ dài m, mỗi ký tự có thể được ánh xạ vào trong m ký tự có thể có, như trong ví dụ xét trên có đến 2 ký tự H nhưng khi mã hóa ký tự H được mã hóa thành Y và O. Đó là một đặc điểm khác so với các hệ mã hóa đơn biểu. Một hệ như vậy được gọi là hệ mật thay thế đa biểu. Việc thám mã đa biểu khó khăn hơn nhiều so với việc thám mã hệ đơn biểu. Đó là một tiến bộ hơn so với các phép mã hóa cổ điển ta xét bên trên. 1.3.Phương pháp mã hóa và giải mã Vigenere(khi có khóa cho trước): Chúng ta xét một ví dụ sau: Ví dụ: Bản rõ: “Now is the time for all good men” Keywords là: TABLE Ta viết theo hàng của bản rõ và sự lặp lại của từ khóa phía dưới bản rõ, ta được: Bản rõ: n o w i s t h e t i m e f o r a l l g o o d m e n Lặp khóa: T A B L E T A B L E T A B L E T A B L E T A B L E 1.3.1 Mã hóa: Chúng ta nhìn vào hình A polyalphabetic tableau ứng với mỗi ký tự của bản rõ là một ký tự trên hàng của bảng đa biểu, và ứng với mỗi ký tự từ khóa là một ký tự trên cột của bảng đa biểu, khi đó tìm được ký tự mà là giao của cột ký tự khóa với hàng ký tự của bản rõ, ta được: n o w i s t h e t i m e f o r a l l g o o d m e n T A B L E T A B L E T A B L E T A B L E T A B L E G O X T W M H F E M F E G Z V T L M R S H D N P R Vậy nên, ta thu được bản mã là: “GOXTWMHFEMFEGZVTLMRSHDNPR” Chúng ta xem xét một vài đặc điểm. Trong từ “all” của bản rõ, xuất hiên 2 chữ ‘l’ nhưng khi được mã hóa chúng thành L và M, chữ ‘t’ ở trong “the” và “time” được mã hóa thành M và E…Vì vậy, những ký tự giống nhau của bản rõ có thể mã hóa thành những ký tự mã khác nhau, và những ký tự giống nhau của bản mã lại có thể được tạo nên bởi các ký tự khác nhau của bản rõ. Hình1 : A polyalphabetic tableau 1.3.2 Giải mã: Sự giải mã là quá trình ngược lại của mã hóa. Chúng ta viết dưới bản mã với keyword được lặp lại, sau đó nhìn theo cột của keyword khi nào thấy ký tự mã hóa, chiếu sang hàng ngang ta sẽ tìm ra ký tự rõ tương ứng. Ví dụ, ký tự mã là G, ký tự khóa là T, ta nhìn dọc theo cột T khi nào tìm thấy G, chiếu sang hàng ngang thì hàng đó là của ký tự N, vậy nên bản rõ là N. Tương tự lần lượt như vậy ta tìm ra được bản rõ. Ví dụ: Ciphertext: G O X T W M H F E M F E G Z V T L M R S H D N P R Keyword: T A B L E T A B L E T A B L E T A B L E T A B L E Paintext: n o w i s t h e t i m e f o r a l l g o o d m e n Trong hệ mã hóa này, có sử dụng sự quay vòng một số trong hệ mã hóa Caesar. Trong mỗi cột, đại diện một phép mã hóa Caesar đơn giản với một phép dịch chuyển. 1.3.3 Chương trình mã hóa: Chúng ta nhìn vào hàng đầu tiên trong tableau. Trong mỗi cột,A được miêu tả bởi một ký tự khóa, B sẽ được miêu tả ký tự khóa cộng thêm 1, ngoại trừ cột cuối cùng, nơi nó sẽ được thay thế bởi lý tự A. C sẽ được miêu tả bởi ký tự khóa cộng với 2, ngoại trừ 2 cột cuối cùng. Paintext :P Ciphertext: C Keyword: K Do đó, ta có: C= [P+K-1]mod 26 Ví dụ: Ta xét hàng đầu tiên P=13(M), K= 20(T) ,chúng ta sẽ có: C=[13+20-1]mod 26 =6 (F). Theo như trên, cột T và hàng M giao nhau tại F. Nếu bản rõ là vector T% và khóa là vector K%, khi đó bản rõ sẽ được xác định theo công thức: C%(X)=T%(I)+K%(KP)-1 IF C%(X)>26 THEN C%(X)=C%(X)-26 Quá trình giải mã là sự ngược lại của giải mã, khi đó thay công thức trên thành: C%(I)=T%(K)-K%(L)+1 IF C%(I)<0 THEN C%(I)=C%(I)+26 1.3.4 Kết luận: Việc mã hóa và giải mã của hệ mã hóa Vigenere khi có khóa cho trước là một việc không phải phức tạp, chỉ cần viết khóa lặp lại dưới bản rõ(mã) khi mã (giải) hóa, rồi tìm giao của chúng trên bảng đa biểu ta sẽ được bản mã (rõ) tương ứng. Chương 2: Phân tích trong trường hợp không có khóa cho trước 2.1 Những đặc trưng thống kê của bản rõ: Tần số đơn, bộ đôi, trùng lặp: Giả sử ta xét bản rõ: Có 3 cách phân tích mang lại hiểu quả nhất là: theo tần suất các ký tự đơn(letter frequences) và tần suất của các cặp ký tự đôi(digram frequences), và bộ ba(trigram). 2.1.1 Tần suất của 1 ký tự: Bảng 1. Bảng tần suất các ký tự trong Tiếng Anh của Robert Edward Lewand Letter Frequency Letter Frequency a 0.08167 n 0.06749 b 0.01492 o 0.07507 c 0.02782 p 0.01929 d 0.04253 q 0.00095 e 0.12702 r 0.05987 f 0.02228 s 0.06327 g 0.02015 t 0.09056 h 0.06094 u 0.02758 i 0.06966 v 0.00978 j 0.00153 w 0.02360 k 0.00772 x 0.00150 l 0.04025 y 0.01974 m 0.02406 z 0.00074 2.1.2 Tần suất bộ đôi phổ biến nhất xuất hiện trong tiếng Anh th, he, in, en, nt, re, er, an, ti, es, on, at, se, nd, or, ar, al, te, co, de, to, ra, et, ed, it, sa, em, ro. Chúng ta hãy nhìn vào bảng sau, ký tự đầu sẽ nằm bên cột ngoài cùng của bảng, ký tự thứ 2 tương ứng sẽ là hàng đầu tiên của bảng. Khi đó, con số trong mỗi ô đó chính là tuần suất xuất hiện của cặp ký tự đó trong tiếng Anh. Ví dụ: tần suất của ‘TH’ là 315, tần suất của “HT” là 22. Bảng 2: Bảng tần số đôi 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 A 1 32 39 15 10 18 16 10 77 18 172 2 31 1 101 67 124 12 24 7 27 1 B 8 58 6 2 21 1 11 6 5 25 19 C 44 12 55 1 46 15 8 16 59 1 7 1 38 16 1 D 45 18 4 10 39 12 2 3 57 1 7 9 5 37 7 1 10 32 39 8 4 9 6 E 131 11 64 107 39 23 20 15 40 1 2 46 43 120 46 32 14 154 145 80 7 16 41 17 17 F 21 2 9 1 25 14 1 6 21 1 10 3 2 38 3 4 8 42 11 1 4 1 G 11 2 1 1 32 3 1 16 10 4 1 3 23 1 21 7 13 8 2 1 H 84 1 2 1 251 2 5 72 3 1 2 46 1 8 3 22 2 7 1 I 18 7 55 16 37 27 10 8 39 32 169 63 3 21 106 88 14 1 1 4 J 2 4 4 K 28 8 3 3 2 1 3 3 L 34 7 8 28 72 5 1 57 1 3 55 4 1 28 2 2 2 12 19 8 2 5 47 M 56 9 1 2 48 1 26 5 3 28 16 6 6 13 2 3 N 54 7 31 118 64 8 75 9 37 3 3 10 7 9 65 7 5 51 110 12 4 15 1 14 O 9 18 18 16 3 94 3 3 13 5 17 44 145 23 29 113 37 53 96 13 36 4 2 P 21 1 40 7 8 29 28 26 42 3 14 7 1 2 Q 20 R 57 4 14 16 148 6 6 3 77 1 11 12 15 12 54 8 18 39 63 6 5 10 17 S 75 13 21 6 84 13 6 30 42 2 6 14 19 71 24 2 6 41 121 30 2 27 4 T 56 14 6 9 94 5 1 315 128 12 14 8 111 8 30 32 53 22 4 16 21 U 18 5 17 11 11 1 12 2 5 28 9 33 2 17 49 42 45 1 1 1 V 15 53 19 6 W 32 3 4 30 1 48 37 4 1 10 17 2 1 3 6 1 1 2 X 3 5 1 4 1 4 1 1 Y 11 11 10 4 12 3 5 5 18 6 4 3 28 7 5 17 21 1 3 14 Z 5 2 1 1 2.1.3 Những bộ ba phổ biến nhất: the, and, tha, ent, ing, ion, tio, for, nde, has, nce, edt, tis, oft, sth, men Sau đây là ví dụ về tần số đơn của các ký tự trong bản rõ: “Our latest shipment of one hundred bales is now loaded. Leave haror police will not interfere. We can sail anytime this we Please advise conditions at your end.” Từ đó ta có bảng tần số đơn của từng kí tự là: Plaint E: 28 H: 4 N: 12 W: 4 A: 11 P: 3 I: 11 U: 3 O: 11 B: 2 L: 10 F: 2 S: 9 M: 2 T: 9 Y: 2 D: 7 K: 1 R: 7 V: 1 C: 4 Không có G, J, Q, X và Z 2.2 Những đặc trưng thống kê của bản mã: Tần số đơn, bộ đôi, trùng lặp Ta xét 1 ví dụ thám mã sử dụng tần suất đơn( letter frequencies),bộ đôi( digram frequencies) và bộ ba(trigram frequencies). Cho bản mã sau: “CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP LCGJQ CXQKO GPQYD” Bước 1 : Chúng ta tính được tần suất xuất hiện của các ký tự trong bản mã. Và bên phải là bảng tần suất của các ký tự trong tiếng Anh. Cryptogram English(based on 135 letters) G ............. 21 e ............... 17 Q ............. 16 t ............... 13 K .......... …12 a, o............ 11 F,J,O ...... .. 9 n, i............. 10 C .......... …8 s ............... 9 L,P,Z ...... ..6 r ............... 8 A .......... …5 h ............... 7 U .......... …4 l, d............. 5 E,I,M,S .... .3 c, u............. 4 H,T,V,X .... 2 p,f,m,w....... 3 B,D,R,Y .... 1 y,b,g .......... 2 v,k .............. 1 Và tần suất xuất hiện của bộ đôi và bộ 3 trong bản mã là: Digrams in Cryptogram English Digrams QA ...................... ………5 th ......................... 4 GP,JZ,OG,PQ .................4 he ….................... 3 KO,FJ,CK,AG,UG ..........3 an,in,er,re,es ........ 2 GC,GZ,GF,GL,GM,QF on,ea,ti,at,st QQ,KU,KJ,FQ,JQ,JG en,nd,or,to,nt LO,ZK,AF,EF,IG,SJ ...... 2 ed,is,ar,ou,te of,it,ha,se,et …...... 1 Trigrams in Cryptogram English Trigrams (in order of frequency) GPQ ................................. 4 the QAG, FJZ ......................... 3 and QAF,JZK,OGP,KOG tha CKU,AGL,UGZ,GFJ ent GLO,KUG,KJG ................ 2 ion Bước 2: Chúng ta nhận thấy rằng: Ký tự G có tần suất cao nhất, vì vậy chúng ta thừa nhận nó là ‘A’. “the” là bộ đôi có tần suất xuất hiện cao nhất trong tiếng Anh, vì vậy chúng ta nhìn trong bộ 3 những bộ mà kết thúc là G, có: QAG, KOG, KJG ‘t’ cũng là ký tự có tần suất cao, ‘h’ tần suất trung bình. ‘QA’ là bộ đôi tần suất cao nhất trong bản mã, nên QAG là một lựa chọn chính xác và được thay thế cho ‘the’. Khi đó ta có: e e e th e e e t e tth tt e CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG te the t e e th e th FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA e t e e e e e t GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP e t t e t LCGJQ CXQKO GPQYD Bước 3: Chúng ta nhìn lại bản cryptogram, nhận thấy: - F( ở khối thứ 7) phải là một nguyên âm và có 1 tần suất cao giống ‘a’ hoặc ‘o’. ‘tha’ là bộ ba có tần suất cao nên F đại diện cho ‘a’ - ‘an’ là bộ đôi và ‘and’ là bộ ba có tần suất cao, chúng ta nhận thấy FJ và FJZ là phù hợp, vì vậy J được thay thế cho ‘n’ và Z cho ‘d’. Nên ta có bản cryptogram mới: e e ed th e e e t and e ttha tt e CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG and a t e a the n ta e e th a ed n th FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA e a nd t e e an d ne ne e t GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP en t t e t LCGJQ CXQKO GPQYD Bước 4: Nhìn lại bản cryptgram ở bước 3, ta nhận thấy: - e,t,a,o,n là những ký tự có tần suất cao nhất và chúng ta đã tìm thấy 4 ký tự. K kết hợp với o. -‘he’ và ‘re’ , O kết hợp với r Ta có: o o e e o ed th e o e e t and e ttha tt e CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG and a teo a the r n ta e re th a edr n th FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA e r aro ndort o e or ean d one one re t GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP ent tor e t LCGJQ CXQKO GPQYD Bước 5: Chúng ta hãy nhìn khối thứ 21 và 22, chúng ta thấy xuất hiện cụm từ “…oreandone…one…” đó là “and one …one…”, ta sẽ tìm được một cụm phù hợp thụ thuộc vào IX. Chúng ta thay thế P sẽ là s, Y là z, N là q. Ta có: o s o e e o edth e o e est andbe st th a tt e CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG and a t e o a the r n ta e res th a edr n th FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA e r aro ndort obe orean doneb yon e re ts GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP ent ytor estz LCGJQ CXQKO GPQYD Bước 6: Chúng ta xét các khối xem chúng có nghĩa không, khi đó tìm ký tự phù hợp: L được thay thế bởi i C bởi l U bởi v H bởi m E bởi f R bởi g T bởi c losom e e lo vedth elove liest andbe sttha ttime CKPKH GVGCK UGZQA GCKUG CLGPQ FJZIG PQQAF QQLHG andfa teofa llthe irvin tagep resth avedr n th FJZEF QGKEF CCQAG LOULJ QFRGM OGPQA FUGZO SJBQA eirc paro ndort obef orean doneb yonec repts GLOTS MFOKS JZKOQ VKIGE KOGFJ ZKJGI XKJGT OGMQP ilent ytor estz LCGJQ CXQKO GPQYD Bước 7: Lần cuối kiểm tra lại tất cả các ký tự chưa được thay thế: j bởi D k bởi B u bởi S w bởi V x bởi W Ta xác định được từ khóa: “FITZGERALD” Ta có bản rõ tìm được là “Lo! some we loved, the lovliest and best That Time and Fate of all their Vintage prest, Have drunk their Cup a Round or two before And one by one crept silently to rest. “ 2.3. Thống kê của bản mã được mã bởi khóa giả ngẫu nhiên, không có chu kỳ Trước tiên chúng ta đi tìm hiểu về một số khái niệm: 2.3.1 Lý thuyết trùng khớp(coincident theory): Giả sử X0, X1 là 2 vecto ngẫu nhiên cùng phân bố, nhận giá trị trên bảng chữ cái A={a,b,…,z} X0=(X00,X01,…,X0,n-1) X1=(X10,X11,…,X1,n-1) Ta có xác suất Pj(t)=P{XiJ = t}= P(t), i=0,n-1 , j=0,1, t € A (do cùng phân bố) Bây giờ ta hãy viết thành hàng ngang: X0 : X00, X01, X02, …., X0,n-1 X1 : X10, X11, X12, …., X1,n-1 Nếu có i sao cho X0i = X1i thì ta nói rằng 2 vecto X0 , X1 có một sự trùng khớp ở vị trí i (i=0,n-1). Ta có công thức tính chỉ số trùng khớp mà hiện nay người ta gọi là “hệ số tự tương quan”: Trong đó : Ci là số lần xuất hiện chữ cái i trong cột của bảng tần số định kỳ. Vấn đề đặt ra là: Vậy có bao nhiêu sự trùng khớp như vậy? Rõ ràng sự trùng khớp này phụ thuộc vào tính ngẫu nhiên của 2 vecto X0, X1 . Có 2 trường hợp cơ bản được đặt ra là: + TH1: X0, X1 là 2 bản rõ tùy ý thuộc vào ngôn ngữ tự nhiên nào đó (chẳng hạn như tiếng Anh). + TH2: Ít nhất 1 trong 2 vecto đó là hoàn toàn ngẫu nhiên có phân bố đều trên A. + Ta xét TH1: kí hiệu θ(X0, X1) là số lượng những trùng khớp giữa X0, X1. Ta đặt ra ΧX0,i (X1, i)= 1 nếu X0,i = X1,i 0 nếu trái lại Với i=(0,n-1) Rõ ràng rằng: θ(X0, X1) = Ta nhận được bổ đề sau: Bổ Đề: Ta có xác suất: P{X0,i = X1,i} =S2 Trong đó: S2 = Chứng minh: Thật vậy, biến cố {X0,i = X1,i} là hợp của m biến cố (m là lực lượng của A) độc lập, tức là {X0,i = X1,i} = {X0,i = X1,i = t}. Do đó xác suất P{X0,i = X1,i} = P{{X0,i = X1,i = t} } = = = S2 (đpcm) ≈ 0,0678 Như vậy, trong trường hợp X0 và X1 là 2 bản rõ độ dài n bằng nhau và được lấy từ cùng một ngôn ngữ thì số trung bình của sự trùng khớp là n.S2 (1). + TH2: Giả sử X0 là mẫu ngẫu nhiên độc lập, phân phối đều, có mật độ xác suất P0 = (P0,0, P0,1, P0,2……..P0,m-1). Còn X1 là mẫu ngẫu nhiên tùy ý với mật độ xác suất P1 = (P1,0, P1,1, P1,2……..P1,m-1). Đặt Y = X0 + X1 Khi đó phân phối xác suất của Y với hàm mật độ PY(y) y A có dạng : PY(y) = Vì P0(x) = x A nên có: PY(y) = = = V2 = 0.0385 Vậy giá trị trung bình của những trùng khớp trong trường hợp này sẽ là nV2 Chý ý rằng, nếu 2 bản mã Y0, Y1 được mã cùng một loạn số tùy ý (K1, K2,……..,Kr) và các bản rõ tương ứng là X0, X1. Khi đó nếu lấy X0 trừ đi X1 (theo modulo 26) thì ta có: Y0 – Y1 = (X0 + K)- (X1 + K) = X0 – X1 Vì vậy số các trùng khớp của Y0 , Y1 bằng số các trùng khớp của X0 , X1 Trên cơ sở đó, chúng ta đưa ra 2 giả thuyết: H0: Y0, Y1 được mã bởi cùng một phép thay thế ∏ E H1: Y0, Y1 được mã hóa bởi 2 phép thế độc lập ∏0 , ∏1 E Khi đó xác suất của biến cố: {Y0,i = Y1,i} theo lần lượt từng giả thiết H0 , H1 là: P{Y0,i = Y1,i / H0 } = = S2 và P{Y0,i = Y1,i / H1 } = = =V2 Do đó, số trùng khớp kỳ vọng có thể theo giả thuyết H0, H1 với mẫu độ dài n sẽ là: E{θ(Y0, Y1) / H0 } = n.S2 E{θ(Y0, Y1) / H1 } = n.V2 Nếu X0 , X1đều thuộc ngôn ngữ tiếng Anh thì ta có: S2 = ≈ 0,076355 Và nếu khóa là dãy hoàn toàn ngẫu nhiên không chu kỳ thì V2 ≈ 0,038462 + Xác định chiều dài khóa Vigenere: Một cách lý thuyết: giả sử X= (X0, …, Xn-1) là n biến ngẫu nhiên (không nhất thiết độc lập) và cho khóa = ( , …, ) với r n, là r biến ngẫu nhiên độc lập. Ta ký hiệu: Prõ{Xi = t} = P(t) với t {a,z} (hoặc t {0,25}), 0i <n Và Pkhóa {i = } = q() với i = 0,….,r-1 Nếu Y = (Y0, Y1, …. ,Yn-1) là bản mã nhận được từ bản rõ X và khóa bằng hệ mã Vigenere, Trong đó, Yi = với i = 0,1,….,n-1 Thì số khả năng trùng khớp θ(Y, Y-S) giữa dãy Y và dãy Y-S = (Ys, Ys+1, ….,Yn-s, Y0, Ys-1) là bằng s2 nếu Y, Y-S được mã cùng một phép thay thế đơn và bằng V2 nếu được mã hóa bởi 2 phép thế độc lập ∏0 , ∏1 E Tức là ta có bổ đề sau: kỳ vọng, E{ θ(Y, Y-S) } = nV2 nếu s o mod r nS2 nếu s o mod r Trong thực hành ta lấy S2 = = 0,75, còn V2 = 0,0385. Độ dài n càng lớn càng tốt. Điều này có nghĩa: Nếu i mod r = (i+s) mod r => s là chiều dài khóa Nếu i mod r (i+s)mod r => s không phải là chiều dài khóa. Sau khi xác định được chiều dài khóa ta viết bản mã thành chu kỳ độ dài chu kỳ đó. Rồi tìm từng phần tử khóa bằng cách thám mã từng cột như thám mã Caser. 2.4 Mô tả 2 cách thám mã Vigenere: phép thử Kasiski và phép thử sử dụng chỉ số trùng hợp: Mô tả một số phương pháp thám hệ mã Vigenere. Bước đầu tiên là ta phải xác định độ dài từ khóa mà ta ký hiệu là m. Dùng 2 kỹ thuật: phép thử Kasiski và sử dụng chỉ số trùng hợp. 2.4.1 Phép thử Kasiski: Được mô tả vào năm 1863 của nhà thám mã Kasiski Friendrich. Kỹ thuật này được xây dựng trên nhận xét là: hai đoạn giống nhau của bản rõ sẽ được mã hóa thành cùng một bản mã khi chúng xuất hiện trong bản rõ cách nhau x vị trí, trong đó x º o md m. Ngược lại, nếu ta thấy hai đoạn giống nhau của bản mã (mỗi đoạn có ít nhất là 3) thì đó là một dấu hiệu tốt để nói rằng chúng tương ứng với các đoạn bản rõ giống nhau. + Phép thử Kasiski như sau. Ta tìm trong bản mã các cặp trùng mã bộ ba bộ bốn v.v. và ghi lại khoảng cách giữa các vị trí bắt đầu của hai đoạn. Chúng ta thu được các giá trị d1,d2,….T

Các file đính kèm theo tài liệu này:

  • docPhân tích hệ thám mã vigenere.doc