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

nâng cao tốc độ tính toán của phương pháp mã hóa khóa công khai rabin

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.49 MB, 78 trang )


Số hóa bởi Trung tâm Học liệu


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






LÊ THỊ HUYỀN



NÂNG CAO TỐC ĐỘ TÍNH TOÁN CỦA PHƢƠNG PHÁP
MÃ HÓA KHÓA CÔNG KHAI RABIN





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









Thái Nguyên - Năm 2014

Số hóa bởi Trung tâm Học liệu


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




LÊ THỊ HUYỀN




NÂNG CAO TỐC ĐỘ TÍNH TOÁN CỦA PHƢƠNG PHÁP
MÃ HÓA KHOÁ CÔNG KHAI RABIN

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




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

NGƯỜI HƯỚNG DẪN KHOA HỌC




PGS.TS. Phạm Văn Ất

Thái Nguyên - Năm 2014
i
Số hóa bởi Trung tâm Học liệu

LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn “Nâng cao tốc độ tính toán của phƣơng
pháp mã hóa khóa công khai Rabin” là công trình nghiên cứu của tôi, dưới sự
hướng dẫn khoa học của PGS.TS Phạm Văn Ất, tham khảo nguồn tài liệu đã được
chỉ rõ trong trích dẫn và danh mục tài liệu tham khảo. Các nội dung công bố và kết
quả trình bày trong luận văn này là trung thực và chưa từng được ai công bố trong
bất cứ công trình nào.


Học viên thực hiện



Lê Thị Huyền

ii
Số hóa bởi Trung tâm Học liệu

MỤC LỤC
MỞ ĐẦU 1
Chƣơng 1: KHÁI LƢỢC VỀ MẬT MÃ VÀ CƠ SỞ TOÁN HỌC CỦA MẬT
MÃ 4

1.1. Sơ lƣợc lịch sử mật mã 4
1.2. Các hệ thống mật mã 5
1.2.1. Các bài toán về an toàn thông tin 5
1.2.2. Mật mã khóa đối xứng và mật mã khóa công khai 6
1.2.3. Thám mã và tính an toàn của các hệ mật mã 9
1.3. Một số hệ mật mã khóa công khai 10
1.3.1. Sự ra đời của hệ mật mã khóa công khai 10
1.3.2. Một số hệ mật mã khóa công khai 11
1.4 Cơ sở toán học của lý thuyết mật mã 21
1.4.1 Độ phức tạp của thuật toán 21
1.4.2. Phương pháp sinh số nguyên tố 24
1.4.3.Thuật toán Euclid 33
1.4.4. Định lý số dư Trung Quốc 34
Chƣơng 2: MỘT SỐ SƠ ĐỒ CẢI TIẾN NÂNG CAO TỐC ĐỘ TÍNH TOÁN
CỦA PHƢƠNG PHÁP MÃ HÓA KHÓA CÔNG KHAI RABIN 38
2.1. Một số khái niệm và định nghĩa 38
2.1.1. Ký hiệu Legendre 38
2.1.2. Luật thuận nghịch bình phương 44
2.1.3. Kí hiệu Jacobi 47
2.1.4. Phương trình Rabin 51
2.2. Cải tiến của Shimada 51
2.2.1. Quy trình mã hóa 51
2.2.2. Quy trình giải mã 52
2.2.3. Tính đúng đắn của thuật toán 53
2.3. Sơ đồ cải tiến của Chen-Tsu 55
iii
Số hóa bởi Trung tâm Học liệu

2.3.1 Áp dụng định lý số dƣ Trung Quốc giải phƣơng trình Rabin 56
2.3.2. Thuật toán giải mã 58

