ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THANH BÌNH NGHIÊN CỨU MỞ RỘNG
PHƯƠNG PHÁP MÃ HÓA SỐ HỌC
ỨNG DỤNG TRONG BẢO MẬT DỮ LIỆU
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 05
LUẬN VĂN THẠC SĨ
NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. LÊ HỒNG LAN
1.5.1.1. Hệ mã hóa dịch chuyển 19
1.5.1.2. Hệ mã hóa thay thế (Hoán vị toàn cục) 19
1.5.1.3. Hệ mã Affine 20
1.5.2. Hệ mã hóa khóa công khai 21
1.5.2.1. Sơ đồ chung hệ mã hóa khóa công khai 21
1.5.2.2. Hệ mã hóa RSA (Rivest - Shamir - Adleman) 21
1.6. Các bài toán về an toàn thông tin 22
1.7. Thám mã và tính an toàn của các hệ mật mã 23
1.7.1. Vấn đề thám mã 23
1.7.2. Tính an toàn của một hệ mật mã 24
Chƣơng 2. CƠ SỞ TOÁN HỌC CỦA PHƢƠNG PHÁP MÃ HÓA SỐ HỌC 26
2.1. Phép chiếu một điểm lên đoạn thẳng 26
2.1.1. Phép chiếu thu nhỏ đồng dạng 26
2.1.2. Phép biến đổi ngƣợc 26
2.2. Phép chiếu một đoạn thẳng lên một đoạn thẳng 27
2.2.1. Phép chiếu thu nhỏ đồng dạng 27
2.2.1. Phép biến đổi ngƣợc 27
2.2.3. Định lý 1 27
2.3. Một số tính chất của phép chiếu 29
2.3.1. Tính chất kết hợp 29
2.3.2. Tính chất chứa trong 30
2.3.3. Tính chất chứa trong của phép chiếu ngƣợc 30
Chƣơng 3. CẢI TIẾN PHƢƠNG PHÁP MÃ HÓA SỐ HỌC 31
3.1. Giới thiệu phƣơng pháp mã hóa số học 31
3.2. Thuật toán mã hóa số học truyền thống 32
3.2.1. Thuật toán mã hóa 32
3.2.1.1. Thống kê tần suất và xác định miền phân bố của các ký tự trong bản rõ 32 3
4.2.1. Thuật toán từ hệ thập phân sang hệ nhị phân 55
4.2.2. Thuật toán từ hệ nhị phân sang hệ thập phân 56
4.3. Thuât toán chia (div, mod) 56
4.4. Thuật toán phân rã nhị phân tính luỹ thừa mod 57
4.5. Phƣơng pháp tính logarit 59
4.6. Phƣơng pháp tính căn bậc hai 60
4.7. Kết quả thử nghiệm 61
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
4
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
STT
Ký hiệu / Viết tắt
Diễn giải
1
DES
Data Encryption Standard
2
PKC
5
DANH MỤC CÁC BẢNG
Bảng 3.1 Bảng tần suất của các ký tự 32
Bảng 3.2 Bảng phân bố với D = 1000 và dựa theo tần suất 32
Bảng 3.3 Miền phân bố của các ký tự với bản rõ CABAB 38
Bảng 3.4 Miền phân bố của các ký tự với bản rõ BAABB 46
Bảng 3.5 Miền phân bố với bản rõ CABAB 49
Bảng 4.1 Dùng để lƣu trữ giá trị thập phân của 2
i
Hình 2.5 Chiếu Z
1
Z
2
lên A
1
A
2
28
Hình 3.1 Minh họa cách phân tách miền phân bố 47
Hình 3.2 Sơ đồ khối hệ thống kết hợp hoán vị và mã hóa số học phân tách khoảng 47
6
MỞ ĐẦU
Mã hóa là một trong các phƣơng pháp 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,
nhƣng tất cả các phƣơng pháp đó chỉ mang tính nghệ thuật hơn là khoa học. Ban đầu, mã
hóa đƣợc sử dụng phổ biến cho quân đội, qua nhiều cuộc chiến tranh, vai trò của mã hóa
ngày càng quan trọng và mang lại nhiều thành quả không nhỏ nhƣ các hệ mã cổ điển
Caesar, Playfair…chúng đều là nền tảng cho mật mã học ngày nay.
Khi toán học đƣợc áp dụng cho mã hóa thì lịch sử của mã hóa đã sang trang mới.
Việc ra đời các hệ mã hóa đối xứng không làm mất đi vai trò của các hệ mã cổ điển mà
còn bổ sung cho ngành mật mã nhiều phƣơng pháp mã hóa mới.
Từ năm 1976, khi hệ mã phi đối xứng ra đời, nhiều khái niệm mới gắn với mật mã
Chƣơng 4 “Cài đặt và thử nghiệm” giới thiệu thƣ viện xử lý số nguyên lớn,
một số kết quả thử nghiệm trên máy của chƣơng trình mã hóa số học truyền
thống và cải tiến. 8
Chƣơng 1. GIỚI THIỆU CHUNG VỀ MÃ HÓA THÔNG TIN
Tóm tắt chương: Trong chương này luận văn giới thiệu chung về mã hóa thông tin, lịch
sử mật mã, các hệ mã, các bài toàn an toàn thông tin và bài toán thám mã. Đưa ra được
một số khái niệm cơ bản nhất của mã hóa như: bản rõ, bản mã, hệ mã hóa thám mã, khóa
mã, mã hóa khóa công khai, mã hóa khóa đối xứng, mã theo khối, mã theo dòng.v.v….
ứng này trong một thời gian ngắn).
Mã dòng (stream cipher) là việc tiến hành mã hóa liên tục trên từng ký tự (hay
từng bit).
Mã khối (block cipher) là việc tiến hành mã hóa trên từng khối văn bản (khi khối
văn bản là một cặp 2 ký tự thì gọi là digraph, còn khi nó là bộ 3 chữ thì gọi là trigraph).
Phép mã chuyển vị (transposition cipher) là việc tráo đổi vị trí giữa các ký tự (các
bit) trong văn bản.
Phép mã thay thế (substitution) là việc thay thế một ký tự này bằng một ký tự khác
(mà không thay đổi vị trí).
Phép mã tích hợp (product cipher) là việc tiến hành xen kẽ 2 phép mã chuyển vị và
thay thế.
Chìa khóa mã (cipher key) là bí quyết lập mã và giải mã. Nếu nhƣ quy trình mã
hóa đƣợc xem nhƣ một hàm y = f(x,k), trong đó x là đầu vào (văn bản nguồn), y là đầu ra
(văn bản mã), f là phương pháp (hay thuật toán) mã hóa, còn k là một tham số điều khiển,
thì bí quyết trƣớc đây thƣờng bao gồm cả phương pháp f, và tham số k. Nhu cầu của thực
tiễn hiện nay đã khiến công nghệ mã hóa hiện đại phải thay đổi quan điểm này. Phương
pháp f là cái thƣờng do không chỉ một ngƣời nắm, nên không thể giữ đƣợc bí mật lâu, và
do đó phải đƣợc xem là công khai. Tham số điều khiển k, có tác dụng làm thay đổi kết quả
mã hóa (tùy thuộc vào giá trị của nó), đƣợc xem là chìa khóa mã. Thông thƣờng, nó là
một xâu bit (hay một con số nào đó) mà ngƣời ta có thể giữ riêng cho mình. 10
Hệ mã bí mật (secret key cryptosystem - SKC) hay hệ mã đối xứng (symmetric
cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã cùng sử dụng chung một chìa
khóa mã (bí mật).
Hệ mã công khai (public key cryptosystem - PKC) hay hệ mã phi đối xứng
(asymmetric cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã sử dụng 2 chìa
khóa mã riêng biệt, từ chìa này không thể tìm ra chìa kia một cách dễ dàng, chìa dùng để
lập mã thƣờng đƣợc thông báo công khai, còn chìa dành cho việc giải mã phải luôn giữ bí
Hoàng đế Caesar đã từng sử dụng phép mã thay thế trong quân sự, trong đó mỗi ký
tự đƣợc thay thế bởi ký tự đứng sau nó 3 vị trí trong bảng chữ cái alphabet, nghĩa là chữ
A đƣợc thay thế bởi chữ D, chữ B đƣợc thay bởi chữ E, Trong thực tế, việc triển khai
một hệ mã nhƣ vậy là khá đơn giản (và cũng rất thuận tiện cho việc sử dụng), với việc
dùng hai chiếc đĩa đồng tâm có bán kính khác nhau và có các bảng chữ cái alphabet rải
đều trên mỗi vành đĩa (hình 1.2). Việc xoay (một trong hai đĩa) sao cho chữ A trên vành đĩa nhỏ nằm trên bán kính
nối tâm đĩa với chữ D trên vành đĩa lớn sẽ xác định phép mã Caesar nói trên, thông qua
phép tƣơng ứng giữa các chữ cái trên vành đĩa nhỏ với các chữ cái trên vành đĩa lớn. Nói
chung, việc xoay đĩa đi một góc bất kỳ (miễn sao các chữ trên vành đĩa nhỏ và trên vành
đĩa lớn đƣợc tƣơng ứng nhau rõ ràng) sẽ mang lại một phép mã theo kiểu Caesar.
Hình 1.2 Bảng đĩa chữ cái
N G A Y M A I
T I E N V E
P H I A T A Y
Hình 1.1 Mô tả phép mã chuyển vị 12
Mã khối đƣợc xem là xuất hiện vào những năm đầu thế kỷ XX, với sự ra đời của
hệ mã British Playfair vào năm 1910, trong đó mỗi khối là một cặp 2 chữ (digraph). Phép
mã ở đây là thay thế theo chìa. Ngƣời ta viết 26 chữ cái (của tiếng Anh) vào một bảng
hình vuông (5 cột, 5 dòng), trong đó 2 chữ I và J đƣợc viết vào cùng một chỗ. Hai dòng
đầu tiên dành cho chìa khóa (gồm 10 ký tự không trùng lặp), 3 dòng dƣới viết 16 chữ cái
còn lại (không có trong chìa khóa) theo thứ tự thông thƣờng (từ trái sang phải và từ trên
chữ nhật 4 đỉnh là SOFC và do đó cặp chữ SF đƣợc mã hóa thành cặp CO.
Muốn mã hóa cặp 2 chữ trên cùng một dòng thì thay thế mỗi chữ bằng chữ kế tiếp
bên phải nó trên cùng dòng đó (nếu là chữ cuối dòng thì thay bằng chữ đầu dòng). Thí dụ,
cặp chữ SO sẽ đƣợc mã hóa thành TN, còn cặp CG sẽ biến thành cặp DB.
Muốn mã hóa cặp 2 chữ nằm trên cùng một cột, ta thay mỗi chữ bằng chữ ngay
bên dƣới nó (nếu chữ nằm ở đáy cột thì đƣợc thay bằng chữ ở đỉnh cột). Thí dụ, SI sẽ biến
thành CW. Các chữ đúp sẽ đƣợc tách ra bằng chữ X trƣớc khi cho mã hóa, thí dụ chữ
BALLOON sẽ đƣợc xử lý thành BALXLOXON.
Hệ mã tích hợp (product cipher) đƣợc sử dụng sớm nhất là của quân đội Đức trong
Đại chiến Thế giới lần thứ I, mang tên là ADFGVX. Cho trƣớc một bảng nhƣ hình 1.4
A
D
F
G
V
X
A
K
Z
W
R
1
F
D
9
B
6
C
L
S
T
M
Phần thay thế cho phép thay mỗi ký tự bằng một cặp 2 ký tự ứng với "tung độ" và
"hoành độ" của chữ đó trong bảng. Thí dụ chữ P sẽ biến thành cặp FG, chữ R biến thành
AG, và PRODUCTCIPHERS sẽ biến thành
FGAGVVDVFXADGXVDGXFFGVGGAAGXG
Phần chuyển vị đƣợc tiến hành tiếp theo sau và phụ thuộc vào chìa (với các chữ
không trùng lặp), thí dụ là DEUTSCH. Hãy đánh số các chữ trong chìa theo thứ tự nhƣ
trong bảng chữ cái alphabet (thí dụ: chữ C sẽ đƣợc đánh số 1, chữ D sẽ đƣợc đánh số
2, ). Hãy đặt kết quả "mã hóa nửa vời" thu đƣợc ở trên theo từng dòng (nằm dƣới chìa,
nghĩa là
D
E
U
S
C
H
2
3
7
6
1
4
F
G
A
G
D
14
thay thế lại không có chìa điều khiển. Chính vì vậy, một hệ mã tích hợp khác, phức tạp
hơn, đã đƣợc sử dụng trong Thế chiến thứ II, đó là ENIGMA.
Tuy nhiên, từ những năm cuối của thập kỷ 60, mối đe dọa về vấn đề "an toàn máy
tính" đã trở thành hiện thực. Ngƣời ta cần đến các chƣơng trình mã hóa mạnh hơn để
chống lại khả năng phá mã của các siêu máy tính với tốc độ ngày càng lớn. Vấn đề này đã
đƣợc quan tâm nghiên cứu tích cực trong các năm 1968-1975 và đƣợc đánh dấu bằng sự
ra đời của hệ mã Lucifer (1974) và sau đó đƣợc cải tiến thành hệ mã dữ liệu tiêu chuẩn
DES (1975), một hệ mã khối đối xứng với chìa khóa dài 56 bits, kết hợp luân phiên 16
phép thay thế với 15 phép hoán vị. Tiếp sau đó, sự ra đời của hệ mã hóa với kháo công
khai, vào cuối những năm 70 của thế kỷ vừa qua, đã khẳng định vai trò then chốt của các
phƣơng pháp Toán học trong lĩnh vực mã hóa hiện đại.
1.3. Khái niệm hệ mã hóa
Để bảo đảm an toàn thông tin lƣu trữ trong máy tính (giữ gìn thông tin cố định)
hay bảo đảm an toàn thông tin trên đƣờng truyền tin (ví dụ trên mạng máy tính), ngƣời ta
phải “Che Giấu” các thông tin này.
“Che” thông tin (dữ liệu) hay “Mã hóa” thông tin là thay đổi hình dạng thông tin
gốc, và ngƣời khác “khó” nhận ra.
Nói cách khác “Mã hóa” thông tin là “che” đi “Ý nghĩa” của thông tin, và ngƣời
khác “khó” hiểu đƣợc (“khó” đọc đƣợc) thông tin đã mã hoá.
“Giấu” thông tin (dữ liệu) là cất giấu thông tin trong bản tin khác, và ngƣời khác
cũng “khó” nhận ra.
Việc mã hoá phải theo quy tắc nhất định, quy tắc đó gọi là Hệ mã hóa.
Hệ mã hóa đƣợc định nghĩa là bộ năm (P, C, K, E, D), trong đó:
P là tập hữu hạn các bản rõ có thể.
C là tập hữu hạn các bản mã có thể.
K là tập hữu hạn các khoá có thể.
E là tập các hàm lập mã.
D là tập các hàm giải mã.
(T)
Ngƣời gửi G muốn gửi bản tin T cho ngƣời nhận N. Để bảo đảm bí mật, G mã hoá
bản tin bằng khóa lập mã ke, nhận đƣợc bản mã e
ke
(T), sau đó gửi cho N.
Tin tặc có thể trộm bản mã e
ke
(T), nhƣng cũng “khó” hiểu đƣợc bản tin gốc T nếu
không có khoá giải mã kd.
Ngƣời N nhận đƣợc bản mã, họ dùng khoá giải mã kd, để giải mã e
ke
(T), sẽ nhận
đƣợc bản tin gốc T = d
kd
(e
ke
(T)).
1.4. Phân loại hệ mã hóa
Hiện có hai loại mã hóa chính: mã hóa khóa đối xứng và mã hóa khoá công khai.
Hệ mã hóa khóa đối xứng có khóa lập mã và khóa giải mã “giống nhau”, theo
nghĩa biết đƣợc khóa này thì “dễ” tính đƣợc khóa kia. Vì vậy phải giữ bí mật cả 2 khóa.
Hệ mã hóa khóa công khai có khóa lập mã khác khóa giải mã (ke kd), biết đƣợc
khóa này cũng “khó” tính đƣợc khóa kia. Vì vậy chỉ cần bí mật khóa giải mã, còn công
khai khóa lập mã.
1.4.1. Hệ mã hóa khóa đối xứng
Mã hóa khóa đối xứng là Hệ mã hóa mà biết đƣợc khóa lập mã thì có thể "dễ" tính
đƣợc khóa giải mã và ngƣợc lại. Đặc biệt một số Hệ mã hóa có khóa lập mã và khóa giải
mã trùng nhau (ke = kd), nhƣ Hệ mã hóa "dịch chuyển" hay DES (Data Encryption
Standard).
Hệ mã hóa khóa đối xứng còn có tên gọi là Hệ mã hóa khoá bí mật hay khóa riêng,
khai hay Hệ mã hóa phi đối xứng do Diffie và Hellman phát minh vào những năm 1970. 17
1.4.2.1. Đặc điểm của Hệ mã hóa khóa công khai
Ƣu điểm:
- Thuật toán đƣợc viết một lần, công khai cho nhiều lần dùng, cho nhiều ngƣời
dùng, họ chỉ cần giữ bí mật khóa riêng của mình.
- Khi biết các tham số ban đầu của hệ mã, việc tính ra cặp khóa công khai và bí
mật phải là "dễ", tức là trong thời gian đa thức. Ngƣời gửi có bản rõ P và khóa công khai,
thì "dễ" tạo ra bản mã C. Ngƣời nhận có bản mã C và khóa bí mật, thì "dễ" giải đƣợc
thành bản rõ P.
- Ngƣời mã hóa dùng khóa công khai, ngƣời giải mã giữ khóa bí mật. Khả năng lộ
khóa bí mật khó hơn vì chỉ có một ngƣời giữ gìn. Nếu thám mã biết khóa công khai, cố
gắng tìm khóa bí mật, thì chúng phải đƣơng đầu với bài toán "khó", số phép thử là vô
cùng lớn, không khả thi.
Hạn chế: Tốc độ mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng.
1.4.2.2. Nơi sử dụng Hệ mã hóa khóa đối xứng
Hệ mã hóa khóa công khai thƣờng đƣợc sử dụng chủ yếu trên các mạng công khai
nhƣ internet, khi mà việc trao chuyển khóa bí mật tƣơng đối khó khăn. Đặc trƣng nổi bật
của hệ mã hóa khóa công khai là khóa công khai và bản mã đều có thể gửi đi trên một
kênh truyền tin không an toàn. Có biết cả khóa công khai và bản mã thì thám mã cũng
không dễ khám phá đƣợc bản rõ. Nhƣng vì có tốc độ mã hóa và giải mã chậm, nên hệ mã
hóa khóa công khai chỉ dùng để mã hóa những bản tin ngắn, ví dụ nhƣ mã hóa khóa bí
mật gửi đi. Hệ mã hóa khóa công khai thƣờng đƣợc sử dụng cho cặp ngƣời dùng thỏa
thuận khóa bí mật của Hệ mã hóa khóa riêng. 18
1.5. Một số hệ mã hóa khóa đối xứng và mã hóa khóa công
Q
R
S
T
U
V
W
X
Y
Z
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Hàm giải mã : x = d
k
(y) = (y-k) mod 26
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE
Chọn khóa k = 3
Bản rõ số: 3 0 8 7 14 2 2 14 13 6 7 4
Với phép mã hóa y = e
k
(x) = (x+k) mod 26 = (x+3) mod 26, ta nhận đƣợc:
Bản mã số: 6 3 11 10 17 5 5 17 16 9 10 7
Bản mã chữ: GDLKRFFRQJKH
Giải mã: từ bản mã chữ ở trên ta chuyển về bản mã số và với phép giải mã x =
d
k
(y) = (y-k) mod 26 = (y-3) mod 26, ta nhận đƣợc lại bản rõ số, sau đó chuyển bản rõ số trở về
bản rõ chữ ban đầu.
Độ an toàn: Độ an toàn của mã dịch chuyển rất thấp. Tập khóa K chỉ có 26 khóa nên việc
phá khóa có thể thực hiện dễ dàng bằng cách thử kiểm tra từng khóa k = 1,2,…,26.
1.5.1.2. Hệ mã hóa thay thế (Hoán vị toàn cục)
Sơ đồ:
Đặt P = C = Z
26
. Bản mã y và bản rõ x Z
26
.
Tập khóa K là tập mọi hoán vị trên Z
26
Với khóa k = п K, tức là một hoán vị trên Z
26
S
T
U
V
W
X
Y
Z
X
N
Y
A
H
P
O
G
Z
Q
W
B
T
S
F
L
R
C
V
M
U
E
Tập khóa K = {(a,b) với a,b Z
26
, UCLN(a,26) = 1}
Với khóa k = (a,b) K ta định nghĩa:
Hàm mã hóa: y = e
k
(x) = (ax+b) mod 26
Hàm giải mã : x = d
k
(y) = a
-1
(y-b) mod 26
Có điều kiện UCLN(a,26) =1 là để bảo đảm có phần tử nghịch đảo a
-1
mod 26 của a, làm
cho thuật toán giải mã d
k
luôn thực hiện đƣợc. Có tất cả (26) = 12 số a Z
26
nguyên tố với 26,
đó là các số: 1,3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 và các số nghịch đảo theo mod26 tƣơng ứng
của chúng là: 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25.
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE
Chọn khóa k = (a,b) = (3,6)
Bản rõ số: x = 3 0 8 7 14 2 2 14 13 6 7 4
Mã hóa theo công thức y = e
k
(x) = (ax + b) mod 26 = (3x+6) mod 26
Bản mã số: 14 6 4 1 22 12 12 22 19 24 1 18
C, dùng để tạo mã
x = D(K", y) - phép biến đổi y
C thành x
P, dùng để giải mã
1.5.2.2. Hệ mã hóa RSA (Rivest - Shamir - Adleman)
a. Ý tƣởng và dữ liệu dùng trong hệ mật mã RSA
Ý tƣởng dựa vào phép biến đổi thuận và ngƣợc nhƣ sau:
y = x
e
(mod n)
x = y
d
(mod n)
d = e
-1
(mod
)(n
)
Dữ liệu gốc:
p, q: hai số nguyên tố lẻ khác nhau
Dữ liệu suy diễn: Từ p và q lần lƣợt tính
n = p*q
)(n
= (p-1)*(q-1)
K = (K', K")
K' = (n, e)
K" = (d)
Mã hoá (lập mã):
y = E(K', x) = x
e
(mod n), x
P
Giải mã: 22
x = D(K", y) = y
d
(mod n), y
C
c. Ví dụ về hệ RSA
Chọn hai số nguyên tố :
p = 3, q= 11
Tính:
n = 33
Zn = {0, 1, 2, , 32}
)(n
= (p-1)(q-1)=20
e = 13
d = 17
3
*8
2
(mod 33)
do
8
3
(mod 33) = 512 (mod 33) = 17
8
2
(mod 33) = 64 (mod 33) = 31
nên
x = (17*17)*(17*17)*(17*31)
do
17*17 (mod 33) = 289 (mod 33) = 25
17*31 (mod 33) = 527 (mod 33) = 32
nên
x = 25*25*32 (mod 33) = 625*32 (mod 33)
= (625 mod 33)*32 (mod 33)
= 31*32 (mod 33) = 992 mod 33 = 2
Vậy:
x = 2
1.6. Các bài toán về an toàn thông tin
Có nhiều bài toán khác nhau về yêu cầu an toàn thông tin tùy theo những tình
huống cụ khác nhau, nhƣng tựu trung có một số bài toán chung nhất mà ta thƣờng gặp
trong thực tiễn là những bài toán sau đây: 23
- Bảo mật: giữ thông tin đƣợc bí mật đối với tất cả mọi ngƣời, trừ một ít ngƣời có
24
mà tốt nhất là tìm ra đƣợc bản rõ gốc của bản mật mã đó. Tình huống thƣờng gặp là bản
thân sơ đồ hệ thống mật mã, kể cả các phép lập mã và giải mã (tức các thuật toán E và D),
không nhất thiết là bí mật, do đó bài toán quy về việc tìm chìa khóa mật mã K, hay chìa
khóa giải mã K’’, nếu hệ mật mã có khóa phi đối xứng. Nhƣ vậy, ta có thể quy ƣớc xem
bài toán thám mã cơ bản là bài toán tìm khóa mật mã K (hay khóa giải mã K‟‟). Để giải
bài toán đó, giả thiết ngƣời thám mã biết thông tin về sơ đồ hệ mật mã đƣợc dùng, kể cả
các phép lập mã và giải mã tổng quát E và D. ngoài ra, ngƣời thám mã có thể biết thêm
một số thông tin khác, tùy theo những thông tin đƣợc biết thêm này mà ta có thể phân loại
bài toán thám mã thành các bài toán cụ thể nhƣ sau:
- 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 một bản mật 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ật mã Y cùng
với bản rõ tƣơng ứng X;
- 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ật mã tƣơng ứng Y. Đ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 bản rõ tƣơng ứng X. Điều này có thể xảy ra khi ngƣời thám mã chiếm
đƣợc tạm thời máy giải mã.
1.7.2. Tính an toàn của một 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óa khăn của bài toán
thám mã khi sử dụng hệ mật mã đó. Ngƣời ta đã đề xuất một số cách hiểu cho khái niệm
an toàn của hệ thống mật mã, để trên cơ sở các cách hiểu đó nghiên cứu tính an toàn của
nhiều hệ mật mã khác nhau, sau đây ta giới thiệu vài cách hiểu thông dụng nhất:
- 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ật mã là an toàn vô điều kiện, hay theo
thuật ngữ của C.Shannon, hệ là bí mật hoàn toàn. Nhƣ vậy, hệ là an toàn vô điều kiện,