Tải bản đầy đủ (.pdf) (67 trang)

Hệ mã hóa đối xứng và ứng dụng trong vấn đề bảo mật tài liệu tại trung tâm kỹ thuật tài liệu nghiệp vụ

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 (2.23 MB, 67 trang )

ĐẠI HỌC THÁI NGUYÊN
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN QUANG TRUNG

HỆ MÃ HÓA ĐỐI XỨNG VÀ ỨNG DỤNG
TRONG VẤN ĐỀ BẢO MẬT TÀI LIỆU
TẠI TRUNG TÂM KỸ THUẬT TÀI LIỆU NGHIỆP VỤ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

THÁI NGUYÊN, 2017


ĐẠI HỌC THÁI NGUYÊN
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGUYỄN QUANG TRUNG

HỆ MÃ HÓA ĐỐI XỨNG VÀ ỨNG DỤNG
TRONG VẤN ĐỀ BẢO MẬT TÀI LIỆU
TẠI TRUNG TÂM KỸ THUẬT TÀI LIỆU NGHIỆP VỤ

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS. VŨ VINH QUANG

THÁI NGUYÊN, 2017




ii

LỜI CAM ĐOAN
Sau quá trình học tập tại Trường Đại học công nghệ thông tin & truyền thông,
với những kiến thức lý thuyết và thực hành đã tích lũy được, với việc vận dụng các kiến
thức vào thực tế, em đã tự nghiên cứu các tài liệu, các công trình nghiên cứu, đồng thời
có sự phân tích, tổng hợp, đúc kết và phát triển để hoàn thành luận văn thạc sĩ của mình.
Em xin cam đoan luận văn này là công trình do bản thân em tự tìm hiểu, nghiên cứu
và hoàn thành dưới sự hướng dẫn của thầy giáo TS. Vũ Vinh Quang.

Thái Nguyên, tháng 5 năm 2017
Học viên

Nguyễn Quang Trung

ii


iii

MỤC LỤC
LỜI CAM ĐOAN .........................................................................................................ii
MỤC LỤC ..................................................................................................................... iii
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT ............................................................. v
DANH MỤC CÁC BẢNG BIỂU .................................................................................. vi
DANH MỤC CÁC HÌNH VẼ .......................................................................................vii
LỜI NÓI ĐẦU................................................................................................................. 1
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ AN TOÀN BẢO MẬT THÔNG TIN. 2

1.1. Tổng quan về an toàn và bảo mật thông tin .............................................................2
1.1.1. Khái niệm chung ................................................................................................... 2
1.1.2. Mục tiêu của an toàn bảo mật thông tin ................................................................ 3
1.1.3. Các chiến lược an toàn hệ thống ........................................................................... 4
1.2. Các kiến thức cơ bản về hệ mật mã ..........................................................................5
1.2.1. Khái niệm chung ................................................................................................... 5
1.2.2. Các thành phần của một hệ mật mã....................................................................... 6
1.2.3. Quy trình mã hóa và giải mã ................................................................................. 7
1.2.4. Phân loại hệ thống mã hóa .................................................................................... 8
1.2.5. Các đặc trưng của hệ thống mã hoá .................................................................... 12
1.2.6. Thám mã và tính an toàn của các hệ mã ............................................................. 13
1.3. Cơ sở toán học về mã hóa ......................................................................................16
1.3.1. Các thuật toán trong Z ......................................................................................... 17
1.3.2. Thuật toán Euclide............................................................................................... 17
1.3.3. Khái niệm về hàm Euler ...................................................................................... 18
1.3.4. Khái niệm về đồng dư thức ................................................................................. 19
1.3.5. Khái niệm về số nghịch đảo ................................................................................ 21
1.3.6. Định lý phần dư China CRT (Chinese Remainder Theorem) ............................. 21
1.3.7. Các thuật toán trong Zn ....................................................................................... 22
1.3.8. Thuật toán ............................................................................................................ 22
CHƯƠNG 2: MỘT SỐ HỆ MÃ HÓA ĐỐI XỨNG .................................................... 23
2.1. Giới thiệu ................................................................................................................23
2.2. Quá trình mã hóa và giải mã ..................................................................................25
iii


iv

2.3. Một số hệ mã hóa đối xứng ....................................................................................25
2.3.1. Hệ mã Caesar ....................................................................................................... 25

2.3.2. Hệ mã mật Hill .................................................................................................... 25
2.3.3. Hệ mã Affine ....................................................................................................... 26
2.3.4. Hệ mã Vigenère ................................................................................................... 28
2.3.5. Phương pháp mã hóa khối ................................................................................... 29
2.4. Hệ mã DES .............................................................................................................30
2.4.1. Sơ đồ mã hóa ....................................................................................................... 30
2.4.2. Thuật toán mã hóa Triple DES ............................................................................ 34
2.4.3. Thuật toán mã hóa AES....................................................................................... 36
2.5. Mật mã dòng ...........................................................................................................43
CHƯƠNG 3: MỘT SỐ KẾT QUẢ ỨNG DỤNG......................................................... 46
3.1. Vấn đề bảo mật tài liệu tại trung tâm kỹ thuật tài liệu nghiệp vụ ..........................46
3.2. Mô tả dữ liệu thử nghiệm .......................................................................................47
3.3. Môi trường thử nghiệm và một số giao diện ..........................................................47
3.3.1. Môi trường thử nghiệm ....................................................................................... 47
3.4. Kịch bản thử nghiệm và kết quả .............................................................................48
3.4.1. Tốc độ mã hóa theo số lượng dữ liệu .................................................................. 48
3.4.2. Tốc độ giải mã theo số lượng dữ liệu .................................................................. 49
3.4.3. Tốc độ mã hóa theo các chế độ mã hóa............................................................... 50
3.4.4. Tốc độ mã hóa theo kích thước khóa .................................................................. 51
KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU................................................................... 52
TÀI LIỆU THAM KHẢO ............................................................................................. 53
PHỤ LỤC ...................................................................................................................... 54

