ĐẠ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
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
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
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
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ệ
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
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.
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ì
-
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: PC và một quy tắc giải mã tương
ứng dk D. Mỗi ek: P C và dk: CP 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
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
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 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ã
-------------------------------------------------------------
+ Đượ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.
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
-
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
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
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
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))