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

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

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 (1.42 MB, 65 trang )



ĐẠ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






Hà Nội – 2010


2
MỤC LỤC
LỜI CẢM ƠN Error! Bookmark not defined.
LỜI CAM ĐOAN Error! Bookmark not defined.
MỤC LỤC 2
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 4
DANH MỤC CÁC BẢNG 5
DANH MỤC CÁC HÌNH VẼ 5
Chƣơng 1. GIỚI THIỆU CHUNG VỀ MÃ HÓA THÔNG TIN 8
1.1. Một số thuật ngữ và khái niệm 8
1.1.1. Một số thuật ngữ 8
1.1.2. Vì sao cần mã hóa 10
1.2. Vài nét về lịch sử 10
1.3. Khái niệm hệ mã hóa 14
1.4. Phân loại hệ mã hóa 15
1.4.1. Hệ mã hóa khóa đối xứng 15
1.4.1.1. Đặc điểm của hệ mã hóa khóa đối xứng 16
1.4.1.2. Nơi sử dụng hệ mã hóa khóa đối xứng 16
1.4.2. Hệ mã hóa khóa công khai 16
1.4.2.1. Đặc điểm của Hệ mã hóa khóa công khai 17
1.4.2.2. Nơi sử dụng Hệ mã hóa khóa đối xứng 17
1.5. Một số hệ mã hóa khóa đối xứng và mã hóa khóa công khai 18
1.5.1. Hệ mã hóa đối xứng cổ điển 18

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

3.2.1.2. Ý tƣởng của thuật toán mã hóa 33
3.2.1.3. Thuật toán mã hóa 33
3.2.2. Thuật toán giải mã 34
3.2.2.1. Hàm g(x) trên [0,D) 34
3.2.2.2. Ý tƣởng của thuật toán giải mã 34
3.2.2.3. Thuật toán giải mã 35
3.2.2.4. Chứng minh tính đúng đắn của thuật toán 35
3.2.2.5. Nhận xét về thuật toán giải mã 36
3.2.3. Ví dụ 37
3.3. Thuật toán mã hóa số học cải tiến 39
3.3.1. Thuật toán mã hóa cải tiến 39
3.3.2. Thuật toán giải mã cải tiến 41
3.4. So sánh độ phức tạp 42
3.4.1. Thuật toán mã hóa số học truyền thống 42
3.4.1.1. Thuật toán mã hóa 42
3.4.1.2. Thuật toán giải mã 42
3.4.2. Thuật toán mã hóa số học cải tiến 42
3.4.2.1. Thuật toán mã hóa 42
3.4.2.2. Thuật toán giải mã 42
3.4.3. So sánh độ phức tạp của 2 phƣơng pháp 42
3.6. Một thuật toán cải tiến khác 43
3.6.1. Xác định miền phân bố 43
3.6.2. Thuật toán mã hóa cải tiến 44
3.6.3. Thuật toán giải mã cải tiến 45
3.7. Nghiên cứu tính bảo mật của phƣơng pháp mã hóa số học 45
Chƣơng 4. CÀI ĐẶT VÀ THỬ NGHIỆM 53
4.1. Giới thiệu thƣ viện xử lý số nguyên lớn 53
4.1.1. Cấu trúc của các lớp 53
4.1.2. Bảng luỹ thừa 2 (bảng h) 54
4.2. Thuật toán chuyển đổi 55

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

Public Key Cryptosystem
3
RAC
Randomized Arithmetic Coding
4
RSA
Rivest - Shamir – Adleman
5
SKC
Secret Key Ctyptosystem
6
UCLN
Ƣớc chung lớn nhất





































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

54
Bảng 4.2. Kết quả thử nghiệm 62

DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Mô tả phép mã chuyển vị 11
Hình 1.2 Bảng đĩa chữ cái 11
Hình 1.3 Minh họa mã khối 12
Hình 1.4 Hệ mã tích hợp 13
Hình 1.5 Ví dụ hệ mã tích hợp 13
Hình 2.1 Phép chiếu 1 điểm lên 1 đoạn thẳng 26
Hình 2.2 Phép chiếu 1 đoạn thẳng lên 1 đoạn thẳng 27
Hình 2.3 Chiếu B
1
B
2
lên A
1
A
2
28
Hình 2.4 Chiếu C
1
C
2
lên X
1
X
2
28

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ã