iv


v

DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT
STT

1

Đầy đủ

Viết tắt
AES

Ý nghĩa

Advanced Encryption Chuẩn mã hóa cao cấp
Standard

2

BCNN

Bội Chung Nhỏ Nhất

CBC

Cipher Block

Chế độ mã hóa của AES khi mã hóa

Chaining

sử dụng cả key và kết quả của block
trước làm tham số

3


DES

Data Encryption

Chuẩn mã hóa dữ liệu

Standard
ECB

4

GCD

Electronic Code

Chế độ mã hóa của AES trong đó các

Book

block được mã hóa riêng rẽ

Greatest Common

Ước chung lớn nhất

Divisor
5

MDV


Mã Dịch Vòng

6

TDES hoặc

Triple DES

DES bội ba

Đơn vị thứ ba tin cậy

3DES
7

TTP

Trusted Third Party

8

UCLN

Ước Chung Lớn Nhất

v


vi


DANH MỤC CÁC BẢNG BIỂU
Bảng 1. 1. Quan hệ giữa độ dài khoá và thời gian dò khoá ..........................................15
Bảng 2. 1. Các thông số chính của AES........................................................................36
Bảng 3. 1. Bộ dữ liệu thử nghiệm thuật toán AES ........................................................47
Bảng 3. 2. Bảng kết quả đo tốc độ mã hóa theo số lượng dữ liệu (giây) ......................48
Bảng 3. 3. Bảng kết quả đo tốc độ giải mã theo số lượng dữ liệu (giây) ......................49
Bảng 3. 4. Bảng kết quả đo tốc độ mã hóa theo chế độ mã hóa (giây) .........................50
Bảng 3. 5. Bảng kết quả đo tốc độ mã hóa theo kích thước khóa (giây) ......................51

vi


vii

DANH MỤC CÁC HÌNH VẼ
Hình 1. 1. Mã hoá với khoá mã và khoá giải giống nhau ...............................................7
Hình 1. 2. Quy trình mã hóa và giải mã ..........................................................................7
Hình 1. 3. Sơ đồ mã hóa và giải mã ................................................................................8
Hình 1. 4. Sơ đồ mã hóa và giải mã bằng khóa riêng .....................................................9
Hình 1. 5. Sơ đồ mã hóa và giải mã bằng khóa công khai ............................................10
Hình 2. 1. Mô hình hệ thống mã hóa đối xứng ............................................................. 24
Hình 2. 2. Hình vuông vigenère ....................................................................................29
Hình 2. 3. Sơ đồ hệ mã des ............................................................................................ 31
Hình 2. 4. DES bội hai (double des) .............................................................................34
Hình 2. 5. DES bội ba (triple des) dùng 2 khoá ............................................................ 35
Hình 2. 6. Thuật toán mã aes .........................................................................................37
Hình 2. 7. Quá trình biến đổi mảng trạng thái trong thuật toán aes .............................. 37
Hình 2. 8. Ma trận thay thế byte (s-box) .......................................................................39
Hình 2. 9. Thao tác dịch dòng .......................................................................................40

Hình 2. 10. Thuật toán mở rộng khoá của AES ............................................................ 42
Hình 3. 1. Biểu đồ tốc độ mã hóa theo số lượng dữ liệu ...............................................48
Hình 3. 2. Biểu đồ tốc độ tốc độ giải mã theo số lượng dữ liệu....................................49
Hình 3. 3. Biểu đồ tốc độ mã hóa theo chế độ mã hóa ..................................................50
Hình 3. 4. Biểu đồ tốc độ mã hóa theo kích thước khóa ...............................................51

vii


1

LỜI NÓI ĐẦU
Mã hóa là công cụ cơ bản của việc đảm bảo an toàn dữ liệu. Thời kỳ sơ khai, con
người đã sử dụng nhiều phương pháp để bảo vệ các thông tin bí mật. Ban đầu, mật mã
học được sử dụng phổ biến trong quân đội, qua nhiều cuộc chiến tranh, vai trò của mật
mã ngày càng quan trọng và mang lại nhiều thành quả không nhỏ, chúng là nền tảng cho
mật mã học ngày nay.
Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng
phổ biến trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự,
quốc phòng cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng… Với sự
phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên
mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được
quan tâm và có ý nghĩa hết sức quan trọng. Cùng với sự phát triển của khoa học máy
tính, các nghiên cứu và ứng dụng của các chuẩn mã hóa ngày càng trở nên đa dạng hơn.
Hiện nay, có nhiều phương pháp mã hóa, mỗi phương pháp có ưu, nhược điểm riêng.
Tùy theo yêu cầu của môi trường ứng dụng mà người ta có thể dùng phương pháp này
hay phương pháp kia. Có những môi trường cần phải an toàn tuyệt đối bất kể thời gian
và chi phí. Có những môi trường lại cần giải pháp “dung hòa” giữa bảo mật và chi phí.
Vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong những vấn đề quan
trọng cần cân nhắc trong suốt quá trình thiết kế, thi công, vận hành và bảo dưỡng hệ