2.4. Cải tiến của THA 59
2.4.1 Một số khái niệm, định nghĩa 60
2.4.2 Thuật toán mã hóa 61
2.4.3 Thuật toán giải mã 62
2.4.4 Chứng minh tính đúng đắn 62
2.5. So sánh các sơ đồ cải tiến phƣơng pháp mã hóa khóa công khai Rabin 64
2.5.1. Độ phức tạp tính toán 64
2.5.2. Mức độ bảo mật 65
2.5.3. Phạm vi ứng dụng 65
Chƣơng 3: PHẦN MỀM THỬ NGHIỆM 66
3.1. Sinh và kiểm tra số nguyên tố làm khóa 68
3.2. Mã hóa theo sơ đồ cải tiến của Shimada 67
3.3. Giải mã theo sơ đồ cải tiến của Shimada 68
3.4. Kết quả thực nghiệm 68
KẾT LUẬN VÀ KIẾN NGHỊ 70
TÀI LIỆU THAM KHẢO 71

iv
Số hóa bởi Trung tâm Học liệu

DANH MỤC BẢNG
Trang
Bảng 1.1. Bảng chữ cái và chỉ số tương ứng Error! Bookmark not defined.
Bảng 2.1: Độ phức tạp tính toán của các thuật toán giải mã 65
Bảng 3.1: Thời gian thực hiện các thuật toán giải mã 69

v
Số hóa bởi Trung tâm Học liệu

DANH MỤC HÌNH VẼ

Trang
Hình 3.1: Sinh số nguyên tố và tạo khóa 66
Hình 3.2: Kiểm tra số nguyên tố 67
Hình 3.3: Mã hóa theo sơ đồ cải tiến của Shimada 67
Hình 3.4: Giải mã theo sơ đồ cải tiến của Shimada 68
1
Số hóa bởi Trung tâm Học liệu

MỞ ĐẦU
Hiện nay, ở tất cả các nước phát triển cũng như đang phát triển, mạng máy
tính đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã
hội, và một khi nó trở thành phương tiện điều hành các hệ thống thì nhu cầu bảo
mật an toàn thông tin được đặt lên hàng đầu. Nhu cầu này không chỉ có ở các bộ
máy an ninh, quốc phòng, quản lý nhà nước, mà đã trở thành bức thiết trong nhiều
hoạt động kinh tế xã hội: tài chính, ngân hàng, thương mại, và thậm chí trong cả
một số hoạt động thường ngày của người dân (thư điện tử, thanh toán, tín dụng, ).
Bởi vậy chúng ta phải làm sao đảm bảo được tính trong suốt của thông tin.
Nếu như bạn gửi thư cho một người bạn nhưng lại bị một kẻ lạ mặt nào đó
xem trộm và sửa đổi nội dung bức thư trái với chủ ý của bạn, tệ hại hơn nữa là khi
bạn ký một hợp đồng, gửi thông qua mạng và lại bị kẻ xấu sửa đổi những điều
khoản trong đó, và sẽ còn nhiều điều tương tự như vậy nữa Hậu quả sẽ như thế
nào? Bạn bị người khác hiểu nhầm vì nội dung bức thư bị thay đổi, còn hợp đồng
bị phá vỡ bởi những điều khoản đã không còn nguyên vẹn. Trước thực tế đó, yêu
cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ do sự
xâm nhập của kẻ thứ ba.
Mã hoá thông tin là một trong các phương pháp đảm bảo được tính trong
suốt của thông tin. Nó có thể giải quyết các vấn đề rắc rối ở trên giúp bạn, một khi
thông tin đã được mã hoá và gửi đi thì kẻ xấu rất khó hoặc không thể giải mã được.
Một số giải thuật mã hóa đã được xây dựng nhằm đảm bảo tính an toàn dữ
liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng, như các giải thuật

mã hóa đối xứng (DES), giải thuật mã hóa công khai.
Trong số các hệ mật mã hóa công khai thì hệ mật RSA thường được dùng
nhiều nhất, kế đến là hệ mã Rabin. Hai hệ này có độ an toàn như nhau. Hệ Rabin có
ưu điểm là tốc độ mã hóa nhanh hơn RSA, nhưng nhược điểm là việc giải mã không
cho một lời giải duy nhất và một trong những lời giải đó là bản rõ cần tìm. Trong
những năm gần đây đã có một số cải tiến để khắc phục nhược điểm này của hệ mật
Rabin, nhưng hầu hết các sách và tài liệu tiếng Việt vẫn trình bày phương pháp
2
Số hóa bởi Trung tâm Học liệu

