You are on page 1of 36

TRƯỜNG ĐẠI HỌC KỸ THUẬT – HẬU CẦN CAND

KHOA MẬT MÃ VÀ AN NINH THÔNG TIN

BÀI TẬP LỚN


MÔN: CƠ SỞ LÝ THUYẾT MẬT MÃ

Tên chuyên đề:


XÂY DỰNG CÔNG CỤ MÃ HÓA VÀ
GIẢI MÃ SỬ DỤNG THUẬT TOÁN HILL

Bắc Ninh, tháng 4 năm 2018


TRƯỜNG ĐẠI HỌC KỸ THUẬT – HẬU CẦN CAND
KHOA MẬT MÃ VÀ AN NINH THÔNG TIN

Tên chuyên đề:


XÂY DỰNG CÔNG CỤ MÃ HÓA VÀ
GIẢI MÃ SỬ DỤNG THUẬT TOÁN HILL

Lớp: B2D6
Nhóm 8: Đặng Trần Ngọc Thành
Trần Viết Thiện
Nguyễn Hửu Thanh
Trần Minh Thảo
Lăng Văn Thiều
Nguyễn Đức Bảo
Vũ Minh Trí

Giáo viên hướng dẫn: Đại úy Nguyễn Thành Chung

Bắc Ninh, tháng 4 năm 2018


BẢNG PHÂN CÔNG CÔNG VIỆC

STT Họ và tên Phân công công việc

1 Trần Viết Thiện - Cài đặt thuật toán và thiết kế ứng dụng
- Thuyết trình

2 Đặng Trần Ngọc Thành - Giới thiệu tổng quan về mật mã Hill
- Nội dung slide và thuyết trình

3 Nguyễn Hữu Thanh - Trình bày báo cáo


- Thiết kế slide

4 Lăng Văn Thiều - Ví dụ minh họa thuật toán


- Kiểm thử ứng dụng

5 Vũ Minh Trí - Kết luận đề tài

6 Trần Minh Thảo - Lời nói đầu


- Sơ lược về ngôn ngữ cài đặt ứng dụng

7 Nguyễn Đức Bảo - Đánh giá công cụ


ĐÁNH GIÁ CỦA GIÁO VIÊN

Điểm Nhận xét


Điểm số:

Điểm bằng chữ:

Đại úy Nguyễn Thành Chung


i

LỜI CẢM ƠN
Tên chuyên đề: Xây dựng công cụ mã hóa và giải mã sử dụng thuật toán
mã hóa Hill
Nội dung chuyên đề:
Chương 1: Giới thiệu tổng quan về mật mã Hill
Chương 2: Lập trình cài đặt công cụ sử dụng thuật toán Hill
Chương 3: Đánh giá và hướng phát triển của đề tài
Nhóm chúng tôi xin chân thành cảm ơn các thầy, cô giáo trong Khoa mật
mã và an ninh thông tin trường Đại học Kỹ thuật - Hậu cần CAND đã tạo điều
kiện giúp đỡ nhóm trong thời gian qua để nhóm có thể hoàn thành tốt đề tài này.
Và chúng tôi xin chân thành cảm ơn Đại úy Nguyễn Thành Chung, giáo viên bộ
môn đã tận tình giúp đỡ, chỉ bảo và hướng dẫn nhóm nghiên cứu thực hiện đề tài
này.
Mặc dù rất cố gắng, tuy nhiên vì hạn chế về trình độ cũng như thời gian
thực hiện nên bài báo cáo khó tránh khỏi các sai sót. Chính vì vậy, nhóm chúng
tôi rất mong nhận được sự góp ý của các thầy, cô giáo để bài báo cáo được hoàn
thiện và chính xác hơn nữa.
Nhóm chúng tôi xin cam đoan: Những kết quả nghiên cứu được trình bày
trong đề tài là hoàn toàn trung thực, là kết quả của quá trình nghiên cứu của cả
nhóm, những nội dung sao chép được trích dẫn địa chỉ cụ thể. Nếu sai, chúng tôi
xin hoàn toàn chịu trách nhiệm.
KÝ TÊN
ii

MỤC LỤC
LỜI CẢM ƠN............................................................................................................i
MỤC LỤC................................................................................................................ii
DANH MỤC HÌNH ẢNH.......................................................................................iv
LỜI NÓI ĐẦU..........................................................................................................1
Chương 1: GIỚI THIỆU TỔNG QUAN VỀ MẬT MÃ HILL............................2
1.1. Tổng quan về mật mã...................................................................................2
1.1.1. Các khái niệm cơ bản.............................................................................2
1.1.2. Tính chất.................................................................................................3
1.3. Mã Hill...........................................................................................................6
1.3.1. Bảng chữ cái (Alphabet)........................................................................6
1.3.2. Các kiến thức ma trận cần thiết............................................................6
1.3.3. Tổng quan về mật mã Hill.....................................................................7
1.3.4. Mã hóa và giải mã bằng thuật toán Hill...............................................7
1.4. Ví dụ minh họa thuật toán Hill....................................................................8
1.5. Thám mã đối với mã Hill..............................................................................9
1.6. Đánh giá hệ mật Hill...................................................................................12
1.6.1. Ưu điểm.................................................................................................12
1.6.2. Nhược điểm...........................................................................................13
Chương 2: CÀI ĐẶT CÔNG CỤ SỬ DỤNG THUẬT TOÁN HILL................14
2.1. Sơ lược về các ngôn ngữ lập trình được sử dụng để cài đặt thuật
toán......................................................................................................................14
2.1.1. Một số đặc trưng của ngôn ngữ lập trình C++..................................14
2.1.2. Một số đặc trưng của ngôn ngữ lập trình C#....................................14
2.2. Cài đặt công cụ mã hóa sử dụng thuật toán Hill......................................14
2.3.1. Môi trường biên dịch và các công cụ cần thiết..................................14
2.3.2. Thuật toán mô phỏng các bước thực hiện.........................................15
2.3.3. Cài đặt phần lõi ứng dụng...................................................................15
2.3.4. Thiết kế giao diện người dùng.............................................................18
2.3.5. Thử nghiệm mã hóa và giải mã các trường hợp...............................20
2.4. Đánh giá.......................................................................................................22
2.4.1. Độ phức tạp giải thuật.........................................................................22
2.4.2. Ưu điểm.................................................................................................23
2.4.3. Nhược điểm...........................................................................................23
Chương 3: KẾT LUẬN..........................................................................................24
3.1. Đánh giá về đề tài........................................................................................24
3.1.1. Ưu điểm của đề tài...............................................................................24
3.1.2. Nhược điểm của đề tài.........................................................................24
iii

3.2. Đánh giá quá trình nghiên cứu..................................................................24


3.2.1. Những vấn đề đạt được........................................................................24
3.2.2. Những mặt hạn chế cần khắc phục....................................................25
3.3. Hướng phát triển của đề tài.......................................................................25
LỜI KẾT.................................................................................................................26
TÀI LIỆU THAM KHẢO.....................................................................................27
iv

DANH MỤC HÌNH ẢNH


Hình 1.1. Kênh liên lạc..............................................................................................3
Hình 1.2. Mô hình thông tin sử dụng hệ mật mã khóa bí mật....................................4
Hình 2.1. Thuật toán nhân ma trận..........................................................................15
Hình 2.2. Thuật toán mã hóa...................................................................................16
Hình 2.3. Thuật toán tính định thức ma trận khóa...................................................16
Hình 2.4. Thuật toán Euclid mở rộng......................................................................17
Hình 2.5. Thuật toán chuyển vị ma trận..................................................................17
Hình 2.6. Thuật toán tìm ma trận nghịch đảo..........................................................17
Hình 2.7. Thuật toán giải mã...................................................................................18
Hình 2.8. Trang chủ ứng dụng.................................................................................18
Hình 2.8. Công cụ mã hóa file.................................................................................19
Hình 2.9. Công cụ giải mã file.................................................................................19
Hình 2.10. Công cụ cài đặt cấu hình hệ mật............................................................20
Hình 2.11. Thông tin ứng dụng................................................................................20
Hình 2.12. Mã hóa và giải mã trường hợp 1...........................................................21
Hình 2.13. File example.txt......................................................................................21
Hình 2.14. Mã hóa trường hợp 2………..………………………………………………22.

Hình 2.15. File answer.txt…………………………………………………………….….22


Hình 2.16. Giải mã trường hợp 2……………………………………………………….23
Hình 2.17. File result.txt………………………….………………………………………22
1

LỜI NÓI ĐẦU


Hiện nay, cuộc cách mạng 4.0 đang phát triển mạnh mẽ như vũ bão, môi
trường mạng đã trở nên rất phổ biến trên toàn cầu. Thông qua môi trường mạng,
mọi người có thể kết nối và trao đổi thông tin với nhau một cách nhanh chóng
và thuận tiện, kéo theo đó là những hệ lụy phát sinh trong quá trình trao đổi
thông tin với nhau. Với trình độ phát triển của khoa học kỹ thuật, những kẻ xâm
nhập luôn tìm cách để đánh cắp thông tin nhằm mục đích thương mại hay với
những mục đích khác nhau, đã tấn công với quy mô lớn, cũng như tần suất nhiều
hơn gây thiệt hại cho các tổ chức, cá nhân một cách nghiêm trọng. Điều này đã
khiến những nhà sản xuất, kinh doanh và quản lý trên môi trường mạng phải đối
diện với những khó khăn lớn là làm thế nào để bảo vệ dữ liệu thông tin quan
trọng không bị tấn công, truy xuất dữ liệu một cách bất hợp pháp, đảm bảo
thông tin không bị sai lệch hoặc bị lộ do xâm nhập của kẻ thứ ba (không được
phép).
Trước tình hình đó, một số giải thuật mã hóa cũng như các công cụ mã
hóa đã được xây dựng nhằm đảm bảo tính an toàn của dữ liệu tại nơi lưu trữ
cũng như khi dữ liệu được truyền qua mạng. Việc tìm hiểu và phát triển thuật
toán Hill cũng nhằm vào mục đích này.
Được sự phân công hướng dẫn của Đại úy Nguyễn Thành Chung, giáo
viên khoa Mật mã và An ninh thông tin, nhóm chúng tôi tiến hành nghiên cứu
đề tài “Xây dựng công cụ mã hóa và giải mã sử dụng thuật toán Hill”.
Với kinh nghiệm và thời gian nghiên cứu còn hạn chế, việc chọn lọc và
trình bày các nội dung vẫn còn nhiều thiếu sót. Chúng tôi rất mong được sự
đóng góp từ các thầy cô cũng như các bạn đọc.
Xin chân thành cảm ơn !
Bắc Ninh, ngày 03 tháng 04 năm 2019
2

Chương 1: GIỚI THIỆU TỔNG QUAN VỀ MẬT MÃ HILL


1.1. Tổng quan về mật mã
1.1.1. Các khái niệm cơ bản
Đối tượng cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh
không mật cho hai người sử dụng (tạm gọi là Alice và Bob) sao cho đối phương
(Oscar) không thể hiểu được thông tin được truyền đi. Kênh này có thể là một
đường dây điện thoại hoặc một mạng máy tính. Thông tin mà Alice muốn gửi
cho Bob (bản rõ) có thể là một văn bản tiếng Anh, các dữ liệu bằng số hoặc bất
cứ tài liệu nào có cấu trúc tuỳ ý. Alice sẽ mã hoá bản rõ bằng một kháo đã được
xác định trước và gửi bản mã kết quả trên kênh. Oscar có bản mã thu trộm được
trên kênh song không thể xác định nội dung của bản rõ, nhưng Bob (người đã
biết khoá mã) có thể giải mã và thu được bản rõ.
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
trong lị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óa nà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.
Mọi thuật toán cổ điển đều là hệ mã đối xứng, vì ở đó thông tin khóa
được chia sẻ giữa người gửi và người nhận. Mã đối xứng là kiểu duy nhất trước
khi phát minh ra khóa công khai (hệ mã bất đối xứng) vào những năm 1970.
Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa và giải mã. Có
thể nói mã đối xứng là mã một khóa hay mã khóa riêng hay mã thỏa thuận.
Hệ mật là một hệ thống có thể che dấu được thông tin một cách tin cậy
sao cho người thu tin bất hợp pháp không thể khám phá được thông tin đó. Để
làm được điều này, một hệ mật có thể gồm một phép mã hóa hoặc nhiều phép
mã hóa khác nhau kết hợp lại. Để đặc trưng cho một phép mã hóa cụ thể đó
người ta dùng mã pháp (một phương pháp nã hóa cụ thể nào đó của hệ mật)
Một hệ mật là bộ 5 (R, M, K, E, D) thoả mãn các điều kiện sau:
1) R là tập hữu hạn các bản rõ có thể
2) M là tập hữu hạn các bản mã có thể
3) K là tập hữu hạn các khoá có thể
4) Đối với mỗi k K có một quy tắc mã Ek: R  M và một quy tắc giải
mã tương ứng Dk  D. Mỗi Ek: R  M và Dk: M  R là những hàm mà:Dk(Ek
(R)) = R với mọi bản rõ x  R.
3

Trong các tính chất trên, tính chất 4 là tính chất chủ yếu ở đây. Nội dung
của nó là nếu một bản rõ R được mã hoá bằng Ek và bản mã nhận được sau đó
được giải mã bằng Dk thì ta phải thu được bản rõ ban đầu R. Alice và Bob sẽ áp
dụng thủ tục sau dùng hệ mật khoá riêng. Trước tiên họ chọn một khoá ngẫu
nhiên K  K . Điều này được thực hiện khi họ ở cùng một chỗ và không bị
Oscar theo dõi hoặc khi họ có một kênh mật trong trường hợp họ ở xa nhau. Sau
đó giả sử Alice muốn gửi một thông baó cho Bob trên một kênh không mật và ta
xem thông báo này là một chuỗi:
x = x1, x2, . . ., xn
Với n1. Ở đây mỗi ký hiệu của mỗi bản rõ x i  R , 1  i  n. Mỗi xi sẽ
được mã hoá bằng quy tắc mã Ek với khoá K xác định trước đó. Bởi vậy Alice sẽ
tính yi = Ek(xi), (1  i  n) và chuỗi bản mã nhận được: y = y 1,y2 ,. . .,yn sẽ được
gửi trên kênh. Khi Bob nhận đươc y 1,y2 ,. . .,yn anh ta sẽ giải mã bằng hàm giải
mã Dk và thu được bản rõ gốc x1,x2 ,. . .,xn.
Dưới đây là một ví dụ về một kênh liên lạc.