thống thông tin.
Các hệ thống mã hóa được chia thành hai loại: hệ mã hóa khóa đối xứng (việc giải
mã và mã hóa sử dụng chung một khóa) và hệ mã hóa công khai (mã hóa và giải mã
dùng khóa khác nhau). Trong phạm vi luận văn của mình, tác giả tập trung vào nghiên
cứu hệ mã hóa khoá đối xứng (mã hóa khóa bí mật), tập trung vào các thuật toán mã hóa
cổ điển, chuẩn mã hóa dữ liệu DES và chuẩn mã hoá nâng cao AES.
Hệ mã hóa công khai có nhược điểm là tốc độ mã hóa và giải mã rất chậm, do vậy
chỉ phù hợp sử dụng trong trao đổi khóa, trong khi đó hệ mã hóa đối xứng có tốc độ xử
lý nhanh hơn rất nhiều và phù hợp với nhu cầu xử lý số lượng lớn tài liệu. Dựa trên thực
tế về yêu cầu mã hóa tại trung tâm kỹ thuật tài liệu nghiệp vụ có đặc điểm đa dạng về
thể loại và số lượng. Chính vì vậy tác giả đã lựa chọn nghiên cứu và ứng dụng giải pháp
mã hóa đối xứng cho bài toán thực tế nơi tác giả đang công tác.
1


2

CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ AN TOÀN BẢO MẬT
THÔNG TIN
Nội dung chính của chương 1 trình bày một số khái niệm cơ bản về vấn đề an
toàn và bảo mật thông tin, khái niệm về hệ mật mã và cơ sở toán học về lý thuyết
đồng dư. Các yêu cầu chính của một hệ thống mã hóa, khái niệm về thám mã làm cơ
sở cho việc nghiên cứu các hệ mã hóa trong chương 2. Các kiến thức này được tham
khảo trong các tài liệu [1, 2, 3, 4].
1.1. Tổng quan về an toàn và bảo mật thông tin
1.1.1. Khái niệm chung
Từ xưa đến nay thông tin luôn là yếu tố quan trọng trong các hoạt động của đời sống
con người. Trong thời đại ngày nay, các phương thức truyền đạt thông tin ngày càng đa
dạng và phát triển. Với sự ra đời của máy tính và mạng máy tính, việc trao đổi thông tin
đã trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn. Nhưng kèm theo đó là các nguy

cơ xâm phạm thông tin cũng ngày càng tăng.
Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện
tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng
cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ
thông tin dữ liệu cũng được đổi mới. Bảo vệ an toàn thông tin dữ liệu là một chủ đề
rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp
được thực hiện để bảo vệ an toàn thông tin dữ liệu. Các phương pháp bảo vệ an toàn
thông tin dữ liệu có thể được tổng kết vào ba nhóm sau:
-

Bảo vệ an toàn thông tin bằng các biện pháp hành chính.

-

Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng).

-

Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm).

Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp. Môi trường khó bảo
vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó là môi
trường mạng và truyền tin. Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng
truyền tin và mạng máy tính là biện pháp thuật toán.
An toàn thông tin bao gồm các nội dung sau:
-

Tính bí mật: tính kín đáo riêng tư của thông tin.
2



3

-

Tính xác thực của thông tin, bao gồm xác thực đối tác (bài toán nhận danh), xác
thực thông tin trao đổi.

-

Tính trách nhiệm: đảm bảo người gửi thông tin không thể thoái thác trách nhiệm
về thông tin mà mình đã gửi.

Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên mạng máy tính
có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán trước các khả năng
không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ
liệu được lưu trữ và trao đổi trên đường truyền tin cũng như trên mạng. Xác định càng
chính xác các nguy cơ nói trên thì càng quyết định được tốt các giải pháp để giảm thiểu
các thiệt hại.
Có hai loại hành vi xâm phạm thông tin dữ liệu đó là: vi phạm chủ động và vi phạm
thụ động. Vi phạm thụ động chỉ nhằm mục đích cuối cùng là nắm bắt được thông tin
(đánh cắp thông tin). Việc làm đó có khi không biết được nội dung cụ thể nhưng có thể
dò ra được người gửi, người nhận nhờ thông tin điều khiển giao thức chứa trong phần
đầu các gói tin. Người xâm nhập có thể kiểm tra được số lượng, độ dài và tần số trao
đổi. Vì vậy vi pham thụ động không làm sai lệch hoặc hủy hoại nội dung thông tin dữ
liệu được trao đổi. Vi phạm thụ động thường khó phát hiện nhưng có thể có những biện
pháp ngăn chặn hiệu quả. Vi phạm chủ động là dạng vi phạm có thể làm thay đổi nội
dung, xóa bỏ, làm trễ, sắp xếp lại thứ tự hoặc làm lặp lại gói tin tại thời điểm đó hoặc
sau đó một thời gian. Vi phạm chủ động có thể thêm vào một số thông tin ngoại lai để
làm sai lệch nội dung thông tin trao đổi. Vi phạm chủ động dễ phát hiện nhưng để ngăn

