1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn Đại số tuyến tính Đề tài mật mã hill trong bài toán mã hóa

12 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Mật mã Hill trong bài toán mã hóa
Tác giả Trần Đỉnh Lực, Nguyễn Đức Minh, Nguyễn Lữ Quang Minh, Phan Trần Duy Minh, Trần Nhật Minh, Lê Đoàn Hồng Nam, Lâm Gia Nghĩa
Người hướng dẫn TS. Nguyễn Hữu Hiệp
Trường học Trường Đại học Bách Khoa, Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Đại số tuyến tính
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 12
Dung lượng 1,7 MB

Nội dung

Mật mã Hill: Mật mã Hill được Lester S.. Cơ sở của mật mã Hill là phép nhân ma trận và ma trận nghịch đảo.. Mặc dù vậy, người ta đã không sử dụng loại mật mã này để bảo vệ thông tin liê

Trang 1

ĐẠ I H C QU C GIA TP H CHÍ MINH Ọ Ố Ồ

KHOA KHOA H ỌC Ứ NG D ỤNG

 ···  ··· 

BÁO CÁO BÀI T P L N Ậ Ớ

MÔN ĐẠI S TUY N TÍNH Ố Ế

ĐỀ TÀI :

“Mật mã Hill trong bài toán mã hóa”

Giảng viên hướng dẫn: T S Nguyễn Hữu Hiệp

Lớp: L11

Nhóm: 09 Sinh viên th c hi n ự ệ Mã s sinh viên ố Điểm cộng Đánh giá

Nguy n Lê Quang Minh ễ 2312088 0 Hoàn thành

Thành ph H Chí Minh 10/12/2023 ố ồ –

Trang 2

2

M ỤC LỤ C

I M t mã Hill 4

1 Các khái niệm liên quan đến mật mã Hill 4

2 Ma tr n kh ngh ch trên vành ậ ả ị Z27 4

3 Các bước để mã hóa và gi i mã thông tin ả 5

a Mã hóa 5

b Giải mã 5

4 Các ví d ụ _ 6

II S d ng ph n m ử ụ ầ ềm MATLAB để lập trình mật mã Hill _ 3

1 Sơ lược về phần mềm MATLAB 3

2 Chương trình mật mã Hill trên MATLAB _ 3

a Cách hoạt độ ng c ủa chương trình code 3

b Chương trình code MATLAB _ 4

c Chạy ví d trên ph n m m MATLAB ụ ầ ề 4

d Ứng d ng c ụ ủa mật mã trong cuộc s ống 6 III K t lu n ế ậ _ 6

IV Tài li ệu tham kh o ả 6

Trang 3

PHẦN MỞ ĐẦ U

Giới thiệu v m t mã: ề ậ

M t mã h c là mậ ọ ột lĩnh vực liên quan đến các kỹ thuật ngôn ng và toán hữ ọc để đảm

b o an toàn thông tin, cả ụ thể là trong thông tin liên l c Trong l ch s , m t mã h c g n ạ ị ử ậ ọ ắ liền v i quá trình mã hóaớ ; điều này có nghĩa là nó gắn v i các cách thớ ức để chuyển đổi thông tin từ dạng này sang dạng khác nhưng ở đây là từ dạng thông tin có thể nh n ậ thức được thành dạng không nhận thức được, làm cho thông tin trở thành dạng không thể đọc được nếu như không có các kiến thức bí mật Quá trình mã hóa được sử dụng chủ yếu để m bảo tính bí mật c a các thông tin quan tr ng, chẳng hạn trong công đả ủ ọ tác tình báo, quân s ự hay ngo i giao ạ cũng như các bí mậ ềt v kinh t , ế thương mại

Mật mã Hill:

Mật mã Hill được Lester S Hill đề xuất vào năm 1929 Mã được th c hi n trên tự ệ ừng

b m ký t M i ký t trong b n mã là mộ ự ỗ ự ả ột tổ ợ h p tuy n tính c a m ký t trong b n rõ ế ủ ự ả Khóa sẽ được cho b i m t ma tr n vuông cở ộ ậ ấp m kh nghả ịch

