-Đßnh h°ßng cÿa thuật toán là lấy m tổ hợp tuyến tính trên vành Z27 cÿa m ký tự chữ cái trong thông điệp gác bản rõ, theo đó biến đổi thành m ký tự chữ cái trong thông điệp đã đ°ợc mã hó
Trang 10 | L 1 3 _ N 1 2
Đ¾I HàC QUàC GIA THÀNH PHà Hâ CHÍ MINH
TR¯àNG Đ¾I HàC BÁCH KHOA
Môn: Đ¾I SÞ TUYẾN TÍNH
ĐÞ TÀI: M¾T MÃ HILL TRONG BÀI
TOÁN MÃ HÓA
GVHD: Th ¿y Nguyßn Hữu Hiáp
Cô Bùi Th ß Khuyên
L àP: L13 NHÓM: 12
Trang 21 | L 1 3 _ N 1 2
PH ¾N MỞ Đ¾U 2
N ÞI DUNG CHÍNH 3
I/M ÞT SÞ VÂN ĐÞ C¾N LÀM RÕ LIÊN QUAN ĐẾN MÃ HILL 3
1.M ßt sß khái niám liên quan 3
2.Ma tr ¿n khÁ nghßch trên vành Z27 3
3.Các bưác để mã hóa và giÁi mã thông tin 3
4 Các ví d ā: 4
II/M ¾T MÃ HILL TRONG PH¾N MÞM MATLAB 11
1.Sơ lưÿc vß ph¿n mßm MATLAB 11
2 Chương trình m¿t mã Hill trên MATLAB 12
2.1 Cách ho ¿t đßng cÿa chương trình code 12
2.2 Chương trình code MATLAB 12
2.3 Ch ¿y ví dā trên ph¿n mßm MATLAB 15
2.4 Āng dāng cÿa m¿t mã trong cußc sßng 18
III/ K ẾT LU¾N: 19
IV/ TÀI LI àU THAM KHÀO: 19
B ÀNG ĐÁNH GIÁ HOÀN THÀNH CÔNG VIàC 20
Trang 32 | L 1 3 _ N 1 2
Mã hoá Hill ( đ°ợc phát minh bởi Lester S Hill năm 1929) là mật mã cổ điển cho phép
mã hoá hai, hay ba, hoặc nhiều h¡n các ký tự (theo lý thuyết) t¿i cùng thái điểm Mã hoá Hill sử dụng hai lý thuyết toán hác cực kì quan tráng trong ngành mật mã là Đ¿i Sá Tuyến Tính và Sá Hác Mô-Đun
Trong bài báo cáo này nhóm em sẽ trình bày t¿o ra bản mã và giải bản mã bằng phần
mềm MATLAB
Trang 43 | L 1 3 _ N 1 2
I/M ÞT SÞ VÂN ĐÞ C¾N LÀM RÕ LIÊN QUAN ĐẾN MÃ HILL
1.M ßt sß khái niám liên quan
-Đßnh h°ßng cÿa thuật toán là lấy m tổ hợp tuyến tính (trên vành Z27) cÿa m ký tự chữ cái trong thông điệp gác (bản rõ), theo đó biến đổi thành m ký tự chữ cái trong thông điệp
đã đ°ợc mã hóa (bản mã)
-Quá trình chuyển đổi từ bản rõ sang bản mã qua khóa gái là mã hóa
-Quá trình chuyển đổi ng°ợc l¿i gái là giải mã
-Khóa sẽ đ°ợc cho bởi một ma trận vuông cấp n khả nghßch
-Sá nguyên tá cùng nhau: Hai sá nguyên tá a và b đ°ợc gái là hai sá nguyên cùng nhau nếu °ßc chung lßn nhất cÿa chúng bằng 1(UCLN (a, b) = 1)
-Điều kiện cần và đÿ để ma trận vuông A khả nghßch là det(A) khác 0 Khi đó ma trận nghßch đảo cÿa A là:
Gái A là tập các ma trận chìa khóa vuông cấp n khả nghßch trên Z27 khi đßnh thāc cÿa
ma trận A sẽ là sá nguyên tá cùng nhau vßi 27 hay nói cách khác là det(A)b 0 và
UCLN [det(A),27] = 1
3.Các bưác để mã hóa và giÁi mã thông tin
*Để mã hóa thông tin:
Đầu tiên, ta chán một ma trận chìa khóa A (là một ma trận vuông n×n khả nghßch mà ng°ái gửi và ng°ái nhận đều biết tr°ßc L°u ý, đßnh thāc cÿa ma trận này phải là sá nguyên tá cùng nhau vßi sá 27
Tiếp theo, chuyển đo¿n tin nhắn cần gửi thành dãy sá theo bảng quy °ßc nh° sau:
Trang 5ma trận C
Thay thế mỗi sá trong ma trận C vừa tìm đ°ợc bởi các kí tự trong bảng quy °ßc trên, ta đ°ợc thông điệp đã mã hóa
*Gi Ái mã thông tin:
Đầu tiên ng°ái nhận dùng bảng quy °ßc tìm l¿i ma trận mã hóa
Tiếp theo, thực hiện phép toán: ĉ = ý−1× ÿ
Cuái cùng, thay thế các sá h¿ng nằm ngoài gißi h¿n [0,26] bởi các đãng d° cÿa nó theo moodun 27, ta thu đ°ợc ma trận M Sử dụng bảng quy °ßc cho ma trận M, ta tìm l¿i đ°ợc thông tin ban đầu
4 Các ví d ā:
Để dễ hiểu h¡n, ta xem các ví dụ d°ßi đây:
• *Ví dā 1: Mã hóa chữ JUST_FOR_FUN trình tự các b°ßc thực hiện nh° sau:
-Tách chữ JUST_FOR_FUN thành các cum có n kí tự ở đây ta chán n=3 vì vậy có thể tách ra thành 4 cụm JUS, T_F, OR_, FUN
- Chuyển chữ JUST_FOR_FUN về d¿ng ma trận các kí tự cần đ°ợc mã hóa
Trang 6- Chán ma trận chìa khóa A cần đáp āng đÿ các điều kiện:
▪ Phải là ma trận vuông cấp n để có thể nhân vßi ma trận M ở đây ta có n=3
▪ DET(A)b 0, UCLN[DET(A),27] =1
Ta chán ma trận chìa khóa ở đây là ma trận A= ( 12 25 37
−1 −3 −5)đã đáp āng đÿ các điều kiện trên
- Nhân ma trận chìa khóa vßi Ma trận tin nhắn: B=A.M=
- Ta gửi cho ng°ái nhận bản mã AOUKADXLLIZW và ma trận chìa khóa
• Để giải mã ng°ái nhận thực hiện các b°ßc sau
- Dùng bản quy °ßc tìm l¿i ma trận þ1
- Nhân ma trận ý−1 vßi ma trận B1 : ý−1 þ1=C =
( 1048 −27 −3647 96 3348
Trang 76 | L 1 3 _ N 1 2
- Thay thế các sá ngoài gißi h¿n [0,26] bằng các đãng d° cÿa nó theo modun
27 ta thu đ°ợc ma trận M và hoàn tất việc giải mã
*Ví dā 2 : Mã hóa bản rõ SAVE_ME_ bằng mật mã hill sử dụng khóa (1 32 5), sau đó giải mã
Chuyển chữ SAVE_ME_ về d¿ng ma trận các kí tự cần đ°ợc mã hóa
(ď Ē − āý ā ĉ −)Theo bảng quy °ßc ta chuyển ma trận tin nhắn trên về d¿ng ma trận M=
(19 22 0 51 5 13 0)
Nhân ma trận chìa khóa vßi Ma trận tin nhắn: B=A.M= (22 37 39 543 69 65 10)
Thay thế các sá ngoài gißi h¿n [0,26] trong ma trận B bằng các đãng d° cÿa nó theo modun 27 ta thu đ°ợc ma trận B1= (22 10 12 516 15 11 10)
Ta chuyển ma trận þ1 về d¿ng chữ ta thu đ°ợc ma trận các kí tự trong bản mã
(Ē Ć Ĉ āČ ċ ć Ć )
Ta thu đ°ợc mật mã VPJOLKEJ
- Để giải mã, dùng bản quy °ßc tìm l¿i ma trận þ1
- Nhân ma trận ý−1 vßi ma trận B1 : ý−1 þ1=C = (−62 −5 −27 528 5 13 0)
- Thay thế các sá ngoài gißi h¿n [0,26] bằng các đãng d° cÿa nó theo modun
27 ta thu đ°ợc ma trận M và hoàn tất việc giải mã
*Ví dā 3 : Mã hóa bản rõ WE_NEED_SOME_FOOD_ bằng hệ mã hill sử dụng khóa K là
BA_ABA_AA Sau đó giải mã thu đ°ợc
• Mã hóa dòng WE_NEED_SOME_FOOD_
- Khóa K đ°ợc viết d°ßi d¿ng ma trận vuông cấp 3 là :
Trang 8- Dùng bảng quy °ßc để chuyển đo¿n thông tin
- Ta có thể dùng máy tính bß túi để thực hiện phép nhân bằng cách chia ma
trận ĉ thành những ma trận con có sá cột nhß h¡n hoặc bằng 3, rãi thực
hiện phép nhân ma trận ý cho các ma trận con này
Trang 9= (−22 −22 0 −14 −4823 14 4 15 27 −1231
- Thay thế các sá ngoài gißi h¿n [0,26] bằng các đãng d° cÿa nó theo modun
27 ta thu đ°ợc ma trận M Sử dụng bảng quy °ßc cho ma trận M, ta tìm l¿i
đ°ợc thông tin ban đầu : WE_NEED_SOME_FOOD_
*Ví dā 4: Mã hóa bản rõ YOU ARE LOVELY bằng mật mã hill sử dụng khóa
÷÷
÷
÷
÷ø
1
513
3
312
2
121
R
O
L L
0
0
022
5
21
2515
18
15
1212
1
25
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 10111 128 62 141
74 91 43 101
37 76 29 82
Thay thế các sá ngoài gißi h¿n [0,26] trong ma trận B bằng các đãng d° cÿa nó theo
32086
20101620
102221
Ta chuyển ma trận þ1 về d¿ng chữ ta thu đ°ợc ma trận các kí tự trong bản mã
÷÷
÷
÷
÷ø
R
J
C T
H
F
T J
P
T
J V
5481
2722
2233
349147
254366
20493
154218
- Thay thế các sá ngoài gißi h¿n [0,26] bằng các đãng d° cÿa nó theo modun
27 ta thu đ°ợc ma trận M và hoàn tất việc giải mã
Ví d ā 5 : Mã hóa bản rõ WE_WANNA_SLEEP_ bằng hệ mã hill sử dụng khóa K là ABCB_DDA_
- Khóa K đ°ợc viết d°ßi d¿ng ma trận vuông cấp 3 là :
Trang 1110 | L 1 3 _ N 1 2
Bản rõ WE_WANNA_SLEEP_ đ°ợc chia thành các cụm 3 kí tự : WE_, WAN,
NA_, SLE, EP_
ē ā
23 5
6 19
ą 0
0 6
_ Ă
16 1
Č ý
9 16
ą Č
10 10
Ć Ć
*Ví d ā 6: Mã hóa chữ KY_THUAT_HOA trình tự các b°ßc thực hiện nh° sau:
-Tách chữ KY_THUAT_HOA thành các cum có n kí tự ở đây ta chán n=3 vì vậy có thể tách ra thành 4 cụm KY_, THU, AT_, HOA
0 ] = [
712
22] = [
ăĈ
Ē]
Cụ thể �㕐1=�㕘11.�㕝1 + �㕘12.�㕝2 + �㕘13.�㕝3 mod 27 = (1.11+2.25+3.0) mod 27 = 7=G
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1221] = [
1811
13] = [
Ďć
0] = [
1421
20] = [
Ċđ
1] = [
1417
23] = [
Ċč
ē] Kết quả mã hóa GLVRKMNUTNQW
1.Sơ lưÿc vß ph¿n mßm MATLAB
• Matlab (viết tắt cÿa matrix laborary) là một ngôn ngữ
lập trình bậc cao bán thế hệ, môi tr°áng để tính toán
sá hác, trực quan và lập trình
• Nó cho phép thao tác vßi ma trận, vẽ biểu đã vßi
hàm và sá liệu, hiện thực thuật toán, t¿o ra giao diện ng°ái dùng, bao gãm C, C++, Java và Fortran; phân tích dữ liệu, phát triển thuật toán, t¿o các kiểu mẫu và āng dụng
• Nó là công cụ hỗ trợ đắc lực cho b¿n trong việc tính toán, vẽ các hình, vẽ biểu đã thông dụng cả thực thi các ph°¡ng pháp tính toán
• Trên nền tảng và các thuật toán có trong MATLAB, ta āng dụng vào việc t¿o một ch°¡ng trình mã hóa mật mã Hills (Phiên bản Matlab đ°ợc sử dụng: R2021b)
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1312 | L 1 3 _ N 1 2
2 Chương trình m¿t mã Hill trên MATLAB
2.1 Cách ho ¿t đßng cÿa chương trình code
2.2 Chương trình code MATLAB
2.2.1 M ßt sß lánh đưÿc dùng trong BÀN CODE
Double Chuyển đổi chuỗi sang sá thập phân vßi độ chính xác kép (ASCII) Reshape Sửa l¿i cấu trúc cÿa một ma trận (sửa l¿i sá hàng, sá cột )
Strrep Tìm kiếm và thay thế chuỗi String
Mod Thay thế phần d° theo modul X
Char Chuyển đổi sá thập phân (ASCII) về l¿i d¿ng chuỗi ký tự
Inv Tính ma trận nghßch đảo cÿa ma trận X
for thực hiện lặp l¿i một hay nhiều câu lệnh vßi sá lần đßnh tr°ßc
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1514 | L 1 3 _ N 1 2
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1615 | L 1 3 _ N 1 2
2.3 Ch ¿y ví dā trên ph¿n mßm MATLAB
VD: Mã hóa thông điệp <JUST_FOR_FUN=
VD: Mã hóa thông điệp <SAVE_ME_=
VD1: Mã hóa thông điệp: <JAVACHIP=
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1716 | L 1 3 _ N 1 2
VD2: Mã hóa thông điệp <MATCHA=
VD3: Mã hóa thông điệp <WE_NEED_SOME_FOOD_=
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1817 | L 1 3 _ N 1 2
VD4: Mã hóa thông điệp < KY_THUAT_HOA=
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 1918 | L 1 3 _ N 1 2
2.4 Āng dāng cÿa m¿t mã trong cußc sßng
Āng dụng cÿa Mật mã Hill trong ph°¡ng tiện hình
văn bản rất đ°ợc khuyến khích vì tác độ mã hóa và
giải mã nhanh Ph°¡ng pháp này rất tát trong việc
bảo mật dữ liệu đ°ợc truyền trên một m¿ng mở
*Trong quân sự:
- Hỗ trợ việc giao tiếp liên l¿c giữa các đ¡n vß
- Tiện cho việc giữ bí mật chiến l°ợc
*Trong trao đổi th° tín:
- Tránh để bß lộ những thông tin tuyệt mật
- Là công cụ ngôn ngữ hữu dụng
*Trong bảo mật an ninh:
- Tránh để những thông tin tuyệt mật r¡i vào tay kẻ có m°u đã xấu
- Nâng cao hiệu suất bảo mật
*Trong bảo mật cá nhân:
- Tránh những tài liệu mật thông tin cá nhân bß
lộ ra ngoài
- Tránh các tình tr¿ng m¿o danh lừa g¿t ng°ái
khác
*Trong việc bảo mật tin nhắn văn bản:
- Bảo mật máy tính nhằm mục đích giúp ng°ái
dùng
- Ngăn chặn gian lận hoặc phát hiện gian lận
trong một hệ tháng dựa trên thông tin
Downloaded by vu ga (vuchinhhp2@gmail.com)
Trang 20-Mật mã Hill có nhiều āng dụng trong đái sáng và trong mã hóa thông tin
-Dựa vào phần mềm MATLAB có thể viết ch°¡ng trình mã hóa và giải mã thông điệp
1/ Giáo trình Đ¿i sá tuyến tính – Đặng Văn Vinh, NXBĐHQGTPHCM,
5/ Tham khảo các thuật toán t¿i: https://www.mathworks.com
6/ Tham khảo bài giảng trên Youtube cÿa cô Bùi Thß Thùy
Downloaded by vu ga (vuchinhhp2@gmail.com)