1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Công nghệ thông tin >

Phần ii: Các phương pháp mã hóa cổ điển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (244.17 KB, 39 trang )


An ton v bo mt thụng tin



7



#include

void main()

{

int c;

while ((c == getchar()) != EOF)

{

if (c >= a && c <= m)

c = c + 13;

else

if (c >= n && c <= z)

c = c 13;

else

if (c >= A && c <= M)

c = c + 13;

else

if (c >= N && c <= Z)

c = c-13;

putchar(c);

}

}

Mã hoá một file hai lần bằng ROT13 và lu giữ kết quả trong file gốc:

P = ROT13(ROT13(P))

Có rất nhiều hệ mã hoá có thể dễ dàng bẻ gẫy bởi vì bản mã không ẩn đi đợc

tần số xuất hiện của các ký tự khác nhau của bản rõ, khoảng 26 ký tự tiếng Anh.

Một nhà thám mã giỏi có thể xây dựng lại đợc bản rõ.



Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



8



1. Hệ mã hoá CAESAR

Hệ mã hoá nổi tiếng CAESAR là một hệ mã hoá đợc biết sớm nhất, sáng tạo

bởi Julius Caesar. Lần đầu tiên đợc sử dụng trong quân sự. Hệ mã hóa này 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 là 0, B là 1,...

và Z là 25.

A B



C D E F G H I



J



... L



M N



... W X



Y



Z



0



2



9



... 1



1



1



... 2



2



2



2



1



2



3



2



3



3



5



1



3



4



5 6 7 8



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, 28 đồng nhất với 2,... Ví dụ:

2ì17 + 5ì9 = 79 = 1 + 3ì26 = 1

Thuật toán:

- Bớc 1: Đa vào bản rõ cần mã hóa

- Bớc 2: Cho khóa k (0 k 25)

- Bớc 3: thay thế mỗi ký tự trong bản rõ bằng 1 ký tự khác bằng cách dịch

ký tự cần mã hóa sang phảI k bớc theo modul 26. Tơng ứng với công

thức:

Ek() = ( + k) MOD 26

với là một ký tự, k là khóa (0 k 25), MOD là phép chia lấy phần d.

Không gian khoá của hệ CAESAR bao gồm 26 số 0, 1, 2,... 25.

Ví dụ: với k=3, A đợc thay bằng D, B đợc thay bằng E,... , W đợc thay bằng

Z,... , X đợc thay bằng A, Y đợc thay bằng B, và Z đợc thay bằng C. Ta có:

Bảng chữ cái gốc

A B C D E F G H I J K L MN O P Q R S T U V WX Y Z

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



9



Bảng chữ cái dùng để mã hoá

D E F G H I J K L MN O P Q R S T U V WX Y Z A B C

Ví dụ:

Ví dụ 1: =GOOD, k=8 ta có:

E8(G)=(6+8) MOD 26 =14 =O

E8(O)=(14+8) MOD 26 =22 =W

E8(D)=(3+8) MOD 26 =11 =L

Vậy với bản rõ GOOD ta sẽ mã hóa thành OWWL

Ví dụ 2: =Tinhoc, k=10 ta có:

E10(T)=(19+10) MOD 26 =3 =D

E10(I)=(8+10) MOD 26 =18 =S

E10(N)=(13+10) MOD 26 =23 =X

E10(H)=(7+10) MOD 26 =17 =R

E10(O)=(14+10) MOD 26 =24 =Y

E10(C)=(2+10) MOD 26 =12 =M

Vậy với bản rõ TINHOC ta sẽ mã hóa thành DSXRYM

Ví dụ 3: =Baomat, k=17 ta có:

E17(B)=(1+17) MOD 26 =18 =S

E17(A)=(0+17) MOD 26 =17 =R

E17(O)=(14+17) MOD 26 =5 =F

E17(M)=(12+17) MOD 26 =3 =D

E17(T)=(19+17) MOD 26 =10 =K

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



10



Vậy với bản rõ BAOMAT ta sẽ mã hóa thành SRFDRK

* 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

Để minh họa, ta xét một vài ví dụ minh hoạ:

Ví dụ 1: = HPWNZXP

- Xét với k=1 ta có thể lùi lại 1 bớc trong bảng chữ cái. Nh vậy bản mã trên

tơng ứng là: GOVMYWO

- k=2, tơng tự thu đợc bản rõ FNULXVN

- k=3, thu đợc bản rõ EMTKWUM

- k=4, thu đợc bản rõ DLSJVTL

- k=5, thu đợc bản rõ CKRIUSK

- k=6, thu đợc bản rõ BJQHTRJ

- k=7, thu đợc bản rõ AIPGSQI

- k=8, thu đợc bản rõ ZHOFRPH

- k=9, thu đợc bản rõ YGNEQOG