Ảnh Dr Lester S Hill (ngày 16/05/1956)

M t mã Hill là m t trong nh ng mậ ộ ữ ật mã đầu tiên ng d ng ma trứ ụ ận để mã hóa và giải

mã Cơ sở của mật mã Hill là phép nhân ma trận và ma trận nghịch đảo Mặc dù vậy, người ta đã không sử dụng loại mật mã này để bảo vệ thông tin liên lạc vì độ bảo mật không cao so v i các m t mã cùng th i Vì ma tr n chìa khóa có thớ ậ ờ ậ ể được tìm ra ch t ỉ ừ

b n mã Nh ng m t mã Hill l i r t phù h p cho vi c d y hả ư ậ ạ ấ ợ ệ ạ ọc Người h c có thọ ể làm quen v i mã hóa thông tin b ng các phép tính ma trớ ằ ận để ừ đó nghiên cứ t u các lo i mã ạ

phức tạp hơn Dưới đây sẽ là phần trình bày chi tiết về m t mã Hill ậ

Trang 4

4

N I DUNG CHÍNH

I Mật mã Hi ll

1. Các khái niệm liên quan đến m t mã Hill

- B n rõả M là thông điệp chưa được mã hóa, thông điệp được chia nh có kích ỏ thước phù hợp

- Bãn mã B là thông điệp đã được mã hóa, thông điệp đã được mã hóa không thay đổi kích thước so với bản rõ, tức là chúng có cùng độ dài

- Mã hóa là quá trình chuyển đổi từ ả b n rõ sang b n mã ả

- Giải mãlà quá trình ngược lại tức là chuyển đổi từ ả b n mã sang b n rõ ả

- Mã N là thu t toán chuyậ ển đổi bản rõ thành bản mã (và ngược lại)

- Khóa A là m t ma tr n vuông c p kh ngh ch ộ ậ ấ n ả ị

- S nguyên t cùng nhau: ố ố Hai s nguyên tố ố a và b được g i là hai s nguyên t ọ ố ố cùng nhau khi ước chung l n nh t của chúng b ng 1 (ớ ấ ằ ƯCLN(a,b)=1)

- Bảng quy ước:

_ A B C D E F G H I J K L M

0 1 2 3 4 5 6 7 8 9 10 11 12 13

N O P Q R S T U V W X Y Z

14 15 16 17 18 19 20 21 22 23 24 25 26

Bảng quy ước dành cho bảng chữ cái Tiếng Việt (gõ kiểu Telex) và Ti ng Anh ế

đã bao gồm dấu cách

2. Ma trận kh ngh ch trên vành ả ị 𝐙𝟐𝟕

- Gọi A là t p các ma tr n chìa khoá vuông c p n kh ngh ch trên Zậ ậ ấ ả ị 27 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)≠0 (điều kiện để có ma trận nghịch đảo) và ƯCLN[det(A),27]=1

Trang 5

3. Các bước để mã hóa và gi i mã thông tin

a Mã hóa

- Đầu tiên ta ch n m t ma tr n làm ma tr n chìa khóa A (là ma tr n vuông c ọ ộ ậ ậ ậ ỡ n×n kh nghả ịch mà ngườ ửi và người g i nhận đều biết trước và định th c c a ma ứ ủ trận A ph i là s nguyên t cùng nhau vả ố ố ới 27(nói cách khác là det(A)≠0 và ƯCLN[det(A),27]=1

- Sau đó ta chuyển đoạn tin nhắn cần gửi thành dãy số theo bảng quy ước như sau:

_ A B C D E F G H I J K L M

0 1 2 3 4 5 6 7 8 9 10 11 12 13

N O P Q R S T U V W X Y Z

14 15 16 17 18 19 20 21 22 23 24 25 26

- Sau đó ta chia đoạn tin nhắn cần chuyển thành từng nhóm n số và thành lập ma trận tin nh n g i là B Ti p theo ta th c hi n phép nhân ma tr n A×B modun ắ ọ ế ự ệ ậ 27=M v i M ớ ở đây là ma trận mã hóa ta c n tìm ầ

- Ta có thể dùng máy tính để nhân hai ma trận A với B Nếu có số nào ngoài giới

h n [0,26] thì ta thay th sạ ế ố đó bởi các dãy dư theo modun 27 (tức là chia s ố ngoài gi i h n cho 27 l y phớ ạ ấ ần dư, chú ý phần dư này luôn dương)

- Ta th c hi n vi c thay th m i s trong ma tr n M vự ệ ệ ế ỗ ố ậ ừa tìm được b i các kí t ở ự trong bảng quy ước trên ta sẽ tìm được thông điệp cần mã hóa

b Giải mã

- Khi người nhận nhận được thông điệp, đầu tiên là dùng bảng quy ước tìm lại

ma tr n mã hóa ậ

- Sau đó thực hiện phép toán N = A−1×M (N là ma tr n ậ đã được giải mã)

- Cuối cùng thay th các sô ngoài gi i h n [0,26] bế ớ ạ ởi các dãy dư của nó theo modun 27, ta thu l i ma tr n N S d ng bạ ậ ử ụ ảng quy ước cho ma tr n N ta sậ ẽ tìm

lại được thông tin ban đầu

Trang 6

6

4. Các ví dụ

 Mã hóa và gi i mã thông tin b ng ma tr n chìa khóa cả ằ ậ ấp 3

Tiếng Anh

VD1: Mã hóa và giải mã thông điệp HEARTSTEEL b ng ma tr n chìa khóa c p 3 ằ ậ ấ

bất kì

Mã hóa

Ta thực hi n tách ệ chữ HEARTSTEEL thành các c m có 3 kí t , ta ụ ự được HEA, RTS, TEE, L_ _

Xếp các cụm vừa tìm được thành các cột để ạ t o ra ma tr n c p n×n ậ ấ

(𝐻 𝐸 𝑇𝐸 𝑇 𝐸

𝐴 𝑆 𝐸

𝐿

_

_)

Dựa vào bảng quy ước ta chuyển ma trận tin nhắn thành ma trận B

B = (8 18 205 20 5

1 19 5

4 1

2) Chọn ma trận chìa khóa A thỏa các điều kiện: Ma trận vuông c n×n, ỡ Det(A)≠0, ƯCLN[Det(A), 27] = 1

Ta chọn ma tr n chìa khóa A = ậ 7 2 1(4 6 4

3 5 2) a mãn tthỏ ất cả điều ki n trên ệ Nhân ma tr n chìa khóa v i ma tr n tin nh n M= A×B ậ ớ ậ ắ

M = (66 268 13067 185 155

51 192 95

30 32

21)

Ta thực hi n thay th các s ngoài gi i h n [0,26] bệ ế ố ớ ạ ằng các dãy dư của nó theo modun 27, ta được ma trận M

M = (12 25 2213 23 20

24 3 14

21 3

9)

Trang 7

Ta chuy n ma tr n M v d ng ch ể ậ ề ạ ữ thu được bản mã

M = (𝑀 𝑊 𝑇𝐿 𝑌 𝑉

𝑋 𝐶 𝑁

𝑈 𝐶

𝐼)

Ta gửi cho người nh n b n mã LMXYWCVTNUCI và ma tr n chìa khóa ậ ả ậ

Giải mã

Ta tìm ma tr n gi i mã t ma trậ ả ừ ận chìa khóa đã nhận được

Ta tìm định thức của ma trận chìa khóa A (Det(A) = 46) sau đó ta tìm nghịch đảo modular của định thức trên trường modun 27 Nghịch đảo modular là s X nố ằm trong khoảng 0 đến 26 thỏa: Det(A)×X modun 27 = 1 (X = 10)

Tiếp theo ta tính ma tr n phù hậ ợp 𝑃𝐴 c a ma tr n chìa khóa trên modun 27 ủ ậ

𝑃𝐴 = (16 23 2426 8 25

2 25 20)

Sau đó ta nhân ma trận phụ hợp 𝑃𝐴 v i ma tr n nghớ ậ ịch đảo modular của định thức

để thu đư c ma trận giải mã trên modun 27: ợ

𝐴−1 = 𝑃𝐴×X modun 27 = (25 14 2417 26 7

20 7 11) Sau đó ta dùng bản quy ước tìm lại ma trận M

Nhân ma tr n ậ A−1 v i ma tr n M: N = ớ ậ A−1×M

N = (1058 1019 1166 710 1044 992

595 694 734

498 783

540)

Ta thay th các s ngoài giế ố ới hạn [0,26] b ng ằ các dãy dư của nó theo modun 27

M = (8 18 205 20 5

1 19 5

12 0

0) Dựa vào bảng quy ước ta chuyển ma trận M thành tin nhắn ban đầu: HEARSTEEL

Trang 8

8

 Mã hóa và gi i mã thông tin b ng ma tr n chìa khóa c p 2ả ằ ậ ấ

Tiếng Anh

VD2: Mã hóa t HEART s d ng ừ ử ụ

khóa A = (7 6

Tách thông tin thành cụm có 2 kí tự

M = (8 15 18 200 )

Nhân ma tr n chìa khóa v i ma trậ ớ ận

tin nhắn

C = A×M = (86 115 14044 75 60 )

Thay th các s ngoài gi i hế ố ớ ạn

[0,26]

C = ( 517 21 6)7 5

Chuy n ma tr n C v d ng ch ể ậ ề ạ ữ

(𝐸 𝐺 𝐸𝑄 𝑈 𝐹)

Thu được mã UQGUEF

Giải mã

Tìm ma tr n giậ ải mã tương tự như

ma tr n 3×3 ậ

Nhân ma tr n ậ 𝐴−1 v i ma tr n C ớ ậ

N = 𝐴−1×C = (467 595 236

Thay th các s ngoài gi i hế ố ớ ạn

[0,26]

N = (8 1 20

Thay s thành ký t ố ự

Ta được ma trận ban đầu

Tiếng V ệti VD3: Mã hóa t KHOA_HOCJ_ s ừ ử

d ng khóa A = ụ (1 3 Tách thông tin thành cụm có 2 kí tự

M = (11 15 08 1 8 153 100 ) Nhân ma tr n chìa khóa v i ma trậ ớ ận tin nhắn

(35 18 2462 35 40 2445 1020) Thay th các s ngoài gi i hế ố ớ ạn [0,26]

C = (8 18 248 8 13 18 24 1020) Chuy n ma tr n C v d ng ch ể ậ ề ạ ữ (𝐻 𝑅 𝑋𝐻 𝐻 𝑀 𝑋𝑅 𝑇)𝐽

Thu được mã HHRHXMXRJT Giải mã

Tìm ma tr n giậ ải mã tương tự như

ma tr n 3×3 ậ Nhân ma tr n ậ 𝐴−1 v i ma tr n C ớ ậ N=𝐴−1×C=(−816 −2866 −35 81 −6630 10

0 ) Thay th các s ngoài gi i hế ố ớ ạn [0,26]

N = (11 15 08 1 8 153 100 ) Thay s thành ký t ố ự

Ta được ma trận ban đầu

Trang 9

II S d ng ph n m m ử ụ ầ ề MATLAB để ậ l p trình m t mã Hill

1. Sơ lược về phần m m MATLAB

- Matlab (vi t t t c a matrix laborary) là ph n m m cung cế ắ ủ ầ ề ấp môi trường tính toán số và l p trình ậ

- Nó cho phép theo 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à Fortan; phân tích ồ

d u, phát tri n thu t toán, t o các ki u m u và ng d ng ữ liệ ể ậ ạ ể ẫ ứ ụ

- 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ã hoá mật mã Hills (Phiên bản Matlab được sử dụng)

2. Chương trình mật mã Hill trên MATLAB

a. Các hoạt độh ng của chương trình code

Sơ đồ khối cách ho ạt động của chương trình code

Trang 10

4

b Chương trình code MATLAB

 Các dòng l nh tiêu biệ ểu được sử ụ d ng:

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 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 ủ ậ

fprintf Định dạng và ghi dữ liệu ra m t tệp tin ộ

 Code:

clc;

clear all;

close all;

thongtindau = input('Nhập thông tin mã hóa: ', 's');

thongtin = strrep(thongtindau, '_', '@');

% Nh ập kích thướ c c ủa ma tr n chìa khóa ậ

R = input('Nh p s ậ ố hàng c a ma tr n chìa khóa: '); ủ ậ

C = R;

% Nhập ma tr n chìa khóa ậ

K = input('Nhập ma trận chìa khóa: ');

% Ki ểm tra khả ngh ịch của ma tr n chìa khóa ậ

if det(K) == 0

disp('Lỗi: Ma trận chìa khóa không kh ả nghị ch.');

return;

end

a_vector = double(thongtin) 64; -

b_vector = reshape(a_vector, R, []);

k1_vector = K * b_vector; k2_vector = mod(k1_vector, 27) + 64;

Trang 11

C4 = strrep(char(reshape(k2_vector, 1, [])), '@', '_');

fprintf('Bản mã hóa:');

disp(C4);

thongtinafter = input('Nhập thông điệp cần giải mã: ', 's');

thongtinnext = strrep(thongtinafter, '_', '@');

% Ki ểm tra độ dài c ủa thông điệp cần giải mã

if length(thongtinnext) ~= R * (length(thongtinnext) / R)

disp('Lỗi: Độ dài của thông điệp không phù hợp với ma trận chìa khóa.');

return;

end

% Tính ma tr n ngh ậ ịch đảo của ma trận chìa khóa

KN = inv(K); c_vector = double(thongtinnext) - 64;

d_vector = reshape(c_vector, R, length(thongtinnext) / R);

g1_vector = KN * d_vector; g2_vector = mod(g1_vector, 27) + 64;

D4 = strrep(char(reshape(g2_vector, 1, [])), '@', '_');

fprintf('Thông điệp nhận được:');

disp(D4);

c Chạ y ví d trên ph n mềm MATLAB ụ ầ

Màn hình hiển th k t qu ị ế ả sau khi chạy code

Trang 12

6

d Ứng d ng c ụ ủa m t mã trong ậ thực tế

- Ứ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 ề ộ ạ ở

- Người h c có th làm quen v i mã hoá thông tin b ng các phép tính ma trọ ể ớ ằ ận để

t ừ đó nghiên cứu các lo i mã phạ ức tạp hơn

III Kết luận

- Môn Đại s tuy n tính có tính thi t thố ế ế ực, được ứng d ng trong nhiụ ều lĩnh vực khác nhau

- 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

IV Tài liệu tham kh o ả

- Giáo trình Đại số tuy n tính: ế Đặng Văn Vinh, NXBĐHQGTPHCM, 2019.

- Sách Đại s tuy n tính: ố ế Lý thuy t và ng d ng ế ứ ụ – Nguyễn Tiến Dũng, NXBĐHQGTPHCM, 2018

- Tham kh o các m t mã khác: ả ậ https://accgroup.vn/cac-loai-mat ma

Tham kh o các thu t toán ả ậ : https://www.mathworks.com

- Tham kh o bài gi ả ảng Đạ i s ố tuyến tính trên Google: https://123docz.net/doc_search_title/1182940-bai-giang-dai- -tuyen- so tinh- dai -hoc-bach-khoa- -noi-bui-xuan-dieu.htm#google_vignette ha

- Tham kh o bài gi ả ảng Đạ i s tuy n tính c a th ố ế ủ ầy Đặng Văn Vinh: https://www.youtube.com/@Teacher_DangVanVinh

Ngày đăng: 13/11/2024, 13:55

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w