Hình 1.1. Kênh liên lạc


Rõ ràng là trong trường hợp này hàm mã hoá phải là hàm đơn ánh ( tức là
ánh xạ 1-1), nếu không việc giải mã sẽ không thực hiện được một cách tường
minh. Ví dụ
y = Ek(x1) = Ek(x2)
Trong đó x1  x2 , thì Bob sẽ không có cách nào để biết liệu sẽ phải giải
mã thành x1 hay x2.
1.1.2. Tính chất
Mật mã học nghiên cứu về việc giấu thông tin. Cụ thể hơn, mật mã học là
ngành học nghiên cứu về những cách chuyển đổi thông tin từ dạng “có thể hiểu
được sang dạng “không thể hiểu được” và ngược lại. Mật mã học giúp đảm bảo
những tính chất sau:
4

 Tính bí mật (confidentiality): thông tin chỉ được tiết lộ cho những người
được phép
 Tính toàn vẹn (integrity): thông tin không thể bị thay đổi mà không bị
phát hiện
 Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng
minh đúng họ
 Tính không chối bỏ (non-repudiation): người gửi hoặc nhận sau này
không thể chối bỏ việc đã gửi hoặc nhận thông tin
1.2. Mật mã khóa bí mật
Mật mã khóa bí mật là hệ mật mà khóa dùng để giải mã và mã hóa là
giống nhau hoặc dễ dàng tính toán ra nhau. Mật mã khóa bí mật yêu cầu người
gửi và người nhận phải thỏa thuận khóa trước khi có thể liên lạc một cách bí
mật. Độ an toàn của hệ mật phụ thuộc hoàn toàn vào khóa mật mã.
Mật mã khóa bí mật vì khóa mã và khóa dịch phải giữ bí mật hoàn toàn,
có thể chia thành 2 loại hình mã dòng và mã khối.
+ Mã dòng: là các thuật toán mã khóa đối xứng thực hiện biến đổi từng
phần tử riêng lẻ của bản rõ tại một thời điểm.
+ Mã khối: là các thuật toán mật mã khóa đối xứng thực hiện biến đổi
từng nhóm các phần tử của bản rõ tại một thời điểm.
Một hệ thống thông tin sử dụng hệ mật khóa bí mật để bảo mật thông tin
gồm ba quá trình:

Hình 1.2. Mô hình thông tin sử dụng hệ mật mã khóa bí mật


- Quá trình thiết lập: Trước khi có thể liên lạc với nhau, người gửi và người
nhận phải có cùng một khóa giống nhau hoặc dễ dàng suy ra nhau. Khóa này
được thỏa thuận trước giữa người gửi và người nhận trên một kênh truyền an toàn
hoặc hai người có thể gặp nhau và quy ước với nhau. Khóa mật mã cũng có thể
sinh ra và phân phối trước trên một kênh an toàn bởi một bên thứ ba tin cậy.
5

