V. Một số thuật toán cổ điển phổ biến
5. Mật mã Polyalphabetic
Monoalphabetic chỉ sử dụng một bảng mã. Một cách cải thiện kỹ thuật nhằm vào monoalphabetic đơn giản là sử dụng nhiều bảng mã monoalphabetic thay thế khác nhau cho từng phần tử thông điệp plaintext. Phương pháp này gọi là mật mã thay thế polyalphabetic hay các mã thế đa bảng. Ở đây mỗi chữ có thể được mã bằng bất kỳ chữ nào trong bản mã tùy thuộc vào ngữ cảnh khi mã hoá. Làm như vậy để trải bằng tần suất các chữ xuất hiện trong bản mã. Do đó làm mất bớt cấu trúc của bản rõ được thể hiện trên bản mã và làm cho phá mã đa bảng khó hơn.
Tất cả các kỹ thuật trong phương pháp này có chung các đặc điểm sau: • Một tập nhiều quy tắc quan hệ thay thế monoalphabetic được sử dụng. • Một khóa nhằm xác định quy tắc nào thực sự được chọn đối với một quá
CHƯƠNG III. MẬT MÃ VIGENÈRE
I. Lịch sử:
Các tài liệu mô tả đầu tiên của giải thuật mã hóa được xây dựng bởi Leon Battista Alberti vào khoảng 1467 và đã sử dụng một chiếc đĩa thuật toán mã hóa kim loại để chuyển đổi giữa các bảng chữ cái của thuật toán mã hóa. Hệ thống của Albeti chỉ chuyển bảng chữ cái sau một số từ, và chuyển mạch đã ddwwocj chỉ ra bằng cách viết chữ cái của bảng chữ cái tương ứng trong các bản mã.Sau đó, năm 1508, Johannes Trithemius, trong khi làm chuỗi mã hóa, đã phát minh ra tabula recta, một thành phần quan trọng của thuật toán mã hóa Vigenère.Thuật toán mã hóa Trithemius, tuy nhiên, chỉ đưa ra một hệ thống, tiến bộ, cứng nhắc và có thể dự đoán trước được để chuyển đổi giữa các bảng chữ cái của thuật toán mã hóa.
Những gì bây giờ được gọi là thuật toán mã hóa Vigenère đã được mô tả bởi Giovan Battista Bellaso trong cuốn sách năm 1553 La cỉa del.Sig.Giovan Battista Bellaso của ông.Ông đã xây dựng dựa trên tabula recta của Trithemius.Nhưng đã thêm vào một khẩu hiệu lặp đi lặp lại (khóa) để chuyển đổi bảng chữ cái mã hóa tất cả các ký tự.Trong khi đó Alberti và Trithemius sử dụng một mẫu hình thay thế cố định., đề án của Bellaso có nghĩa là mô hình thay thế có thể dễ dàng thay đổi bằng cách lựa chọn một khóa mới. Các khóa thường có các từ đơn hoặc cụm ngắn, được cả hai bên biết trước, hoặc truyền “ra khỏi băng thông” cùng với các thông điệp. Phương pháp của Bellaso vì thế yêu cầu bảo mật mạnh mẽ cho khóa duy nhất. Vì nó tương đối dễ dàng để đảm bảo cho một cụm từ ngắn quan trọng, nói bởi một sự trao đổi riêng trước đó, hệ thống của Bellaso là an toàn hơn.
Blaise de Vigenère đã công bố mô tả của một thuật toán mã hóa khóa tự động tương tự nhưng mạnh mẽ hơn trước tòa án của Henry III của Pháp, năm 1586. Sau đó, vào thế kỷ 19, sự phát minh của thuật toán mã hóa Bellaso được đổi thành Vigenère. David Kahn trong cuốn sách của ông: The Codebreakers lên án sự hiểu nhằm này bằng cách nói rằng lịch sử đã “bỏ qua đóng góp quan trọng này và đã thay vào đó là một thuật toán mã hóa thoái lui và tiểu học cho ông (Vigenère ) mặc dù ông chẳng có việc gì để làm với nó ”.
Thuật toán mã hóa Vigenère đã đạt được một danh tiếng đặc biệt mạnh mẽ. Lưu ý tác giả và nhà toán học Charles Lutwidge Dodgson(Lewis Carroll) đã gọi thuật toán mã hóa Vigenère là không thể phá trong mảnh 1868 của ông “Thuật toán mã hóa bảng chữ cái” trong một tạp chí trẻ em. Năm 1917, các nhà khoa học Mỹ mô tả thuật toán mã hóa Vigenère như là “không thể dịch”: danh tiếng này không xứng đáng. Charles Babbage đã được biết đến là đã phá vỡ một thuật toán mã hóa sớm nhất 1854, tuy nhiên, ông đã không công bố công việc của ông.Kasiski hoàn toàn phá vỡ thuật toán mã hóa và công bố kỹ thuật trong thế kỷ 19.Ngay cả trước điều này, mặc dù, một số nhà mật mã được kỹ năng đôi khi có thể phá vỡ thuật toán mã hóa thế kỷ 16.
Mật mã Vigenère là đơn giản, đủ để có một lĩnh vực thuật toán mã hóa nếu nó được sử dụng kết hợp với các đĩa mật mã. Liên minh miền Nam Hoa Kỳ, ví dụ đã sử dụng một đĩa thuật toán mã hóa bằng đầu để thực hiện các thuật toán mã hóa Vigenère trong suốt thời gian nội chiến.Các thông điệp của liên minh đã xa từ bí mật và Liên minh thường xuyên bị phá các thông điệp. Suốt thời gian chiến tranh, lãnh đạo của Liên Minh chủ yếu sử dụng ba cụm từ khóa “Manchester Bluff”, “Complete Victory” và, như khi cuộc chiến đến hồi kết, “Come Retribution”.
Gibert Vernam đã cố gắng để sửa chữa các thuật toán mã hóa bị hỏng( bằng việc tạo ra thuật toán Vernam-Vigenère năm 1918), nhưng ông không làm thay đổi điều gì, thuật toán mã hóa vẫn tiếp tục bị tổn thương để phá mã. Công việc của Vernam, tuy nhiên, cuối cùng dẫn đến một thời gian dài, một người phá mã không thể phá vỡ mật mã.
II. Đị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ã Vigenère 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.
III. 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.
IV. Phương pháp mã hóa và giải mã Vigenère(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. 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ình3.1. Ma trận cơ bản của phương pháp mã hóa Vigenère.
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ụ:
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.
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
V. Phân tích mã Vigenère trong trường hợp không có khóa cho trước
1. Những đặc trưng thống kê:
Giả sử ta xét bản rõ:
đơn(letter frequences) và tần suất của các cặp ký tự đôi(digram frequences), và bộ ba(trigram).
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
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.
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 habor 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
A 1 32 3 9 15 1 0 1 8 16 1 0 77 1 8 172 2 3 1 1 10 1 67 124 12 24 7 27 1 B 8 58 6 2 21 1 11 6 5 25 1 9 C 44 12 55 1 46 15 8 1 6 59 1 7 1 38 1 6 1 D 45 1 8 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 01 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 1 0 8 3 9 32 16 9 63 3 21 10 6 88 1 4 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 1 6 6 6 1 3 2 3 N 54 7 3 1 11 8 64 8 75 9 37 3 3 1 0 7 9 65 7 5 51 11 0 12 4 15 1 1 4 O 9 1 8 1 8 16 3 94 3 3 13 5 1 7 44 145 23 29 11 3 37 53 9 6 1 3 3 6 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 75 1 21 6 84 1 6 30 42 2 6 1 19 71 24 2 6 41 12 3 2 27 4
T 56 4 6 9 94 5 1 5 128 12 4 8 1 8 30 32 53 22 4 6 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 Bảng 2: Bảng tần số đôi
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,QFon,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,GFJent 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ế