Xây dựng thuật toán, viết đặc tả hoặc vẽ sơ đồ cho các thuật toán mã hóa cổ điển. Cho ví dụ minh họa, mỗi thuật toán 5 ví dụ
Trang 1mục lục
lời nói đầu 2
phần i: các khái niệm cơ bản 3
Phần ii:các phơng pháp mã hóa cổ điển 6
I Hệ mã hoá thay thế (Substitution Cipher) 6
1 Hệ mã hoá CAESAR 8
2 Hệ mã hoá AFFINE 11
3 Hệ mã hoá Playfair 14
4 Hệ mã hoá VIGENERE 16
5 Hệ mã hoá HILL 20
II Hệ mã hoá hoán vị (Transposition Cipher) 24
III Các cách Thám mã (Cryptanalyis) 28
1.Chỉ biết bản mã 28
2.Biết bản rõ 29
3 Lựa chọn bản rõ 29
4 Lựa chọn bản rõ thích hợp 29
5 Lựa chọn bản mã 30
6 Lựa chọn khoá 30
phần iii: cài đặt một số thuật toán 32
Trang 2Lời nói đầu
Trong các thập niên vừa qua việc ứng dụng Công nghệ thông tin trong lĩnh vựckinh doanh và các hoạt động dân sự đã thực sự bùng nổ Ngân hàng và các tổ chứctài chính lưu chuyển hàng tỷ đô la mỗi ngày trên các hệ thống EFT (ElectronicFulds Transfer: Hệ thống chuyển tiền điện tử) Các tập đoàn công nghiệp tiến hành
xử lý và truyền nhập các thông tin đắt giá, chẳng hạn về thiết kế hoặc giao dịchmua bán cổ phiếu, trái phiếu và ngoại tệ với số lợng lớn đợc thực hiện thông quamạng máy tính Lợng thông tin cá nhân khổng lồ ấy đợc lu trữ và xử lý bởi máytính Tất cả những ví dụ trên đều cho thấy phạm vi cho những hành vi gian lận vàtình báo công nghiệp hoạt động đã trở nên vô cùng rộng lớn
Ngày nay, với sự bùng nổ của công nghệ thông tin đặc biệt là Internet với email,e-buissiness thì vấn đề bảo vệ thông tin ngày càng quan trọng quyết định sự sốngcòn của 1 công ty và các vấn đề an ninh quốc phòng
Giải pháp hiện thời cho việc bảo vệ của hều hết các quốc gia là kiểm soát lỗi vàmã hóa dữ liệu Phơng pháp mã hóa dữ liệu xuất hiện từ hàng ngàn năm trớc và đã
có những đóng góp đáng kể trong lĩnh vực bảo mật thông tin
Với đề tài: “Xây dựng thuật toán, viết đặc tả hoặc vẽ sơ đồ cho các thuật toán
mã hóa cổ điển Cho ví dụ minh họa, mỗi thuật toán 5 ví dụ“ em sẽ trình bày cụ
thể hơn về các thuật toán trong mã hóa cổ điển -một phơng pháp mã hóa xuất hiện
từ rất sớm
Trang 3Phần i: các khái niệm cơ bản
Mã hóa cổ điển là phơng pháp mã hóa đơn giản nhất xuất hiện đầu tiên tronglịch sử ngành mã hóa Thuật toán đơn giản và dễ hiểu Những phơng pháp mã hóanày là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hóa đối xứng đợc sửdụng ngày nay Trong mã hóa cổ điển có hai phơng pháp nổi bật là: Mã hóa thaythế và Mã hóa hoán vị
Các thông điệp cần chuyển đi và cần đợc bảo vệ an toàn gọi là bản rõ(plaintext), và đợc ký hiệu là P Nó có thể là một dòng vào các bít, các file, âmthanh số hoá, Bản rõ đợc dùng để lu trữ hoặc để truyền đạt thông tin Trong mọitrờng hợp bản rõ là thông điệp cần mã hoá
Quá trình xử lý một thông điệp trớc khi gửi đợc gọi là quá trình mã hoá(encryption), ký hiệu là E
Một thông điệp đã đợc mã hoá đợc gọi là bản mã (ciphertext), và đợc ký hiệu làC
Quá trình xử lý ngợc lại từ bản mã thành bản rõ đợc gọi là quá trình giải mã(decryption), ký hiệu là D
Hàm mã hóa E thực hiện trên P để thu đợc C, ta có:
E(P)=CHàm giải mã D thực hiện trên C để thu đợc C, ta có:
D(C)=PViệc mã hoá và giải mã thờng đợc thực hiện theo một hệ mã đợc mô tả rõ.Khoá (key) là một giá trị dùng để thực hiện một thuật toán mã hoá Khoá có thể làmột số, một xâu ký tự, Khoá này có thể nhận một trong nhiều giá trị (càng nhiềucàng tốt) Giới hạn các giá trị có thể của khoá đợc gọi là không gian khoá (spacekey) Mỗi khoá k xác định một hàm mã hoá Ek và một hàm giải mã Dk Giá trị củakhoá quyết định hiệu quả của các hàm mã hoá và giải mã, vì vậy các hàm mã hoá
và giải mã có thể đợc biểu diễn nh sau:
Ek(P) = C
Dk(C) = PMột cách cụ thể hơn, một hệ mã hoá bao gồm: một không gian bản rõ, mộtkhông gian bản mã và một không gian khoá
Trang 4- Không gian bản rõ có thể * trên bảng chữ cái hoặc tập hợp tất cả cáccâu có nghĩa trong một ngôn ngữ tự nhiên nào đó.
Hình 1 Mã hoá với khoá mã và khoá giải giống nhau
Khoá giảiKhoá mã
Trang 5Phần ii: Các phơng pháp mã hóa cổ điển
I Hệ mã hoá thay thế (Substitution Cipher)
Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ đợc thay thếbằng ký tự khác trong bản mã (có thể là một chữ cái, một số hoặc một ký hiệu) Sựthay thế này làm cho bản rõ trở lên khó hiểu đối với mọi ngời nhng ngời nhận sẽ
đảo sự thay thế trong bản mã để đợc bản rõ
Có 4 kỹ thuật thay thế sau đây:
- Thay thế đơn (A simple substitution cipher): là hệ trong đó một ký tự
của bản rõ đợc thay bằng một ký tự tơng ứng trong bản mã Một ánh xạ 1-1 từ bản
rõ tới bản mã đợc sử dụng để mã hoá toàn bộ thông điệp
- Thay thế đồng âm (A homophonic substitution cipher): giống nh hệ
thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể đợc ánh xạ tớimột trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1-n (one-to-many) Ví dụ, “A”
có thể tơng ứng với 5, 13, 25, hoặc 56, “B” có thể tơng ứng với 7, 19, 31, hoặc 42,v.v
- Thay thế đa mẫu tự (A polyalphbetic substitution cipher): đợc tạo nên từ
nhiều thuật toán mã hoá thay thế đơn ánh xạ 1-1 nh trong trờng hợp thay thế đơn,nhng có thể thay đổi trong phạm vi một thông điệp Ví dụ, có thể có năm thuật toánmã hoá đơn khác nhau đợc sử dụng; đặc biệt thuật toán mã hoá đơn đợc sử dụngthay đổi theo vị trí của mỗi ký tự trong bản rõ
- Thay thế đa sơ đồ (A polygram substitution cipher): là thuật toán trong
đó các khối ký tự đợc mã hoá theo nhóm Đây là thuật toán tổng quát nhất, chophép thay thế các nhóm ký tự của văn bản gốc Ví dụ, “ABA” có thể tơng ứng với
Trang 6if (c >= a && c <= m )‘a’ && c <= ‘m’) ’ && c <= ‘m’) ‘a’ && c <= ‘m’) ’ && c <= ‘m’)
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ạobở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ệctrê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 thaycho 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,
13
22
23
23
25
Các phép toán số học thực hiện theo modul 26 Có nghĩa là 26 đồng nhất với
0, 27 đồng nhất với 1, 28 đồng nhất với 2, Ví dụ:
217 + 59 = 79 = 1 + 326 = 1
Trang 7- 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ôngthứ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ằngZ, , X đợc thay bằng A, Y đợc thay bằng B, và Z đợc thay bằng C Ta có:
Trang 8Vậy với bản rõ TINHOC ta sẽ mã hóa thành DSXRYM
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 theomodul 26
- 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
Trang 9Ví 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õ:
Trang 10J B C R C L Q R W C R V N B J E N B W R W N(k=1) I A B Q B K P Q V B Q U M A I D M A V Q V M
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ínhngay 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 0a,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éptoán số học đợc thực hiện theo modul 26
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
Trang 11- 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:
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”
Trang 12Ek(“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ó:
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:
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 ánhxạ 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 thaythế 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 đảmbả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
Trang 13Ma 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
- 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 = 676cặ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ănbả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ẽ
Trang 14có 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ảngchữ đơn.
- Mã Playfair đợc sử dụng rộng rãi nhiều năm trong giới tuân sự Mỹ và Anhtrong 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õ
Trang 16Mỗi cột của hình vuông VIGENERE có thể xem nh là một hệ CAESAR, vớicá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ộtcá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 nhaugiữ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
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
Trang 17Ví dụ3: mã hóa bản rõ THUATTOAN với từ khoá BAOMAT
Để giải mã ta vẫn dùng hình vuông VIGENERE, xét khóa k đóng vai trò là cột, ký
tự đợc mã hóa là giao của khóa và hàng nào đó tơng ứng Có nghĩa là ta chỉ cầngióng theo khóa xuống kỹ tự đã đợc mã hóa và từ đó gióng sang hàng ta sẽ thu đợc
kỹ tự trong bản rõ
Ví dụ 1: Có bản mã IICANX và khóa XINH
Nhìn vào hàng có chứa I trong cột X ta có đợc L
Vậy ta thu đợc bản rõ là LAPTOP
Ví dụ 2: Có bản mã EVJASPP và khóa LOPTKLC
Hàng chứa E trong cột L là T
Hàng chứa V trong cột O là H
Hàng chứa J trong cột P là U
Trang 18- Phơng pháp vét cạn: khó thực hiện nhát là nếu khóa có nhiều chữ cái
- Khai thác những nhợc điểm của giải thuật
+ Cấu trúc nguyên bản đợc che đậy tốt hơn nhng không hoàn toàn biến mất.+ Chỉ việc tìm độ dài khóa sau đó phá mã từng hệ CAESAR
+ Cách tìm độ dài khóa:
Nếu độ dài khóa nhỏ hơn so với độ dài văn bản, có thể phát hiện 1 dãyvăn bản lặp lại nhiều lần
Khoảng cách giữa 2 dãy văn bản lặp lại là bội số của độ dài khóa
Từ đó suy ra độ dài khóa:
- VIGENERE đề xuất từ khóa không lặp lại mà đợc gắn vào đầu nguyênbản
- Nếu biết từ khóa sẽ giải mã đợc chữ cái đầu tiên
- Sử dụng các chữ cái này làm khóa để giải mã các chữ cái tiếp theo
3 3
và M-1 =
9 20
17 15
Trang 19
Nếu d=2 ta có thể viết một phần tử của bản rõ là x = (x1, x2) và một phần tửcủa bản mã là y=( y1, y2) ở đây, y1 cũng nh y2 đều là tổ hợp tuyến tính của x1, x2.Chẳng hạn:
y1 = 11x1+3 x2
y2 = 8x1+7 x2
Tất nhiên có thể viết gọn hơn theo ký hiệu ma trận nh sau:
( y1, y2) = ( x1, x2) =
Nói chung, có thể lấy 1 ma trận K kích thớc dxd làm khóa Nếu 1 phần tử ở hàng i
và cột j của K là Ki,j thì có thể viết:
K=(Ki,j) với x = (x1, x2… xd) P và K K, ta tính:
Y= ek(x) = (y1, y2… yd) nh sau:
(y1, y2… yd) (x1, x2… xd)
Nói cách khác y = x.K
Chúng ta nói rằng bản mã nhận đợc từ bản rõ nhờ phép biến đổi tuyến tính
Quá trình mã hoá đợc thực hiện theo công thức:
C = K.P MOD 26trong đó P và C đợc viết thành các vector cột d chiều Mỗi bộ d chữ cái của bản rõ
đợc viết thành vector P với các thành phần là các số biểu diễn các ký tự Và C cũngthể hiện khối d ký tự của bản mã
Ví dụ1: bản rõ “HELP” đợc viết thành hai vector
Trang 203 3
3 3
Vậy ta thu đợc bản mã PIIJ
Ví dụ 3: bản rõ LAMA đợc viết thành
P1 = = và P2 = =
Ta có: theo công thức mã hóa thì
Trang 21KP2 = = C2
Vậy ta thu đợc bản mã HWKY
Ta xét xem phải thực hiện giải mã nh thế nào, tức là làm thế nào để tính x từ y.Chúng ta phải dùng ma trận nghịch đảo K-1để giải mã Bản mã đợc giải bằng côngthức:
3 3
17 15
Vậy ta thu đợc bản rõ EAVE
Ví dụ 2: Cho bản mã LXAP ta biểu diễn
C1 = = và C2 = =
áp dụng công thức giải mã ta có: