1. Trang chủ
  2. » Công Nghệ Thông Tin

Lý thuyết mã, Mã hóa, bảo mật

111 149 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 111
Dung lượng 829,49 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đầu tiên ta biến đổi thành chuỗi các số nguyên dùng bảng ánh xạ ở trên, được Để có thể áp dụng trong thực tế, hệ mã hoá cần thoả mãn một số tính chất, sau đây là hai trong số đó: 1 Các h

Trang 1

MÃ HÓA & BẢO MẬT

Trang 2

Lời nói đầu 4

Chương 1: Hệ thống chung về mã 5

1 Lịch sử, một số hệ thống mã hoá kinh điển 5

Mã chuyển dịch (Shift Cipher) 6

Hệ mã tuyến tính (Affine Cipher) 7

Hệ mã Vigenere 9

Hệ mã Hill 10

2 Độ 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) và Khoảng cách duy nhất (Unicity distance) 19

Tích các hệ mã 20

3 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à vị nhóm con tự do 25

Chuỗi hình thức (formal series) 29

Chương 2: Một số lớp mã đặc biệt 31

1 Định lý cơ bản về mã 31

2 Mã prefix 34

Mã prefix 35

Otomat của mã prefix 39

Mã prefix cực đại 44

Các phép toán trên mã Prefix 48

Semaphore code 52

3 Độ 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

4 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

1 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 và áp dụng 75

Phân tích mã vi phân (Differential cryptoanalysis) 76

2 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

1 Giới thiệu 91

2 Khái niệm mở đầu 92

3 Phép Z-hợp thành và phép Z-phân tích 92

Trang 3

4 §ång cÊu m· cña Z CODE 95

5 §Æc tr­ng cña Z-m· 100

6 §å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 4

Lời nói đầu

Do có vai trò quan trọng trong bảo mật thông tin, các hệ mã hoá đã được sử dụng từ rất lâu Có thể coi bản thân chữ viết của con người cũng là một hình thức mã Một trong những

hệ mã kinh điển gắn với tên tuổi nhà quân sự thiên tài Julius Cesar, đã được áp dụng để trao

đổi tin tức quân sự từ thời La mã Trong lịch sử đã có rất nhiều hệ mã được áp dụng từ các hệ mã cổ điển như hệ mã tuyến tính đến các hệ mã khoá công khai Tuy nhiên trong một thời gian dài người ta chưa hình thức hoá toán học, để từ đó mô hình hoá và nghiên cứu về mặt lý thuyết cũng như ứng dụng Có thể nói rằng lý thuyết mã có liên hệ chặt chẽ với lý thuyết thông tin do Shanon đưa ra vào những năm 50 Trong bốn mươi năm qua, lý thuyết mã là một thành phần quan trọng trong lý thuyết thông tin và dành được nhiều sự quan tâm nghiên cứu

Kể từ khi ra đời, lý thuyết mã phát triển theo một số hướng, trong đó có lý thuyết độ bất

định (entropy) dựa trên 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 nhau để tiếp cận lý thuyết mã, như phương pháp tổ hợp, phương pháp đại số Do mục đích và cách giải quyết các vấn đề, có thể sử dụng nhiều công cụ khác nhau để 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 và lý thuyết nhóm

đại số

Trang 5

Chương 1: Hệ thống chung về mã

Trong chương đầu tiên, ta điểm lại một số hệ mã cổ điển Từ các hệ mã ứng dụng, ta xem xét khái niệm về độ mật của hệ mã, dựa trên khái niệm entropy Phần tiếp theo ta hình thức hoá về mặt toán học các định nghĩa và khái niệm làm cơ sở trong lý thuyết mã Tư liệu về các

hệ mã cổ điển có thể tham khảo trong nhiều tài liệu như Beker và Piper [BP82] ý tưởng về

độ mật hoàn thiện và kỹ thuật dùng entropy trong nghiên cứu hệ mã được Shannon đề xuất trong [Sh49] Việc gắn lý thuyết mã với nhóm đại số được Schỹzenberger nêu ra vào năm

1955

1 Lịch sử, một số hệ thống mã hoá kinh điển

Từ rất lâu, thông tin đã có vai trò quan trọng trong xã hội Khi có thông tin tất nhiên sẽ có nhu cầu trao đổi thông tin, truyền tin Và một cách tự nhiên cần có những cách trao đổi thông tin an toàn Ngay từ thời cổ đại, mã hoá đã được Juilus Caesar áp dụng để trao đổi tin tức quân sự Một cách ngắn gọn, mục đích của mã hoá là cho phép hai bên A và B có thể giao tiếp an toàn qua các kênh thông tin không được bảo mật sao cho người thứ ba O không biết

được thông tin gì thực sự được trao đổi Thông tin ban đầu cần trao đổi gọi là từ hiện (plain text, trong một số tài liệu gọi là bản hiện) Để trao đổi, A thực hiện mã hoá từ hiện bằng khoá mã định trước thu được từ mã và gửi từ mã (cipher text, bản mã) cho B qua kênh thông tin O

có thể thu được từ mã gửi đi nhưng không biết chuỗi từ hiện A muốn gửi Còn B, với khoá giải mã, có thể giải mã từ mã nhận được và thu được từ hiện ban đầu

(3) K là không gian khoá mã, là tập hữu hạn các khoá mã có thể có

eK : P  C và dK : C  P thỏa dK(eK(x)) = x với mọi từ hiện x  P

được từ mã y, và đến lượt từ mã y qua hàm dK giải mã được từ hiện x ban đầu

Với một hệ mã cụ thể A và B thực hiện giao thức như sau Đầu tiên họ chọn ngẫu nhiên khoá mã K  K , sự lựa chọn này chỉ có A và B được biết còn O không quan sát được Bây giờ giả

sử cần trao đổi thông điệp

Trang 6

x = x1 x2 xn , với các từ hiện xi  P (1  i  n)

A tính được yi = eK (xi ), 1  i  n, và thu được thông điệp mã hoá

y= y1 y2 yn

thông điệp x ban đầu

Rõ ràng các hàm mã hoá phải là đơn ánh vì nếu không thì không thể giải mã đúng được Ví

dụ nếu tồn tại

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ã chuyển dịch (Shift Cipher)

Hệ mã chuyển dịch là hệ mã xuất hiện sớm nhất, đã được Juilus Caesar áp dụng từ thời trung

Trang 7

Ví dụ 1.1 Giả sử ta sử dụng khoá K = 11 và chuỗi từ hiện là “khoatoan”

Đầu tiên ta biến đổi thành chuỗi các số nguyên dùng bảng ánh xạ ở trên, được

Để có thể áp dụng trong thực tế, hệ mã hoá cần thoả mãn một số tính chất, sau đây là hai trong số đó:

(1) Các hàm mã hoá eK và giải mã dK phải là hàm dễ dàng tính toán

(2) Người thứ ba nếu biết từ mã y thì phải không biết được khoá mã K đã dùng hay từ hiện

x ban đầu

Hệ mã tuyến tính (Affine Cipher)

Trong hệ mã tuyến tính, hàm mã hoá là hàm tuyến tính (affine) có dạng:

Trang 8

Định lý 1.2 Đồng dư ax  b (mod n) có nghiệm duy nhất x  Zn với mọi b  Zn khi

và chỉ khi gcd(a,n) = 1

Vì 26 = 2  13, ta có các giá trị có thể của a là tập {1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25} Với các giá trị của b bất kỳ trong Z26 ta có hệ mã tuyến tính có thể có 2612 = 312 khoá khác nhau

(m) (còn gọi là hàm Euler) Nếu m có phân tích ra thừa số

p m

1

p m

1

1

) (

) (

Định nghĩa 1.3 Giả sử a  Zm , nghịch đảo của a là phần tử a1  Zm thoả aa1a1a  1 (mod m)

Ta có cần và đủ để tồn tại phần tử nghịch đảo a1 là gcd(a, m) = 1, và khi đó nó là duy nhất Ngoài ra ta có nếu b=a1 thì cũng có a=b1 Nếu p là nguyên tố thì mọi phần tử khác 0 của Zp

dK(y) = a1(y  b) mod 26, với x, y thuộc Z26

Ví dụ 1.2 Giả sử K = (7,3), ta có 71 mod 26 = 15, hàm mã hoá là:

eK(x) = 7x + 3

và hàm giải mã tương ứng là:

dK(y) = 15(y  3) = 15y  19 mod 26

Trang 9

Ta có thể kiểm tra lại rằng dK(eK(x)) = x với mọi x  Z26 Thực vậy:

điển là hệ Vigenere, lấy theo tên của Blaise de Vigenere Vẫn áp dụng các ánh xạ như cũ A

 0, ta có thể gắn mỗi khoá K với chuỗi ký tự độ dài m gọi là từ khoá Hệ mã Vigenere mã hoá theo từng khối m ký tự hiện

Ví dụ 1.3 Giả sử m = 6 và từ khoá là 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 hiện

Để giải mã, ta dùng cùng từ khoá, nhưng ta thực hiện phép trừ thay vì phép cộng

giá trị m không lớn, việc thử và sai toàn bộ các khả năng cũng đòi hỏi nhiều thời gian Ví dụ nếu ta lấy m = 6 thì không gian từ khoá vượt quá 28 x 107 , con số này cũng đủ lớn để không thể thực hiện bằng tính toán thủ công

Trong hệ mã Vigenere với từ khoá độ dài m, một ký tự có thể được ánh xạ với 1 trong 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 là hệ mã

đa ký tự (polyalphabetic) Nói chung phá khoá hệ mã đa ký tự khó khăn hơn trường hợp hệ mã đơn ký tự

Trang 10

Hệ mã Hill

Ta xem xét hệ mã đa ký tự khác, đó là hệ mã Hill Hệ mã này được Lester S Hill đưa ra năm

1929 Giả sử m là số nguyên dương, đặt P = C = (Z26)m Tư tưởng của Hill là sử dụng m tổ hợp tuyến tính của m ký tự trong một phần tử từ hiện, từ đó sinh ra m ký tự trong một phần tử

811

m

k k k

k k k

2 1

1 12 11

hay viết ngắn gọn y = xK

Ta nói rằng từ mã thu được từ từ hiện bằng biến đổi tuyến tính Ta còn phải mô tả quá trình giải mã tức là cách tính x từ y Dễ thấy rằng quá trình giải mã cần đến ma trận đảo của K Từ công thức y = xK, nhân hai vế với ma trận nghịch đảo ta được

187

811

811

=(11,22)

Từ đó ta có từ mã là DELW Để giải mã, ta dùng ma trận nghịch đảo

Trang 11

187

=(11,24)

2 Độ mật của mã

Trong mục trước ta đã xem xét một số hệ mã hoá cổ điển, hiện nay chúng không còn được

áp dụng do độ bảo mật không cao Tuy nhiên ta chưa có cơ sở nào để nói rằng hệ mã này bảo mật hơn hệ mã khác Trong mục này chúng ta xem xét một số khái niệm liên quan đến độ mật

Đầu tiên ta phân loại một số phương pháp tấn công hệ mã (phá mã) Nói chung, ta giả sử rằng người thứ bakẻ phá khoá biết thông tin về hệ mã được sử dụng Điều đó thường được biết dưới tên nguyên tắc Kerckhoff Tất nhiên nếu kẻ phá khoá không biết về hệ mã được áp dụng thì việc phá mã sẽ khó khăn hơn

Các dạng tấn công có thể chia thành các hình thức:

Biết từ mã (Ciphertext-Only): trong đó kẻ phá khoá chỉ nắm được chuỗi từ mã

Biết từ hiện (Known Plaintext): trong đó kẻ phá khoá nắm được chuỗi từ hiện x và chuỗi từ

mã y tương ứng

Biết từ hiện chọn trước (Choosen plaintext): trong đó kẻ phá khoá có thể truy cập cơ chế mã

trong một khoảng thời gian, do đó có thể nhập chuỗi từ hiện nào đó mà anh ta muốn và thu

được chuỗi từ mã tương ứng

Biết từ mã chọn trước (Choosen ciphertext): kẻ phá khoá có thể truy cập cơ chế giải mã trong

một khoảng thời gian, do đó có thể nhập chuỗi từ mã nào đó và thu được chuỗi từ hiện tương ứng

Trong tất cả các hình thức trên, mục đích của việc phá mã là xác định khoá được dùng

Trước tiên ta xem xét kiểu tấn công “biết từ mã” Ta cũng giả sử rằng chuỗi từ hiện là tiếng Anh không có khoảng trống (như thế làm cho việc phá mã khó khăn hơn)

Rất nhiều kỹ thuật phá mã sử dụng các đặc điểm của ngôn ngữ (tiếng Anh), nhiều tài liệu đã

đưa ra tần suất tương đối của 26 chữ cái qua thống kê các bài báo, tạp chí, sách Bảng dưới

đây cho số liệu do Beker và Piper đưa ra

F

G

H

0.022 0.020 0.061

K

L

M

0.008 0.040 0.024

P

Q

R

0.019 0.001 0.060

U

V

W

0.028 0.010 0.023

Trang 12

D

E

0.043 0.127

I

J

0.070 0.002

N

O

0.067 0.075

S

T

0.063 0.091

X

Y

Z

0.001 0.020 0.001 Bảng 2.1: Xác suất xuất hiện ký tự

Dựa trên thống kê trên, Beker và Piper chia 26 ký tự thành 5 nhóm:

Ngoài ra ta còn tính đến tổ hợp chuỗi 2 hoặc 3 ký tự liền nhau gọi là diagram và triagram

theo đó các diagram hay gặp nhất là

TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG,

AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, OF

và một số triagram: THE, AND, HER, ERE, THA, WAS, FOR,

Ta giới thiệu một ví dụ dùng số liệu thống kê để phá mã trong mục dưới đây

Phá khoá hệ mã tuyến tính

Giả sử O thu được chuỗi từ mã sau:

FMXVEDKAPHFERBNDKRXRSREFMORUDSDKDVSHVUFEDKAPRKDLYEVLRHHRH

Tần suất xuất hiện các ký tự được thể hiện trong bảng sau:

Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất Ký tự Tần suất

Ta thấy các ký tự xuất hiện nhiều nhất là: R(8 lần), D(6 lần), E, H, K (mỗi ký tự 5 lần), F, S,

V (mỗi ký tự 4 lần) ta có thể dự đoán R là ký tự mã của e và D là mã của t vì e và t là hai ký

Trang 13

tự nói chung xuất hiện nhiều nhất Biểu diễn dưới dạng số ta có eK(4)=17 và eK(19)=3 Để ý rằng eK(x) = ax + b ta được hệ phương trình tuyến tính với a và b là ẩn:

4a + b = 17

19 a + b =3

Giải hệ ta được nghiệm a = 6 và b = 19 (trong Z26 ), nhưng gcd(a=6, 26) = 2  1 do đó đây không phải là khoá Thử tiếp giả sử ký tự mã của e vẫn là R, còn ký tự mã của t là E, cũng thực hiện như trên ta có nghiệm của hệ là a=13 do đó cũng không thể là khoá Tiếp tục khả năng ký tự mã của t là H, ta được a=8 cũng không thể là khoá Tiếp theo giả sử ký tự mã của t

là K, giải hệ phương trình ta thu được a=3 và b=5 Vì gcd(a=3, 26) = 1 nên đây có thể là khoá Dùng khoá này giải mã, ta có thể giả sử nếu thu được chuỗi từ hiện có nghĩa thì đây chính là khoá cần tìm Với a=3, b=5 ta giải mã được chuỗi từ hiện là:

Trước tiên ta đưa ra khái niệm độ mật hoàn thiện Nói chung có thể phân biệt 2 cách tiếp cận về độ mật của hệ mã:

độ mật tính toán và

độ mật vô điều kiện

Độ mật tính toán: là thước đo chú trọng đến năng lực tính toán cần thiết để phá mã Ta có thể

định nghĩa hệ mã là bảo mật tính toán nếu thuật toán tốt nhất để phá nó đòi hỏi ít nhất N phép tính với N là một số rất lớn Trong thực hành, người ta thường coi hệ mã là bảo mật tính toán nếu thuật toán tốt nhất hiện có để phá hệ mã đòi hỏi một thời gian tính toán lớn đến mức không thực tế Cách tiếp cận khác là đưa ra tính hiển nhiên về độ mật tính toán bằng cách giảm độ mật của hệ mã xuống tương đương với một bài toán nào đó đã biết về độ phức tạp

Độ mật vô điều kiện: là thước đo chú trọng đến độ mật của hệ thống trong đó không có giới

hạn về khối lượng tính toán mà người thứ 3 có thể thực hiện Hệ mã được xác định là bảo mật vô điều kiện nếu nó không bị phá ngay cả khi dùng đến năng lực tính toán rất lớn (vô hạn) Khi xem xét độ bảo mật của hệ thống, ta còn phải chú ý đến cách thức tấn công

Trang 14

Ta sẽ xây dựng lý thuyết hệ mã bảo mật vô điều kiện đối lại hình thức tấn công “Biết từ mã” Rõ ràng công cụ độ phức tạp tính toán không thích hợp để nghiên cứu độ mật vô điều kiện được bởi vì ta cho phép thời gian tính toán là vô hạn Công cụ phù hợp để nghiên cứu là

lý thuyết xác suất

Ta giả định rằng mỗi khoá cụ thể chỉ sử dụng cho một lần mã Giả sử rằng tồn tại phân bố xác suất trên không gian từ hiện P, Ta biểu thị xác suất tiên nghiệm để từ hiện x xuất hiện bằng

xác suất để khoá K được chọn là pK(K) Để ý rằng khoá K được chọn trước khi A biết từ hiện nào sẽ được mã Do đó ta có thể giả định rằng việc chọn khoá K và từ hiện x là hai sự kiện

độc lập

Hai phân bố xác suất trên P và K sinh ra phân bố xác suất trên C Thật vậy, ta có thể tính

được xác suất pC(y) là xác suất để y là từ mã được truyền Với khoá K  K , xác định tập các

)) ( ( ) ( )

(

K C y K

K y d p K p y

Ta cũng nhận thấy rằng với mọi y  C và x  P , có thể tính được xác suất có điều kiện

pC(y|x) (là xác suất để y là từ mã khi đã biết từ hiện x):

) ( )

|

(

y dK x K

K p x

)}