học xuất hiện: chữ ký số, hàm băm, mã đại diện, chứng chỉ số vv. Mật mã học không chỉ
áp dụng cho quân sự mà còn cho các lĩnh vực kinh tế xã hội khác.
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í.
Trong lĩnh vực bảo mật dữ liệu, phƣơng pháp mã hóa số học đƣợc xem là một
trong những phƣơng pháp hay. Tuy nhiên, việc ứng dụng phƣơng pháp này vào thực tế
gặp phải những khó khăn nhất định, bởi tốc độ thực hiện của thuật toán mã hóa và giải mã
chậm, đồng thời độ bảo mật của phƣơng pháp chƣa cao. Luận văn này tập trung đi sâu
vào nghiên cứu phƣơng pháp mã hóa số học và các vấn đề liên quan. Luận văn đƣa ra một
số cải tiến trong thuật toán mã hóa và giải mã nhằm tăng tốc độ thực hiện và xây dựng mô
hình mã hóa dựa trên ý tƣởng của lƣợc đồ RAC (do Marco Grangetto đề xuất) để nâng
cao độ bảo mật của phƣơng pháp.
Ngoài phần mở đầu và kết luận, kết cấu của luận văn gồm 4 chƣơng:

 Chƣơng 1 “Giới thiệu chung về mã hóa thông tin” trình bày những khái
niệm cơ bản về mã hóa thông tin.


7
 Chƣơng 2 “Cơ sở toán học của phương pháp mã hóa số học” trình bày cơ
sở toán học cho phƣơng pháp mã hóa số học.
 Chƣơng 3 “Cải tiến phương pháp mã hóa số học” trình bày lịch sử ra đời
của phƣơng pháp, thuật toán mã hóa số học truyền thống. Đặc biệt trong
chƣơng này đề xuất một số cải tiến nhằm tăng tốc độ thực hiện của thuật toán
bằng việc thay thế các phép nhân, chia bởi các phép dịch chuyển bít và đƣa ra
một số nhận xét về độ an toàn của phƣơng pháp. Dựa vào mô hình RAC của
Grangetto [15] đƣa ra một mô hình cải tiến nhằm nâng cao tính bảo mật của
phƣơng pháp mã hóa số học.

 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….

Các nội dung của chương này được tổng hợp từ các tài liệu [5]-[9].
1.1. Một số thuật ngữ và khái niệm
1.1.1. Một số thuật ngữ
Văn bản (plaintext) là một thông báo gốc cần chuyển, đƣợc ghi bằng hình ảnh, âm
thanh, chữ số, chữ viết, Về sau, khi đƣa ra các ví dụ, ta thƣờng xem các văn bản đƣợc
viết bằng chữ viết, hoặc bằng chữ số. Tuy nhiên, ngày nay mọi tín hiệu (âm thanh, hình
ảnh ) đều có thể đƣợc số hóa (thành các xâu ký tự số), cho nên việc nghiên cứu trên các
văn bản số không hạn chế các ứng dụng đa dạng của nó.
Mã hóa (encrytion) là việc "ngụy trang" văn bản (thông tin nói chung) sang một
dạng khác để cho những ngƣời "ngoài cuộc" không thể đọc đƣợc, phục vụ cho nhu cầu
trao đổi thông tin, dữ liệu và các giao dịch tài chính, thƣơng mại, Quá trình "ngụy trang"
văn bản gọi là lập mã còn quá trình "khôi phục" lại văn bản nguồn (từ văn bản ngụy
trang) gọi là giải mã. Nguyên tắc chung của mã hóa là việc giải mã phải rất dễ dàng với
"ngƣời trong cuộc", nhƣng rất khó khăn (thậm chí là không thực hiện đƣợc) đối với
"ngƣời ngoài cuộc". Văn bản gốc (trƣớc khi mã hóa) thƣờng đƣợc ký hiệu là PT (Plain
Text), hay đơn giản là P. Văn bản mã (đã đƣợc cải trang) thƣờng đƣợc ký hiệu là CT
(Ciphertext), hay đơn giản là C.
Hệ mã (Cryptosystem) là một phƣơng pháp ngụy trang văn bản. Nghệ thuật tạo ra
và sử dụng các hệ mã là thuật mã hóa hay mật mã học (Cryptography).
Phân tích mã (Cryptanalysis), hay thám mã, là nghệ thuật phá các hệ mã (nhìn
xuyên qua các phƣơng pháp ngụy trang).