chặn hiệu quả thì khó khăn hơn nhiều.
Một thực tế là không có một biện pháp bảo vệ an toàn thông tin dữ liệu nào là an
toàn tuyệt đối. Một hệ thống dù được bảo vệ chắc chắn đến đâu cũng không thể đảm
bảo là an toàn tuyệt đối.
1.1.2. Mục tiêu của an toàn bảo mật thông tin
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm bảo
các mục tiêu sau:
Tính bí mật (Confjdentialy): Đảm bảo dữ liệu được truyền đi một cách an toàn và
không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của dữ liệu
3


4

gốc ban đầu. Chỉ những người được phép mới có khả năng đọc được nội dung thông tin
ban đầu.
Tính xác thực (Authentication): Giúp cho người nhận dữ liệu xác định được chắc
chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu. Người giả mạo không thể có khả năng
để giả dạng một người khác hay nói cách khác không thể mạo danh để gửi dữ liệu.
Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được.
Tính toàn vẹn (Integrity): Giúp cho người nhận dữ liệu kiểm tra được rằng dữ liệu
không bị thay đổi trong quá trình truyền đi. Người giả mạo không thể có khả năng thay
thế dữ liệu ban đầu bằng dữ liệu giả mạo.
Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận không thể chối
bỏ sau khi đã gửi hoặc nhận thông tin.
1.1.3. Các chiến lược an toàn hệ thống
Giới hạn quyền hạn tối thiểu (Last Privilege):
Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cùng
chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng
đối tượng đó chỉ được sử dụng một số tài nguyên nhất định.

Bảo vệ theo chiều sâu (Defence In Depth):
Nguyên tắc này nhắc nhở chúng ta : Không nên dựa vào một chế độ an toàn nào dù
cho chúng rất mạnh, mà nên tạo nhiều cơ chế an toàn để tương hỗ lẫn nhau.
Nút thắt (Choke Point) :
Tạo ra một “cửa khẩu” hẹp, và chỉ cho phép thông tin đi vào hệ thống của mình
bằng con đường duy nhất chính là “cửa khẩu” này. => phải tổ chức một cơ cấu kiểm
soát và điều khiển thông tin đi qua cửa này.
Điểm nối yếu nhất (Weakest Link) :
Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một
bức tường chỉ cứng tại điểm yếu nhất”
Người tấn công thường tìm những chỗ yếu nhất của hệ thống để tấn công, do đó ta
cần phải gia cố các yếu điểm của hệ thống. Thông thường chúng ta chỉ quan tâm đến
4


5

người tấn công trên mạng hơn là người tiếp cận hệ thống, do đó an toàn vật lý được coi
là yếu điểm nhất trong hệ thống của chúng ta.
Tính toàn cục:
Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ. Nếu có
một người nào đó có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng
cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong.
Tính đa dạng bảo vệ :
Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu
không có người tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào
các hệ thống khác.
1.2. Các kiến thức cơ bản về hệ mật mã
1.2.1. Khái niệm chung
Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí

mật. Mật mã bao gồm : Lập mã và phá mã. Lập mã bao gồm hai quá trình: mã hóa và
giải mã.
Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận
thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình
này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình
ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được
mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải mã. Đây là
một lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng.
Để bảo vệ thông tin bằng mật mã người ta thường tiếp cận theo hai hướng:
-

Theo đường truyền (Link_Oriented_Security).

-

Từ nút đến nút (End_to_End).

Theo cách thứ nhất thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút
mà không quan tâm đến nguồn và đích của thông tin đó. Ở đây ta lưu ý rằng thông tin
chỉ được bảo vệ trên đường truyền, tức là ở mỗi nút đều có quá trình giải mã sau đó mã
hoá để truyền đi tiếp, do đó các nút cần phải được bảo vệ tốt.

5


6

Ngược lại theo cách thứ hai thông tin trên mạng được bảo vệ trên toàn đường truyền
từ nguồn đến đích. Thông tin sẽ được mã hoá ngay sau khi mới tạo ra và chỉ được giải
mã khi về đến đích. Cách này mắc phải nhược điểm là chỉ có dữ liệu của người ung thì

mới có thể mã hóa được còn dữ liệu điều khiển thì giữ nguyên để có thể xử lý tại các
nút.
Các hệ mật mã phải thực hiện được các nhiệm vụ sau đây:
-