( : {

))(()(

)()

()

|

(

K C y K

K

y dK x K

y d p K p

K p x

p y

x

p

P K

K P

P

Ví dụ 2.1 Giả sử P = {a, b} với pP(a) = 1/4 pP(b)=3/4 Giả sử K = {K1, K2, K3 } với pK(K1)

= 1/2 ; pK(K2)=pK(K3) = 1/4 Giả sử C = {1, 2, 3, 4} và giả sử các hàm mã hoá là eK1(a) = 1 ;

eK1(b) = 2; eK2(a) = 2; eK2(b) = 3; eK3(a) = 3 ; eK3(b) = 4 Hệ mã có thể biểu diễn qua ma trận mã hoá sau

Trang 15

xác suất hậu nghiệm để từ hiện là x khi đã biết từ mã là y đúng bằng xác suất tiên nghiệm để

từ hiện là x

Bây giờ ta đề cập đến khái niệm độ mật hoàn thiện Đầu tiên để ý rằng áp dụng định lý Bayes, điều kiện pP(x|y) = pP(y) với mọi x  P và y  C tương đương với pC(y|x) = pC(x) Một cách tổng quát ta có thể giả sử pC(y) > 0 với mọi y  C (vì nếu pC(y)=0 với y nào đó có nghĩa

là y không được sử dụng và ta có thể loại bỏ nó khỏi tập C ) Cố định phần tử x P, với mọi y C , ta có pC(y|x) = pC(x) > 0 Do đó với mọi y C có ít nhất một khoá K sao cho eK(x) = y Từ đó | K |  | C | Trong một hệ mã bất kỳ ta phải có | C |  | P | bởi vì hàm mã hoá là đơn

ánh Trong trường hợp biên | K | = | C | = | P | ta có kết quả do Shannon đưa ra như sau

Định lý 2.2 Cho hệ mã ( P , C , K , E , D ) có tính chất | K | = | C | = | P | Khi đó hệ mã đảm bảo độ mật hoàn thiện khi và chỉ khi mọi khoá mã được dùng với xác suất như nhau

và là 1/ | K | , và x  P , y  C có một khoá K duy nhất thoả eK(x) = y

Khái niệm Entropy

Trong mục trước ta đã xét khái niệm độ mật hoàn thiện Ta mới chỉ giới hạn trong trường hợp mỗi khoá được áp dụng cho chỉ một lần mã hoá Bây giờ ta xem xét điều gì xảy ra khi nhiều từ hiện được mã hoá bởi cùng một khoá, và cách mà người phá mã có thể thực hiện tấn công “chỉ biết từ mã”, khi có đủ thời gian

Một công cụ hiệu quả để nghiên cứu vấn đề là dùng entropy Entropy là một khái niệm cơ

sở trong lý thuyết thông tin, được Shannon đề xuất vào năm 1948 Entropy có thể hiểu như là

độ đo toán học của thông tin hay độ không chắc chắn, và nó được tính toán như là hàm của phân bố xác suất

Trang 16

Giả sử ta có biến ngẫu nhiên X có thể lấy hữu hạn giá trị khác nhau theo phân phối xác suất p(X) Ta có thể thu được thông tin gì từ sự kiện theo phân phối p(X) ? một cách khác nếu như

sự kiện chưa xảy ra, độ bất định của hậu quả sẽ như thế nào ? Định lượng đó gọi là entropy của X và ký hiệu bởi H(X)

xác suất p(X) Entropy của phân phối xác suất đó là giá trị:

H

1

2

log )

H

1

log ) (

)

Chú ý: nếu pi = 0 thì log2 pi không xác định, do đó đôi khi entropy được định nghĩa như tổng các xác suất khác 0 Tuy nhiên do lim xlog2x = 0 , không có vấn đề gì đặc biệt khi cho phép

pi = 0 với một vài giá trị i nào đó Tuy nhiên ta quy ước rằng khi tính toán ta chỉ tính đến các

pi  0 Ngoài ra cơ số của logarit là tuỳ ý

Để ý rằng nếu pi = 1/n  i thì H(X) = log2n , H(X)  0 và H(X) = 0 khi và chỉ khi pi = 1 với i nào đó và pj = 0  j  i

Ví dụ 2.1(tiếp) Ta có thể tính entropy cho các cấu thành hệ mã:

H(P) = (1/4)log2(1/4)  (3/4)log2(3/4)  0.81

Tính chất của Entropy

Ta nêu một số tính chất của entropy trong lý thuyết thông tin

Định lý 2.4 Giả sử X là biến ngẫu nhiên với phân phối xác suất là p1, p2, pn, pi > 0,

1  i  n Khi đó H(X)  log2n , dấu bằng xảy ra khi và chỉ khi pi = 1/n