9
Công nghệ mã (Cryptology) là việc nghiên cứu tổng hợp cả cryptography và
cryptanalysis.
Lập mã (encrypt) là việc biến văn bản nguồn thành văn bản mã.
Giải mã (decrypt) là việc đƣa văn bản đã mã hóa trở về dạng văn bản nguồn.
Định mã (encode/decode) là việc định ra phép tƣơng ứng giữa các chữ và số (việc
này không bao giờ đƣợc xem là bí mật, vì máy tính ngày nay dễ dàng tìm ra phép tƣơng

ứ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í

mật, thƣờng đƣợc gọi là chìa khóa riêng
1.1.2. Vì sao cần mã hóa
Đó là một câu hỏi dễ trả lời, bởi vì trong mọi hoạt động của con ngƣời, nhu cầu
trao đổi thông tin mật giữa những thành viên thuộc một nhóm nào đó với nhau là hết sức
cần thiết. Tuy nhiên, để thực sự thấy rõ yêu cầu cấp bách của mã hóa trong thời đại ngày
nay, cần nhấn mạnh rằng với các phƣơng tiện kỹ thuật hiện đại việc giữ giữ gìn bí mật
ngày càng trở nên hết sức khó khăn. Các hình ảnh trên mặt đất, các cuộc đàm thoại hữu
tuyến và vô tuyến, các thông tin đƣợc truyền qua mạng internet, tất cả đều có thể dễ
dàng thu đƣợc nhờ các thiết bị điện tử trên mặt đất hoặc từ vệ tinh. Vì thế, phƣơng pháp
thông dụng nhất để giữ gìn bí mật thông tin là mã hóa chúng bằng một hệ mã nào đó
trƣớc khi truyền đi.
Dĩ nhiên, việc mã hóa thông tin trƣớc khi truyền đi và việc giải mã các thông tin
nhận đƣợc sẽ tạo nên một số khó khăn: giảm tốc độ truyền tin, tăng chi phí Một hệ mã
lý tƣởng là một hệ mã bảo đảm đƣợc các yêu câu: thời gian mã hóa và giải mã nhanh, độ
bảo mật cao (gây khó khăn tối đa cho ngƣời thám mã). Các yêu cầu đó luôn mâu thuẫn
nhau, và ngƣời sử dụng cần hiểu rõ công nghệ mã hóa để có thể lựa chọn hệ mã thích hợp
cho từng việc và mục đích.
1.2. Vài nét về lịch sử
Ngƣời Hi Lạp đã sử dụng phép mã chuyển vị từ 400 năm trƣớc công nguyên.
Ngƣời ta dùng một dải băng dài và mảnh quấn quanh một khối hình trụ tròn xoay rồi viết
chữ lên đó theo cách thức thông thƣờng (từ trái sang phải và từ trên xuống dƣới). Mẩu tin


11
đƣợc chuyển đi dƣới dạng dải băng và chỉ có thể đọc ra đƣợc khi biết đƣợc bán kính của
thiết diện khối trụ (và quấn lại dải băng quanh khối trụ nhƣ khi đã viết lên - hình 1.1).






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

xuống dƣới). Thí dụ, với chìa khóa là PALMERSTON thì bảng đƣợc xếp nhƣ sau:
P
A
L
M
E
R
S
T
O
N
B
C
D
F
G
H
IJ
K
Q
U
V
W
X
Y
Z

Muốn mã hóa một khối (cặp 2 chữ) nào đó, không ở trên cùng một dòng hay một
cột, ta tìm cách thiết lập một hộp (chữ nhật) với 2 đỉnh là 2 chữ trong khối đó, còn 2 đỉnh
còn lại cho ta cặp chữ là kết quả mã của cặp chữ nguồn, thí dụ cặp chữ SF sẽ xác định hộp

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

5
Hình 1.3 Minh họa mã khối


13
F
Q
7
J
P
G
X
G
E
V
Y
3
A
N
V
8
O
D
H
0
2
X
U
4
I

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

V
F
X
A
D
X
V
D
G
X
F
G
V
G
G
A
A
X
G