Hệ mật mã phải che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo
sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin
(Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn.

-

Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống
đến người nhận hợp pháp là xác thực (Authenticity).

-

Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo
danh để gửi thông tin trên mạng.

Ưu điểm lớn nhất của bất kỳ hệ mật mã nào đó là có thể đánh giá được độ phức tạp
tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu
đã được mã hoá. Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau,
nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán mã
hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo độ yêu cầu về độ an toàn.
1.2.2. Các thành phần của một hệ mật mã
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
-

P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ.


-

C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã. Mỗi phần tử
của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của
P, với k  K

-

K: Là tập hữu hạn các khoá hay còn gọi là không gian khoá. Đối với mỗi phần
tử k của K được gọi là một khoá. Số lượng của không gian khoá phải đủ lớn để
“kẻ địch” không có đủ thời gian để thử mọi khoá có thể (phương pháp vét cạn).
Đối với mỗi k  K có một quy tắc mã ek: PC và một quy tắc giải mã tương
ứng dk D. Mỗi ek: P C và dk: CP là những hàm mà: Dk (ek(x))=x với
mọi bản rõ x P.
6


7

Hình 1. 1. Mã hoá với khoá mã và khoá giải giống nhau
1.2.3. Quy trình mã hóa và giải mã
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường
sang một dạng khác mà một người không có thẩm quyền, không có phương tiện giải mã
thì không thể đọc hiểu được. Giải mã dữ liệu là quá trình ngược lại, là sử dụng một
phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu.

Hình 1. 2. Quy trình mã hóa và giải mã
Mã hóa: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao cho người
khác không thể đọc hiểu được.
Giải mã: Là quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành

dạng gốc ban đầu.
Bản mã: Tệp dữ liệu đã được mã hóa.
Một hệ thống mã hóa bao gồm các thành phần sau:
-

PlainText : Bản tin sẽ được mã hóa hay bản tin gốc.

-

CipherText : Bản tin đã được mã hóa hay bản tin mã.
7


8

Thuật toán mã hóa và giải mã :
-

Encryption : quá trình chuyển bản tin gốc sang dạng mật mã.

-

Decryption : quá trình giải bản tin dạng mật mã trở về bản tin gốc.

-

Cách chọn khóa : giá trị toán học dùng để thực hiện mã hóa.

Nhiều phương pháp mã hóa đã được đưa ra dựa trên những giải thuật toán phức tạp,
để tạo khó khăn cho những ai đó muốn phá mật mã mà không cần được ai trao chìa

khóa. Nói tạo khó khăn là vì trên lý thuyết ta không thể nói việc tìm chìa khóa là vô
phương. Nhưng nếu trở ngại đủ lớn để làm nản lòng người muốn phá khóa thì đã là một
mức độ an toàn tốt.
Quá trình mã hóa và giải mã có thể được minh họa theo sơ đồ sau :

Bản tin gốc

Quá trình
mã hóa

Bản tin mã

```
```
```

-------------------------------------------------------------

Quá trình truyền
dữ liệu

```
```
```

Bản tin mã

Quá trình
giải mã


-------------------------------------------------------------

Bản tin gốc

Hình 1. 3. Sơ đồ mã hóa và giải mã
1.2.4. Phân loại hệ thống mã hóa
Để phân loại hệ thống mã hóa, người ta phân loại dựa trên khóa như sau
1.2.4.1. Mã hóa bằng khóa bí mật
Các hệ thống mã hóa với khóa bí mật còn được gọi là mã hóa bằng khóa riêng, mã
hóa đối xứng sử dụng duy nhất một khóa cho cả quá trình mã hóa lẫn quá trình giải mã.
Có hai loại thuật toán mã hóa bí mật :
8


9

-

Stream Algorithms/Stream Ciphers : các thuật toán hoạt động trên văn bản bình
thường theo từng bit một.

-

Block Algorithms/Block Ciphers : các thuật toán hoạt động trên văn bản theo
các khối (32 bit, 64 bit, 128 bit,...).

Một số thuật toán đang được sử dụng rộng rãi hiện nay : DES, Triple-DES, RC5,
RC6, Rijndael...
Quá trình mã hóa và giải mã bằng cách sử dụng khóa bí mật được minh họa như
hình sau :


Bản tin gốc

Quá trình
mã hóa
Bản tin mã

```
```
```

-------------------------------------------------------------

Khóa bí mật(chỉ
Có người mã hóa và
người giải mã biết)

Quá trình truyền
dữ liệu

```
```
Bản```
tin mã

Quá trình
giải mã

-------------------------------------------------------------


Bản tin gốc

Hình 1. 4. Sơ đồ mã hóa và giải mã bằng khóa riêng
1.2.4.2. Mã hóa bằng khóa công khai
Mã hóa bằng khóa công khai còn gọi là mã hóa bất đối xứng hay mã hóa bằng khóa
chung. Sự khác biệt cơ bản giữa một hệ thống mã hóa bằng khóa bí mật với hệ thống
mã hóa bằng khóa công khai là hệ thống mã hóa khóa công khai dùng hai khóa khác
nhau để mã hóa và giải mã. Do đó, một bộ mã công khai sẽ bao gồm hai khóa: một khóa
dành cho người mã hóa thường được công khai, và khóa còn lại dùng cho người giải mã
thường được giữ bí mật. Như vậy, hệ thống mã hóa với khóa công khai cần có một quá
9


10

trình sinh ra hai khóa để mã hóa và giải mã thông điệp. Các khóa này được xem như là
một đôi :
Public-key (khóa công khai): được phép công khai mà không phải chịu rủi ro về an
toàn. Khóa này được dùng để mã hóa thông điệp.
Private-key (khóa bí mật): không được để lộ. Mỗi thông điệp được mã hóa bằng
public-key chỉ có thể giải mã bằng một khóa mật thích hợp.
Một số thuật toán mã hóa công khai phổ biến : RSA, Diffie-Hellman Key-Exchange
Algorithm (dùng cho việc phân phối và trao đổi khóa).
Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai được minh họa như
hình sau :
Bản tin gốc

Quá trình
mã hóa


Bản tin mã

```
```
```

-------------------------------------------------------------

Khóa công khai, chỉ
dùng để mã hóa (có
thể cho mọi người
biết)

Quá trình truyền
dữ liệu

```
```
```

Bản tin mã

Khóa mật, chỉ dùng
để giải mã (cần
được giữ bí mật)

Quá trình
giải mã

-------------------------------------------------------------


Bản tin gốc

Hình 1. 5. Sơ đồ mã hóa và giải mã bằng khóa công khai

10


11

Có thể thấy rằng các phương pháp có những ưu khuyết điểm chính như sau:
a) Phương pháp mã hóa khóa bí mật
Ưu điểm