- Quá trình mã hóa: Khi muốn truyền thông với nhau, tại nới gửi (nguồn
thông báo) cần có một bản rõ R. Với thông báo R và khóa K thuật toán mã E k sẽ
tạo ra bản mã M = Ek(R). Bản mã M sẽ được người gửi truyền trên kênh công
khai đến nơi nhận. Kênh công khai này là kênh không được đảm bảo an toàn, và
bản mã có thể bị thu lại hoặc nghe trộm bởi những người dùng bất hợp pháp.
- Quá trình giải mã: Tại nơi nhận (đích thông báo, người nhận nhận được
bản mã M và sẽ sử dụng khóa K tương ứng giống hệt hoặc dễ dàng suy ra từ
khóa mã để thực hiện thuật toán dịch DK tạo ra bản rõ R = DK (M).
Một người mã thám thu được M nhưng không có khóa K, anh ta phải cố
gắng khôi phục R hoặc khóa K. Nếu người mã thám chỉ quan tâm đến nội dung
thông báo, họ cố khôi phục P bằng việc sinh ra một ước lượng R’ của R. Tuy
nhiên, thường người mã thám mong muốn tìm ra khóa K để dịch mã các thông
báo tiếp theo, bằng cách sinh ra một ước lượng K’ của K. Độ bảo mật của mật
mã khóa bí mật là thước đo mức độ khó khăn của việc tìm ra thông báo rõ R
hoặc khóa bí mật K khi biết bản mã.
Có thể thấy được, khi một người nhận thu được bản mã, dùng khóa K
giống hệt với khóa đã thỏa thuận trước với một người gửi xác định để giải mã và
thu được đúng bản rõ có nghĩa thì chứng tỏ người nhận nhận đúng thông tin từ
đúng người gửi mà mình mong muốn. Hay nói cách khác, mô hình sử dụng mật
mã khóa bí mật có thể đảm bảo được một cách đồng thời cả 4 thuộc tính của
thông tin là tính toàn vẹn, tính bí mật, tính xác thực và không thể chối bỏ.
Có ba phương pháp chính trong mật mã khoá bí mật (mật mã khoá riêng
hay mật mã cổ điển):
+ Hệ mật chuyển vị
+ Hệ mật thay thế
+ Xử lý bit (chủ yếu nằm trong các ngôn ngữ lập trình)
Ngoài ra còn có phương pháp hỗn hợp thực hiện kết hợp các phương pháp
trên mà điển hình là chuẩn mã dữ liệu (DES – Data Encryption Standard) của Mỹ.
Trong hệ mật thay thế bao gồm các loại mã:
+ Mã dịch vòng
+ Mã thay thế thường
+ Mã Vigenere
+ Mã Affine
+ Mã Hill
Trong đó có Mã Hill thuộc hệ mật cổ điển của mật mã khóa bí mật, đây là
một phương pháp mã hóa thực hiện đơn giản (dựa vào phép nhân ma trận), đặc
6

biệt không gian khóa lớn. Đây cũng chính là thuật toán nhóm nghiên cứu dựa
vào đó lập trình xây dựng công cụ mã hóa và giải mã.
1.3. Mã Hill
1.3.1. Bảng chữ cái (Alphabet)
Bảng chữ cái của tiếng Anh gồm có 26 ký tự viết hoa. Khi chúng ta mã
hóa hay giải mã, chúng ta sẽ đại diện bằng những con số từ 0…25. Và các chữ
cái được thể hiện như bảng 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

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

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

Khi sử dụng mật mã Hill thì chiều dài của Alphabet có thể là số nguyên
bất kỳ m>1.
Trong bảng chữ cái bắt đầu bằng số 0, và đôi khi để phá mã Hill khó hơn
thì những chữ cái ánh xạ thành những số bất kỳ trong khoảng từ 0 đến 25; chứ
không nhất thiết phải theo thứ tự như bảng trên.
1.3.2. Các kiến thức ma trận cần thiết
Định thức
Định thức của ma trận vuông cấp n là tổng đại số của n! (n giai thừa) số
hạng, mỗi số hạng là tích của n phần tử lấy trên các hàng và các cột khác nhau
của ma trận A, mỗi tích được nhân với phần tử dấu là +1 hoặc -1 theo phép thế
tạo bởi các chỉ số hàng và chỉ số cột của các phần tử trong tích.
Gọi S(n) là nhóm các hoán vị của n phần tử 1,2,...,n.
Theo công thức Leibniz, ta có:
❑ n
det ( A )= ∑ sgn(σ ) ∏ ai , σ (i)
σϵ Sn i=1

Với A2x2 ta có det(A)= a1,1*a2,2 – a1,2*a2,1


Với A3x3 ta có det(A)= a1,1*a2,2*a3,3 + a1,2*a2,3*a3,1 + a1,3*a2,1*a3,2 a2,2 –
a1,3*a2,2*a3,1 – a1,2*a2,1*a3,3 – a1,1*a2,3*a3,2.
Ma trận nghịch đảo
7

Một ma trận thực k là khả nghịch khi và chỉ khi det(k) ≠ 0. Tuy nhiên, khi
làm việc trên Z26 thì ma trận k khả nghịch khi và chỉ khi UCLN(det(k), 26)=1.
Sau đây sẽ chứng minh kết quả ngắn gọn này:
Trước tiên, giả sử rằng ƯCLN(det(k), 26)=1. Khi đó det(k) khả nghịch
trong Z26 . Với 1 ≤i, j≤ m, định nghĩa ki, j là ma trận thu được từ k bằng cách loại
bỏ hàng thứ i và cột thứ j. Và định nghĩa ma trận k * có phần tử (i,j) của nó nhận
giá trị (-1)i+j det(ki, j) (k* được gọi là phần bù đại số của k).
Khi đó, có thể chứng tỏ rằng: k-1 = (det k)-1 k*
Bởi vậy k khả nghịch.
Ngược lại, nếu k có nghịch đảo k-1. Theo quy tắc của định thức, ta có
1 = det I = det(k.k-1) = det(k) det(k-1)
Bởi vậy det(k) có nghịch đảo trong Z26.
Công thức đối với k-1 ở trên không phải là một công thức tính toán có hiệu
quả trừ các trường hợp m nhỏ (chẳng hạn m = 2, 3).
Với m lớn, phương pháp thích hợp để tính các ma trận nghịch đảo phải
dựa vào các phép toán hàng sơ cấp.
1.3.3. Tổng quan về mật mã Hill
Mật mã Hill do nhà toán học người Mỹ tên là Lester S. Hill (1891-1961)
đề xuất năm 1929. Phép mã cũng được thực hiện trên từng bộ m ký tự. Khóa là
một ma trận cấp m, tức là một phần tử của (Z 26)m*m. Để phép biến đổi tuyến tính
xác định bởi ma trận K ϵ (Z26)m*m có phép nghịch đảo, ma trận K cũng phải có
phần tử nghịch đảo K-1 ϵ (Z26)m*m. Điều kiện cần và đủ để ma trận K có ma trận
nghịch đảo là định thức của nó, ký hiệu det K, nguyên tố cùng nhau với 26.
Mã Hill được mô tả như sau:
Cho m là số nguyên dương.αR=βM=(Z26)m*m.
Tập khóa K={K ϵ(Z26)m*m: (det K, 26)=1}.
Với mỗi K ϵ K, định nghĩa:
EK(r1,...,rm) = (r1,...,rm).K DK(m1,...,mm) = (m1,...,mm).K-1
Với ri ϵ αR, mi ϵ βM, i=1...m, và phép toán được thực hiện theo modulo 26.
1.3.4. Mã hóa và giải mã bằng thuật toán Hill
Chúng ta giả sử chiều dài của Alphabet là m>1, khóa sẽ là ma trận vuông
K bậc d với các phần tử trong Z m. Thuật toán mã hóa Hill dùng để mã hóa bản rõ
cho trước được thực hiện qua các bước sau:
Mã hóa
8

1. Người gửi tách bản rõ ra thành k nhóm, mỗi nhóm là một vecto có d ký
tự (tương ứng với bậc của khóa) và việc tách này được thực hiện từ trái qua
phải. Nếu nhóm cuối không đủ d ký tự thì ta sẽ điền thêm ký tự cuối của bản rõ
cho đến khi nhóm cuối có đủ d ký tự hoặc ta điền vào các ký tự đặc biệt như
khoảng trắng. Chuyển các vecto này thành vecto cột
2. Thay thế các ký tự tương ứng thành các chữ số từ 0 đến m-1 theo bảng
Alphabet mà ta đã định nghĩa.
3. Viết k vecto cột thành ma trận; có số dòng là d và thực hiện phép nhân
ma trận khóa K với ma trận M vừa tạo theo modun m.
C = K × M (modun m)
4. Sau khi được tích của hai ma trận thì ta sẽ thu được ma trận C. Từ ma
trận C ta sẽ viết lại thành k nhóm, mỗi nhóm gồm có d phần tử (số phần tử của
một cột ma trận). Sau đó ta sẽ tương ứng các số trong nhóm thành các ký tự và
kết quả là ta sẽ tìm được bản mã.
Giải mã
1. Khi nhận được bản mã thì người nhận cũng sẽ tác bản mã thành k
nhóm với mỗi nhóm có d ký tự
2. Thay thế các ký tự tương ứng thành các chữ số từ 0 đến m-1 theo bảng
Alphabet mà ta định nghĩa.
3. Viết k nhóm thành ma trận có số dòng là d và thực hiện phép nhân với
-1
K và tích này tính theo modun m.
M= K-1 × C(modun m)
4. Sau khi có M thì ta viết lại thành k nhóm, mỗi nhóm có d phần tử (một
cột của ma trận). Sau đó ta sẽ tương ứng các số trong nhóm thành các ký tự và
kết quả là ta sẽ tìm được bản rõ; có thể lược bỏ một số ký tự thêm vào ở cuối.
1.4. Ví dụ minh họa thuật toán Hill

|
a11 a12
Lấy m=2, và K = a a = 3 7
21 22
|| |
11 8

a. Hãy mã hóa bản rõ R = TUDO


b. Giải mã bản mã thu được
Bài giải:
Ta quy ước bảng chữ cái bằng cái trị số như bảng 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
9

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

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

a. Mã hóa bản rõ
Với bộ 2 ký tự (r1, r2), ta có bản mã (m1, m2)=(r1, r2).
K được tính như sau:

|11 8|
(m1, m2) = E K ( r 1 ,r 2 )= ( r 1 , r 2 )∗ 3 7 =(11*r1 +3*r2, 8*r1+7*r2)
Với bản rõ R = TUDO
Tách thành từng hai bộ ký tự, và viết dưới dạng số ta được 19 20 | 3 14
Lập bản mã theo qui tắc trên ta được
11 8
| |
(m1, m2) = E K (19, 20) = (19, 20)* 3 7 =(11*19+3*20, 8*19+7*20)
= (269 mod 26, 292 mod 26) = (9, 6)
11 8
| |
(m3, m4) = E K ( 3 ,14 )= (3 ,14 )* 3 7 =(11*3+3*14, 8*3+7*14)
= (75 mod 26, 122 mod 26) = (23, 18)
Như vậy ta được bản mã dưới dạng số là: 9 6| 23 18,
Và dưới dạng chữ là: JGXS.
b. Giải mã bản mã
Để thực hiện giải mã ta cần xác định được ma trận nghịch đảo của ma
a11 a12
trận K để làm khóa giải mã. Đối với K = ( a a ¿ là một ma trận cấp 2 ta có
21 22

công thức xác định ma trận nghịch đảo như sau:

K
−1
|
= −a
a22
21
−a 12
a 11| |
=
7 −8
−3 11
= | |
7 18
23 11 |
Tương tự, dùng công thức giải mã D K để tính bản rõ ta được:

|237 1811| * (9, 6) = (19, 20) |237 1811| * (23, 18) = (3, 14)
Như vậy ta được bản rõ dưới dạng số là: 19 20| 3 14,
Và dưới dạng chữ là: TUDO.
Vậy bản rõ thu được là TUDO.
1.5. Thám mã đối với mã Hill
Mật mã Hill khó bị khám phá bởi việc thám mã chỉ dựa vào bản mã,
nhưng lại dễ bị khám phá nếu có thể sử dụng phép thám mã kiểu biết cả bản rõ.
Trước hết ta giả thiết là đã biết giá trị m. Mục đích của thám mã là phát hiện
10

được khóa mật mã K, trong trường hợp mã Hill là một ma trận cấp m có các
thành phần trong Z26.
Ta chọn một bản rõ có chứa ít nhất m bộ m khác nhau các ký tự:
X1=(x11,...,x1m),...,xm = (xm1,...,xmm),
Và giả thiết biết mã tương ứng của chúng là:
Y1=(y11,...,y1m),...,ym = (ym1,...,ymm).
Ta ký hiệu X và Y là hai ma trận cấp m, X=(xij), y=(yij).
Theo định nghĩa mã Hill, ta có phương trình Y=X.K. Nếu các x i được
chọn sao cho ma trận X có nghịch đảo X -1 thì ta tìm được K=X -1.Y, tức là tìm
được khóa của hệ mã được sử dụng.
Thí dụ: Giả sử mã Hill được sử dụng có m =2, và ta biết bản rõ Friday
cùng bản mã tương ứng pqcfku. Như vậy ta biết:
eK(5,17) = (15,16), eK(8,3) = (2,5) và eK(0,24) = (10,20).
Từ hai phương trình đầu ta được:

(152 165 )=(58 173 ).K,


Từ đó được K= 8 (7 193 ). Phương trình thứ ba nghiệm đúng với K.
Nếu m không quá lớn, ta có thể thử cách trên lần lượt với m =
2,3,4,... cho đến khi tìm được khóa, và khóa K xem là tìm được nếu ngoài
m cặp bộ (x1,y1),...,(xm,ym) dùng để tìm khóa, K vẫn nghiệm đúng với các
cặp bộ m khác mà ta có thể chọn để thử.
Một cách tìm m khác hiệu quả hơn cách duyệt tuần tự m như trên. Ta
nhận thấy với chuỗi có T kí tự, nếu chia thành các khối thì đồ dài mỗi khối
sẽ là ước số của T, hay nói cách khác ta chỉ cần thử các giá trị m là ước số
của T.
Ví dụ: Thanh bắt được bản rõ của gói tin mà Thành gửi cho Trí là
CRYPTOGRAPHYISCOOL. Vì chuỗi có độ dài là 18, nên kích thước khóa có
thể là 2, 3, 6, 9, 18. Nếu kích thước khóa là 6, 9, 18, Thanh sẽ không có đủ cơ sở
để tạo Y và X, nên không có khả năng cho cậu ấy tìm K và sau đó là ma trận
nghịch đảo của K. Vì vậy, khả năng cho phép tìm khóa chỉ có thể là 2 hoặc 3.
Nếu cả hai trường hợp đều không tạo được khóa thì cô ấy biết rằng cô ấy sẽ
không thể phá mã và không biết tin nhắn ban đầu.
Giả sử cho rằng Thanh biết rằng mã hóa CRYPTOGRAPHYISCOOL
thành ZSHLFGLKTVDUWAQBCG với khóa là:
11

[ ]
2 3 15
K= 5 8 12
1 13 4
Chúng ta sẽ thực hiện theo quy trình được nêu ở trên để tìm hiểu ra kích
thước khối là 3 và ma trận K.
Hãy bắt đầu với kích thước khóa là m=2.
CRYPTOGRAPHYISCOOL
2 17 24 15 19 14 6 17 0 15 7 24 8 18 2 14 14 11
Mã hóa thành
ZSHLFGLKTVDUWAQBCG
25 18 7 11 5 6 11 10 19 21 3 20 22 0 16 1 2 6
Nhận thấy

[ 172 ] →[ 2518] [ 2415]→[ 117 ] [ 1914] →[ 56] ....


Vì vậy, chúng ta muốn xây dựng một ma trận nghịch đảo từ các khối văn
bản gốc theo modulo 26. Nếu chúng ta lấy hai khối đầu tiên là 2 17 và 24 15 và
xây dựng một ma trận từ chúng

[ 2 24 ]
K= 17 15
Vì det(K) = -378 không nguyên tố cùng nhau với 26, vì vậy M không khả
nghịch.
Nếu chúng ta chuyển sang khối tiếp theo, 19 14 và giữ khối đầu tiên thì
ma trận M của chúng ta trở thành,

[ 2 19]
M= 17 14
Và det(M)= -295 = 17 mod 26. Vì 17 và 26 là 2 số nguyên tố cùng nhau
nên phương trình của chúng ta trở thành,

[ 2 19] [ 25 5 ]
K. 17 14 = 18 6

E=[ 18 6 ][ 17 14 ] =[ 18 6 ][ 25 20 ]=[ 18 2 ]
−1
25 5 2 19 25 5 10 5 11 17
Nên,

Để xem liệu rằng nó có hoạt động hay không, ta kiểm tra nó trên tin nhắn
văn bản gốc CRYPTOGRAPHYISCOOL

[ 2 19][ 2 24 19 6
Y=X.K= 17 14 17 15 14 17 15 24 18 14 11
0 7 8 2 14
]
[ 25 25 5 17 21 17 4 0 3
= 18 20 6 12 4 18 24 12 14 ]
12

Như chúng ta có thể thấy, các cột 1 và 3 mã hóa chính xác, nhưng phần
còn lại thì không chính xác. Vậy kích thước khối không phải là 2.
Tiếp tục với m=3. Nếu có thì có ma trận K có kích thước 3 x 3 với

[ ][ ]
2 15 6 15 8 14 25 11 11 21 22 1
K= 17 19 17 7 18 14 = 18 5 10 3 0 2
24 14 0 24 2 11 7 6 19 20 16 6
Chọn ba cột từ ma trận tin nhắn sẽ tạo ra một ma trận nghịch đảo 3x3.
Nhìn vào hàng cuối cùng, tất cả các mục trừ 11 đều chẵn, vì vậy cột cuối cùng
phải được sử dụng. Vì cột cuối cùng của hàng thứ nhất là chẵn nên chúng ta phải
có ít nhất một số lẻ trong hàng đầu tiên của các cột chúng tôi sử dụng. Vì vậy,
chúng tôi không thể chọn hai số còn lại các cột từ các cột 1, 3 và 5. Hơn nữa, cột
5 toàn là số chẵn nên nếu chọn sẽ là vô nghĩa. Vì vậy, chúng tôi phải có cột 6 và
ít nhất một trong các cột 2 và 4. Chúng tôi sẽ thử các cột 1, 2 và 6. Điều này
mang lại,

[ ]
2 15 14
K= 17 19 14
24 14 11

Vì det(K) = -791 đồng dư với 15 theo modun 26, chúng ta biết rằng K có
ma trận nghịch đảo. Vì thế

[ ][ ]
2 15 14 25 11 1
17 19 14 = 18 5 2
24 14 11 7 6 6
Và sau đó,

[ ][ ][ ][ ]
−1
25 11 1 2 15 14 25 11 1 13 9 24
K = 18 5 2 17 19 14 = 18 5 2 3 12 14
7 6 6 24 14 11 7 6 6 8 10 15

[ ]
2 3 15
= 5 8 12
1 13 4
Bây giờ, chúng tôi biết điều này là đúng nhưng Eve vẫn sẽ cần kiểm tra
lại, như vậy cô ấy sẽ nhận được,

[ ][ ] [ ]
2 3 15 2 15 6 15 8 14 25 11 11 21 22 1
5 8 12 17 19 17 7 18 14 = 18 5 10 3 0 2
1 13 4 24 14 0 24 2 11 7 6 19 20 16 6
Kiểm tra với bản mã và cô ấy đã tìm thấy ma trận khóa K.
Phương pháp thám mã trên chỉ phù hợp với kích thước ma trận khóa
không quá lớn, đồng thời ta cần có chính xác cả bản rõ và bản mã của một
13

chuỗi ký tự. Do đó, trong phần lớn các trường hợp, hệ mật Hill được coi là
có tính an toàn tương đối trong mã hóa và giải mã dữ liệu.
1.6. Đánh giá hệ mật Hill
1.6.1. Ưu điểm
Thực hiện đơn giản (dựa trên phép nhân ma trận).
- So với mã dịch vòng, mã thay thế thường, mã Vigenere và mã Affine thì
mã Hill sử dụng phép nhân ma trận cho độ bảo mật thông tin cao hơn.
- Không gian khóa lớn nmxm, số lượng khóa không có công thức tường
minh để tính.
- Thuật toán dễ cài đặt.
- Thám mã hệ mật Hill nếu chỉ biết bản mã thì sẽ rất khó.
- Mật mã Hill thuộc mật mã khóa bí mật, trong khi mô hình của mật mã
khóa bí mật có thể được thiết kế cho các dạng dữ liệu yêu cầu tốc độ xử lí cao.
Một số phần cứng thực thi mật mã khóa bí mật có thể thực hiện mã hóa với tốc độ
hàng trăm Mbytes/s, trong khi các phần mềm thực thi mật mã khóa bí mật cũng
có thể thục hiện tốc độ Mbytes/s. Do đó, mật mã Hill cũng có ưu điểm này.
- Khóa sử dụng cho mật mã Hill là ma trận vuông, tương đối ngắn, ngắn
hơn rất nhiều so sánh với khóa sử dụng trong một số hệ mật thuộc mật mã khóa
công khai.
- Mật mã Hill có thể được sử dụng kết hợp với một số mật mã khác như
mã dịch vòng, mã Vigenere… để tạo nên hệ mật an toàn hơn, độ phức tạp cao
hơn từ các nguyên lí khác nhau.
1.6.2. Nhược điểm
- Hệ mật Hill là hệ mật cổ điển, hiện nay ít được sử dụng do có nhiều hệ
mật mới tối ưu hơn.
- Nếu biết m cũng có thể dễ dàng dùng máy tính để giải mã.
- Do sử dụng phép nhân ma trận nên thời gian lập mã lâu hơn so với một số
hệ mật cổ điển khác như mã Vigenere, mã dịch vòng…
- Trong quá trình liên lạc giữa hai đầu mối, khóa bí mật cần phải được thỏa
thuận hoặc phân phối trước qua một kênh bí mật, an toàn.
- Số cặp khóa phải phân phối giữa các bên liên lạc tăng nhanh theo quy mô
của mạng. Đồng thời việc thay đổi các đầu mối liên lạc trong mạng phức tạp và
cần có quy trình nghiêm ngặt hơn so với mật mã khóa công khai.
- Khó sử dụng trong việc xác thực công khai trong các sơ đồ chữ kí số.
14

- Trong sử dụng thực tế, khóa của mã Hill cần phải thay đổi thường xuyên
hoặc trong một thời gian sử dụng ngắn.
15

Chương 2: CÀI ĐẶT CÔNG CỤ SỬ DỤNG THUẬT TOÁN HILL


2.1. Sơ lược về các ngôn ngữ lập trình được sử dụng để cài đặt thuật toán.
2.1.1. Một số đặc trưng của ngôn ngữ lập trình C++
C++ là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới.
Đây là một ngôn ngữ hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình
hướng đối tượng, và lập trình đa hình, đồng thời cung cấp các công cụ để can
thiệp sâu vào bộ nhớ. Từ thập niên 1990, C++ đã trở thành một trong những
ngôn ngữ thương mại ưa thích và phổ biến nhất của lập trình viên.
C++ được thiết kế với ưu tiên cho lập trình hệ thống, tương thích cho cả
hệ thống tài nguyên hạn chế và lớn, với hiệu suất, hiệu quả và tính linh hoạt cao.
C++ có thể tìm thấy ở mọi nơi, với những điểm mạnh là cơ sở hạ tầng phần
mềm phong phú và các ứng dụng hạn chế tài nguyên. bao gồm các ứng dụng
dành cho máy tính để bàn, máy chủ và các ứng dụng ưu tiên về hiệu suất.
C++ có thể chạy trên nhiều nền tảng khác nhau như Windows, Mac OS,
và các phiên bản Unix đa dạng. Nhiều nhà cung cấp cung cấp các trình biên dịch
C++, bao gồm Tổ chức Phần mềm Tự do, Microsoft, Intel và IBM.
Ở phạm vi cài đặt và triển khai công cụ mã hóa này, chúng ta sẽ sử dụng
C++ để cài đặt phần lõi của ứng dụng, tức bản chất thuật toán của nó, nhằm đạt
hiệu quả thực thi tính toán cao nhất.
2.1.2. Một số đặc trưng của ngôn ngữ lập trình C#
C# được xây dựng dựa trên nền tảng sự kết hợp giữa C++ và Java, nhưng
nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự cải
tiến là loại bỏ các cú pháp dư thừa, hay là thêm vào những cú pháp thay đổi.
C# có một hệ thống thư viện framework đồ sộ, hỗ trợ các giao thức dữ
liệu và giao diện người dùng (GUI) cực kỳ phong phú và hiệu quả. Trong triển
khai cài đặt, chúng ta sẽ sử dụng C# để xây dựng giao diện người dùng của ứng
dụng, để việc sử dụng trở nên đơn giản hơn.
2.2. Cài đặt công cụ mã hóa sử dụng thuật toán Hill
2.3.1. Môi trường biên dịch và các công cụ cần thiết
Trình biên dịch C++
Sử dụng các IDE phổ biến như Dev-C++ , Code::Blocks, CLion, Visual
C++,.. hoặc sử dụng Command Prompt trên windows được tích hợp thêm bộ
biên dịch GNU GCC (phiên bản từ GCC 11 trở lên).
16

Trình biên dịch C#


Sử dụng Visual C# của Microsoft từ phiên bản 2010 Express trở lên.
Khuyến khích sử dụng phiên bản 2015 Profestional.
2.3.2. Thuật toán mô phỏng các bước thực hiện
Input: Chuỗi ký tự rõ hoặc file chứa dữ liệu dạng rõ (dạng mã).
Output: Chuỗi ký tự đã mã hóa hoặc file dữ liệu đã mã hóa(giải mã).
Mã hóa
Bước 1: Đọc dữ liệu và chuẩn hóa dữ liệu nhận được.
Bước 2: Chia dữ liệu thành các khối nhỏ có kích thước bằng kích thước
khóa. Tạo ma trận 1*n với giá trị là trị số các ký tự trong bảng Alphabet.
Bước 3: Nhân các ma trận trên với ma trận khóa. Với mỗi ma trận con thu
được, lấy trị số ký tự mã tương ứng theo bảng Alphabet.
Bước 4: Ghép các cụm mã thu được thành bản mã hoàn chỉnh.
Giải mã
Bước 1: Đọc dữ liệu và chuẩn hóa dữ liệu nhận được.
Bước 2: Tìm ma trận nghịch đảo của ma trận khóa.
Bước 3: Chia dữ liệu thành các khối nhỏ có kích thước bằng kích thước
khóa. Tạo ma trận 1*n với giá trị là trị số các ký tự trong bảng Alphabet.
Bước 4: Nhân các ma trận trên với ma trận nghịch đảo. Với mỗi ma trận
con thu được, lấy trị số ký tự rõ tương ứng theo bảng Alphabet.
Bước 5: Ghép các cụm ký tự thu được thành bản rõ hoàn chỉnh.
2.3.3. Cài đặt phần lõi ứng dụng
Hàm nhân ma trận
Sử dụng trong phép nhân ma trận tại bước 3 của mô hình mã hóa và bước
4 mô hình giải mã.
Hàm thực hiện nhân ma trận p với ma trận q. Lưu kết quả vào ma trận res.
17

Hình 2.1. Thuật toán nhân ma trận

Thuật toán mã hóa (Encrypt)


Hàm Encrypt lấy dữ liệu từ file đầu vào (sources) và ghi kết quả ra file
đầu ra (destination).

Hình 2.2. Thuật toán mã hóa


Thuật toán giải mã (Decrypt)
- Tính det (K)
Hàm det trả về kết quả là giá trị định thức của ma trận khóa.
Hàm create(b,a,x,y) tạo ma trận b là ma trận con của ma trận a, bằng cách
bỏ đi hàng x và cột y.
18

Hình 2.3. Thuật toán tính định thức ma trận khóa

- Tính (det K)-1 theo modulo 26 bằng thuật toán Euclid mở rộng

Hình 2.4. Thuật toán Euclid mở rộng


- Tìm ma trận chuyển vị AT của ma trận A

Hình 2.5. Thuật toán chuyển vị ma trận


- Tìm ma trận nghịch đảo của ma trận A
19

Hình 2.6. Thuật toán tìm ma trận nghịch đảo

- Giải mã bản mã

Hình 2.7. Thuật toán giải mã


2.3.4. Thiết kế giao diện người dùng
Trang chủ ứng dụng
Ứng dụng gồm 4 chức năng thành phần:
- Encrypt: mã hóa file dữ liệu
- Decrypt: giải mã file dữ liệu
- Setting: cấu hình ma trận khóa
- About: các thông tin có liên quan về ứng dụng
20

Hình 2.8. Trang chủ ứng dụng


Encrypt form
Nhập đường dẫn file cần mã hóa (input file) và đường dẫn nơi lưu file
(output file). Nhấn run để kích hoạt công cụ mã hóa.

Hình 2.8. Công cụ mã hóa file


Decrypt form
Nhập đường dẫn file cần giải mã (input file) và đường dẫn nơi lưu file
(output file). Nhấn run để kích hoạt công cụ giải mã.
21

Hình 2.9. Công cụ giải mã file

Setting form
Nhập mã bảo vệ (mặc định là admin). Điền kích thước khóa và các giá trị
của ma trận khóa. Nhấn Apply để xác nhận.

Hình 2.10. Công cụ cài đặt cấu hình hệ mật


About form
Các thông tin về ứng dụng.

Hình 2.11. Thông tin ứng dụng


2.3.5. Thử nghiệm mã hóa và giải mã các trường hợp
Trường hợp 1: Mã hóa và giải mã chuỗi ký tự cơ bản
Input: Một chuỗi ký tự (không có dấu cách) đơn nhất
Output: Bản mã (bản rõ) thu được.
22

Khóa được lưu mặc định trong file Config.ini, tránh việc nhập nhiều lần
cùng một giá trị khóa

Hình 2.12. Mã hóa và giải mã trường hợp 1


Trường hợp 2: Mã hóa và giải mã file dữ liệu
Input: File dữ liệu vào, dữ liệu có thể có khoảng trắng
Output: File chứa dữ liệu đã mã hóa (giải mã)
Lấy ví dụ file example.txt chứa cụm từ dang tran ngoc thanh

Hình 2.13. File example.txt


Mã hóa file trên và lưu kết quả lưu vào file answer.txt

Hình 2.14. Mã hóa trường hợp 2


Hình 2.15. File answer.txt

Tiếp tục ta giải mã file này và


lưu vào file result.txt
Hình 2.16. Giải mã trường hợp 2
Hình 2.17. File result.txt
23

2.4. Đánh giá


2.4.1. Độ phức tạp giải thuật
Gọi O(f(n)) là hàm phức tạp thuật toán, với f(n) là số phép toán thực hiện.
Giả sử chuỗi ký tự đầu vào S có độ dài m, ma trận khóa K cấp n.
- Mã hóa:
Số cụm từ: t=⌈ m/n⌉
Phép chuẩn hóa chuỗi S thành S’:
f(m,n)=m(1+1)+1+t*n-m=m-nt+1 (1)
Phép nhân ma trận 1xn và ma trận nxn:
f(n)=1*n*(1+n)=n2+n
Hàm mã hóa:
f(m,n)=t*(n+(n2+n)+n)=t*(n2+3n)=n2t+3nt; (2)
Vậy T= (1) + (2) =m-nt+1+n2t+3nt=n2(m/n)+2n(m/n)+m-1=mn+3m-1
Do đó O(f(n))=O(mn+3m-1)=O(mn). Độ phức tạp cài đặt của giải thuật là
O(mn)
- Giải mã:
Số cụm từ: t=⌈ m/n⌉
Hàm tạo ma trận con
f(n)= n*n+1=n2+1
Hàm chuyển vị ma trận:
f(n)=n*n*3=3n2 (1)
Hàm tính định thức theo công thức Lebnizt
f(n)= 3*4*...*n*6=3*n!
Hàm tính nghịch đảo modulo của det theo thuật toán Euclid mở rộng
f(n)=2log(det) (2)
Tính nghịch đảo ma trận:
f( n)=n*n*(3*n!)=3n2n! (3)
Phép chuẩn hóa chuỗi S thành S’:
f(m,n)=m(1+1)+1+t*n-m=m-nt+1 (4)
Phép nhân ma trận 1xn và ma trận nxn:
f(n)=1*n*(1+n)=n2+n
Hàm giải mã:
f(m,n)= f(m,n)=t*(n+(n2+n)+n)=t*(n2+3n)=n2t+3nt;
Vậy T= (2) + (1) + (4) + (3) = 2log(3.n!) + 3n2 + m-n(m/n)+1 + 3n2n!
=3n2n!+3n2+2log(3.n!)+1;
24

Do đó O(f(n))=O(3n2n!+3n2+2log(3.n!)+1)=O(n!). Độ phức tạp cài đặt


của giải thuật là O(n!).
2.4.2. Ưu điểm
Công cụ được cài đặt có một số ưu điểm như:
- Quá trình mã hóa và giải mã được tiến hành trong thời gian ngắn, đạt độ
chính xác cao.
- Đảm bảo được tính bảo mật và xác thực của hệ mật
- Giao diện thân thiện, dễ sử dụng.
- Có khả năng tính toán với các khóa là ma trận bậc cao.
2.4.3. Nhược điểm
- Khó có khả năng áp dụng vào thực tiễn trao đổi thông tin
- Chưa xây dựng được một kênh truyền bí mật
- Chương trình còn sơ sài, chưa đáp ứng được mục tiêu đề ra
- Không có các tính năng mở rộng
25

Chương 3: KẾT LUẬN


3.1. Đánh giá về đề tài
3.1.1. Ưu điểm của đề tài
Đề tài đề cập đến vấn đề bức thiết trong giai đoạn hiện nay, đó là việc
đảm bảo an toàn và bí mật trong quá trình truyền gửi thông tin.
Việc nghiên cứu về mã hóa và giải mã sử dụng thuật toán Hill là một công
cụ cần thiết cho việc xây dựng các hệ mật sau này, làm cơ sở cho việc thiết kế
các hệ mật đảm bảo an toàn.
Đề tài đòi hỏi lập trình được công cụ giúp mã hóa và giải mã dựa trên
thuật toán Hill
Ứng dụng được ngôn ngữ lập trình vào quá trình mã hóa và giải mã thông
tin, dữ liệu.
Nghiên cứu đề tài là một phương pháp tốt để hiểu rõ về mật mã nói chung
cũng như thuật toán Hill nói riêng.
3.1.2. Nhược điểm của đề tài
Qua quá trình nghiên cứu, nhóm xin đưa ra một số nhược điểm của đề tài
“Mã hóa và giải mã sử dụng thuật toán Hill”:
- Thuật toán Hill đã khá cũ, nên tính bảo mật và độ an toàn không thể đáp
ứng được những yêu cầu trong thời đại ngày nay
- Khả năng ứng dụng thấp, khó áp dụng vào thực tiễn trao đổi thông tin
3.2. Đánh giá quá trình nghiên cứu
3.2.1. Những vấn đề đạt được
Qua quá trình làm việc, với sự hướng dẫn tận tình của giáo viên hướng
dẫn nhóm chúng tôi đã cơ bản đạt được những mục tiêu đề ra như:
- Hiểu rõ về thuật toán Hill và có khả năng vận dụng vào các bài toán cụ
thể về an toàn thông tin.
- Đánh giá được những ưu, nhược điểm của mật mã Hill.
- Sử dụng thành thạo ngôn ngữ C++, C# và lập trình, cài đặt được công cụ
mã hóa, giải mã sử dụng thuật toán Hill.
- Chỉ ra được những ưu điểm, nhược điểm của công cụ mã hóa, giải mã sử
dụng thuật toán Hill.
- Nâng cao kỹ năng báo cáo, làm việc nhóm
26

3.2.2. Những mặt hạn chế cần khắc phục


Hiện tại đề tài đang gặp những hạn chế sau:
- Chưa xây dựng được kênh truyền an toàn cho hệ mật mã khóa bí mật sử
dụng thuật toán Hill.
- Giao diện còn đơn giản, chưa thân thiện với người dùng
- Nội dung còn chưa đầy đủ, một số chỗ chưa chặt chẽ
3.3. Hướng phát triển của đề tài
Trên cơ sở đề tài đã nghiên cứu, nhóm chúng em xin đề xuất một số giải
pháp cần làm trong thời gian tới:
- Nâng cấp mở rộng mật mã Hill (từ chữ cái lên bảng ký tự, từ modulo 26
lên 128 hoặc 256)
- Thiết kế hệ thống bảo mật nâng cao, đảm bảo tính bí mật, toàn vẹn, xác
thực, ... của ứng dụng.
- Hoàn thiện công cụ mã hóa và giải mã sử dụng thuật toán Hill, đảm bảo
có thể chạy trên nhiều hệ điều hành, nhiều loại thiết bị phần cứng khác nhau.
- Xây dựng chức năng kháng thám mã cho công cụ.
- Ứng dụng vào trong các lĩnh vực của đời sống đặc biệt là lĩnh vực an
ninh quốc phòng.
27

LỜI KẾT
Trong quá trình nghiên cứu, nhóm đã không ngừng ra sức học tập cũng
như tìm tòi các tài liệu phục vụ cho quá trình nghiên cứu làm đề tài, đã phần nào
giải quyết được các yêu cầu căn bản của nhiệm vụ đề tài đưa ra, từng bước làm
rõ từng vấn đề cụ thể và đã đạt được những kết quả nhất định.
Từ đó, nhóm đã đưa ra các định hướng phát triển bảo mật hệ thống thông
tin trong thời gian đến, là phải xây dựng một công cụ mã hóa và thuật toán để
giải mã phù hợp để các kẻ xâm nhập không thể tấn công, truy cập bất hợp vào
các cơ sở dữ liệu thông tin để đánh cắp cũng như phá hủy, gây nguy hại cho hệ
thống thông tin.
Trong quá trình nghiên cứu, không thể tránh những thiếu sót, rất mong
được sự đóng góp từ các thầy cô và các bạn đọc.
Chúng tôi xin chân thành cảm ơn!
28

TÀI LIỆU THAM KHẢO


1. Nguyễn Ngọc Linh, TBG Lý thuyết Mật mã, Trường ĐH Kỹ thuật -
Hậu cần CAND.
2. PGS.TS Nguyễn Bình (2003), Giáo trình Mật mã học, NXB Bưu Điện,
Hà Nội.
3. TS Thái Thành Tùng (2011), Giáo trình mật mã học và an toàn thông
tin, NXB Thông tin và truyền thông, Hà Nội.
4. Phan Đình Diệu (1999), Lý thuyết mật mã và an toàn thông tin, Nhà
xuất bản Đại Học Quốc Gia Hà Nội.
5. Bùi Quang Thành, Khảo sát mã ma trận, phân tích độ an toàn, hiệu
năng và cải tiến, Trường ĐH Khoa học tự nhiên – ĐH Quốc gia Thành phố Hồ
Chí Minh

You might also like