Rabin gốc. Chính vì vậy, em chọn đề tài: “Nâng cao tốc độ tính toán của phương
pháp mã hóa khóa công khai Rabin”.
Nội dung chính của luận văn:
Trình bày thuật toán kiểm tra và sinh số nguyên tố. Nhằm tìm ra các số nguyên
tố làm khóa cho các hệ mật mã khóa công khai.
Nghiên cứu hướng cải tiến phương pháp mã hóa khóa công khai Rabin nhằm
nâng cao tốc độ xử lý.
Luận văn bao gồm 3 chương:
Chương 1: Giới thiệu chung về mật mã và cơ sở toán học của lý thuyết mật mã
Nhằm giới thiệu lịch sử của mật mã, giới thiệu các hệ thống mật mã, đưa ra
một số hệ mật mã khóa công khai.
Trình bày các kiến thức toán học làm nền tảng cho các nội dung chính trong
luận văn như: Độ phức tạp của thuật toán, thuật toán Euclid, thuật toán Euclid mở
rộng, số nguyên tố và các phương pháp kiểm tra số nguyên tố.
Chương 2: Một số sơ đồ cải tiến nâng cao tốc độ tính toán phương pháp mã
hóa khóa công khai Rabin
Trình bày ký hiệu Legendre, Jacobi, định lí số dư Trung Quốc
Trình bày một số cải tiến phương pháp mã hóa khóa công khai Rabin nâng
cao tốc độ xử lý: Cải tiến của Shimada, Chen-Tsu, THA.
Chương 3: Cài đặt và thực nghiệm

Cài đặt chương trình và kết quả thực nghiệm một số sơ đồ cải tiến phương
pháp mã hóa khóa công khai Rabin.
Do thời gian và trình độ còn hạn chế nên luận văn khó tránh khỏi những thiếu
sót, kính mong nhận được sự đóng góp, chỉ bảo của các thầy giáo, cô giáo và các
bạn đồng nghiệp.
Cuối cùng, em xin chân thành bày tỏ lòng biết ơn sâu sắc đến thầy giáo PGS.
TS. Phạm Văn Ất – Đại học Giao thông Vận tải đã tận tình hướng dẫn, chỉ bảo,
giúp đỡ, khích lệ em trong suốt quá trình làm luận văn. Đồng thời, em xin chân
thành cảm ơn các thầy cô trong Phòng Sau Đại học – Trường Đại học Công nghệ
3
Số hóa bởi Trung tâm Học liệu

thông tin và Truyền thông, các thầy cô trong Viện Công nghệ thông tin – Viện Khoa
học và Công nghệ Việt Nam đã tạo điều kiện thuận lợi, giúp đỡ em hoàn thành luận
văn này.
Thái Nguyên, tháng 09 năm 2014
Học viên thực hiện

Lê Thị Huyền























4
Số hóa bởi Trung tâm Học liệu

Chƣơng 1
KHÁI LƢỢC VỀ MẬT MÃ VÀ CƠ SỞ TOÁN HỌC CỦA MẬT MÃ
Tóm tắt chương: Trong chương này, luận văn giới thiệu tổng quan về mật mã
bao gồm lịch sử mật mã, các hệ thống mật mã: mật mã khóa đối xứng, mật mã khóa
công khai, một số hệ mã hóa khóa công khai như RSA, Elgamal, Rabin. Độ phức
tạp tính toán và phương pháp sinh số nguyên tố.
1.1. Sơ lƣợc lịch sử mật mã
Mật mã học là một ngành có lịch sử từ hàng nghìn năm nay, lịch sử mật mã
học chính là lịch sử của những phương pháp mật mã học cổ điển - các phương pháp
mật mã hóa với bút và giấy, đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản.
Vào đầu thế kỷ 20, sự xuất hiện của các cơ cấu cơ khí và điện cơ, chẳng hạn
như máy Enigma, đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho việc mật
mã hóa. Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính trong những
thập kỷ gần đây đã tạo điều kiện để mật mã học phát triển nhảy vọt lên một tầm cao
mới.
Sự phát triển của mật mã học luôn luôn đi kèm với sự phát triển của các kỹ

