M HểA & BO MT Trang 1/111 Lời nói đầu Ch¬ng 1: HƯ thèng chung vÒ m· LÞch sư, mét số hệ thống mã hoá kinh điển M· chun dÞch (Shift Cipher) HÖ m· tuyÕn tÝnh (Affine Cipher) HÖ m· Vigenere HÖ m· Hill 10 §é mËt cña m· 11 Ph¸ kho¸ hÖ m· tuyÕn tÝnh 12 Độ mật hoàn thiÖn 13 Kh¸i niƯm Entropy 15 Khoá giả (Spurious key) Khoảng cách nhÊt (Unicity distance) 19 TÝch c¸c hƯ m· 20 Hình thức hoá 22 Các khái niệm mở đầu 22 Định nghĩa mã 22 M· prefix, suffix, biprefix 24 Mã vị nhãm tù 25 Chuỗi hình thức (formal series) 29 Chương 2: Một số lớp mã đặc biÖt 31 Định lý mã 31 M· prefix 34 M· prefix 35 Otomat cña m· prefix 39 M· prefix cực đại 44 C¸c phÐp toán mã Prefix 48 Semaphore code 52 Độ trễ giải mã hữu hạn 55 Định nghĩa 55 Thuật toán kiểm tra độ trễ hữu hạn 61 Mét sè líp m· kh¸c: M· biprefix, Suffix 63 Parses 63 M· biprefix cùc ®¹i 65 BËc cña m· biprefix 67 Ch¬ng 3: Mét sè hƯ m· øng dơng 71 HÖ thèng DES 71 Giíi thiƯu 71 M« t¶ 71 Các nguyên tắc lùa chän khèi Si 74 Các chế độ hoạt động áp dụng 75 Ph©n tÝch m· vi ph©n (Differential cryptoanalysis) 76 Hệ thống mã khoá công khai, Hệ mã RSA 81 Giíi thiệu hệ mã khoá công khai (Public key system) 81 Giíi thiƯu hƯ m· RSA 81 Mô tả RSA 83 Cài đặt RSA 83 ¸p dơng RSA 87 Ch¬ng 4: Zigzag code 91 Giíi thiƯu 91 Kh¸i niƯm më ®Çu 92 Phép Z-hợp thành phÐp Z-ph©n tÝch 92 Trang 2/111 §ång cÊu m· cđa Z CODE 95 Đặc trưng Z-mã 100 Đồng cấu bảo toàn tính chÊt Z-m· 106 Tài liệu tham khảo 109 ChØ môc 110 Trang 3/111 Lời nói đầu Do có vai trò quan trọng bảo mật thông tin, hệ mã hoá sử dụng từ lâu Có thể coi thân chữ viết người hình thức mã Một hệ mã kinh điển gắn với tên tuổi nhà quân thiên tài Julius Cesar, áp dụng để trao đổi tin tức quân từ thời La mã Trong lịch sử có nhiều hệ mã áp dụng từ hƯ m· cỉ ®iĨn nh hƯ m· tun tÝnh ®Õn hệ mã khoá công khai Tuy nhiên thời gian dài người ta chưa hình thức hoá toán học, để từ mô hình hoá nghiên cứu vỊ mỈt lý thut còng nh øng dơng Cã thĨ nói lý thuyết mã có liên hệ chặt chẽ với lý thuyết thông tin Shanon đưa vào năm 50 Trong bốn mươi năm qua, lý thuyết mã thành phần quan trọng lý thuyết thông tin dành nhiều quan tâm nghiên cứu Kể từ đời, lý thuyết mã phát triĨn theo mét sè híng, ®ã cã lý thut độ bất định (entropy) dựa lý thuyết xác suất, lý thuyết mã sửa lỗi (error-correcting code), lý thuyết mã ®é dµi thay ®ỉi (code of variable length) Cã nhiỊu cách khác để tiếp cận lý thuyết mã, phương pháp tổ hợp, phương pháp đại số Do mục đích cách giải vấn đề, sử dụng nhiều công cụ khác để tiếp cận nghiên cứu, lý thuyết mã có quan hệ chặt chẽ đến lý thuyết tổ hợp từ, lý thuyết otomat, ngôn ngữ hình thức lý thuyết nhóm đại số Trang 4/111 Ch¬ng 1: HƯ thèng chung vỊ m· Trong ch¬ng đầu tiên, ta điểm lại số hệ mã cổ ®iĨn Tõ c¸c hƯ m· øng dơng, ta xem xÐt khái niệm độ mật hệ mã, dựa khái niệm entropy Phần ta hình thức hoá mặt toán học định nghĩa khái niệm làm sở lý thuyết mã Tư liệu hệ mã cổ điển tham khảo nhiỊu tµi liƯu nh Beker vµ Piper [BP82] ý tëng độ mật hoàn thiện kỹ thuật dùng entropy nghiên cứu hệ mã Shannon đề xuất [Sh49] Việc gắn lý thuyết mã với nhóm đại số Schỹzenberger nêu vào năm 1955 Lịch sử, số hệ thống mã hoá kinh điển Từ lâu, thông tin có vai trò quan trọng xã hội Khi có thông tin tất nhiên có nhu cầu trao đổi thông tin, truyền tin Và cách tự nhiên cần có cách trao đổi thông tin an toàn Ngay từ thời cổ đại, mã hoá Juilus Caesar áp dụng để trao đổi tin tức quân Một cách ngắn gọn, mục đích mã hoá cho phép hai bên A B giao tiếp an toàn qua kênh thông tin không bảo mật cho người thứ ba O thông tin thực trao đổi Thông tin ban đầu cần trao đổi gọi lµ tõ hiƯn (plain text, mét sè tµi liƯu gọi hiện) Để trao đổi, A thực mã hoá từ khoá mã định trước thu từ mã gửi từ mã (cipher text, mã) cho B qua kênh thông tin O thu từ mã gửi chuỗi từ A muốn gửi Còn B, với khoá giải mã, giải mã từ mã nhận thu từ ban đầu Một cách hình thức, định nghĩa hệ mã sau: Định nghĩa 1.1 kiƯn sau: HƯ m· (Cryptosystem) lµ bé (P, C, K, E, D) thoả mãn điều (1) P tập hữu hạn từ có (2) C tập hữư hạn từ mã có (3) K không gian khoá mã, tập hữu hạn khoá mã có (4) Với khoá K K , có quy tắc mã eK E quy tắc giải mã dK D Các hàm eK : P C dK : C P tháa dK(eK(x)) = x víi mäi tõ hiƯn x P Ta ®Ĩ ý tÝnh chất (4), thể từ x mã hoá khoá eK thu từ mã y, đến lượt từ mã y qua hàm dK giải mã từ x ban đầu Víi mét hƯ m· thĨ A vµ B thùc giao thức sau Đầu tiên họ chọn ngẫu nhiên khoá mã K K , lựa chọn có A B biết O không quan sát Bây giả sử cần trao đổi thông điệp Trang 5/111 với từ xi P (1 i n) x = x1 x2 xn , Mỗi từ xi mã hoá quy tắc eK xác định khoá mã K định trước Từ A tính yi = eK (xi ), i n, vµ thu thông điệp mã hoá y= y1 y2 yn gửi đến B qua kênh thông tin Khi nhận từ mã y, B dùng hàm dK giải mã, thu thông điệp x ban đầu Rõ ràng hàm mã hoá phải đơn ánh không giải mã Ví dụ tồn t¹i víi x1 x2, y1 = eK(x1) = eK(x2) , B xác định từ mã y1 cần giải mã x1 hay x2 Để ý P = C hàm mã hoá hoán vị Người thø ba O y X Ngêi göi A X Encoder K Decoder Người nhận B Kênh an toàn Key space Hình 1.1: Sơ đồ áp dụng hệ mã Ta bắt ®Çu víi viƯc xem xÐt mét sè hƯ m· kinh ®iĨn M· chun dÞch (Shift Cipher) HƯ m· chun dÞch hệ mã xuất sớm nhất, Juilus Caesar áp dụng từ thời trung cổ Sơ đồ hệ mã chuyển dịch mô tả sau: Cho P = C = K = Z26 Víi K 25, xác định eK(x) = x + K mod 26 , vµ dK(y) = y K mod 26 Ta tương ứng chữ với số nguyªn: A 0, B 1, HƯ m· chun dịch thực tính toán tập Z26 Ta có bảng ánh xạ sau Trang 6/111 A B C D E F G H I J K L M N O P Q 10 11 12 13 14 15 16 R S T U V W X Y Z 17 18 19 20 21 22 23 24 25 B¶ng 1.1 ánh xạ ký tự Ví dụ 1.1 Giả sử ta sử dụng khoá K = 11 chuỗi từ khoatoan Đầu tiên ta biến đổi thành chuỗi số nguyên dùng bảng ánh xạ trên, 10 , , 14 , , 19 , 14 , , 13 TiÕp theo ta céng víi 11 giản ước với mod 26 21 , 18 , 25 , 11 , , 25 , 11 , 24 Cuối ta chuyển đổi thành ký tự, thu chuỗi từ mã: VSZLEZLY Để giải mã, B chuyển đổi chuỗi từ mã sang chuỗi số tự nhiên, sau trừ số 11 (khoá K) giản ước mod 26 cuối chuyển đổi ngược lại thành ký tự, B thu dòng từ ban đầu Để áp dụng thực tế, hệ mã hoá cần thoả mãn số tính chất, sau hai số đó: (1) Các hàm mã hoá eK giải mã dK phải hàm dễ dàng tính toán (2) Người thứ ba biết từ mã y phải khoá mã K dùng hay từ x ban đầu Hệ mã tuyến tính (Affine Cipher) Trong hệ mã tuyến tính, hàm mã hoá hàm tuyến tính (affine) cã d¹ng: e(x) = ax + b mod 26 Để trình giải mã nhất, ta cần có hàm mã hoá đơn ánh tức với y , phương trình ax + b y mod 26 cã nghiƯm nhÊt DƠ thÊy r»ng cã nghiƯm nhÊt vµ chØ a vµ 26 nguyên tố nhau, nghĩa gcd(a,26) = 1, với gcd hàm UCLN Một cách tổng quát ta có: Trang 7/111 Định lý 1.2 Đồng dư ax b (mod n) cã nghiÖm nhÊt x Zn víi mäi b Zn vµ chØ gcd(a,n) = V× 26 = 13, ta cã giá trị a tập {1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25} Với giá trị b Z26 ta cã hƯ m· tun tÝnh cã thĨ cã 2612 = 312 kho¸ kh¸c Theo lý thuyÕt sè, số số nguyên Zm nguyên tố với m thường ký hiệu (m) (còn gọi hàm Euler) Nếu m có phân tích thừa sè n e m pi i i 1 n giá trị hàm (m) (m) ( piei piei 1 ) i 1 Tõ ta có số lượng khoá có, nghĩa số cặp (a,b), gcd(a,m)=1, 0a,bm1, hệ mã tuyến tính Zm m(m) Ta chuyển sang thao tác gi¶i m· mod 26 Gi¶ sư gcd(a,26) = Để giải mã ta cần giải phương trình y ax + b (mod 26) Với khái niệm nghịch đảo (multiplicative inverse) ta tìm nghiệm phương trình Định nghĩa 1.3 (mod m) Giả sử a Zm , nghịch đảo a phần tử a1 Zm thoả aa1a1a Ta có cần đủ để tồn phần tử nghịch đảo a1 gcd(a, m) = 1, Ngoài ta có b=a1 có a=b1 Nếu p nguyên tố phần tử khác Zp có phần tử đảo Từ hệ thøc ax (y b) mod 26 nh©n hai vế với a1 , để ý a1a mod 26, ta có hàm giải mã dK = a1(y b ) (mod 26) HÖ m· tuyÕn tÝnh mô tả sau Cho P = C = Z26 , vµ cho K = {(a,b) Z26 Z26 : gcd(a,16) = 1} Xác định: eK(x) = ax + b mod 26, vµ dK(y) = a1(y b) mod 26, víi x, y thc Z26 VÝ dơ 1.2 Gi¶ sư K = (7,3), ta cã 71 mod 26 = 15, hàm mã hoá là: eK(x) = 7x + hàm giải mã tương ứng là: dK(y) = 15(y 3) = 15y 19 mod 26 Trang 8/111 Ta cã thĨ kiĨm tra l¹i r»ng dK(eK(x)) = x víi mäi x Z26 Thùc vËy: dK(eK(x)) = dK(7x + 3) = 15(7x + 3) 19 = x (mod 26) HÖ m· Vigenere Trong hÖ mã chuyển dịch mã thay thế, chọn khoá K ký tự ánh xạ đến ký tự khác Do người ta gọi hệ mã đơn ký tự (monoalphabetic) Ngoài hệ mã đơn ký tự, có hệ m· ®a ký tù (polyalphabetic) , ta sÏ xem xÐt hệ mã cổ điển hệ Vigenere, lấy theo tên Blaise de Vigenere Vẫn áp dụng ánh xạ cũ A 0, ta gắn khoá K với chuỗi ký tự độ dài m gọi từ khoá Hệ mã Vigenere mã hoá theo tõng khèi m ký tù hiƯn VÝ dơ 1.3 Gi¶ sử m = từ khoá CIPHER, tương đương với biểu diễn chuỗi số nguyên K=(2, 8, 15, 7, 4, 17) Giả sử cần mã hoá chuỗi khoatoanbkhn Đầu tiên ta biến đổi thành chuỗi số nguyên tương ứng, nhóm số lại (10 , , 14 , , 19 , 14) , (0 , 13 , , 10 , , 13), råi céng víi tõ kho¸ theo mod 26 nh sau: (12 , 15 , , , 23 , 5) , (12 , 15 , , , 23 , 5) Cuèi cïng ta biÕn đổi chuỗi số nguyên thành ký tự, thu chuỗi từ mã MPDHXFCVQRLE Để giải mã, ta dùng từ khoá, ta thực phép trừ thay phÐp céng Ta cã thĨ thÊy r»ng sè tõ kho¸ với độ dài m có 26m khả khác nhau, với giá trị m không lớn, việc thử sai toàn khả ®ßi hái nhiỊu thêi gian VÝ dơ nÕu ta lÊy m = không gian từ khoá vượt 28 x 107 , số đủ lớn để thực tính toán thủ công Trong hệ mã Vigenere với từ khoá độ dài m, ký tự ánh xạ với sè m ký tù cã thĨ (gi¶ sư r»ng tõ kho¸ cã m ký tù kh¸c nhau) HƯ m· có tính chất gọi hệ mã đa ký tự (polyalphabetic) Nói chung phá khoá hệ mã đa ký tự khó khăn trường hợp hệ mã đơn ký tù Trang 9/111 HÖ m· Hill Ta xem xÐt hÖ mã đa ký tự khác, hệ mã Hill Hệ mã Lester S Hill đưa năm 1929 Giả sử m số nguyên dương, đặt P = C = (Z26)m T tëng cđa Hill lµ sư dơng m tỉ hỵp tun tÝnh cđa m ký tự phần tử từ hiện, từ sinh m ký tù mét phÇn tư tõ m· VÝ dơ 1.4 Gi¶ sư m = , ta viết phần tử từ dạng x = (x1, x2) phần tử từ mã y=(y1, y2) Trong y1 y2 tổ hợp tuyến tính cđa x1 vµ x2 , vÝ dơ cã thĨ lÊy: y1 = 11 x1 + x2 y2 = x + x Ta cã thÓ viÕt díi d¹ng ma trËn: 11 7 (y1 , y2) = (x1 , x2) Tæng quát ta chọn ma trận Km,m kho¸, K = (ki,j) Víi x = (x1 , , xm) P vµ K K , ta tÝnh ®ỵc y = eK(x) = (y1 , , ym) nh sau: k11k12 k1m (y1 , , ym) = (x1 , , xm) k k k m1 m mm hay viÕt ng¾n gän y = xK Ta nãi từ mã thu từ từ biến đổi tuyến tính Ta phải mô tả trình giải mã tức cách tính x từ y Dễ thấy trình giải mã cần đến ma trận đảo K Từ công thức y = xK, nhân hai vế với ma trận nghịch đảo ta y K1 = (xK)K1 = x (K K1) = x I = x Do từ x nhận từ c«ng thøc x = yK1 VÝ dơ 1.4(tiÕp) Víi ma trận khoá mã ta có ma trận nghịch đảo 18 K 23 11 Giả sử ta cần mã hoá từ july Ta chia thành khối: ju = (9,20) ly = (11,24) Nhân với ma trận khoá 11 =(3,4) ; 7 (9,20) 11 =(11,22) 7 vµ (11,24) Từ ta có từ mã DELW Để giải mã, ta dùng ma trận nghịch đảo Trang 10/111 Chứng minh Từ định nghĩa ta có M Z vị nhóm Ta chứng minh M thoả điều kiện C(1,1) mục Giả sử u, v, w lµ tõ thuéc ( B B ) * cho uv vµ vw thuéc M §Ỉt u = b1 b2 bi v = bi+1 bj w = bj+1 bn với chữ bk ( B B ) Ta cã uv = b1b2 bi bj M , tõ ®iỊu kiƯn (P2’) ¸p dơng cho uv suy bj B H¬n (P2) cho v: k {i+1, , j}, (b1b2 bi bk ) (b1b2 bi b j ) , suy (bi bk ) (bi b j ) V× vw = bi+1 bj bn M , điều kiện (P1) thoả bi+1 B Hơn điều kiện (P1) (P3) thoả với v Suy v M Vậy M thoả điều kiện C(1,1) khiết tự Với Z ta có lập luận hoàn toàn tương tự Bởi M Z ngôn ng÷ ( B B ) * , ta nói tập (M) (Z) Mệnh đề sau chứng tỏ M Z-vÞ nhãm (Z-submonoid) cđa ( B B ) * , Z cã tÝnh chÊt ®ã MƯnh ®Ị 4.5 Víi ®ång cÊu bÊt kú : B* A*, ta cã: (1) Z = (Z) (2) M (M) Z Chøng minh Ta ¸p dụng bổ đề 3.10 Giả sử có từ thuéc Z : uv = b1 bi bj , v = bi bj , vw = bi bj bn NÕu u = w = uvw Z Như cần xét trường hợp u w khác từ rỗng Dễ có từ uvw thoả ®iỊu kiƯn (P1’) XÐt ®iỊu kiƯn (P2’) Gi¶ sư k{1, , n} NÕu k từ uv có hai Z-phân tích khác Chứng minh Trang 100/111 §Ĩ ý r»ng: nÕu x1 xn lµ Z-calculus cđa cho x1 xn1 l -rút gọn ta cã víi mäi i, i n : xi xn x1 xi1 còng lµ Z-calculus cđa vµ xi xn x1 xi2 lµ l -rót gän ThËt vËy RedA(x1 xn ) = nên RedA(x1 xn x1 xi1 ) = RedA(x1 xi1 ) , suy RedA(xi xn x1 xi1 ) = Theo gi¶ thiÕt, tån k {1, n} m {1, n} cho k m vµ u = RedA(x1 xk ) vµ v = RedA(x1 xm ) NÕu u = từ v = uv có hai Z-phân tích phân biệt: f1 x n x m1 f x1 x m x m1 x m 1 (thËt vËy tõ RedA(x1 xn )=1, v = RedA(x1 xm ), vv suy v x m1 x n tøc lµ v x n x m 1 ) NÕu v = th× còng lËp ln t¬ng tù ta cã tõ u = uv cã hai Z-ph©n tÝch ph©n biƯt: f1 x k x1 vµ f x k 1 x n x k x k 1 NÕu u v khác từ rỗng Không tính tổng quát, giả sử m < k Bởi u Re d A ( x1 x k ) A , v Re d A ( x1 x m ) A , mặt khác RedA(x1 xn ) = k < n m < n DƠ cã tõ uv cã Z-ph©n tÝch f1 x1 x k x1 x m x k x1 x1 x m x k x m Hơn nữa, theo nhận xét đầu phần chøng minh, ta cã xk+1 xn x1 xk lµ Z-calculus cđa 1, tøc lµ RedA(xk+1 xn x1 xk ) = Do ®ã u 1u x k 1 x n x1 x k x1 x k x k 1 x n x1 x k x k x1 x k 1 x n Tõ ®ã suy tõ uv cã Z-ph©n tÝch thø 2: f x k 1 x n x1 x m Râ ràng hai Z-phân tích phân biệt x k x k Từ bổ đề ta thấy ngôn ngữ X mã vòng Z-calculus có tầm thường Mệnh đề 5.3 Giả sử X ngôn ngữ A* Khi X Z-mã vµ chØ 1l 1 X Chøng minh Giả sử X không Z-mã, tồn từ w có hai Z-phân tích phân biệt 2 Bëi v× 1 2 , ta cã RedX( f1 f ) Mặt khác ta có f1 f Z-calculus 1, f1 f 1l 1 X Ngỵc lại , giả sử tồn từ x1 xn 1l X Không tính tổng quát, ta giả sử x2 xn l -rút gọn Bởi v× x1 xn 1X , ta cã n > v× nÕu n = th× RedA(x1x2) = suy x1x2 1l , m©u thuÉn Nhng theo bổ đề 5.2 ta có X Z-mã Từ mệnh đề 5.3, ta suy hệ 5.4 5.5, theo X Z-mã phép l -rút gọn (lreduction) Z-hợp thành liên quan (concern) đến vòng tầm thường, X-rút gọn hợp thành X Z-phân tích X Hệ 5.4 Giả sử X ngôn ngữ A* Khi Trang 101/111 X lµ Z-m· vµ chØ d Z-Dec(X), Redl(d) = RedX(d) HƯ qu¶ 5.5 Gi¶ sư X ngôn ngữ A* Khi X Z-mã RedX(Z-Dec(X)) = Z-Fac(X) Bây giờ, tiếp cận nghiên cứu tính chất Z-mã qua phép rút gọn A, ta có Mệnh đề 5.6 Giả sử X ngôn ngữ A* Khi ®ã X lµ Z-m· vµ chØ (d1 , d2 ) Z-Dec(X) Z-Dec(X), d1 X d2 d1Ad2 Chứng minh Giả sử X Z-mã, giả sư (d1 , d2 ) Z-Dec(X) Z-Dec(X) tho¶ d1 A d2 Khi ta có d1 d2 Z-hợp thành từ w = RedA(d1) = RedA(d2) Theo mƯnh ®Ị 3.8, Redl(ZDec(X)) = Z-Fac(X) tồn hai Z-phân tích cho d1 l d2l Bây X Z-mã hai Z-phân tích lµ nh 1 = 2 = , nh theo mệnh đề 5.4 Redl(d1) = RedX(d1) Redl(d2) = RedX(d2), nghĩa d1 X d2 Ngược lại X Z-mã, tồn từ w có hai Z-phân tích khác , A Bởi ®· lµ X-rót gän ®ã mƯnh ®Ị d1 X d2 d1 A d2 không thoả Từ ta có kết Bổ đề 5.7 Cho X A* Z-mã Giả sử w từ ngắn có hai Z-phân tích khác x1 xn y1 ym X Khi ta có x1 y1 , tức hai Z-phân tích khác Chứng minh Không tính tổng quát, giả sử m n Gọi k m số nhỏ thoả : xk yk i {1, , k1} xi = yi Giả sử p số nguyên nhỏ p > k cho tån t¹i q k để xk xp A yk yq (tất nhiên p phải tồn xk xn A yk ym ) Khi ®ã x k x p y q y k l vµ x k x p y q y k l -rút gọn Theo bổ đề 5.2, tõ x k x p y q y k cã độ dài không 2, ngược lại tồn từ w = uv xác định theo 5.2 ngắn w có hai Z-phân tích khác (m©u thuÉn) Nh thÕ p = q = k, nhng x k y k l mâu thuẫn giả thiết k Vậy ta có điều cần chứng minh Trong trường hợp tập X có hai phần tử, ta có kết thú vị sau Mệnh đề 5.8 Cho X = {u, v} ngôn ngữ A* có phần tử Khi ta có X Z-mã X mã thông thêng Chøng minh Ta chØ cÇn chøng minh nÕu X không Z-mã mã Trang 102/111 Đầu tiên ta chứng minh X prefix X Z-mã Thật vậy, X prefix X Zphân tích gồm từ thuộc X X Z-mã Bây ta có X không Z-mã X không prefix Giả sử u < v Gọi n sè nguyªn lín nhÊt cho v = un u1 Bởi X Z-mã, tồn từ w ngắn có hai Z-phân tích khác f1 f2 X Theo mệnh đề 5.7, chúng khác giả sử bắt đầu u: f1 u ( X X ) , cßn 2 bắt đầu v: f v( X X ) Vì u < v ta cã f1 u{v, uv, u v, , u n 1v, u n }( X X ) * , tức phần bên trái dài w thuộc X+ thoả RedA(w) unA* Do ®ã ta cã u1 < u, ta ®Ỉt u = u1 u2 Nếu thuộc X+ rõ ràng X không mã thông thường Do ®ã cã Ýt nhÊt mét Zph©n tÝch thuéc X X ( X X ) * , gi¶ sư Như uv u v thừa số Bởi v = un u1 nªn v = (u1u2) (u1u2)u1 A+u2u1 NÕu cã thõa sè uv , ta cã uv u1u A u u1 u1u u1u A * Mặt khác Z-phân tích, uv phải khử được, Re d A (u1u u1u ) Re d A (u1u u u1 ) suy u1u2 = u2u1 NÕu cã thõa sè vu , ta cã vu A u u1 u1u A * u u1u u1 Mặt khác Z-phân tích, vu phải khử ®ỵc, ®ã Re d A (u u1u u1 ) Re d A (u u1u1u ) suy u1u2 = u2u1 VËy ta có u1u2 = u2u1 , từ uv = u1u2 ((u1u2)nu1 ) = (u1u2)n u1u2 u1= ((u1u2)n u1)u1 u2= vu , nghĩa X không mã thông thường Chú ý mệnh đề không tập X có nhiều phần tử Ví dụ tập X = {a, aba, baba} mã thông thường {a, b}* Tuy nhiên X Z-mã, từ ababa có hai Z-phân tích khác nhau: ababa a (baba ) aba (a )aba B©y ta xây dựng tiêu chuẩn kiểm tra Z-mã, với ý tưởng giống tiêu chuẩn SardinasPatterson mã thông thường Định nghĩa 5.9 Ta xây dựng ngôn ngữ Ui (i 0) theo quy n¹p A*#A* (víi # biểu tượng mới) sau U0 = {u#v : (u, uv) XX, v 1} i 0: Ui+1 = {ux#v : u#xv Ui , x X} {uv#y : u#v Ui , vy X} {u#xv : ux#v Ui , x X , u 1} MƯnh ®Ị 5.10 Cho c(1,u,v) lµ Z-calculus l -rót gän cđa u giả sử x ( X X ) \ {u } cho c(1,u,v)x cã nghÜa Khi ®ã Z-calculus c(1,u,v)x RedA(ux) rút gọn c-calculus c mà Trang 103/111 FirstLetter(c) = FirstLetter(c(1,u,v)) Trong hàm FirstLetter(x) trả lại chữ phân tÝch thõa sè cđa tõ x X* trªn X Định nghĩa 5.11 Từ u gọi Z-prefix uv quan hƯ víi X nÕu tån t¹i Z-calculus cđa u với ngữ cảnh (1,v) Đến ta có bổ ®Ị quan träng Bỉ ®Ị 5.12 Víi mäi i 0, ta cã tÝnh chÊt Pi nh sau NÕu u#v Ui tồn Z-phân tích uv cđa uv vµ z-calculus l-rót gän c(1, u, v) cho FirstLetter(Redl(c(1, u, v))) FirstLetter(uv ) Chøng minh Ta chứng minh quy nạp Dễ thấy Pi với i = Giả sử tính chất Pi víi i 0, ta sÏ chøng minh ®óng víi Pi+1 Giả sử w#w Ui+1 , theo cách xác định Ui+1 ta có trường hợp sau: (1) w#w’ = u#xv víi u#xv Ui , x X Vì Pi tồn Z-phân tích uxv u(xv) Z-calculus l-rút gọn c(1,u,xv) thoả FirstLetter(Redl(c(1, u, xv))) FirstLetter(uxv ) Ta cÇn chøng minh tồn Z-phân tích (ux)v Z-calculus l-rót gän c(1,ux,v) tho¶ FirstLetter(Redl(c(1, ux, v))) FirstLetter( ) DƠ thÊy r»ng cã thĨ chän Z-ph©n tÝch cđa (ux)v Z-phân tích u(xv): uxv Bây ta có tồn c(1, u, xv) mặt khác x X nên c(1, u, xv)x Z-calculus ux với ngữ cảnh (1,v) Như theo 5.10 , c(1, u, xv)x rút gọn Z-calculus c’(1, ux, v) mµ FirstLetter(c’) = FirstLetter(c(1,u,xv)) VËy ta cã Pi+1 theo FirstLetter(Redl(c(1,u,xv))) = FirstLetter(Redl(c’(1,ux,v))) FirstLetter(uxv ) (2) w#w’ = uv#y víi u#v Ui , vy X Khi ta có theo Pi tồn Z-phân tích uv cđa uv vµ Z-calculus l-rót gän c(1, u, v) cho FirstLetter(Redl(c(1, u, v))) FirstLetter(uv ) Ta cÇn chứng minh tồn Z-phân tích (uv)y mét Z-calculus l-rót gän c(1,uv,y) tho¶ FirstLetter(Redl(c(1, uv, y))) FirstLetter( ) Ta có vy X nên c(1, u, v)vy Z-phân tích từ uvy, gọi uvy Trang 104/111 Mặt khác dễ có Z-phân tÝch uv cđa uv chÝnh lµ mét Z-calculus cđa uv ngữ cảnh (1,y), gọi c(1,uv,y) Vậy ta có Pi+1 theo FirstLetter( ) = FirstLetter(Redl(c’(1,uv,y))) FirstLetter(uvy) = FirstLetter(Redl(c(1, u, v))) (3) w#w’ = u#xv víi ux#v Ui , x X vµ u Theo Pi , tồn Z-phân tích uxv từ (ux)v Z-calculus l-rót gän c(1,ux,v) cho FirstLetter(Redl(c(1,ux,v))) FirstLetter(uxv ) Ta cần chứng minh tồn Z-phân tích tõ u(xv) vµ Z-calculus l-rót gän c(1,u, xv) cho FirstLetter(Redl(c(1,u,xv))) FirstLetter( ) DƠ cã Z-ph©n tÝch uxv cđa từ (ux)v Z-phân tích từ u(xv) Mặt khác theo 5.10 ta có c(1,ux,xv) x rót gän Z-calculus c’ cđa tõ ux x = u ngữ cảnh (1,xv) mà FirstLetter(Redl(c(1,u,xv))) = FirstLetter(c) Vậy ta cã Pi+1 theo FirstLetter(Redl(c(1,u,xv))) = FirstLetter(c’) FirstLetter( uxv) Với bổ đề 5.12, ta có kết quan trọng sau để kiểm tra tập X A* có Z-mã không Mệnh đề 5.13 Giả sử X ngôn ngữ A* Khi X Z-mã vµ chØ ( U i ) ( A*# ) i0 Chøng minh Gi¶ sư X không Z-mã, theo bổ đề 5.7, tồn từ w có hai Z-phân tích khác khác nhau, giả sử xf yg với (x,y) (XX), xy Khi đặt p=( | xf | + | yg | ), ta cã w# Up2 , tøc lµ ( U i ) ( A*# ) i0 Ngỵc lại tồn i > để U i A*# ta cã u# Ui ®ã u X Theo bỉ ®Ị 5.12 tån t¹i Z-calculus l -rút gọn c(1,u,1) u Z-phân tích u cña u cho FirstLetter( c(1, u,1)) FirstLetter(u ) Mặt khác c(1, u,1) Z-phân tích u, u có hai Z-phân tích khác VÝ dô 5.1 Cho X={abb, abbba, bbba, baabb, b} Theo cách xác định ta có U0 = {abb#ba, b#bba, b#aabb} Trang 105/111 U1 = {abbb#a, bb#ba; abbba#abb; ab#bba} U2 = {bbb#a, abbbaabb#, abb#ba; abbba#bb, bbba#abb, abbbaabb#; abb#ba, b#bba, #abbbaabb, a#bbba } Vì U2 A*# nên X không Z-mã, từ w=(abb)(baabb)=(abbba)(abb) Nhận xét số lượng tập Ui vô hạn X hữu hạn, nhiên theo [An90], thùc tÕ ta cã thĨ tÝnh giíi hạn độ dài từ ngắn w có hai Z-phân tích khác Và ta thực tính toán hữu hạn tập Ui lµ cã thĨ kÕt ln tËp X cã lµ Z-m· không Đồng cấu bảo toàn tính chất Z-mã Trong trường hợp mã thông thường, ảnh nghịch ảnh tập mã qua đồng cấu đơn ánh m· Nhng tÝnh chÊt ®ã cã ®óng víi Z-m· hay không ? Trong mục ta nghiên cứu đồng cấu bảo toàn tính Z-mã Với trường hợp Z-mã, nghịch ảnh Z-mã qua đồng cấu đơn ánh Z-mã, nhiên với ảnh tính chất Lớp đồng cấu bảo toàn tính Z-mã ít, lớp đồng cấu mã biprefix Cho đồng cấu : A* C* ngôn ngữ X A* Để ý theo 4.1, Zf (X) mã hoá Z-hợp thành (X) c¸c tõ ( X X ) * Mệnh đề 6.1 Giả sử : A* C* đồng cấu đơn ánh X tập cđa A* cho Zf (X) Z-Dec(X) Khi ®ã X Z-mã (X) Z-mã Chứng minh Giả sử : B* A* đồng cÊu m· cho X ((B)=X) vµ xÐt = Khi ta có (B)=((B))=(X) Để chứng minh (X) Z-mã, ta chứng minh M(B)M(B) Gi¶ sư tõ w = b1 bn M(B) Víi i {1, ,n} ta đặt xi = (bi ) Khi w M(B) điều kiện (P1) (P2) thoả theo , (P1) j{1, n}: (b1 b j ) f ( (b1 b j )) f ( x1 x j ) C + (P2’) j{1, ,n1}: (b1 b j ) f ( x1 x j ) (b1 bn ) f ( x1 x n ) Nh thÕ x1 xn thoả (P1) (P2) theo ®ã x1 xn = (w) Zf (X) Víi giả thiết Zf (X) Z-Dec(X) từ (w) Zf (X) nªn (w) Z-Dec(X) Tõ RedA(x1 xi ) = (b1 bi ) , điều kiện (P1), (P2) tho¶: (P1) i {1, n}: RedA(x1 xi ) A+ (b1 bi ) A+ (P2) i {1, n1}: RedA(x1 xi ) < RedA(x1 xn ) (b1 bi ) < (b1 bn ) Trang 106/111 ta cã w = b1 bn tho¶ điều kiện (P1) (P2) Mặt khác w = b1 bn M(B) nªn víi 1 i < j n: (b1 bi ) f ( x1 xi ) (b1 b j ) f ( x1 x j ) đơn ánh nên (b1 bi ) x1 xi (b1 b j ) x1 x j Nh thÕ w thoả điều kiện (P3) w M(B) VËy M(B) M(B) B©y giê nÕu (u ) (v) với u v M(B) Điều kéo theo f ( (u )) f ( (v)) , đơn ánh nên (u ) (v) Bởi M(B) M(B) nªn ( (u ), (v)) (A+ A+) Mặt khác đồng cấu mã nên đơn ánh M Như đơn ánh M Theo hệ 4.7, (B) = (X) lµ Z-m· VÝ dơ sau ®©y chøng tá r»ng ®iỊu kiƯn Zf (X) Z-Dec(X) không thiết để có (X) Zmã: Ví dơ 6.1 Gi¶ sư A = C = {a,b}, X= {a,aba} Giả sử đồng cấu xác định bởi: (a) = a vµ (b) = aba Tõ w (aba )(a )(a )(aba ) thuéc Zf(X) Nhng RedA((aba))=aba không so sánh với RedA(w)=abba, nghĩa w Z-Dec(X) Hơn Re d A ((aba )(a )(a )) aba A Tuy nhiªn (X)={a, aabaa} Z-mã Định lý 6.2 đương Với đồng cấu đơn ánh : A* C*, điều kiện sau tương (1) (A) mã biprefix (2) Víi mäi tËp X cđa A*, X lµ Z-m· suy (X) lµ m· Chøng minh (12) Tõ mệnh đề 6.1 , ta cần chứng minh nÕu cã (1) th× Zf (X) Z-Dec(X) víi tËp X A* Giả sử tồn x1 xn Zf (X) mà không thoả điều kiện (P1) tøc lµ RedA(x1 xm ) A+ víi m thuộc {2, n} Giả sử RedA(x1 xm ) = a1 1 a k ®ã ký tự thuộc A Khi ®ã tån t¹i xj { x2 , , xm } chøa ký tù a i : xj = xj’ a i xj” , xj’ vµ xj” A * , Re d A ( x1 x j 1 x j a i ) a1 1 Bởi (A) mã biprefix nên f (a1 ai ) C+ f ( x1 x j ) C+ , m©u thn víi x1 xn Zf (X) VËy ®iỊu kiƯn (P1) phải thoả mãn Cũng ta xét điều kiƯn (P2) Gi¶ sư x1 xn Zf (X) ®ã ta cã i {1, n1}: f ( x1 xi ) f ( x1 x n ) tøc lµ f (Re d A ( x1 xi )) f (Re d A ( x1 x n )) Trang 107/111 Theo ta có RedA(x1 xi) RedA(x1 xn) ®Ịu thc A+ , ®Ỉt RedA(x1 xi) = a1 ap vµ RedA(x1 xn) = a1’ aq’ Thay vµo ta cã f (a1 a p ) f (a1 a q )) suy (a1) f (ap) < (a1’) f (aq’) Bởi (A) biprefix nên prefix từ phải có p < q (ai) = (ai) i {1, p} Do đơn ánh nên = ai’ Tõ ®ã RedA(x1 xi) < RedA(x1 xn) tức điều kiện (P2) thoả Vậy Zf (X) Z-Dec(X) (21) Gi¶ sư cã (2) nhng Z = (A) mã biprefix Khi Z prefix Như phải tồn y , z Z vµ t C+ cho y = zt Giả sử a b ký tự thuộc A thoả (a) = y (b) = z TËp X = {aab, ab, b} A* lµ Z-m· Nhng tËp ¶nh (X) = {yyz, yz, z} = {ztztz, ztz, z} mã, từ w = ztztz có hai Z-phân tích khác nhau: = (ztztz) = ztz( z )ztz Mâu thuẫn với (2) Vậy Z phải prefix Tương tự ta có Z phải suffix Nhận xét (1) Nói chung X Z-mã luỹ thừa X không thiết lµ Z-m· VÝ dơ tËp X={a, aba} lµ Z-m· nhng X2 = {aa, aaba, abaa, abaaba} không Z-mã; thật vậy, từ w = abaaba có hai Z-phân tích khác X2 : 1=(abaaba) 2=(abaa)( aa )(aaba) (2) Nãi chung (X) lµ tËp thùc sù cđa [(X)] , trường hợp đồng cấu mã m· biprefix th× ta cã (X) = [(X)] MƯnh đề 6.3 Giả sử : A*C* đồng cấu đơn ánh Khi Nếu Y Z-mã C 1(Y) Z-mã A Chứng minh Giả sử từ w có hai Z-phân tích khác (Y) Bởi đơn ánh từ (w) có hai Z-phân tích khác ( 1 (Y)) = Y , m©u thn víi giả thiết Y Z-mã Trang 108/111 Tài liệu tham kh¶o [An90] M Anselmo Theory Computer Science, 1990, p4341-354 [BePe85] Jean Berstel, Dominique Perrin Theory of Code, Academic Press Inc 1985 [BP82]: H Beker vµ F Piper Cipher System, The Protection of Communication John Wiley and Sons, 1982 [Da99] Dan Boneh Twenty Years of Attacks on RSA Cryptosystem Quantum, 2.1999 [DBI92] Do Long Van, Bertrand Le Saec, Igor Litovsky On Coding Morphism for Zigzag Code Theoretical Informatics and Applications, Vol 26, no 1992 [DH76] W Diffie vµ M E Hellman, Multiuser Cryptographic Techniques AFIPS Conference Proceeding, 45 (1976) [DNP93] Do Long Van, Nguyen Huong Lam and Phan Trung Huy On Codes concerning Biinfinite Words Acta cybernetica, Vol 11 Szeged, 1993 [DSt95] Douglas R Stinson Cryptography, Theory and Practice, CRC Press 1995 [GL70][4] G Lallement Semigroup and Combinatorial Application, John Wiley, 1979 [Mi76] G L Miller Riemann’s Hypothesis and Test for Primaliti Journal of Computer and System Science, 13 (1976) [Sh49]: C E Shannon Communication Theory of Secrecy Systems Bell Systems Technical Journal, 28 (1949), 656-715 [Sh91] H J Shyr Free Monoids and Languages Hon Book Company, 1991 [SS77] R Solovay vµ V Strassen A Fast Monte-Carlo Test for Primaliti SIAM Journal on Computing , (1977) Trang 109/111 Chỉ mục Đ Đạt Đồng cấu mã Đầy đủ phải Độ mật hoàn thiện Độ mật tính toán Độ mật vô điều kiện Độ trễ giải mã (hữu hạn) Đối đạt 45 24 47 16 14 14 59 45 Mã biprefix cực đại Mã chuyển dịch (Shift cipher) Mã cực đại Mã Hill Mã Huffman Mã lặp Mã prefix M· semaphore M· tuyÕn tÝnh (Affine cipher) M· Vigenere MAC Miller-Rabon B Bảng chữ Bậc mã biprefix Biết tõ hiƯn chän tríc (choosen plaintext) BiÕt tõ hiƯn(Known plaintext) BiÕt tõ m· (ciphertext-only) BiÕt tõ m· chän tríc (choosen ciphertext) BiĨu diƠn ch÷ (literal representation) Biprefix O 23 73 12 11 11 12 39 25 C CBC CFB ChØ tiêu (indicator) Chuỗi tựa zigzag 81 81 68 103 OFB Otomat chữ Parse Prefix Prefix đóng Prefix cực đại E R Right context RSA H Tập ổn định Tower Trạng thái lặp Trù mật phải Tích hệ mã Vßng (chain) 45 X X-rót gän 101 M M· M· ®¬n ký tù M· ®a ký tù 44 73 51 47 21 V 79 87 20 21 L L-rót gän 34 56 91 25 40 T K Khèi S Kho¸ c Khoá giả (spurious key) khoảng cách (unicity distance) 62 88 Sardinas-Patterson Semaphore Solovay-Strassen Suffix Suffix ®ãng 81 16 HÖ m· 68 25 40 47 S 103 76 82 ECB Entropy 81 42 P D D·y zigzag DES Diffenrential cryptoanalysis 70 26 10 19 22 37 56 81 93 24 9 99 Z Z-calculus Z-hợp thành Z-mã Z-phân tích Z-vị nhóm 100 100 102 100 102 Trang 110/111 Một số phương pháp mã ho¸ Trang 111/111 ... năm qua, lý thuyết mã thành phần quan trọng lý thuyết thông tin dành nhiều quan tâm nghiên cứu Kể từ đời, lý thuyết mã phát triển theo số hướng, có lý thuyết độ bất định (entropy) dựa lý thuyết. .. dựa lý thuyết xác suất, lý thuyết mã sửa lỗi (error-correcting code), lý thuyết mã độ dài thay đổi (code of variable length) Có nhiều cách khác để tiếp cận lý thuyết mã, phương pháp tổ hợp, phương... lại số hệ mã cổ điển Từ hệ mã ứng dụng, ta xem xét khái niệm độ mật hệ mã, dựa khái niệm entropy Phần ta hình thức hoá mặt toán học định nghĩa khái niệm làm sở lý thuyết mã Tư liệu hệ mã cổ điển