H(X/Y)  H(X + H(Y)

Trang 17

Quan hệ giữa entropy và mã Huffman

Ta xem xét entropy trong ngữ cảnh của mã của sự kiện ngẫu nhiên xảy ra theo một phân

bố xác suất xác định Cho X là biến ngẫu nhiên có thể lấy hữu hạn giá trị, p(X) là phân bố xác suất phụ thuộc

Gọi sự ghi mã (encoding) là ánh xạ

Với hàm g ta có thể đọc từ đầu, khi nhận biết được một ký tự ta cắt chuỗi từ điểm đó và đọc tiếp Ví dụ có chuỗi hiện bacda, dùng hàm g ta được chuỗi mã 1001101110, khi giải mã ta

đọc từ đầu đến khi đọc được 10 nhận được b, cắt đi còn lại chuỗi 01101110 và đọc tiếp 0

được a, tiếp tục đọc đến 110 được c , 111 được d và 0 được a

Để chứng tỏ h không là đơn ánh, ta lấy ví dụ chuỗi h(ac) = h(ba) = 010

Trên quan điểm giải mã, ta mong muốn hàm kiểu g hơn bởi vì có thể giải mã tuần tự từ đầu

phép giải mã tuần tự đơn giản như của hàm g được gọi là tính chất prefix-free (Hàm mã hoá g

là prefix-free nếu không có hai từ x, y nào trong X và chuỗi z trong {0,1}* sao cho g(x) = g(y) z )

Trang 18

Các xem xét trên chưa có liên hệ gì đến entropy Không có gì ngạc nhiên, entropy có liên quan đến hiệu quả của mã hoá Ta áp dụng entropy để đo độ hiệu quả của hàm mã  , nó là độ dài trung bình có trọng số (ký hiệu l()) của mã hoá của các phần tử trong X Như thế ta có

x f x p f

trong đó | y | biểu thị độ dài của chuỗi y

Bài toán đặt ra là tìm hàm mã đơn ánh  làm l() cực tiểu Thuật toán kinh điển để giải quyết vấn đề là thuật toán Huffman Hơn nữa với các khái niệm về entropy, ta có hàm mã hoá tìm được theo thuật toán Huffman là prefix-free và

H(X)  l() < H(X) +1

nghĩa là entropy cho ta dự đoán về độ dài trung bình của mã hoá đơn ánh tối ưu

Ta mô tả sơ lược thuật toán Huffman như sau Thuật toán bắt đầu với việc xem xét phân

phối xác suất trên X, đặt mã của các phần tử là rỗng Trong mỗi bước lặp, hai phần tử có xác suất thấp nhất được hợp vào một phần tử có xác suất bằng tổng xác suất của hai phần tử hợp thành Phần tử có xác suất nhỏ hơn được gán giá trị 0, phần tử còn lại được gán giá trị 1 Các bước lặp đến khi chỉ còn lại 1 phần tử, mã hoá của mỗi phần tử x được xây dựng bằng cách lần dọc theo dãy các phần tử theo hướng ngược từ phần tử cuối cùng đến phần tử khởi tạo của

Trang 19

Khoá giả (Spurious key) và Khoảng cách duy nhất (Unicity distance)

Trong mục này ta áp dụng các kết quả về entropy vào hệ mã Entropy có điều kiện H(K | C) được gọi là khoá đa nghĩa (key equivocation) và được dùng để đo lượng thông tin về khoá

do bản thân từ mã mang lại Ta có định lý sau

H(K | C) = H(K) + H(P)  H(C)

Giả sử có hệ mã (P, C, K, E, D), chuỗi từ hiện x1x2 xn được mã bằng một khoá và cho từ mã y1y2 yn Để ý rằng mục tiêu của kẻ phá khoá là xác định mã khoá được dùng do đó ta xét trường hợp tấn công “biết từ mã” Ta giả sử kẻ tấn công biết rằng từ hiện là ngôn ngữ tự nhiên Nói chung kẻ tấn công có thể xác định ra một số khoá tuy nhiên chỉ có một khoá là

đúng Các khoá còn lại được gọi là khoá giả (spurious key) Ví dụ trong trường hợp dùng mã chuyển dịch, kẻ tấn công thu được từ mã WNAJW Dễ dàng xác định được có 2 khả năng giải mã có nghĩa: river và arena ứng với 2 khoá K=5 và K=22 Tất nhiên trong đó chỉ có một khoá

n

P H H

n n

L

)(lim

Với tiếng Anh, từ các con số thống kê có thể tính được H(P3)  3.90 Nhiều công trình

đưa ra con số 1  HL  1.5 Dùng giá trị 1.25 ta có thể tính được độ dư thừa thông tin RL của tiếng anh là 0.75 hay 75% Điều đó không có nghĩa là ta có thể lược bớt 3 ký tự bất kỳ trong

Trang 20

từ 4 ký tự mà vẫn có thể khôi phục lại được từ ban đầu Độ dư thừa 0.75 có nghĩa là dùng mã hoá Huffman mã chuỗi n ký tự, với n đủ lớn, sẽ nén được còn khoảng 1 phần 4 kích thước ban

đầu

Khi đã biết phân phối xác suất trên K và P n , ta có thể xác định phân phối xác suất cảm sinh trên C n , tập các chuỗi từ mã n ký tự cũng như trước , ta gọi C n là biến ngẫu nhiên biểu diễn từ mã n ký tự Với y  C n ta đặt

log s n  H KnR L

Trong trường hợp các khóa được chọn với xác suất như nhau (H(K) cực đại) ta có

xác suất như nhau Giả sử RL là độ dư thừa của ngôn ngữ được dùng Khi đó nếu biết chuỗi từ

mã y với độ dài n đủ lớn, số lượng theo dự đoán các khoá giả s n thỏa

1

L nR n

s

P

K

hiệu n0 , mà từ đó, số lượng dự đoán các khoá giả bằng 0; có nghĩa là độ dài chuỗi từ mã cần

quan sát để tính được chỉ một khoá với đủ thời gian tính toán

Từ định lý 2.11, đặt s n = 0 giải phương trình với ẩn n, ta có giá trị xấp xỉ của n0

P

K

2

2 0

log

log

L R

Trang 21

nhau, tức là C = P (hệ mã kiểu này được gọi là tự đồng cấu- endomorphic) Giả sử có hai hệ mã S1 = (P, P, K1, E1, D1) và S2 = (P, P , K2, E2, D2) Khi đó hệ mã tích S1  S2 được xác định như sau

Với mỗi hệ mã trong tích có phân bố xác suất trên không gian khoá pK1(K1) và pK2(K2), ta xác định phân bố xác suất trên không gian khoá tích pK(K1 , K2) Nếu hai khoá được xác định

độc lập với nhau ta có quan hệ đơn giản sau

pK(K1 , K2) = pK1(K1)  pK2(K2)

Nếu ta dùng tích hệ mã tự đồng cấu S với chính nó, khi đó ta ký hiệu hệ mã tích là S2 , tổng quát hơn, nếu dùng n lần lấy tích ta ký hiệu hệ mã tích là S n Hệ mã S n được gọi là hệ mã

lặp (iterated)

trên (mã tuyến tính, mã chuyển dịch) là các hệ mã luỹ đẳng Tất nhiên, nếu hệ mã S là luỹ

đẳng thì việc áp dụng tích không làm nâng cao độ an toàn mà ngược lại làm tốn năng lực tính toán

Nếu hệ mã là không luỹ đẳng, việc áp dụng tích nhiều lần làm tăng độ an toàn lên đáng kể Một trong các cách đơn giản để tránh sự bất biến là thực hiện tích hai hệ mã khác nhau

ý tưởng tích các hệ mã được áp dụng khá phổ biến hiện nay, một trong những hệ mã phổ biến nhất sử dụng khái niệm tích là hệ DES (Data Encryption Standard) Một phương thức áp dụng khác là có thể kết hợp mã hoá với nén dữ liệu, như thế ta có thể đạt được hai mục đích

là tăng độ an toàn của hệ mã đồng thời giảm được khối lượng thông tin truyền

Trang 22

3 Hình thức hoá

Từ nghiên cứu các hệ mã cổ điển ở trên, một cách tự nhiên xuất hiện vấn đề cần phải khái quát hoá để có thể hiểu được bản chất của mã Từ đó có thể phát triển các hệ mã mới Trong mục này ta đưa ra một số khái niệm để làm cơ sở cho lý thuyết mã, ta cũng sẽ đưa ra định nghĩa tập mã và xem xét một số quan hệ giữa mã và vị nhóm con

Các khái niệm mở đầu

Nửa nhóm: một tập khác rỗng S được trang bị phép toán hai ngôi kết hợp (binary

associative operation) Phép toán thường được gọi là phép nhân và ký hiệu đơn giản bằng cách đặt cạnh nhau, như thế u = vw thể hiện tích của v và w

Tập con T của nửa nhóm S được gọi là nửa nhóm con (subsemigroup) của S nếu nó là đóng

đối với phép toán của S

Nửa nhóm cùng với phần tử đơn vị tạo thành một vị nhóm (monoid) Phần tử đơn vị thường ký

(free semigroup) được sinh bởi A và A* là vị nhóm tự do (free monoid) được sinh bởi A Cho x là từ thuộc A*, khúc đầu x’ của x được gọi là thừa số trái (left factor); tương tự ta có khúc sau được gọi là thừa số phải, và khúc giữa được gọi là thừa số trong

Cho S là nửa nhóm Tập M  S được gọi là unita phải nếu từ sS, uM, usM suy ra sM Tương tự ta có khái niệm unita trái M được gọi là unita nếu nó vừa là unita phải vừa là unita trái

Trang 23

Nói một cách khác tập X là mã nếu mọi từ trong X+ đều chỉ có một phân tích duy nhất qua các từ trong X Do 1.1=1 ta thấy rằng mọi tập mã đều không thể chứa từ rỗng Dễ dàng thấy rằng mọi tập con của tập mã cũng là mã

Sau đây là điều kiện cần và đủ về mã, biểu diễn qua đơn cấu của vị nhóm

, cảm sinh một song ánh từ bảng chữ cái B nào đó lên X, sẽ là đơn ánh Ngược lại, nếu tồn

tại một đơn ánh đồng cấu : B*  A* sao cho (B) = X thì X là mã

đơn ánh trong B do đó bi = ci với i=1 n và u = v Vậy  là đơn ánh

Ngược lại, nếu : B*  A* là đồng cấu đơn ánh, và nếu:

x1 x2 xn = y1 y2 ym (3.3)

với m, n  1, x1 x2 xn , y1 y2 ym  X = (B) , ta gọi bi , cj  B sao cho (bi) = xi , (cj)= yj , vì  là đơn ánh từ đẳng thức ta có

b1 b2 bn = c1 c2 cm

Do đó m = n và bi = ci , kéo theo xi = yi với i = 1 n

Đồng cấu : B*  A* có tính đơn ánh và có (B) = X được gọi là đồng cấu mã của X (coding morphism for X) Mệnh đề 3.1 là nguồn gốc của thuật ngữ bởi vì các từ trong X mã các chữ cái trong B Quá trình mã hoá có thể coi là thay thế từ b1b2 bn (bi  B) trong ngôn ngữ hiện B bằng các từ mã (b1)(b2) (bn) qua đồng cấu mã  Sự kiện  là đơn ánh đảm bảo rằng từ mã có thể được giải mã duy nhất để thu được từ hiện ban đầu

Ví dụ 3.1 Với mọi bảng chữ cái A, tập X = A luôn là tập mã Tổng quát hơn với mọi số nguyên p  1, X = Ap là tập mã, được gọi là mã uniform từ các từ độ dài p Thực vậy, từ điều kiện (3.1) và từ tính chất các từ trong X có độ dài cố định ta suy ra kết luận (3.2)

Ví dụ 3.2 Tập X = {bb,abb,ab} trên bảng chữ cái A = {a, b} là tập mã

Ví dụ 3.3 Tập X = {b, aba, ba} từ bảng chữ cái A = {a, b} không là mã vì từ w=baba có hai phân tích trong X: w = b(aba) = (ba)(ba)

Trang 24

Từ mệnh đề 3.1 ta có các hệ quả sau:

Hệ quả 3.2 Giả sử  : A*  C* là đồng cấu đơn ánh Nếu X là mã trong A thì tập (X) là

mã trong C Nếu Y là mã trong C thì 1 (Y) là mã trong A

Hệ quả 3.3 Nếu X  A* là mã, khi đó Xn là mã với mọi số nguyên n > 0

Ví dụ 3.4 : Ví dụ này chứng tỏ rằng tích của hai tập mã chưa chắc đã là mã Cho X={a, ba}

và Y = {a, ab} là các mã trên A = {a, b}, nhưng tập

Z = XY = {aa, aab, baa, baab}

không phải là mã vì từ w = (aa)(baa) = (aab)(aa) có 2 phân tích

Mã prefix, suffix, biprefix

Dựa trên một số đặc trưng về phân tích thừa số, ta có các tập prefix, suffix và biprefix

Tập prefix: Cho tập X  A*, khi đó X gọi là tập prefix nếu không có từ nào trong x là thừa số

trái thật sự (proper left factor) của từ khác trong X Nói cách khác, tập X là prefix nếu với mọi

từ x, y trong X:

Tức là hai từ bất kỳ là không so sánh được theo thứ tự prefix

Hoặc X là tập prefix nếu X-1 X = 

Ta có thể thấy rằng nếu X là tập prefix và chứa từ rỗng thì X = {1}

Đối xứng với định nghĩa prefix ta có tập suffix Tập X gọi là suffix nếu không có từ nào trong

x là thừa số phải thật sự (proper right factor) của từ khác trong X Tập X gọi là biprefix nếu

nó vừa là prefix vừa là suffix

Ví dụ 3.5 X = {abb,bb,bab} trên A={a,b} là tập prefix vì không tồn tại từ nào trong X có chứa thừa số bên trái cũng là từ trong X Tuy nhiên X không phải suffix vì từ abb thuộc X có thừa số bên phải bb thuộc X Do đó X không phải là tập suffix

Ví dụ 3.6 X = {abb,baa,bab} trên A={a,b} là tập prefix vì không tồn tại từ nào trong X có chứa thừa số bên trái cũng là từ trong X X cũng là suffix Do đó X là tập biprefix

Một lớp mã quan trọng là lớp mã prefix, với khái niệm tập prefix, ta có định lý sau

Chứng minh:

Giả sử ngược lại, nếu X không phải là mã, khi đó tồn tại từ w là từ ngắn nhất có hai phân tích trong X: w = x1 x2 xn = y1 y2 ym ; xi và yj  X

Trang 25

Vì w là từ ngắn nhất và x1, y1 khác rỗng, do đó x1 khác y1 Như thế hoặc x1 < y1 hoặc y1 < x1trái với điều kiện X là prefix Như thế, X là mã

Hoàn toàn tương tự ta có mệnh đề tương tự với tập suffix

Mã prefix (hoặc suffix, biprefix) là tập prefix (hoặc suffix, biprefix tương ứng)và là mã, tức là khác tập {1}

Ví dụ 3.7: Mã uniform là tập biprefix, do đó nó là mã biprefix

Mã X trên A gọi là cực đại nếu nó không bị chứa hoàn toàn trong một tập mã khác trên A, tức là nếu X  Y, Y là mã suy ra X = Y

Tính cực đại còn phụ thuộc cả bảng chữ cái Nếu X là mã cực đại trên A và A  B thì X chưa chắc là cực đại trên B

Mã và vị nhóm con tự do

Mục trước ta đã trình bày khái niệm về mã và một số tính chất của mã Tuy nhiên không phải lúc nào cũng dễ dàng nghiên cứu các tính chất trực tiếp trên tập mã, trong nhiều trường hợp làm việc với vị nhóm con sinh bởi tập mã dễ dàng hơn

Đặc tính tập X là mã (prefix, suffix, biprefix) tương đương với sự kiện rằng tập X* là vị nhóm

tự do (unita phải, unit trái, unita)

tiểu duy nhất X = (M1)  (M1)2

Chứng minh

Nếu không thì m=m1 m2 với m1, m2  Q và thực sự ngắn hơn m Do đó m1 m2  X* và suy ra

m  X* Như thế X* = M, nghĩa là X là tập sinh của M

Bây giờ giả sử Y là tập sinh của M Có thể giả sử 1Y Mọi x  X đều thuộc Y* Do đó có thể viết

x = y1 yn (yi  Y, n > 0)

Ví dụ 3.8 Cho A={a, b}, với M={w: |w|a 0 mod 2} Ta có

Ngược lại, nếu ta bắt đầu từ tập mã và nghiên cứu tính chất của vị nhóm con sinh bởi tập mã đó ta có mệnh đề sau

Trang 26

Mệnh đề 3.6 Nếu M là vị nhóm con tự do của A* , khi đó tập sinh nhỏ nhất của M là mã Ngược lại, nếu X  A* là mã khi đó vị nhóm con X* của A* là vị nhóm con tự do với X chính là tập sinh nhỏ nhất

Chứng minh:

Giả sử : B*  A* là isomorphism Khi đó có thể coi  là đồng cấu đơn ánh từ B* sang A* Theo mệnh đề 3.1 ta có tập X=(B) là mã Mặt khác, M = (B*) = ((B))* = X* Suy ra X là tập sinh của M Hơn nữa B = B+  B+B+ và (B+) = M1, kéo theo X=(M1)  (M1)2 , suy ra

X là tập sinh nhỏ nhất của M

Ngược lại, giả sử XA* là mã, đặt : B*  A* là đồng cấu mã của X Khi đó  là song ánh B* lên X* Kéo theo M=X* là tự do (free) Hơn nữa, vì  là song ánh và B=B+B+B+ nên X=

X+  X+X+ , theo mệnh đề 3.5 ta có X là tập sinh nhỏ nhất của M

Mã X là tập sinh của vị nhóm con tự do M của A* được gọi là cơ sở của M

Từ mệnh đề trên ta có hệ quả sau:

Hệ quả 3.7 Giả sử X và Y là hai tập mã trên A, nếu X* = Y* thì X = Y

Ví dụ 3.8 (tiếp) Vì X là mã nên X* = M là vị nhóm con tự do của A

Từ mệnh đề 3.6 ta thấy có hai trường hợp theo đó tập X không là mã Trường hợp thứ nhất

là khi X không phải tập sinh cực tiểu của M = X*, tức là tồn tại đẳng thức:

Nói cách khác hệ thức (3.5) tương đương với w  N1 N  N N1 , như thế điều kiện ổn định

là N1 N  N N1  N Dễ thấy vì 1  N do đó N  N1 N  N N1 , kéo theo N1N  N N1

= N

Ta có mệnh đề sau

Từ đó ta có quan hệ sau

Trang 27

ổ n định: N -1 N  NN -1 = N

Biunita N -1 N=NN -1 =N

Unita phải: N -1 N=N Unita trái: NN -1 =N

Với các tính chất trên, ta có mối liên hệ giữa vị nhóm con và mã như sau

khi và chỉ khi tập sinh nhỏ nhất của nó là mã prefix (suffix , biprefix) Hơn nữa, vị nhóm con

có tính unita phải (unita trái, unita) của A* là tự do

Một trong những hướng nghiên cứu mạnh về lý thuyết mã hiện nay là nghiên cứu các vấn

đề về mã cực đại Cho M là vị nhóm con của A* M gọi là cực đại (maximal) nếu M  A* và

M không phải là tập con thực sự của vị nhóm con nào khác ngoài A* Mệnh đề sau cho ta mối liên hệ vị nhóm con tự do cực đại với tính chất cực đại của cơ sở của nó

Chứng minh

Giả sử Y là mã trên A với XY Khi đó X*  Y* và X*Y* (nếu không sẽ có X=Y theo hệ quả 3.7) Vì X* là cực đại do đó phải có Y*=A* và Y=A Do đó XA Giả sử bAX, tập Z=Xb2 là mã, do đó M  Z*  A* (vì b2  M và b2  Z), mâu thuẫn với M giả thiết là cực

Trang 28

Mệnh đề 3.11 Giao của họ bất kỳ các vị nhóm con tự do của A* cũng là vị nhóm con tự

do

Nếu X là tập con của A*, theo mệnh đề 3.11 ta có giao của họ các vị nhóm con tự do chứa X

là vị nhóm con tự do nhỏ nhất của A* chứa X, vị nhóm con đó gọi là bao đóng tự do (free hull

) của X Nếu X* là vị nhóm con tự do thì khi đó rõ ràng X trùng với bao đóng tự do của X

Giả sử X  A*, N là bao đóng tự do của X và Y là cơ sở của N Nếu X không là mã thì khi đó X  Y Định lý sau gọi là định lý khuyết tật (defect theorem), cho ta mối liên quan giữa X và Y

Trang 29

nghĩa là  không phải đơn ánh Từ đó có bất đẳng thức

Chuỗi hình thức (formal series)

Cho bảng ký tự A và nửa vành K Chuỗi hình thức qua A với hệ số trong K là ánh xạ : A*K

Giá trị của  ứng với từ wA* được ký hiệu bằng (,w) Tập các chuỗi hình thức qua A được

ký hiệu là K<<A>> hoặc KA* Ta ký hiệu K<A> là tập các chuỗi hình thức K<<A>> thoả

(,w)= số hữu hạn với w thuộc A* và 0 với mọi trường hợp khác ??

Các phần tử của K<A> được gọi là đa thức (polynomial)

Một chuỗi hình thức K<<A>> có thể được mở rộng thành hàm tuyến tính từ K<A> sang K bằng định nghĩa

, ( ) , (

A w

w p w

Định nghĩa trên có nghĩa vì p là đa thức

Giả sử có 2 chuỗi hình thức  ,   K<<A>> Ta định nghĩa các chuỗi +,  và k

v u

,

(k, w) = k(, w)

trong đó tổng | w | + 1 cặp (u, v) thoả uv = w, nghĩa là tổng hữu hạn Ta xác định 2 phần tử

đặc biệt ký hiệu 0 và 1 như sau:

(0, w) = 0, và (1, w) = 1 nếu w =1 , 0 nếu ngược lại

như mọi khi ta đặt n =   (n lần) và 0 = 1

Với các phép toán và phần tử 0, 1 như trên, K<<A>> tạp thành một nửa vành

Ta định nghĩa giá (support) của chuỗi  là tập

supp() = {wA*: (,w) 0}

ánh xạ   supp() là isomorphism từ B<<A>> vào B(A*)

Họ (i)i0 được gọi là hữu hạn địa phương nếu với mọi w thuộc A*, tập

{iI : (i , w)0}

là hữu hạn Trong trường hợp đó ta ký hiệu chuỗi  là

Trang 30

(

định nghĩa đó là có nghĩa vì trong tổng trên chứa hữu hạn thừa số khác 0

Giả sử K<<A>> là chuỗi thoả (, 1) = 0

khi đó họ (n)n0 là hữu hạn địa phương Thật sự thì giá của n không chứa các từ w có độ dài nhỏ hơn n Ta ký hiệu

Với chuỗi  như trên, ta có tính chất sau

Mệnh đề Cho K là nửa vành và K<<A>> là chuỗi thoả (, 1) = 0 Khi đó 1 là khả

Trang 31

Chương 2: Một số lớp mã đặc biệt

Trong chương trước ta đã hình thức hoá khái niệm mã Để nghiên cứu mã, ta có thể sử dụng nhiều công cụ và cách tiếp cận khác nhau ở chương này, ta sẽ trình bày một số cách tiếp cận để nghiên cứu các tính chất của mã Mục thứ nhất trình bày định lý cơ sở và thuật toán Sardinas-Patterson kiểm tra một tập có là mã hay không Trong mục tiếp theo, ta nghiên cứu mã prefix là lớp mã quan trọng, có nhiều ứng dụng bằng các kỹ thuật khác nhau Mục thứ

ba trình bày khái niệm độ trễ giải mã, là một hướng tổng quát hoá, trong đó mã prefix là lớp mã có độ trễ bằng 0 Trong mục này ta xây dựng thuật toán tính độ trễ giải mã tương tự thuật toán Sardinas-Patterson, dựa trên ý tưởng trong [DNP93] Các cách tiếp cận trên cũng có thể

áp dụng để nghiên cứu các lớp mã khác, mục cuối cùng đề cập một số kết quả về lớp mã biprefix Các nội dung có thể tham khảo J Berstel và D Perrin [BePe85] Định lý kiểm tra mã về cơ bản được Sardinas và Patterson đưa ra vào năm 1953, do đó có tên thuật toán Sardians-Patterson Mã semaphore lần đầu tiên được nghiên cứu bởi Schuzenberger (1953) Khái niệm độ trễ giải mã đã xuất hiện rất sớm cùng với lý thuyết mã (Gilbert và Moore, 1959)

1 Định lý cơ bản về mã

Nói chung việc xác định một tập có là mã không phải luôn dễ dàng Trong phần này ta trình bày định lý Sardinas-Patterson làm cơ sở của thuật toán xác định tính chất mã của một tập Thuật toán không dựa trên các tính chất mới nào khác ngoài các tính chất ta đã trình bày

ở phần hình thức hoá, mà nó xây dựng dựa trên phương pháp tính toán Trong trường hợp tập

X hữu hạn (hoặc tổng quát hơn được đoán nhận/recognizable) thì các tính toán là hữu hạn

Để thể hiện ý tưởng của thuật toán, ta xét ví dụ sau

Ví dụ 1.1 Cho A = {a, b} và tập X = {b, abb, abbba, bbba, baabb} X không là mã vì ta có thể chỉ ra rằng từ w = abbbabbbaabb có hai phân tích:

w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)

Hai phân tích này xác định chuỗi các thừa số bên trái của w, mỗi thừa số tương ứng với cố gắng tạo hai phân tích khác nhau cho một từ

(abbba) (abbba) (abbba)bb (abbba)(bbba) (abbba)(bbba)abb (abbba)(bbba)(abb)

Trang 32

suy ra ta tìm được từ w có 2 phân tích khác nhau

w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb)

Trong thuật toán kiểm tra, ta tính tất cả các phần dư trên tất cả các bước tạo phân tích kép Thuật toán xác định phân tích kép qua sự kiện từ rỗng nằm trong tập các phần dư

Một cách hình thức, thuật toán có thể mô tả như sau

Để cho gọn, thay vì X{u} ta viết Xu

Thuật toán Sardinas Patterson

Đầu vào: tập XA+ , đầu ra: kết luận X có là mã hay không

Ta có định lý và mệnh đề sau đây khẳng định tính đúng đắn của thuật toán

Định lý 1.1 X  A+ là mã khi và chỉ khi không có tập Un nào chứa từ rỗng

Chứng minh: Để chứng minh định lý ta sử dụng bổ đề sau:

Bổ đề 1.2 Giả sử X  A+ và Un (n  1) được xác định như trên Với n  1 tuỳ ý, với mọi k

 {1, 2, ,n} , ta có 1  Un khi và chỉ khi tồn tại u  Uk và 2 số nguyên i, j 0 sao cho:

u Xi  Xj   , và i + j + k = n (1.1)

Chứng minh bổ đề :

thoả hệ thức (1.1) Ngược lại nếu có hệ thức (1.1) , vì k = n nên i = j = 0 , do đó Xi = Xj = 1

Trang 33

Nếu j = 0 thì i = 0 và k = n Như thế j  1 So sánh độ dài của hai từ u và y1 ta có

Nếu u = y1 v với v  A+ , khi đó v  X-1 Uk  Uk+1 và ta có

v x1 x2 xi = y2 yj

hệ thức tương đương với vXi  Xj-1  , theo giả thiết quy nạp ta có 1  Un

Nếu uv = y1 với v  A+ , khi đó v  Uk-1 X  Uk+1 v

Trang 34

Ta có thể để ý rằng trong bổ đề 1.2, cách xác định U1 không đóng vai trò gì trong quá trình chứng minh, ta có thể thay U1 bằng tập bất kỳ Y và vẫn giữ nguyên cách tính Un với n > 1 Tuy nhiên cách xác định U1 đóng vai trò cơ bản trong việc chứng minh định lý 1.1

Mệnh đề sau chứng tỏ nếu tập X được đoán nhận thì thuật toán sẽ dừng sau hữu hạn bước

xác định như trên là hữu hạn

các từ trong X

Chứng minh:

Cho  là tương đẳng cú pháp (syntactic congruence) của X, xác định bởi:

w  w’ mod  , khi và chỉ khi ( u, v  A* , uwv  X  uw’v  X)

Giả sử  là tương đẳng của A* với hai lớp {1} và A+ Giả sử i =    Ta có lập luận sau: Nếu L  A* là hợp của các lớp tương đương ( equivalent ) của tương đẳng , khi đó với mọi tập con Y của A*, Y-1 L là hợp của các lớp tương đẳng mod  ( Thật vậy, giả sử z  Y-1 L và

z  z’ mod  Khi đó tồn tại y  Y để yz  L do đó yz’  L Kéo theo z’  Y-1 L )

Với n = 1, X là hợp của các lớp tương đương của  , do đó X-1 X cũng là hợp của các lớp của

i Nếu Un là hợp của các lớp của i , khi đó theo lập luận trên cả Un-1 X và X-1 Un+1 là các hợp của các lớp của i Do đó Un+1 là hợp của các lớp của i Sự kiện X là đoán nhận được kéo theo

Đầu tiên ta sẽ đưa ra một số định nghĩa và một số tính chất cơ bản của mã prefix Tiếp theo ta

sẽ ứng dụng otomat trong nghiên cứu mã prefix và đưa ra cách xây dựng otomat ứng với mã prefix Sau đó ta nghiên cứu một số tính chất của mã prefix cực đại Trong mục tiếp theo ta nói về mã semaphore, là lớp mã con lý thú của lớp mã prefix

Trang 35

Mã prefix

Trong mục này, ta đưa ra một số định nghĩa tương đương về mã prefix và cách biểu diễn tập prefix dùng cấu trúc cây Tiếp theo ta xét mối liên quan mã prefix với phân tích của vị nhóm tự do

Quy ước: để đơn giản ta ký hiệu tập các thừa số trái (phải) thực sự

XA = X(A+)1 ; AX = (A+)1X

mã Ta có các định nghĩa tương đương về mã prefix như sau:

(iii) XA+ , X , XA đôi một không giao nhau

(v) Nếu xu = x’u’ và x, x’  x thì x = x’ và u = u’

Mệnh đề sau cho ta quan hệ giữa mã prefix với ideal phải Cũng từ mệnh đề này ta có

được phương pháp xây dựng mã prefix từ một ngôn ngữ trong A*

2 Cho X là tập prefix, giả sử M là tập con của A* thoả XA* = MA* Khi đó

Chứng minh

1 Từ X = L  LA+ ta có X  L, kéo theo XA+  LA+ , do đó

X  XA+  X  LA+ =  Vế đầu chứng tỏ X là prefix Để ý rằng

Chiều ngược lại, do X  L do đó XA*  LA* Vậy XA* = LA*

Trang 36

2 Giả sử x  X Khi đó x = mu , với m  M và u  A* Cũng như thế m = x’v , với x’  X

và v  A* Từ đó x = x’uv Do X là prefix do đó ta có uv = 1 Vậy X  M Từ XA* = MA*

, như thế m = xu  MA+ trái giả thiết m  M  MA+ Vậy u=1 và x M  MA+

Tập X = L  LA+ được gọi là tập khởi tạo của L hoặc cơ sở của ideal phải LA*

Từ mệnh đề ta có hệ quả sau

Hệ quả 2.1.3 Cho X và Y là các tập con prefix của A* Nếu XA*=YA* thì X=Y

Ví dụ 2.1.1 Cho A = {a, b}, L = A*aA* (tập các từ có chứa a) Khi đó ta có X=LLA+= b*a

Ví dụ 2.1.2 Cho A= {a, b}, X = A*ab  A*abA+ Dễ thấy rằng X là prefix vì X là tập các

từ kết thúc bằng ab nhưng không chứa chuỗi ab nào khác ở giữa

Ví dụ 2.1.3 Cho A= {a, b}, L = {aa, ba, aab, aaa, bba, bab} khi đó

X = L  LA+ = {aa, ba, bba} Dễ dàng thấy rằng X là prefix

Chúng ta xem xét biểu diễn hình học của mã nói chung và mã prefix trên 2,3 ký tự nói riêng Biểu diễn hình học cho mối liên hệ giữa mã với cấu trúc cây, mỗi từ của mã được ứng với một nút trên cây

Trước tiên ta xây dựng cây vô hạn cho tập A* như sau Bảng chữ cái được sắp theo thứ tự, các

từ có cùng độ dài được sắp theo thứ tự từ điển (lexicography) Như thế mỗi nút của cây tương ứng với một từ trong A* Từ có độ dài ngắn hơn nằm trước (nút cha) từ dài hơn, các từ cùng

độ dài được phân nhánh theo thứ tự từ điển Tồn tại nhánh đi từ u đến v khi và chỉ khi v= ua với a là chữ cái nào đó của A Cấu trúc cây xây dựng như trên được gọi là biểu diễn chữ (literal representation) của A*

Ví dụ 2.1.4 cây xây dựng cho A* với A ={a,b} và A* với A = {a, b, c}

1

a

b ab aa

Trang 37

Hình 2.1: Biểu diễn chữ cho A*.

Từ cây cho tập A*, ta ứng tập X  A* với một cây con bằng cách giữ lại các nút tương ứng với các từ trong X cùng với các nút trên đường đi từ gốc đến nó Cây con thu được gọi là biểu diễn chữ của X

Ví dụ 2.1.5 Cây xây dựng cho tập X = {ab, bb, aab}

Hình 2.2: Biểu diễn cây cho X

aab ab

bb

a b

aa 1

Dựa trên biểu diễn cây ta có thể thấy ngay rằng một từ là thừa số bên trái thực sự của từ khác nếu nó nằm trên đường đi từ gốc đến từ thứ hai Như thế tập X là prefix khi và chỉ khi trên cây biểu diễn chữ của X, mọi từ trong X là các nút lá của cây Biểu diễn chữ giúp ta dễ hình dung về tập X và có thể biểu diễn tập có khá nhiều phần tử

Bây giờ quay lại với mã prefix, ta có định lý phân tích thừa số

Cho X  A*, X được gọi là tập prefix đóng (closed) nếu u thuộc X thì mọi thừa số trái của u cũng thuộc X ( v ta có uX suy ra uv1  X) Tương tự ta có khái niệm suffix đóng

Cho X, Y  A*, tích XY gọi là không nhập nhằng nếu từ xy=x’y’, x,x’X, y,y’ Y suy ra x=x’ và y=y’

Ngược lại, nếu R là tập prefix đóng thuộc A*, khi đó X = RA  R là mã prefix Nếu R thì

X là tập mã prefix duy nhất thoả R = A*  XA*

Chứng minh:

Ta nhận xét rằng nếu từ w không chứa thừa số bên trái nào thuộc X thì mọi thừa số trái của w

đều có tính chất này Do đó từ cách xác định R, suy ra R là prefix đóng (closed) Mặt khác R

  vì tập X  {1} Tích XA* là không nhập nhằng theo mệnh đề 2.1.1.(v) Do đó XA* = X A* , ta có:

Trang 38

khi đó YA*=XA* do đó theo hệ quả 2.1.3, ta có X=Y Chứng tỏ rằng X là duy nhất

Đẳng thức (2.1.5) nói rằng nếu thêm một ký tự vào sau một từ trong R thì ta được một từ trong R hoặc trong X , và một từ trong X là hợp của một từ trong R với một ký tự ở cuối Còn theo (2.1.6), một từ w  A* có một phân tích duy nhất dạng:

w = x1 x2 xn u , x1 , , xn  X và u  R

Ví dụ 2.1.6 : Cho X = {a, baa,bab,bb}  A+ là tập mã (có biểu diễn chữ trong hình) Tập R = A*  XA* = {1, ba,b} , X  1 =(1 + ba + b)(A  1) Để ý R = XA

a b

ba baa bab bb

Hình 2.3: Biểu diễn ký tự của tập X

Trang 39

Otomat của mã prefix

Cách biểu diễn chữ cung cấp cho ta cách đơn giản để kiểm tra xem một từ w (trong A*)

có thuộc X* hay không? Bằng cách lần theo đường dẫn từ gốc cây lần lượt qua các ký tự trong w Nếu ta đến được nút lá thì khi đó ta thu được một thừa số trái (left factor) trong X của w Ta cắt thừa số đó và tiếp tục kiểm tra lại từ gốc

Ta sẽ xây dựng các otomat chữ (literal automaton) từ dạng biểu diễn chữ và từ đó xây dựng

otomat tối tiểu (minimal automaton)

Để ý rằng với tập con X  A* , ta ký hiệu A (X) là otomat tất định tối tiểu (minimal

deterministic automaton) đoán nhận (recognized) X

(ii) Otomat tối tiểu A (X) hoặc là rỗng hoặc chỉ có một trạng thái kết thúc t và t 

A = 

(iii) Tồn tại otomat tất định A =(Q, i, T) đoán nhận X với T  A = 

Trong đó  là hàm chuyển dịch (transition function) trạng thái:

qw  T} ={1} Thật vậy, giả sử x  X và w  A* là từ thoả i  x = q  T khi đó xw  X, và vì X là prefix nên w = 1