thuật phá mã (hay thám mã). Các phát hiện và ứng dụng của các kỹ thuật phá mã
trong một số trường hợp đã có ảnh hưởng đáng kể đến các sự kiện lịch sử. Một vài
sự kiện đáng ghi nhớ bao gồm việc phát hiện ra bức điện Zimmermann khiến Hoa
Kỳ tham gia Thế chiến I và việc phá mã thành công hệ thống mật mã của Đức Quốc
xã góp phần làm đẩy nhanh thời điểm kết thúc thế chiến II.
Tại Ấn Độ, mật mã học cũng khá nổi tiếng. Trong cuốn sách Kama Sutra,
mật mã học được xem là cách những người yêu nhau trao đổi thông tin mà không bị
phát hiện.
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 đượ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ụ.
5
Số hóa bởi Trung tâm Học liệu

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.
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óa công khai, vào cuối những năm 70 của thế kỷ vừa

qua, đã lôi cuốn theo sự phát triển của một số bộ môn của toán học và tin học.
1.2. Các hệ thống mật mã
1.2.1. 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ụ thể khác nhau, nhưng tập trung có một số bài toán chung nhất thường gặp
trong thực tiễn là những bài toán sau đây:
- 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
6
Số hóa bởi Trung tâm Học liệu

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ó (ví 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 giao dịch điện tử).
- Thu hồi: rút lại một giấy chứng chỉ hay ủy quyền đã 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.2.2. Mật mã khóa đối xứng và mật mã khóa công khai
Giả sử một người gửi A muốn gửi đến một người nhận B một văn bản (chẳng
hạn, một bức thư) p, để bảo mật A lập cho p một bản mật mã c, và thay cho việc gửi
p, A gửi cho B bản mật mã c, B nhận được c và “giải mã” c để lại được văn bản p
như A định gửi. Để A biến p thành c và B biến ngược lại c thành p, A và B phải
thỏa thuận trước với nhau các thuật toán lập mã và giải mã, và đặc biệt một khóa
mật mã chung K để thực hiện các thuật toán đó. Người ngoài không biết các thông
tin đó (đặc biệt, không biết khóa K), cho dù có lấy trộm được c trên kênh truyền
thông công cộng, cũng không thể tìm được văn bản p mà hai người A, B muốn gửi
cho nhau. Sau đây ta sẽ cho một định nghĩa hình thức về sơ đồ mật mã và cách thức
thực hiện để lập mật mã và giải mật mã.
7
Số hóa bởi Trung tâm Học liệu

Định nghĩa: Một sơ đồ hệ thống mật mã là một bộ năm
S = ( P, C, K, E, D) thỏa mãn các điều kiện sau đây:
P là một tập hữu hạn các ký tự bản rõ
C là một tập hữu hạn các ký tự bản mã
K là một tập hữu hạn các khóa
E là một ánh xạ từ K P vào C được gọi là phép lập mật mã, và D là một
ánh xạ từ K C vào P, được gọi là phép giải mã. Với mỗi k K ta định nghĩa e
k
:
P→ C, d