Viết các chữ cái theo từng cột (với thứ tự xác định theo chỉ số cột). Thí dụ, cột thứ
nhất gồm các chữ DXGF sẽ đƣợc viết đầu tiên, và cột thứ 2 gồm các chữ FFDG sẽ đƣợc
viết tiếp theo, v.v Tóm lại, ta đƣợc văn bản sau khi mã hóa là
DXGXFFDGGXGGVVVGVGFGGDFAAAXA
Trong Đại chiến Thế giới lần thứ II, ngƣời ta thấy rằng hệ mã tích hợp (luân phiên
giữa thay thế và chuyển vị) là rất an toàn. Tuy nhiên, hệ mã ADFGVX có những điểm yếu
ở chỗ chỉ có một vòng (phép thay thế và chuyển vị chỉ đƣợc thực hiện một lần) và phép
Hình 1.4 Hệ mã tích hợp
Hình 1.5 Ví dụ hệ mã tích hợp



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ã.



15
Với khóa lập mã ke  K, có hàm lập mã e
ke
 E, e
ke
: P C
Với khóa giải mã kd  K, có hàm giải mã d
kd
 D, d
kd
: C

P
sao cho d
kd
(e
ke
(T)) = T,  T  P.
Ở đây T đƣợc gọi là bản rõ, e
ke
(T) đƣợc gọi là bản mã.
Ngƣời gửi G   e
ke
(T)   Ngƣời nhận N
(có khóa lập mã ke) (có khóa giải mã kd)

Tin tặc có thể trộm bản mã e
ke