- k=10, thu đợc bản rõ XFMDPNF

- k=11, thu đợc bản rõ WELCOME

Đến đây bản rõ có nghĩa (WELCOME) nên ta xác định đợc khóa k = 11

Ví dụ 2: Cho bản mã JBCRCLQRWCRVNBJENBWRWN ta thử liên tiếp các khóa

giải mã để thu đợc các bản rõ:



Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



11



JBCRCLQRWCRVNBJENBWRWN

(k=1)



IABQBKPQVBQUMAIDMAVQVM



(k=2)



HZAPAJOPUAPTLZHCLZUPUL



(k=3)



GYZOZINOTZOSKYGBKYTOTK



(k=4)



FXYNYHMNSYNRJXFAJXSNSJ



(k=5)



EWXMXGLMRXMQIWEZIWRMRI



(k=6)



DVWLWFKLQWLPHVDYHVQLQH



(k=7)



CUVKVEJKPVKOGUCXGUPKPG



(k=8)



BTUJUDIJOUJNFTBWFTOJOF



(k=9)



ASTITCHINTIMESAVESNINE



Tới đây ta thu đợc bản rõ có nghĩa và dừng lại, khóa tơng ứng k = 9.

Một số thuộc tính của Ek và Dk là:

Tính giao hoán: Ek và Dk đợc áp dụng lần lợt, thứ tự không quan trọng.

Ví dụ: E3 D7 E6 D11 = E3 E6 D7 D11 = D9 = E17.

Với k bất kỳ thoả mãn 1 k 26 ta có: Dk = E26-k, DkEk = E0 = D0.

Hệ CAESAR là hệ mã hoá cũ và không an toàn vì không gian khoá của nó

rất nhỏ, do đó có thể thám mã theo phơng pháp vét cạn. Khoá giải mã có thể tính

ngay ra đợc từ khoá mã hoá. Do chỉ có 26 khoá nên ta có thể thử lần lợt các khoá

cho đến khi tìm đợc khoá đúng.

2. Hệ mã hoá AFFINE

Hệ mã hoá AFFINE đợc xác định bởi hai số nguyên a và b, với điều kiện 0

a,b 25 (tức a, b thuộc bảng chữ cái tiếng Anh 26 ký tự). ở đây chúng ta xét hệ làm

việc trên các số tự nhiên thay cho các ký tự nh đã nói ở phần trên, các phép toán số

học đợc thực hiện theo modul 26.



Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



12



Thuật toán:

- Bớc 1: Đa vào bản rõ cần mã hóa

- Bớc 2: Cho bớc nhảy các ký tự, tức là giá trị a và b

- Bớc 3: Thay thế ký tự ở bản rõ bằng ký tự đợc xác định bởi:

Ek() = (a + b) MOD 26

Lu ý: khi a = 1 thì ta có hệ mã hoá CAESAR.

Ví dụ: nếu a = 3 và b = 5 thì ta có, bảng số tự nhiên tơng ứng với bảng chữ

cái gốc:

0



1



13 14



2



3



4



5



6



7



8



9



10



11



12



15



16



17



18



19



20



21



22



23



24



25



bảng số tự nhiên sau khi mã hoá:

5



8



18 21



11



14



17



20



23



0



3



6



9



12



15



24



1



4



7



10



13



16



19



22



25



2



Tơng ứng ta có bảng chữ cái gốc:

A B C D E F G H I J K L MN O P Q R S T U V WX Y Z

và bảng chữ cái dùng để mã hoá:

F I L O R U X A D G J MP S V Y B E H K N Q T WZ C

Ví dụ1: = THUHIEN, với a=3, b=5 ta có:

Ek(T) = (3.19 + 5) MOD 26 = 10 = K

Ek(H) = (3.7 + 5) MOD 26 = 0 = A

Ek(U) = (3.20 + 5) MOD 26 = 13 = N

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



13



Ek(I) = (3.8 + 5) MOD 26 = 3 = D

Ek(E) = (3.4 + 5) MOD 26 = 17 = R

Ek(N) = (3.13 + 5) MOD 26 = 18 = S

Vậy, với bản rõ THUHIEN ta thu đợc bản mã: KANADRS

Ví dụ2: = KHOGHE, với a=9, b=3 ta có:

Ek(K) = (9.10+3) MOD 26 = 15 = P

Ek(H) = (9.7+3) MOD 26 = 14 = O

Ek(O) = (9.14+3) MOD 26 = 25 = Z

Ek(G) = (9.6+3) MOD 26 = 5 = F

Ek(E) = (9.4+3) MOD 26 = 13 = N

Ek(N) = (3.13 + 5) MOD 26 = 18 = S

Vậy, với bản rõ KHOGHE ta thu đợc bản mã: POZFON

Ví dụ3: = TOTNGHIEP, với a=4, b=11 ta có:

Ek(T) = (4.19+11) MOD 26 = 9 = J

Ek(O) = (4.14+11) MOD 26 = 15 = P

Ek(N) = (4.13+11) MOD 26 = 11 = L

Ek(G) = (4.6+11) MOD 26 = 9 = J

Ek(H) = (4.7+11) MOD 26 = 13 = N

Ek(I) = (4.8+11) MOD 26 = 17 = R

Ek(E) = (4.4+11) MOD 26 = 1 = B

Ek(P) = (4.15+11) MOD 26 = 19 = T

Vậy, với bản rõ TOTNGHIEP ta thu đợc bản mã: JPJLJNRBT

Để có thể giải mã đợc ta chú ý rằng hàm mã hoá AFFINE:

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



14



Ek()=(a + b) MOD 26

phải là hàm đơn ánh hay nói cách khác hàm này có ánh xạ 1-1. Ví dụ với a = 10,

b= 1 ta có ánh xạ 10 + 1. ánh xạ này không thoả mã vì hai ký tự A và N cùng ánh

xạ tới B, vì vậy khi giải mã B có thể đợc giải mã thành A và N. Ngợc lại không có

một ký tự nào ánh xạ tới O, và vì vậy O không xuất hiện trong bảng chữ cái thay

thế. Ta có thể dễ dàng tìm thấy tất cả các cặp ký tự cùng ánh xạ tới một ký tự cũng

nh tất cả các ký tự không xuất hiện trong bảng chữ cái thay thế.

3. Hệ mã hoá Playfair

Nh chúng ta đã thấy, không phải số khóa lớn trong mã bảng chữ đơn đảm

bảo an toàn mã. Một trong các hớng khắc phục là mã bộ các chữ tức là mỗi chữ sẽ

đợc mã bằng 1 số chữ khác nhau tùy thuộc vào các chữ mà nó đứng cạnh. Playfair

là một trong các mã nh vậy, nó đợc sáng tạo bởi Charles Wheastone vào năm 1854

và mang tên ngời bạn là Barlon Playfair. ở đây mỗi chữ có thể đợc mã bằng 1 trong

7 chữ khác nhau tùy ý vào cặp chữ đứng cùng nó trong bảng chữ cái.

Ma trận khóa Playfair: cho trớc 1 từ làm khóa, với điều kiện trong từ khóa đó

không có chữ nào bị lặp. Ta lập ma trận Playfair là ma trận cỡ 5x5 dựa trên từ khóa

đã cho và gồm các chữ trên bảng chữ cái, đợc sắp xếp theo thứ tự nh sau:

- Trớc hết, viết các chữ của từ khóa vào các hàng của ma trận bắt đầu từ

hàng thứ nhất.

- Nếu ma trận còn trống, viết các chữ khác lên bảng chữ cái cha đợc sử

dụng vào các ô còn lại. Có thể viết theo 1 trình tự quy ớc trớc, chẳng hạn

từ đầu bảng chữ cái cho đến cuối.

- Vì có 26 chữ cái tiếng Anh nên thiếu 1 ô. Thông thờng ta dồn 2 chữ nào

đó vào 1 ô chung, chẳng hạn I và J.

- Giả sử sử dụng từ khóa MONARCHY. Lập ma trận khóa Playfair:

MONAR

CHYBD

EFGIK

LPQST

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



15

UVWXZ



Mã hóa và giải mã: bản rõ đợc mã hóa hai chữ cùng 1 lúc theo quy tắc nh sau:

- Chia bản rõ thành từng cặp chữ. Nếu 1 cặp nào đó có 2 chữ nh nhau thì

chèn thêm 1 chức lọc, chẳng hạn X. Ví dụ trớc khi mã ballon biến đổi thành

balxlon.

- Nếu cả hai chữ trong cặp đều rơi vào cùng 1 hàng thì mã mỗi chữ bằng chữ

ở phía bên phải nó trong cùng 1 hàng của ma trận khóa (cuộn vòng quanh từ cuối

về đầu), chẳng hạn ar thì biến thành RM.

- Nếu cả hai chữ trong cặp đều rơi vào cùng 1 cột, thì mã mỗi chữ bằng chữ ở

phía bên dới nó trong cùng 1 cột của ma trận khóa (cuộn vòng quanh từ cuối về

đầu), chẳng hạn mu thì biến thành CM.

- Trong các trờng hợp khác, mỗi chữ trong cặp đợc mã bởi chữ cùng hàng với

nó và cùng cột với chữ cùng cặp với nó trong ma trận khóa, chẳng hạn hs mã

thành BP và ea thành IM hoặc JM (tùy theo sở thích).

An toàn của mã Playfair:

- An toàn đợc nâng cao hơn so với bảng đơn, vì ta tổng cộng 26x26 = 676