Như thế 2 trạng thái cuối là unseparable và từ tính tối tiểu của A (X) ta có A (X) chỉ có một trạng thái cuối, gọi là t Bây giờ giả sử t  A  , như thế tồn tại chữ a và trạng thái p : t  a =

p Bởi vì p là coaccessible nên tồn tại v để pv = t Suy ra tav = t hay av = 1, mâu thuẫn (ii)  (iii) Theo lý thuyết Otomat ta luôn xây dựng được Otomat tất định A =(Q, i, T) nhận dạng X với T  A =  từ A (X)

Xuất phát từ dạng biểu diễn chữ, ta có thể dễ dàng xây dựng otomat cho mã prefix Otomat như thế gọi là otomat chữ (literal automaton) của mã prefix X, là otomat tất định A = (XA  X , 1 , X), được định nghĩa như sau:

Trang 40

đó biểu diễn của otomat chữ xây dựng như trên tất nhiên tương ứng với biểu diễn chữ của mã

Ví dụ 2.2.1(tiếp) Với otomat chữ trên của tập X = {ab, bab, bb} ta có thể xây dựng otomat tối tiểu

3

1

2

0 1

0 0

a

b

b

a b

Ngày đăng: 27/09/2019, 23:05

TỪ KHÓA LIÊN QUAN

w