(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,

vì phải giữ bí mật cả 2 khóa. Trƣớc khi dùng Hệ mã hóa khóa đối xứng, ngƣời gửi và


16
ngƣời nhận phải thoả thuận thuật toán mã hóa và một khoá chung (lập mã hay giải mã),
khoá này phải đƣợc giữ bí mật. Độ an toàn của Hệ mã hóa loại này phụ thuộc vào khoá.
1.4.1.1. Đặc điểm của hệ mã hóa khóa đối xứng
Ƣu điểm:
- Hệ mã hóa khóa đối xứng có tốc độ mã hóa và giải mã nhanh hơn Hệ mã hóa
khóa công khai.
Hạn chế:
- Mã hóa khóa đối xứng chƣa thật an toàn với lý do đơn giản sau: ngƣời mã hóa và
ngƣời giải mã phải có "chung" một khóa. Khóa phải đƣợc giữ bí mật tuyệt đối, vì biết
khóa này "dễ" xác định đƣợc khóa kia và ngƣợc lại.
- Vấn đề thỏa thuận khóa và quản lý khóa chung là khó khăn và phức tạp. Ngƣời
gửi và ngƣời nhận phải luôn thống nhất với nhau về khóa. Việc thay đổi khóa là rất khó
và dễ bị lộ. Khóa chung phải đƣợc gửi cho nhau trên kênh an toàn. Mặt khác khi hai
ngƣời (lập mã, giải mã) cùng biết "chung" một bí mật, thì càng khó giữ bí mật.
1.4.1.2. Nơi sử dụng hệ mã hóa khóa đối xứng
Hệ mã hóa khóa đối xứng thƣờng đƣợc sử dụng trong môi trƣờng mà khoá chung
có thể dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một mạng nội bộ. Hệ mã hóa
khóa đối xứng thƣờng dùng để mã hóa những bản tin lớn, vì tốc độ mã hóa và giải mã
nhanh hơn Hệ mã hóa khóa công khai.
1.4.2. Hệ mã hóa khóa công khai
Hệ mã hóa khóa phi đối xứng là Hệ mã hóa có khóa lập mã và khóa giải mã khác
nhau (ke ≠ kd), biết đƣợc khóa này cũng "khó" tính đƣợc khóa kia. Hệ mã hóa này còn
đƣợc gọi là Hệ mã hóa khóa công khai vì: khóa lập mã cho công khai (gọi là khóa công
khai - public key), khóa giải mã giữ bí mật còn gọi là khóa riêng (private key) hay khóa bí
mật. Một ngƣời bất kỳ có thể dùng khóa công khai để mã hóa bản tin, nhƣng chỉ ngƣời
nào có đúng khóa giải mã thì mới có khả năng đọc đƣợc bản rõ. Hệ mã hóa khóa cô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

khai
1.5.1. Hệ mã hóa đối xứng cổ điển
Khái niệm: Hệ mã hóa đối xứng đã đƣợc dùng từ rất sớm, nên còn gọi là Hệ mã
hóa đối xứng - cổ điển (gọi ngắn gọn là Hệ mã hóa đối xứng cổ điển). Bản mã và bản rõ
là dãy các ký tự Latin.
Quá trình lập mã đƣợc thực hiện nhƣ sau:
1. Nhập bản rõ ký tự: Rõ_chữ 2. Chuyển Rõ_chữ thành Rõ_số
3. Chuyển Rõ_số thành Mã_số 4. Chuyển Mã_số thành Mã_chữ
Quá trình giải mã thực hiện theo các bƣớc sau:
1. Nhập bản mã ký tự: Mã_chữ 2. Chuyễn Mã_chữ thành Mã_số
3. Chuyển Mã_số thành Rõ_số 4. Chuyễn Rõ_số thành Rõ_chữ
Để chuyển từ Chữ sang Số hay ngƣợc lại từ Số trở về Chữ, ngƣời ta theo một quy
ƣớc nào đó, ví dụ chữ cái thay bằng số theo modulo 26 nhƣ sau:

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P

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

20
21
22
23
24
25

Để thực hiện mã hóa hay giải mã với các "số", ngƣời ta dùng các phép toán số học
theo modulo 26.
Các hệ mã hóa cổ điển:
Mã hóa cổ điển gồm nhiều hệ, ví dụ:
Hệ mã hóa dịch chuyển: Khóa có 1 “chìa”. (Thể hiện bằng 1 giá trị).
Hệ mã Affine: Khóa có 2 “chìa”. (Thể hiện bằng 2 giá trị).
Hệ mã hóa thay thế: Khóa có 26 “chìa”. (Thể hiện bằng 26 giá trị).
Hệ mã hóa VIGENERE: Khóa có m “chìa”. (Thể hiện bằng m giá trị).


19
Hệ mã hóa HILL: Khóa có ma trận “chìa” (chùm chìa khóa).
1.5.1.1. Hệ mã hóa dịch chuyển
Sơ đồ:
Đặt P = C = K = Z
26
. Bản mã y và bản rõ x  Z
26
.
Với khóa k  K, ta định nghĩa:
Hàm mã hóa: y = e
k
(x) = (x+k) mod 26

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

ta định nghĩa
Hàm mã hóa: y = e
п
(x) = п(x)
Hàm giải mã : x = d
п
(y) = п
-1
(y)
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE
Chọn khóa k = п là hoán vị sau:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R

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

K
J
D
I



20
Mã hóa theo công thức y = e
п
(x) = п(x) ta đƣợc bản mã chữ
Bản mã chữ: AXZGFYYFSOSOGH
Giải mã theo công thức x = d
п
(y) = п
-1
(y) ta nhận lại đƣợc bản rõ ban đầu.
Độ an toàn: Hệ mã hóa thay thế có số khóa có thể bằng số các phép hoán vị trên tập Z
26
,
tức là 26! khóa, đó là một số rất lớn. Do đó, việc duyệt lần lƣợt tất cả các khóa có thể để thám mã
là không thực tế, ngay cả dùng máy tính. Tuy vậy, có những phƣơng pháp thám mã khác hiệu quả
hơn, làm cho hệ mã hóa thay thế không thể đƣợc xem là an toàn.
1.5.1.3. Hệ mã Affine
Sơ đồ:
Đặt P = C = Z
26
. Bản mã y và bản rõ x  Z
26
.

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

Bản mã chữ: OGEBWMMWTYBS
Giải mã theo công thức: x = d
k
(y) = a
-1
(y-b) mod 26
= 3
-1
(y-6) mod 26 = 9(y-6) mod 26
Độ an toàn: Vì có 12 số thuộc Z
26
nguyên tố với 26, nên số các khóa có thể có (do đó, số
các hệ mật mã affine) bằng 12×26 = 312, một con số không lớn lắm nếu ta sử dụng máy tính để
thực hiện việc thám mã bằng cách duyệt lần lƣợt tất cả các khóa có thể, nhƣ vậy, mã affine cũng
không đƣợc xem là mã an toàn.


21
1.5.2. Hệ mã hóa khóa công khai
1.5.2.1. Sơ đồ chung hệ mã hóa khóa công khai
S = {P, C, K, E, D}
P - tập ký tự của bản rõ
C - tập ký tự của bản mã
K = (K', K")
K' - tập các giá trị dùng làm khoá công khai
K" - tập các giá trị dùng làm khoá bí mật
y = E(K', x) - phép biến đổi x

P thành y


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)

e : 1 < e <
)(n

, uscln(e,
)(n

) = 1
d : nghịch đảo e theo mod
)(n


d*e = 1 mod(
)(n

)
Nhận xét:
)(n

là bậc của Z
*
n
. Mọi x nguyên tố với n đều có:
x
)(n

= 1 (mod n)
b. Sơ đồ hệ mật mã RSA
S = {P, C, K, E, D}

P = C = Zn

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

Mã hoá: Giả sử với bản rõ
x= 2
thì bản mã:
y = 2
13
(mod 33)
= 2
6
* 2
7
(mod 33)
= 64*128 (mod 33)
= 31*29 (mod 33)
= 899 (mod 33) = 8
y = 8
Giải mã:
x = y
17
= 8
17
(mod 33)
x = 8
3
*8
3
*8
3
*8
3
*8

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ó

thẩm quyền đƣợc đọc, biết thông tin.
- Toàn vẹn thông tin: bảo đảm thông tin không bị thay đổi hay xuyên tạc bởi những
kẻ không có thẩm quyền hoặc bằng những phƣơng tiện không đƣợc phép.
- Nhận thực một thực thể: xác nhận danh tính của một thực thể chẳng hạn một
ngƣời, một máy tính cuối trong mạng, một thẻ tín dụng….
- Nhận thực một thông báo: xác nhận nguồn gốc của một thông báo đƣợc gửi đến.
- Chữ ký: một cách để gắn kết một thông tin với một thực thể, thƣờng dùng trong
bài toán nhận thực một thông báo cũng nhƣ trong nhiều bài toán nhận thực khác.
- Ủy quyển: chuyển cho một thực thể khác quyền đƣợc đại diện hoặc đƣợc làm một
việc gì đó.
- Cấp chứng chỉ: cấp một sự xác nhận thông tin bởi một thực thể đƣợc tín nhiệm.
- Báo nhận: xác nhận một thông báo đã đƣợc nhận hay một dịch vụ đã đƣợc thực
hiện.
- Làm chứng: kiểm thử việc tồn tại một thông tin ở một thực thể khác với ngƣời
chủ sở hữu thông tin đó.
- Không chối bỏ đƣợc: ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết đã
có (thí dụ đã ký vào một văn bản).
- Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến trình nào
đó (thƣờng dùng trong gia dịch điện tử).
- Thu hồi: rút lại một giấy chứng chỉ hay ủy quyền dã cấp.
- v.v…
Cở sở của các giải pháp cho các bài toán kể trên là các phƣơng pháp mật mã, đặc
biết là mật mã khóa công khai.
1.7. Thám mã và tính an toàn của các hệ mật mã
1.7.1. Vấn đề thám mã
Mật mã đƣợc sử dụng trƣớc hết là để bảo đảm tính bí mật cho các thông tin đƣợc
trao đổi, và do đó bài toán quan trọng nhấ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 (trên các kênh truyền tin công cộng)
ngƣời thám mã phải phát hiện đƣợc nội dung thông tin bị che giấu trong bản mật mã đó,



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,

nếu độ bất định về bản rõ sau khi ngƣời thám mã có đƣợc các thông tin (về bản mã) bằng


25
độ bất định về bản rõ trƣớc đó. Tính an toàn vô điều kiện đã đƣợc nghiên cứu cho một số
hệ mật mã khóa đối xứng mà ta sẽ trình bày trong chƣơng 3.
- An toàn được chứng minh: một hệ thống mật mã đƣợ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, thí dụ bài toán phân tích một số nguyên thành
tích các thừa số nguyên tố, bài toán tìm lôgarit rời rạc theo một mô đun nguyên tố, v.v
(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ật mã đƣợc xem là an toàn (về mặt) tính toán, nếu 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 toán của một kẻ thù giả định. An toàn theo nghĩa
này, nói theo ngôn ngữ của lý thuyết về độ phức tạp tính toán, là bao hàm cả khái niệm an
toàn theo nghĩa “đƣợc chứng minh” nói trên.
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à các hệ thống mật mã khóa công
khai, ta sẽ trình bày riêng cho từng hệ mật mã đƣợc trình bày trong các chƣơng về sau. Ở
mục 1.4 ta đã giới thiệu một số bài toán về an toàn thông tin nói chung. Các bài toán đó
đều có hạt nhân là tính an toàn của một hệ mật mã nào đó, cho nên việc nghiên cứu tính
an toàn của các hệ mật mã cũng góp phần giải quyết các vấn đề an toàn thông tin kể trên.


×