cặp. Mỗi chữ có thể đợc mã bằng 7 chứ khác nhau nên tần suất các chữ cái trên văn

bản tiếng Anh nói chung.

- Muốn sử dụng thống kê tần suất, cần có bảng tần suất 676 cặp để thám mã

(so với 26 của bảng đơn). Nh vậy phải xem xét nhiều trờng hợp hơn và tơng ứng sẽ

có thể có nhiều bản mã hơn cần lựa chọn. Do đó khó thám mã hơn trên mã bảng

chữ đơn.

- Mã Playfair đợc sử dụng rộng rãi nhiều năm trong giới tuân sự Mỹ và Anh

trong chiến tranh Thế giới thứ nhất. Nó có thể bị bẻ khóa nếu cho trớc vài trăm chữ

vì bản mã vẫn còn chứa nhiều cấu trúc của bản rõ.



Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



16



4. Hệ mã hoá VIGENERE

Hệ mã hoá này đợc đặt theo tên của một nhà mật mã ngời Pháp Blaise de

Vigenère (1523-1596).

VIGENERE cũng giống nh CAESAR, nhng ở đây khoá đợc thay đổi theo

từng bớc. Hình vuông VIGENERE đợc sử dụng để mã hoá và giải mã.

A B C D E F G H I J K L MN O P Q R S T U V WX Y Z

B C D E F G H I J K L MN O P Q R S T U V WX Y Z A

C D E F G H I J K L MN O P Q R S T U V WX Y Z A B

D E F G H I J K L MN O P Q R S T U V WX Y Z A B C

E F G H I J K L MN O P Q R S T U V WX Y Z A B C D

F G H I J K L MN O P Q R S T U V WX Y Z A B C D E

G H I J K L MN O P Q R S T U V WX Y Z A B C D E F

H I J K L MN O P Q R S T U V WX Y Z A B C D E F G

I J K L MN O P Q R S T U V WX Y Z A B C D E F G H

J K L MN O P Q R S T U V WX Y Z A B C D E F G H I

K L MN O P Q R S T U V WX Y Z A B C D E F G H I J

L MN O P Q R S T U V WX Y Z A B C D E F G H I J K

MN O P Q R S T U V WX Y Z A B C D E F G H I J K L

N O P Q R S T U V WX Y Z A B C D E F G H I J K L M

O P Q R S T U V WX Y Z A B C D E F G H I J K L MN

P Q R S T U V WX Y Z A B C D E F G H I J K L MN O

Q R S T U V WX Y Z A B C D E F G H I J K L MN O P

R S T U V WX Y Z A B C D E F G H I J K L MN O P Q

S T U V WX Y Z A B C D E F G H I J K L MN O P Q R

T U V WX Y Z A B C D E F G H I J K L MN O P Q R S

U V WX Y Z A B C D E F G H I J K L MN O P Q R S T

V WX Y Z A B C D E F G H I J K L MN O P Q R S T U

WX Y Z A B C D E F G H I J K L MN O P Q R S T U V

X Y Z A B C D E F G H I J K L MN O P Q R S T U V W

Y Z A B C D E F G H I J K L MN O P Q R S T U V WX

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



17



Z A B C D E F G H I J K L MN O P Q R S T U V WX Y

Hình vuông VIGENERE

Mỗi cột của hình vuông VIGENERE có thể xem nh là một hệ CAESAR, với

các khoá 0, 1, 2,... , 25. Để mã hoá thì bản rõ đợc đọc từ các hàng và khoá đợc đọc

từ các cột.

Thuật toán:

- Bớc 1: Cho bản rõ cần mã hóa có độ dài tùy ý

- Bớc 2: Cho trớc khóa k là 1 xâu có độ dài tùy ý. Khóa đợc áp dụng một

cách tuần hoàn, tức là nếu bản rõ dài hơn khóa thì khóa sẽ đợc áp dụng lại

từ đầu.

- Bớc 3: Đọc bản rõ từ các hàng, khóa đợc đọc từ các cột, điểm giao nhau

giữa bản rõ và khóa là ký tự trong bản mã.

Ví dụ1: mã hóa bản rõ PURPLE với từ khoá CRYPTO

Đầu tiên ta tìm điểm giao nhau của hàng P và cột C, ta đợc R.

Tơng tự, quy ớc G(X,Y) là giao của hàng X và cột Y

G(U,R) = L

G(R,Y) = P

G(P,P) = E

G(L,T) = E

G(E,O) = S

Nh vậy ta thu đợc bản mã RLPEES

Ví dụ2: mã hóa bản rõ VIGENERE với từ khoá MAHOA

G(V,M) = H

G(I,A) = I

G(G,H) = N

Nguyn Th Thu Hin - TK6LC1



Xem Thêm
Tải bản đầy đủ (.doc) (39 trang)

×