k
: C →P là hai hàm cho bởi:
x P: e
k
(x) = E(K,x); y C: d
k
(y) = D(K, y).
e
k
và d
k
được gọi lần lượt là hàm lập mã và hàm giải mã ứng với khóa mật
mã K. Các hàm đó phải thỏa mãn hệ thức:
x P: d
k
(e
k
(x))= x.
Về sau, để thuận tiện ta sẽ gọi một danh sách trên thỏa mãn các tính chất kể
trên là một sơ đồ hệ thống mật mã, còn khi đã chọn cố định một khóa K, thì danh
sách (P, C, e
k
, d
k
) là một hệ mật mã thuộc sơ đồ đó.
Trong định nghĩa này, phép lập mật mã (giải mã) được định nghĩa cho từng
ký tự bản rõ (bản mã). Trong thực tế, bản rõ của một thông báo thường là một dãy
các ký tự bản mã, tức là phần tử của tập C*, việc mở rộng các hàm e
k
và d

k
lên các
miền tương ứng P* và C* để được các thuật toán lập mật mã và giải mã dùng trong
thực tế sẽ được trình bày sau. Các tập ký tự bản rõ và bản mã thường dùng là các
tập ký tự của ngôn ngữ thông thường như tiếng Việt, tiếng Anh (ký hiệu tập ký tự
tiếng Anh là A tức A = {a, b, c, , x, y, z } gồm 26 ký tự; tập ký tự nhị phân B chỉ
gồm hai ký tự 0 và l; tập các số nguyên không âm bé hơn một số n nào đó (ký hiệu
tập này là Z
n
tức Z
n
= {0, 1, 2, , n-1}). Chú ý rằng có thể xem B = Z
2
. Để thuận
tiện, cũng thường đồng nhất tập ký tự tiếng Anh với tập gồm 26 số nguyên không
âm đầu tiên Z
26
= {0, 1, 2, 24, 25} với sự tương ứng sau đây:
8
Số hóa bởi Trung tâm Học liệu


a
b
c
d
e
f
g
h

i
j
k
l
m
0
1
2
3
4
5
6
7
8
9
10
1
12
n
o
p
q
r
s
t
u
v
w
x
y

z
13
14
15
16
17
18
19
20
21
22
23
24
25
Bảng 1.1. Bảng chữ cái và chỉ số tương ứng
Đôi khi ta cũng dùng với tư cách tập ký tự bản rõ hay bản mã là các tập tích
của các tập nói trên, đặc biệt là các tập A
m
, B
m
, Z
n
m
.
Theo định nghĩa về sơ đồ mật mã, cứ mỗi lần truyền tin bảo mật, cả người gửi
A và người nhận B phải cùng thỏa thuận trước với nhau một khóa chung K, sau đó
người gửi dùng e
k
để lập mật mã cho thông báo gửi đi, và người nhận dùng d
k

để
giải mã bản mật mã nhận được. Người gửi và người nhận cùng có một khóa chung
K, được giữ như bí mật riêng của hai người, dùng cả cho lập mật mã và giải mã, gọi
những hệ mật mã với cách sử dụng đó là mật mã khóa đối xứng, đôi khi cũng gọi là
mật mã truyền thống, vì đó là cách đã được sử dụng từ hàng ngàn năm nay.
Tuy nhiên, về nguyên tắc hai hàm lập mã và giải mã là khác nhau, không nhất
thiết phải phụ thuộc cùng một khóa. Nếu ta xác định mỗi khóa K gồm có hai phần K
= (K’, K’’), K’ dành cho việc lập mật mã (và ta có hàm lập mã e
k’
), K’’ dành cho
việc giải mã (và có hàm giải mã d
k’’
), các hàm lập mã và giải mã thỏa mãn hệ thức
d
k’’
(e
k’
(x)) = x với x P, thì được một hệ mật mã khóa phi đối xứng. Như vậy,
trong một hệ mật mã khóa phi đối xứng, các khóa lập mã và giải mã (K’ và K’’) là
khác nhau, nhưng tất nhiên có quan hệ với nhau. Trong hai khóa đó, khóa cần phải
giữ bí mật là khóa giải mã K’’, còn khóa lập mã K’ có thể được công bố công khai;
tuy nhiên điều đó chỉ có ý nghĩa thực tiễn khi việc biết K’ tìm K" là cực kỳ khó khăn
đến mức hầu như không thể thực hiện được. Một hệ mật mã khóa phi đối xứng có
tính chất nói trên, trong đó khóa lập mật mã K’ của mỗi người tham gia đều được
công bố công khai, được gọi là hệ mật mã khóa công khai. Khái niệm mật mã khóa
công khai mới được ra đời vào giữa những năm 1970, và ngay sau đó đã trở thành
một khái niệm trung tâm của khoa học mật mã hiện đại.
9
Số hóa bởi Trung tâm Học liệu


1.2.3. Thám mã và tính an toàn của các hệ mật mã
1.2.3.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ã đó, 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, 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.2.3.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ó 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
10

Số hóa bởi Trung tâm Học liệu

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 độ bất định về bản rõ trước đó.
- 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.

1.3. Một số hệ mật mã khóa công khai
1.3.1. Sự ra đời của hệ mật mã khóa công khai
Sự ra đời của khái niệm hệ mật mã khóa công khai là một tiến bộ có tính chất
bước ngoặt trong lịch sử mật mã nói chung, gắn liền với sự phát triển của khoa học

tính toán hiện đại. Người ta có thể xem thời điểm khởi đầu của bước ngoặt đó là sự
11
Số hóa bởi Trung tâm Học liệu

xuất hiện ý tưởng của W. Diffie và M.E. Hellman được trình bày vào tháng 6 năm
1976 tại Hội nghị quốc gia hàng năm của AFIPS (Hoa Kỳ) trong bài Multiuser
cryptographic techniques. Vài ngay sau đó, công việc tìm kiếm những thể hiện cụ
thể có khả năng ứng dụng trong thực tế đã bắt đầu thu hút sự quan tâm của nhiều
chuyên gia. Một năm sau, năm 1977, R.L.Rivest, A.Shamir và L.M.Adleman đề
xuất một hệ cụ thể về mật mã khóa công khai mà độ an toàn của hệ dựa vào bài toán
khó “phân tích số nguyên thành thừa số nguyên tố”, hệ này về sau trở thành một hệ
nổi tiếng và mang tên là hệ RSA, được sử dụng rộng rãi trong thực tiễn bảo mật và
an toàn thông tin. Cũng vào thời gian đó, M.O. Rabin cũng đề xuất một hệ mật mã
khóa công khai dựa vào cùng bài toán số học khó nói trên. Liên tiếp sau, nhiều hệ
mật mã khóa công khai được đề xuất, mà khá nổi tiếng và được quan tâm nhiều là
các hệ: hệ McEliece được đưa ra năm 1978 dựa trên độ NP-khó của bài toán giải mã
đối với các hệ mã cyclic tuyến tính, hệ Merkle-Hellman dựa trên tính NP-đầy đủ
của bài toán xếp ba lô (knapsacd problem), hệ mật mã nổi tiếng ElGamal dựa trên
độ khó của bài toán lôgarit rời rạc, hệ này về sau được mở rộng để phát triển nhiều
hệ tương tự dựa trên độ khó của các bài toán tương tự lôgarit rời rạc trên các cấu
trúc nhóm cyclic hữu hạn, nhóm các điểm nguyên trên đường cong eliptic, v.v
1.3.2. Một số hệ mật mã khóa công khai
1.3.2.1. Sơ đồ chung hệ mật mã khoá 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") - tập các khóa
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.3.2.2. Hệ mật mã RSA (Rivest - Shamir - Adleman)
a, Ý tưởng và dữ liệu dùng trong hệ mật mã RSA
12
Số hóa bởi Trung tâm Học liệu

Ý 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ã:
x = D(K", y) = y
d
(mod n), y C
c, Tính đúng đắn

Cần chứng minh:
D(K", E(K', x)) = x (1.1)
Do d e = 1 (mod
)(n
) nên d e = 1 + t
)(n

13
Số hóa bởi Trung tâm Học liệu

Mặt khác:
D(K", E(K', x)) = x
de
(mod n)
nên:
D(K", E(K', x)) = x
1 + t
)(n
(mod n) (1.2)
Chia 2 trường hợp: x nguyên tố với n và x không nguyên tố với n
Trường hợp 1: x nguyên tố với n, khi đó theo định lý Fermat:
x
)(n
= 1 (mod n)
Từ đó lần lượt suy ra:
x
t
)(n
= 1 (mod n)
x

1+t
)(n
= x (mod n)
Từ đây và (1.2) suy ra (1.1)
Trường hợp 2: x không nguyên tố với n, tức là tồn tại u > 1 sao cho:
x chia hết cho u (1.3)
n = p q chia hết cho u (1.4)
Do p và q là các số nguyên tố lẻ khác nhau, nên từ mệnh đề thứ hai (1.4) suy
ra: u=p hoặc u=q.
Chỉ cần xét u=p vì trường hợp u=q cũng lập luận tương tự. Khi u=p ta có:
x chia hết cho p
x nguyên tố với q (vì x < n = p q)
Từ mệnh đề thứ nhất (1.3) suy ra:
x
1+t
)(n
= x (mod p) (1.5)
(vì cả hai vế đều chia hết cho p)
Từ mệnh đề thứ hai (1.4) lần lượt suy ra:
xq
-1
= 1 (mod q) (vì x Z
*
q
)
x
t(p-1)(q-1)
= 1 (mod q)
x
()tn

= 1 (mod q)
x
( ) 1tn
= x (mod q)
Kết hợp điều này với (1.5) suy ra
14
Số hóa bởi Trung tâm Học liệu

x
()tn
+1
- x đồng thời chia hết cho p và q.
Mặt khác p, q là các số nguyên tố lẻ khác nhau nên đại lượng này cũng chia
hết cho n=p q, tức là:
x
()tn
+1
= x (mod n)
Từ đây và (1.2) suy ra (1.1). Vậy (1.1) được chứng minh.
1.3.2.3. Hệ mật mã ElGamal
a, Ý tưởng và dữ liệu dùng trong hệ mật mã ElGamal
Ý tưởng dựa vào công thức sau:
x(a
dk
)(a
kd
)
-1
= x
Đặt: b = a

d

Khi đó có thể dùng phép biến đổi thuận:
y
1
= a
k

y
2
= x b
k

Phép biến đổi ngược:
x = y
2
(y
1
d
)
-1

Dữ liệu gốc:
p: số nguyên tố
Dữ liệu suy diễn
a: phần tử nguyên thuỷ của Z
*
p

d: 1 < d < p

b = a
d
(mod p) (1.6)
Dùng: p, a, b: khoá công khai
d: bí mật
Nhận xét: Do a là phần tử nguyên thuỷ, nên b <> a.

b, Sơ đồ hệ mật mã ElGamal
S = {P, C, K, E, D}
P = Z
*
p
= {1, 2, , p-1}
C = Z
*
p
Z
*
p

15
Số hóa bởi Trung tâm Học liệu

K = (K', K")
K' = (p, a, b)
K" = (d)
Mã hoá:
y = E(K', x) = (y
1
, y

2
), x P
y
1
= a
k
(mod p) (1.7)
y
2
= x b
k
(mod p) (1.8)
ở đây k là số nguyên dương bất kỳ.
Giải mã:
x = D(K", y) = D(K", y
1
, y
2
) = y
2
((y
1
d
)
-1
mod p) (mod p)
Nhận xét: Tính khả thi của công thức giải mã:
Do a là phần tử nguyên thuỷ của Z
*
p

, nên
y
1
= a
k
(mod p) Z
*
p

Từ đó lại suy ra: y
1
d
Z
*
p

Điều này đảm bảo tồn tại:
(y
1
d
)
-1
mod p
c, Tính đúng đắn
Cần chứng minh:
x= y
2
((y
1
d

)
-1
mod p) (mod p) (1.9)
Thực vậy từ (1.6) - (1.8) suy ra:
y
2
((y
1
d
)
-1
mod p) (mod p) = (x bk) (akd)
-1
(mod p)
= x (adk) (akd)
-1
(mod p)
= x
Vậy (1.9) được chứng minh.

1.3.2.4. Hệ mật mã Rabin
a,Ý tưởng và dữ liệu dùng trong hệ mật mã Rabin
Ý tưởng dựa vào công thức sau:
16
Số hóa bởi Trung tâm Học liệu


2
2
()

2 2 4 2
b b b b
x x x x b

Khi đó có thể dùng phép biến đổi thuận:
y = x(x + b) (mod n)
Phép biến đổi ngược:
24
2
bb
yx

Dữ liệu gốc: Hai số nguyên tố p và q có dạng 3 mod 4:
p = 3 + 4t q = 3 + 4m
Dữ liệu suy diễn:
n = p q
b:
0 bn

Dùng:
n, b: làm khoá công khai
p, q: làm khoá bí mật
b, Sơ đồ hệ mật mã Rabin
S = {P, C, K, E, D}
P = C = Z
n

K = (K', K")
K': (n, b)
K": (p, q)

Mã hoá:
y = x(x + b) mod n , với x Z
n

Giải mã:

24
2
bb
yx
(mod n)
Trong mục dưới đây sẽ trình bày cách tính x theo y, b, n, p, q.
c, Tính đúng đắn
Điều cần chứng minh là:
Nếu y = x(x + b) mod n thì
17
Số hóa bởi Trung tâm Học liệu


24
2
bb
yx
(mod n)
là quá rõ ràng.
d, Công thức của phép biến đổi ngược (tính x)
Đặt:

2
2

)
2
(
4
b
x
b
yc
(mod n)

2
b
xz
(mod n)
Có thể giả thiết 1 < z < n, vì nếu z = 0 x = -
2
b
(mod n)
Khi đó rõ ràng:
z
2
= c (mod n)
Ngoài ra do n=p q, nên suy ra:
z
2
= c (mod p) (1.10)
z
2
= c (mod q) (1.11)
Trường hợp 1: z <> 0 mod p và z <> 0 mod q

Do p nguyên tố nên suy ra:
z
p-1
= 1 (mod p)
Mặt khác do (p-1)/2 nguyên, nên:

1)(
1
2
1
2
2
1
p
pp
zzc
(mod p)
Suy ra:

cc
p
2
1
(mod p)
Mặt khác do (p+1)/4 nguyên nên nếu đặt:

4
1p
cu
(mod p)

thì suy ra
u
2
= c (mod p) (1.12)
Lập luận tương tự, nếu đặt
18
Số hóa bởi Trung tâm Học liệu


4
1q
cv
(mod q)
thì cũng suy ra:
v
2
= c (mod q) (1.13)
Từ (1.10) và (1.12) suy ra:
z
2
= u
2
(mod p)
Nói cách khác: z cần thoả một trong 2 phương trình
z = u (mod p)
Tương tự, từ (1.11) và (1.13) suy ra: z cần thoả một trong 2 phương trình
z = v (mod q)
Trường hợp 2: z = 0 mod p và z <> 0 mod q
Do z =0 mod p nên c = 0 mod p u = 0 mod p
Vậy z

2
= u
2
(mod p).
Tương tự như trường hợp 1 với z <> 0 mod q, ta có z
2
= v
2
(mod q)
Trường hợp 3: z <> 0 mod p và z = 0 mod q
Do z = 0 mod q nên c=0 mod q v=0 mod q, vậy z
2
= v
2
(mod q)
Tương tự như trường hợp 1 với z <> 0 mod p, ta có z
2
= u
2
(mod p)
Như vậy, trong các trường hợp trên z cần thoả mãn một trong 4 hệ phương
trình sau: z = u (mod p)
z = v (mod q)
Sau khi tìm được z, thì x được tính theo công thức:
x = z -
2
b
(mod n)
e, Quy trình giải mã
Từ các kết quả trên, nhận được trình tự giải mã như sau:

Giả sử đã biết:
p, q, y, n, b

Tính:

×