Khuyết điểm

+ Có thể được thiết kế để đạt tốc độ cao. + Trong quá trình truyền thông giữa hai
Các thiết bị phần cứng hỗ trợ có thể đạt người, khóa phải được giữ bí mật cho cả
tốc độ hàng trăm megabytes mỗi giây hai phía.
trong khi việc thực thi bằng phần mềm + Trong một hệ thống mạng lớn, số
chỉ đạt được khoảng vài megabytes mỗi lượng khóa cần được quản lý rất nhiều.
giây.

Do vậy việc quản lý khóa một cách hiệu

+ Khóa dùng cho mã hóa khóa đối xứng quả đòi hỏi sử dụng một bộ phận tin cậy
tương đối ngắn.

thứ ba (TTP :Trusted Third Party).


+ Được xem như thành phần cơ bản có + Khóa bí mật cần được thay đổi thường
thể triển khai để xây dựng các kỹ thuật xuyên.
mã hóa khác bao gồm khởi tạo các số + Kỹ thuật chữ ký số được phát triển từ
ngẫu nhiên, các hàm băm, các kỹ thuật cơ chế mã hóa khóa đối xứng đòi hỏi sử
tính toán.

dụng các khóa lớn cho các hàm xác nhận

+ Có thể được kết hợp để tạo ra các thuật công khai hoặc là sử dụng một TTP.
toán mã hóa mạnh hơn.
b) Phương pháp mã hóa khóa công khai
Ưu điểm

Khuyết điểm

+ Chỉ có khóa riêng thì cần được giữ bí + Tốc độ cho các phương thức mã hóa
mật (tuy nhiên việc xác nhận của các công khai thì chậm hơn rất nhiều so với
khóa công khai cần được đảm bảo).

các mô hình khóa đối xứng.

+ Việc quản trị các khóa trên mạng đòi + Kích thước khóa lớn hơn rất nhiều so
hỏi sự tồn tại duy nhất một thành phần với cơ chế mã hóa khóa đối xứng.
tin cậy TTP.

+ Không có mô hình khóa công khai nào

+ Cặp khóa riêng và công khai có thể được chứng minh là an toàn. Phần lớn
được sử dụng trong thời gian dài.


các mô hình mã hóa hiệu quả ngày nay
có sự an toàn dựa trên các giả thuyết của
11


12

+ Nhiều mô hình khóa công cộng được một tập nhỏ của các vấn đề lý thuyết số
phát triển hình thành nên các kỹ thuật học.
chữ ký số hiệu quả. Khóa được sử dụng + Hệ thống mã hóa công khai không có
cho hàm kiểu công khai thì nhỏ hơn rất bề dày lâu đời như hệ thống mã hóa khóa
nhiều so với dùng khóa đối xứng.

đối xứng, nó chỉ được tìm ra vào giữa

+ Trong một mạng lớn, số lượng các khoảng những năm 1970.
khóa cần thiết được quan tâm ít hơn so
với việc dùng khóa đối xứng.

1.2.5. Các đặc trưng của hệ thống mã hoá
Một hệ thống mã hóa bất kỳ được đặc trưng bởi 3 tiêu chí sau đây:
- Phương pháp mã (operation): có hai phương pháp mật mã bao gồm thay thế
(substitution) và chuyển vị (transposition). Trong phương pháp mã thay thế, các đơn vị
thông tin (bit, ký tự, byte hoặc khối) trong thông tin gốc được thay thế bằng các đơn vị
thông tin khác theo một quan hệ nào đó. Trong phương pháp mã chuyển vị, các đơn vị
thông tin trong thông gốc được đổi chỗ cho nhau để tạo thành thông tin mã hóa. Các hệ
thống mã hoá hiện đại thường kết hợp cả hai phương pháp thay thế và chuyển vị.
- Số khóa sử dụng (number of keys): nếu phía mã hóa (phía gửi) và phía giải mã (phía
nhận) sử dụng chung một khóa, ta có hệ thống mã dùng khoá đối xứng (symmetric key)
gọi tắt là mã đối xứng hay còn có các tên gọi khác như mã một khóa (single-key), mã

khóa bí mật (secret key) hoặc mã quy ước (conventional cryptosystem). Nếu phía mã hóa
và phía giải mã dùng 2 khóa khác nhau, hệ thống này được gọi là mã bất đối xứng
(asymmetric key), mã hai khóa (two key) hoặc mã khóa công khai (public key).
- Cách xử lý thông tin gốc (mode of cipher): thông tin gốc có thể được xử lý liên tục
theo từng phần tử , khi đó ta có hệ thống mã dòng (stream cipher). Ngược lại, nếu thông
tin gốc được xử lý theo từng khối, ta có hệ thống mã khối (block cipher). Các hệ thống
mã dòng thường phức tạp và không được phổ biến công khai, do đó chỉ được dùng trong
một số ứng dụng nhất định (ví dụ trong thông tin di động GSM). Các thuật toán mật mã
được giới thiệu trong tài liệu này chỉ tập trung vào cơ chế mã khối.

12


13

Có nhiều cách để phân loại hệ mật mã. Dựa vào cách truyền khóa có thể phân các
hệ mật mã thành hai loại:
-

Hệ mật đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật dùng
chung một khoá cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu. Do đó khoá
phải được giữ bí mật tuyệt đối.

-

Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai) : Hay còn gọi
là hệ mật mã công khai, các hệ mật này dùng một khoá để mã hoá sau đó dùng
một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau. Các
khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể
suy được từ khoá kia. Khoá dùng để mã hoá có thể công khai nhưng khoá dùng

để giải mã phải giữ bí mật.

Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại:
Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau
năm 1970). Còn nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm
hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác
nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa) và mã khối
(tiến hành mã từng khối dữ liệu với khóa như nhau).
1.2.6. Thám mã và tính an toàn của các hệ mã
1.2.6.1. Thám mã
Mật mã được sử dụng trước hết là để đảm bảo tính bí mật cho các thông tin được
trao đổi, và do đó bài toán quan trọng hất của thám mã cũng là bài toán phá bỏ tính bí
mật đó, tức là từ bản mật mã có thể thu được dễ dàng các thông tin bị che dấu trong đó.
Như vậy bài toán thám mã cơ bản có thể xem là bài toán tìm khóa bí mật K. Giả thiết
người thám mã biết thông tin về sơ đồ hệ mã được dùng hoặc có thể biết thêm một vài
thông tin khác mà ta có thể phân ra thành các bài toán:
-

Bài toán thám mã chỉ biết bản mã: là bài toán phổ biến nhất, khi người thám mã
chỉ biết bản mã Y.

-

Bài toán thám mã khi biết cả bản rõ: người thám mã biết một bản mã Y cùng với
bản rõ tương ứng X.

13


14


-

Bài toán thám mã khi có bản rõ được chọn: người thám mã có thể chọn một bản
rõ X, và biết bản mã Y tương ứng. Điều này có thể xảy ra khi người thám mã
chiếm được (tạm thời) máy lập mã.

-

Bài toán thám mã khi có bản mã được chọn: người thám mã có thể chọn một bản
mật mã Y, và biết được bản rõ X tương ứng. Xảy ra khi người thám mã chiếm
được máy giải mã.

1.2.6.2. Phương pháp thám mã (tấn công hệ mã)
Phương pháp phân tích mã (cryptanalysis): dựa vào bản chất của thuật toán mã hóa,
cùng với một đoạn thông tin gốc hoặc thông tin mật có được, người tấn công tìm cách
phân tích để tìm ra toàn bộ thông tin gốc hoặc tìm ra khóa, rồi sau đó thực hiện việc giải
mã toàn bộ thông tin mật.
Phương pháp thử tuần tự (brute-force): bằng cách thử tất cả các khóa có thể, người
tấn công có khả năng tìm được khóa đúng và do đó giải mã được thông tin mật.
Thông thường, để tìm được khóa đúng thì cần phải thử một số lượng khóa bằng
khoảng một nửa số khóa có thể có của hệ thống mã. Ví dụ, nếu khoá có chiều dài là 8
bit thì sẽ có tất cả 28 = 256 khóa khác nhau. Để chọn được khóa đúng thì người tấn công
phải thử trung bình khoảng 256 / 2 = 128 lần. Việc thử này thường được trợ giúp bởi
các máy tính và phần mềm chuyên nghiệp.
Hai thành phần đảm bảo sự an toàn của một hệ thống mật mã là thuật toán mã (bao
gồm thuật toán mã hoá và thuật toán giải mã) và khoá.
Trong thực tế, thuật toán mã không được xem như một thông tin bí mật, bởi vì mục
đích xây dựng một thuật toán mã là để phổ biến cho nhiều người dùng và cho nhiều ứng
dụng khác nhau, hơn nữa việc che giấu chi tiết của một thuật toán chỉ có thể tồn tại trong

một thời gian ngắn, sẽ có một lúc nào đó, thuật toán này sẽ được tiết lộ ra, khi đó toàn
bộ hệ thống mã hóa trở nên vô dụng. Do vậy, tất cả các tình huống đều giả thiết rằng
người tấn công đã biết trước thuật toán mã.
Như vậy, thành phần quan trọng cuối cùng của một hệ thống mã là khóa của hệ
thống, khóa này phải được giữ bí mật giữa các thực thể tham gia nên được gọi là khóa
bí mật. Một cách tổng quát, chiều dài khóa càng lớn thì thời gian cần thiết để dò ra khóa

14


15

bằng cách thử càng lớn, do vậy khả năng phát hiện khóa càng thấp. Bảng sau đây liệt kê
một số khóa với độ dài khác nhau và thời gian cần thiết để dò ra khóa.
Bảng 1. 1. Quan hệ giữa độ dài khoá và thời gian dò khoá
Chiều dài
khoá (bit)

Số khoá tối đa

Thời gian dò khoá với tốc
độ thử 1 khoá /ms

Thời gian dò khoá
với tốc độ thử 106
khoá /ms

32

232 = 4,3 * 109


231 ms = 35,8 phút

2,15 milli giây

56

256 = 7,2 * 1016

255 ms = 1.142 năm

10,01 giờ

128

2128 = 3,4 * 1038

2127 ms = 5,4 * 1024 năm

5,4 * 1018 năm

168

2168 = 3,7 * 1050

2167 ms = 5,9 * 1036 năm

5,9 * 1030 năm

26! = 4 * 1026


2 * 1026 ms = 6,4 x 1012 năm

6.4

26 ký tự

* 106 năm

(hoán vị)

1.2.6.3. Tiêu chuẩn đánh giá hệ mật mã
Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tiêu chí sau:
Độ an toàn: Một hệ mật được đưa vào sử dụng điều đầu tiên phải có độ an toàn cao.
Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán
mà không cần phải cài đặt. Một hệ mật được coi là an toàn nếu để phá hệ mật mã này
phải dùng n phép toán. Mà để giải quyết n phép toán cần thời gian vô cùng lớn, không
thể chấp nhận được.
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
-

Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công
khai thuật toán.

-

Khi cho khoá công khai eK và bản rõ P thì chúng ta dễ dàng tính được eK(P) =
C. Ngược lại khi cho dK và bản mã C thì dễ dàng tính được dK(M)=P. Khi
không biết dK thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm


15


16

f: X Y thì việc tính y=f(x) với mọi x thuộc X là dễ còn việc tìm x khi biết y lại
là vấn đề khó và nó được gọi là hàm một chiều.
-

Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ.

Tốc độ mã và giải mã: Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ mã
và giải mã. Hệ mật tốt thì thời gian mã và giải mã nhanh.
Phân phối khóa: Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền công
khai hay truyền khóa bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ
mật có khóa công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã.
Tính an toàn của một hệ thống mật mã phụ thuộc vào độ khó của bài toán thám mã
khi sử dụng hệ mã hóa đó. Người ta đã đề xuất một số khái niệm về tính an toàn của hệ
thống mật mã.
-

An toàn vô điều kiện: giả thiết người thám mã có được thông tin về bản mã. Theo
quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã không thu hẹp được
độ bất định về bản rõ đối với người thám mã thì hệ mã hóa đó là an toàn vô điều
kiện, hay theo Shannon đó là hệ bí mật hoàn toàn.

-

An toàn được chứng minh: một hệ thống mã hóa được xem là có độ an toàn được
chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với hệ thống

đó khó tương đương với một bài toán khó đã biết. Ví dụ như bài toán phân tích
một số nguyên thành các thừa số nguyên tố, bài toán tìm logarit rời rạc theo một
modul nguyên tố…(Khó tương đương có nghĩa là nếu bài toán này giải được thì
bài toán kia cũng giải được với cùng một độ phức tạp như nhau).

-

An toàn tính toán: hệ mã được xem là an toàn về mặt tính toán nếu với mọi
phương pháp thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán vượt mọi
khả năng (kể cả phương tiện thiết bị).

Tính an toàn theo nghĩa được chứng minh hay tính toán được sử dụng nhiều trong
việc nghiên cứu các hệ thống mật mã hiện đại, đặc biệt là hệ mã hóa công khai.
1.3. Cơ sở toán học về mã hóa
Định nghĩa 1.1:
+ Ước số của a và b là c nếu a và b cùng chia hết cho c, kí hiệu a|c, b|c
+ Ước số chung lớn nhất : Là số lớn nhất mà a và b cùng chia hết
16


17

Ký hiệu : c = gcd (a,b) ;
+ Bội số chung nhỏ nhất : d là BCNN của a và b nếu mọi c mà a|c , b|c → d|c
Ký hiệu : d = lcm (a,b) ;
Tính chất: lcm (a,b) = a.b/gcd(a,b)
Định nghĩa 1.2: Số n là số nguyên tố nếu n chỉ chia hết cho 1 và chính nó.
Hệ mật thường sử dụng số nguyên tố lớn cỡ 512 bits và thậm chí còn lớn hơn nữa.
Định nghĩa 1.3: Hai số m và n gọi là hai số nguyên tố cùng nhau khi ước số chung
lớn nhất của chúng bằng 1. Chúng ta có thể viết như sau: UCLN(m,n) = 1

1.3.1. Các thuật toán trong Z
Cho a và b là các số nguyên không âm và nhỏ hơn hoặc bằng n. Cần chú ý rằng số
các bit trong biểu diễn nhị phân của n là [lgn] + 1 và số này xấp xỉ bằng lgn. Số các phép
toán bit đối với bốn phép toán cơ bản trên các số là cộng, trừ, nhân và chia sử dụng các
thuật toán kinh điển được tóm lược trên bảng sau. Các kỹ thuật tinh tế hơn đối với các
phép toán nhân và chia sẽ có độ phức tạp nhỏ hơn.
Độ phức tạp bit

Phép toán
Cộng

a+b

0(lga + lgb) = 0 (lgn)

Trừ

a–b

0(lga + lgb) = 0 (lgn)

Nhân

a*b

0((lga)*(lgb)) = 0((lgn))

a = qb + r

0((lga)*(lgb)) = 0((lgn))


Chia

1.3.2. Thuật toán Euclide
Trong lý thuyết mật mã, người ta thường dùng thuật toán Euclide để xác định UCLN
của 2 số nguyên bất kì. Thuật toán được mô tả như sau:
Thuật toán gốc
Input

: Hai số nguyên không âm a và b với a > b

Output

: UCLN của a và b

(1). while b ≠ 0 do
17


×