You are on page 1of 48

1

BỘ GIÁO DỤC VÀ ĐÀO TẠO


TRƯỜNG ĐẠI HỌC VINH

NGUYỄN VĂN THÀ

MỘT VÀI ỨNG DỤNG CỦA SỐ HỌC


TRONG MÃ HOÁ VÀ GIẢI MÃ THÔNG TIN

LUẬN VĂN THẠC SĨ TOÁN HỌC

NGHỆ AN - 2013
2

BỘ GIÁO DỤC VÀ ĐÀO TẠO


TRƯỜNG ĐẠI HỌC VINH

NGUYỄN VĂN THÀ

MỘT VÀI ỨNG DỤNG CỦA SỐ HỌC


TRONG MÃ HOÁ VÀ GIẢI MÃ THÔNG TIN

CHUYÊN NGÀNH: ĐẠI SỐ VÀ LÝ THUYẾT SỐ


Mã số: 60 46 05

LUẬN VĂN THẠC SĨ TOÁN HỌC


Người hướng dẫn khoa học
PGS.TS. NGUYỄN THÀNH QUANG

NGHỆ AN - 2013
3

MỤC LỤC

TRANG
MỞ ĐẦU 1
CHƯƠNG 1 4
MỘT SỐ KIẾN THỨC CƠ SỞ

1.1 Tổng quan về mật mã 4


1.2 Mã hoá 9
1.3 Những khái niệm và kết quả Số học có nhiều ứng dụng trong mã 16
hoá và giải mã thông tin

CHƯƠNG 2
ỨNG DỤNG CỦA SỐ HỌC 25
TRONG MỘT SỐ HỆ THỐNG MẬT MÃ

2.1 Mật mã Caesar 25


2.2 Thuật toán mã hoá RSA 28
2.3 Mật mã Vigenère 41
KẾT LUẬN 43
TÀI LIỆU THAM KHẢO 44
4

MỞ ĐẦU
Từ lâu loài người đã biết các thao tác về Số học và sử dụng nó trong các
giao dịch thường nhật liên tục trong nhiều thế kỷ. Nhưng đến thời phát triển của
Toán học, Số học phải nhường chỗ cho những phép tính phức tạp như đạo hàm,
vi phân, tích phân và những bài toán khác. Cho đến những năm 70 của thế kỷ
XX, Số học vẫn được xem là một trong những ngành lý thuyết thuần túy nhất
của toán học. Thậm chí, có nhà toán học cho rằng vẻ đẹp của Số học có được là
nhờ sự xa rời thực tiễn của nó [6]. Nhưng cũng chính nhờ máy tính, một tinh
hoa của văn minh nhân loại vào thế kỷ XX, đã làm tái sinh môn học cổ xưa này.
Máy tính không những phát huy mọi vẻ đẹp truyền thống của Số học mà còn
triển khai ra những ứng dụng đang và sẽ có cho chúng ta trong thế kỷ XXI.
Hiện nay, công nghệ thông tin, công nghệ Internet, công nghệ E-mail,
E- business phát triển như vũ bão.Việt Nam đã, đang từng bước áp dụng công
nghệ mới để “tin học hóa xã hội” tức là đưa tin học vào các lĩnh vực của xã hội
để cải thiện hoạt động thủ công trước đây. Tin học hóa đã giải phóng sức lao
động của con người bằng cách sáng chế. Như vậy chúng ta có thể trao đổi mọi
thông tin qua mạng. Thông tin gửi đi có thể là thông tin quân sự, tài chính, kinh
doanh hoặc đơn giản là một thông tin nào đó mang tính riêng tư… Điều này dẫn
tới một vấn đề xảy ra là Internet là môi trường không an toàn, đầy rủi ro và nguy
hiểm, không có gì đảm bảo rằng thông tin truyền đi không bị lộ trên đường
truyền. Vì vậy, vấn đề an toàn cơ sở dữ liệu, thông tin cá nhân là vấn đề sống
còn của bất kỳ tổ chức nào và bảo mật thông tin là nền móng cơ bản để phát
triển. Do đó, một biện pháp được đưa ra nhằm giúp chúng ta tự bảo vệ chính
mình cũng như những thông tin gửi đi là cần phải mã hóa thông tin. Ngành khoa
học mật mã không chỉ nghiên cứu sự bảo mật của các sơ đồ mã hóa, mà còn mở
rộng đến những ứng dụng thực tiễn như chữ ký điện tử, sơ đồ định danh rồi đưa
5

đến những khái niệm quan trọng của ngành khoa học máy tính và rộng hơn là
của Toán học như khái niệm về các chứng minh tương tác (interactives proofs),
chứng minh không để lộ tri thức (zero-knowledge proofs) và gần đây là các
chứng minh kiểm tra được một cách xác suất bằng cách chỉ kiểm thử một hằng
số các bít thông tin trên bản chứng minh (probabilistic checkable proofs).
Những công cụ ngày càng mạnh Số học đã dần thâm nhập vào mật mã và
góp phần đưa mật mã trở thành một ngành khoa học. Năm 1978, ba nhà khoa
học của MIT (Massachusetts Institute of Technology) là Rivest, Shamir và
Adleman đề xuất một hệ mã, mà nay được gọi là RSA. Tính bảo mật và độ an
toàn của hệ mã này được dựa trên độ phức tạp của bài toán số học phân tích một
số nguyên đủ lớn ra thừa số nguyên tố. Liên tiếp sau đó, các bài toán của lý
thuyết số như bài toán lôgarit rời rạc và tìm thặng dư cấp 2 cũng đã được sử
dụng để xây dựng các hệ mã Elgamal và Rabin. Ngoài ra, Định lý Euler, Định lý
Fermat bé, Định lý số dư Trung Quốc và Định lý Carmichael có rất nhiều ứng
dụng trong các bài toán về số nguyên lớn áp dụng vào Lý thuyết mật mã. Nhờ
đó, các lý thuyết mới của Số học, đặc biệt là Số học thuật toán, tìm thấy những
ứng dụng trực tiếp vào thực tiễn. Ngược lại, với sự sử dụng rộng rãi hệ mã RSA,
Elgamal trong thực tế, việc nghiên cứu các lời giải hiệu quả cho các bài toán
phân tích thành thừa số nguyên tố và lôgarit rời rạc trên các trường hữu hạn trở
nên rất được quan tâm trong Lý thuyết số.
Như vậy, Số học đã hiện hữu trong các hoạt động thực tiễn: Kỹ thuật máy
tính, mật mã, trao đổi trực tuyến giữa các ngân hàng, thẻ ATM, truyền phát tín
hiệu vệ tinh, chứng khoán...
Mục đích của bản luận văn này là nhằm tìm hiểu cơ sở của việc áp dụng
Số học vào một số lĩnh vực ứng dụng của Lý thuyết mật mã.
6

Ngoài phần mở đầu, kết luận và tài liệu tham khảo, luận văn này gồm có 2
chương. Chương 1 trình bày các kiến thức cơ sở tổng quan về Mật mã học và Số
học (Phân tích nguyên tố, Phép tính đồng dư, Định lý số dư Trung Quốc, Định lý
Euler, Định lý Fermat bé, Số giả nguyên tố, Định lý Carmichael, Hàm số Euler,
Hàm số Carmichael, Phân tích Fermat). Chương 2 trình bày một số hệ mật mã (mã
Cesaz, mã RSA) có liên quan trực tiếp đến ứng dụng công cụ phép tính đồng dư và
các kết quả số học khác trong mã hoá và giải mã thông tin.
Luận văn này được hoàn thành dưới sự hướng dẫn tận tình và chu đáo của
PGS.TS. Nguyễn Thành Quang. Tác giả xin bày tỏ lòng kính trọng và biết ơn sâu
sắc tới thầy giáo hướng dẫn khoa học, người đã dành nhiều thời gian và công sức
giúp đỡ cho tôi để hoàn thành luận văn này.
Tác giả xin bày tỏ lòng biết ơn và gửi lời cảm ơn đến các thầy cô giáo thuộc
chuyên ngành Đại số và Lý thuyết số, Khoa Toán, Phòng Đào tạo Sau Đại học –
Trường Đại học Vinh, những người đã tận tình giảng dạy và tạo mọi điều kiện
thuận lợi thành công của khóa học.
Xin trân trọng cảm ơn Trường Đại học Sài Gòn đã tạo mọi điều kiện tổ chức
thuận lợi cho chúng tôi hoàn thành nhiệm vụ học tập của khóa học.
Xin chân thành cảm ơn bạn bè, đồng nghiệp, gia đình đã động viên và giúp
đỡ tôi trong suốt khóa học.
Xin gửi lời cảm ơn đến Ban giám hiệu Trường Trung học Phổ thông Phùng
Hưng - Sở Giáo dục và Đào tạo TP. Hồ Chí Minh, các thầy cô giáo đồng nghiệp đã
động viên và tạo điều kiện thuận lợi để tôi hoàn thành nhiệm vụ học tập.
Mặc dù đã có nhiều cố gắng, song luận văn vẫn còn nhiều thiếu sót, tác giả
mong nhận được sự đóng góp của thầy cô giáo và các đồng nghiệp.
TÁC GIẢ
7

CHƯƠNG 1
MỘT SỐ KIẾN THỨC CƠ SỞ
1.1. TỔNG QUAN VỀ MẬT MÃ HỌC

1.1.1. Mật mã học. Mật mã học (cryptography) là một lĩnh vực liên quan với
các kỹ thuật ngôn ngữ và toán học để đảm bảo an toàn thông tin, cụ thể là
trong thông tin liên lạc. Về phương diện lịch sử, mật mã học gắn liền với quá
trình mã hóa; điều này có nghĩa là nó gắn với các cách thức để chuyển đổi thông
tin từ dạng này sang dạng khác nhưng ở đây là từ dạng thông thường có thể
nhận thức được thành dạng không thể nhận thức được, làm cho thông tin trở
thành dạng không thể đọc được nếu như không có các kiến thức bí mật. Quá
trình mã hóa được sử dụng chủ yếu để đảm bảo tính bí mật của các thông tin
quan trọng, chẳng hạn trong công tác tình báo, quân sự hay ngoại giao cũng như
các bí mật về kinh tế, thương mại. Trong những năm gần đây, lĩnh vực hoạt
động của mật mã hóa đã được mở rộng: mật mã hóa hiện đại cung cấp cơ chế
cho nhiều hoạt động hơn là chỉ duy nhất việc giữ bí mật và có một loạt các ứng
dụng như: chứng thực khóa công khai, chữ ký số, bầu cử điện tử hay thanh toán
điện tử. Ngoài ra, những người không có nhu cầu thiết yếu đặc biệt về tính bí
mật cũng sử dụng các công nghệ mật mã hóa, thông thường được thiết kế và tạo
lập sẵn trong các cơ sở hạ tầng của công nghệ tính toán và liên lạc viễn thông.
Mật mã học là một lĩnh vực liên ngành, được tạo ra từ một số lĩnh vực khác.
Các dạng cổ nhất của mật mã hóa chủ yếu liên quan với các kiểu mẫu
trong ngôn ngữ. Gần đây thì tầm quan trọng đã thay đổi và mật mã hóa sử dụng
và gắn liền nhiều hơn với toán học, cụ thể là toán học rời rạc, bao gồm các vấn
đề liên quan đến lý thuyết số, lý thuyết thông tin, độ phức tạp tính toán, thống
kê và tổ hợp. Mật mã hóa là công cụ được sử dụng trong an ninh máy
tínhvà mạng.
8

Việc nghiên cứu tìm các phương thức để phá vỡ việc sử dụng mật mã được
gọi là phân tích mật mã, hay phá mã. Mật mã hóa và phân tích mật mã đôi khi
được nhóm lại cùng nhau dưới tên gọi chung mật mã học, nó bao gồm toàn bộ
các chủ đề liên quan đến mật mã. Trong thực tế, thuật ngữ mật mã hóa thông
thường được sử dụng để nói đến ngành này một cách tổng thể.
Mật mã hóa là quá trình chuyển đổi các thông tin thông thường (văn bản
thường hay văn bản rõ hay văn bản trơn) thành dạng không đọc trực tiếp được,
là văn bản mã hóa. Giải mật mã hay giải mã là quá trình ngược lại, phục hồi lại
văn bản thường từ văn bản mã. Mật mã là thuật toán để mật mã hóa và giải mật
mã. Hoạt động chính xác của mật mã thông thường được kiểm soát bởi
các khóa — một đoạn thông tin bí mật nào đó cho phép tùy biến cách thức tạo ra
văn bản mã. Các giao thức mật mã chỉ rõ các chi tiết về việc mật mã (và các nền
tảng mật mã hóa khác) được sử dụng như thế nào để thu được các nhiệm vụ cụ
thể. Một bộ các giao thức, thuật toán, cách thức quản lý khóa và các hành động
quy định trước bởi người sử dụng cùng phối hợp chặt chẽ tạo thành hệ thống
mật mã.
Trong cách nói thông thường, "mã" bí mật thông thường được sử dụng đồng
nghĩa với "mật mã". Trong mật mã học, thuật ngữ này có ý nghĩa kỹ thuật đặc
biệt: Các mã là các phương pháp tham gia vào việc thay thế các đơn vị văn bản
lớn hơn, thông thường là các từ hay câu văn (ví dụ, "qua tao" thay thế cho "tan
cong luc rang dong"). Ngược lại, mật mã hóa cổ điển thông thường thay thế
hoặc sắp xếp lại các chữ cái riêng biệt (hoặc một nhóm nhỏ các chữ cái). Ví dụ,
"tan cong luc rang dong" trở thành "ubo dpoh mvd sboh epoh" bằng cách thay
thế.
9

Hình 1: Sơ đồ khái quát về một hệ thống mật mã.

1.1.2. Lịch sử phát triển của 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. Trong phần
lớn thời gian phát triển của mình (ngoại trừ vài thập kỷ trở lại đây), 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ỷ XX, 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ử. Hai sự kiện đã khiến cho mật mã học trở nên thích hợp
cho mọi người, đó là: sự xuất hiện của tiêu chuẩn mật mã hóa DES và sự ra đời
của các kỹ thuật mật mã hóa khóa công khai.
1.1.3. Mật mã học cổ điển
10

Những bằng chứng sớm nhất về sử dụng mật mã học là các chữ tượng
hình không tiêu chuẩn tìm thấy trên các bức tượng Ai Cập cổ đại (cách đây
khoảng 4500 năm). Những ký hiệu tỏ ra không phải để phục vụ mục đích truyền
thông tin bí mật mà có vẻ như là nhằm mục đích gợi nên những điều thần bí, trí
tò mò hoặc thậm chí để tạo sự thích thú cho người xem. Ngoài ra, còn rất nhiều
ví dụ khác về những ứng dụng của mật mã học cổ điển.
Trong mật mã học, mật mã học cổ điển là một dạng của mật mã học đã
được sử dụng trong lịch sử phát triển của loài người nhưng ngày nay đã trở nên
lạc hậu do các phương thức mã hóa này quá đơn giản và những kẻ tấn công có
thể dễ dàng bẻ khóa thông qua nhiều phương thức như tấn công vét cạn (ví dụ
như dùng máy tính thử hết mọi trường hợp) hay dựa trên tấn công thống kê (dựa
trên tần suất xuất hiện của các chữ cái).
Nói chung, mật mã học cổ điển hoạt động trên cơ sở bảng chữ cái (chẳng
hạn các ký tự từ "A" tới "Z" trong tiếng Anh), và chúng được thực hiện bằng tay
hay một số máy móc cơ khí đơn giản. Ngược lại, các mô hình mã hóa hiện đại
sử dụng các máy tính hay các công nghệ số hóa khác, và hoạt động mã hóa dựa
trên việc thay thế các bit hay byte. Các phương thức mã hóa cổ điển thông
thường dễ bị tổn thương (phá mã) bởi các tấn công văn bản mã hóa, đôi khi
thậm chí kẻ tấn công không cần biết các chi tiết cụ thể của hệ thống mã hóa,
bằng cách sử dụng các công cụ như phân tích tần suất. Đôi khi người ta cũng
cho rằng các phương thức mã hóa như cách thức mã hóa của cỗ máy
Enigma thuộc về các phương thức mã hóa cổ điển mặc dù cách thức mã hóa này
đã sử dụng các thiết bị và công nghệ hiện đại nhất vào thời điểm đó (trong thời
kỳ của Thế chiến II).
Các phương thức mã hóa cổ điển chủ yếu dựa trên mật mã hóa hoán
vị và mật mã hóa thay thế. Trong mật mã hóa thay thế, các ký tự (hoặc nhóm ký
11

tự) được thay thế một cách có quy luật trong toàn bộ thông điệp bằng các ký tự
khác (hoặc nhóm ký tự), chẳng hạn câu I am Mr. Enigma from được thay bằng
câu This is morning star, sau đó các ký tự còn lại trong bảng chữ cái được thay
thế theo một quy luật nào đó xác định trước. Trong phương thức mật mã hóa
hoán vị thì các ký tự được giữ không đổi, nhưng trật tự của chúng trong bản tin
lại thay đổi theo một quy luật nào đó. Có các thuật toán phức tạp để thực hiện
việc mật mã hóa bằng cách tổ hợp hai phương thức trên để tạo ra sản phẩm mã
hóa; các phương thức mã hóa khối hiện đại như DES hay AES thực hiện việc
lặp đi lặp lại một số bước thay thế và hoán vị.
1.1.4. Mật mã học hiện đại
Nhiều người cho rằng kỷ nguyên của mật mã học hiện đại được bắt đầu
với Claude Shannon, người được coi là cha đẻ của mật mã toán học. Năm 1949
ông đã công bố bài lý thuyết về truyền thông trong các hệ thống bảo mật
(Communication Theory of Secrecy Systems) trên tập san Bell System
Technical Journal - Tập san kỹ thuật của hệ thống Bell - và một thời gian ngắn
sau đó, trong cuốn Mathematical Theory of Communication - Lý thuyết toán
học trong truyền thông - cùng với tác giả Warren Weaver. Những công trình
này, cùng với những công trình nghiên cứu khác của ông về lý thuyết về tin học
và truyền thông (information and communication theory), đã thiết lập một nền
tảng lý thuyết cơ bản cho mật mã học và thám mã học.
Với sự ra đời của máy tính kỹ thuật số và điện tử học thì các mật mã cực
kỳ phức tạp đã có thể được thực hiện. Đặc trưng của mật mã máy tính là chúng
thực hiện trên các chuỗi nhị phân, không giống như trong các mô hình mật mã
hóa cổ điển và cơ học (chỉ sử dụng bảng chữ cái với khoảng 26 ký tự - phụ
thuộc vào từng ngôn ngữ). Mật mã máy tính cũng có khả năng chịu đựng việc
12

phân tích mật mã tốt hơn; rất ít các mật mã như thế dễ bị tổn thương chỉ bởi kiểu
tấn công biết bản mã.
Các nghiên cứu rộng rãi có tính học thuật về mật mã hóa hiện đại là tương
đối gần đây - nó chỉ được bắt đầu trong cộng đồng mở kể từ những năm thập
niên 1970 với các chi tiết kỹ thuật của DES (viết tắt trong tiếng Anh của Data
Encryption Standard tức Tiêu chuẩn Mật mã hóa Dữ liệu) và sự phát minh ra mã
RSA. Kể từ đó, mật mã hóa đã trở thành công cụ được sử dụng rộng rãi trong

liên lạc và bảo mật máy tính.

1.2. MÃ HOÁ

1.2.1. Khái niệm mã hoá và giải mã


Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông
tin, mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ
định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có
phương tiện giải mã.
Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng
thông tin ban đầu, quá trình ngược của mã hóa.
Mục đích của mã hóa là che dấu thông tin trước khi truyền trên kênh.
1.2.2. Khái niệm hệ thống mã hoá. Một hệ thống mã hóa (hệ mật mã) bao
gồm 5 thành phần (P, C, K, D, E):
1. Các thông tin trước khi mã hóa, kí hiệu là P (Plaintext),
2. Các thông tin sau khi mã hóa, kí hiệu là C (Ciphertext),
3. Các chìa khóa, kí hiệu là K (Key);
4. Các quy tắc mã hóa, ký hiệu là E (Encrytion),
5. Các quy tắc giải mã, kí hiệu là D (Decrytion),
13

thoả mãn điều kiện sau: Với mỗi có một quy tắc mã và một quy
tắc giải mã tương ứng sao cho
Như vậy, quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán
học từ E lên P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã
hóa C.

Hình 2: Các thành phần của mật mã


Quá trình giải mã được tiến hành ngược lại: Áp dụng hàm D lên thông
tin C để được thông tin đã giải mã P.
Một thông báo thường được tổ chức dưới dạng bản rõ (văn bản trơn).
Người gửi bản thông báo sẽ làm nhiệm vụ mã hoá bản rõ, kết quả thu được
sau mã hoá được gọi là bản mã (văn bản mã hoá). Bản mã được gửi đi trên một
đường truyền tới người nhận. Sau khi nhận bản mã, người nhận giải mã nó để
tìm hiểu nội dung.
Sử dụng các ký hiệu của hệ mật mã, các công việc trên được toán học hoá
bởi các công thức sau:

Như vậy trong một hệ thống mật mã khái quát sẽ có các thành phần sau:
- Văn bản trơn (plaintext), tức là thông điệp nguyên gốc chưa được mã
hóa.
14

- Văn bản mã hóa (ciphertext), tức là thông điệp đã được mã hóa.


- Thuật toán mã hóa (enciphering algorithm) là các giao thức hoặc hướng
dẫn có tác dụng chuyển đổi văn bản trơn thành văn bản mã hóa. Đối với các hệ
thống mật mã truyền thống, chỉ có người gửi thông điệp biết được thuật toán mã
hóa, tuy nhiên đối với các hệ thống dùng mật mã hóa khóa công khai (Public
key code - PKC), tất cả mọi người đều có thể biết thuật toán mã hóa mà không
ảnh hưởng tiêu cực đến an ninh của hệ thống.
- Khóa mã hóa (enciphering key) là một hoặc nhiều đối tượng (thường là
các con số hay là các hướng dẫn quan trọng nào đó) được dùng trong việc mã
hóa văn bản trơn. Ngoại trừ trong hệ thống PKC, để đảm bảo bí mật an toàn thì
khóa mã hóa thường chỉ được người gửi biết.
- Thuật toán giải mã (deciphering algorithm) là các giao thức hoặc hướng
dẫn có tác dụng chuyển đổi văn bản mã hóa trở về văn bản trơn. Để đảm bảo bí
mật, chỉ có người nhận thông điệp biết được thuật toán giải mã.
- Khóa giải mã (deciphering key) là một hoặc nhiều đối tượng (thường là các
con số hay là các hướng dẫn quan trọng nào đó) được dùng trong việc giải mã
văn bản bị mã hóa. Để đảm bảo bí mật, chỉ có người nhận thông điệp biết được
khóa giải mã.
1.2.3. Một số thuật ngữ sử dụng trong hệ mật mã
Người gửi (Sender): Người gửi thông báo.
Người nhận (Receiver): Người nhận thông báo.
Văn bản rõ (Plaintext – Cleartext): Thông tin trước khi được mã hoá. Đây là
dữ liệu ban đâu ở dạng rõ. Thông tin gốc được ghi bằng hình ảnh âm thanh, chữ
số, chữ viết,... Mọi tín hiệu đều có thể được số hoá thành các xâu ký tự.
15

Như vậy, quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán
học từ E lên P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã
hóa C.
Bản mã hoá (Ciphertext): Thông tin, dữ liệu đã được mã hoá dưới dạng mờ.
Khóa (key): Thành phần quan trọng trong việc mã hoá và giải mã. Khóa là
đại lượng bí mật, biến thiên trong một hệ mật.
Thuật toán mã hoá (CryptoGraphic Algorithm): Các thuật toán được sử dụng
trong việc mã hoá hoặc giải mã thông tin.
Hệ thống mã (CryptoSystem): Hệ thống mã hoá bao gồm thuật toán mã
hoá, khoá, Plaintext, Ciphertext.
Kỹ thuật mật mã (Cryptology) là môn khoa học bao gồm hai lĩnh vực: mật
mã (Cytography) và mã thám (Cryptoanalysis).
Mật mã: là lĩnh vực khoa học về các phương pháp biến đổi thông tin nhằm
mcụ đích bảo vệ thông tin khỏi sự truy cập của những người không có thẩm
quyền.
Mã thám: là lĩnh vực khoa học chuyên nghiên cứu, tìm kiếm yếu điểm của
các hệ mật để từ đó đưa ra phương pháp tấn công các hệ mật đó.
Sơ đồ mật mã là tập hợp các thuật toán mã hóa, giả mã, kiểm tra sự toàn vẹn
vàcác chức năng khác của một hệ mật.
Giao thức mật mã là tập hợp các quy tắc, thủ tục quy định cách thức sử dụng
sơ đồ mật mã trong một hệ mật mã.
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ở thành dạng văn
bản nguồn.
16

Định mã (encode/decode) là việc xác định ra phép tương ứng giữa các chữ
và số - Tốc độ mã được đặc trưng bởi số lượng phép tính (N) cần thực hiện để
mã hóa (giải mã) một đơn vị thông tin.
Khả năng chống nhiễu của mã là khả năng chống lại sự phát tán lỗi trong
bản tin sau khi giải mã, nếu trước đó xảy ra lỗi với bản mã trong quá trình bản
mã được truyền từ người gửi đến người nhậ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ã hoá trên từng khối văn bản.
1.2.3. Những yêu cầu đối với hệ mật mã hoá
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên
lạc. Các thuộc tính được yêu cầu là:
1. Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông
tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho
phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp.
2. Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay
đổi trong quá trình truyền thông hay không.
3. Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem
người gửi đó có thực sự gửi thông tin đi hay không.
4. Không từ chối: Người gửi không thể từ chối việc mình đã gửi thông tin đi.
5. Chống lặp lại: Không cho phép bên thứ ba copy lại văn bản và gửi nhiều lần
đến người nhận mà người gửi không hề hay biết.
Mật mã học có thể cung cấp cơ chế để giúp đỡ thực hiện điều này. Tuy
nhiên, một số mục tiêu không phải bao giờ cũng là cần thiết, trong nghĩa cảnh
của thực tế hay mong muốn của người sử dụng. Ví dụ, người gửi thông tin có
17

thể mong muốn giữ mình là nặc danh; trong trường hợp này tính không từ chối
rõ ràng là không thích hợp.
1.2.4. Các hệ thống mã hoá
Có hệ thống mã hóa đối xứng (Hình 3) và hệ thống mã hóa bất đối xứng
(Hình 4). Hai loại mã hóa này khác nhau ở số lượng khóa. Mã hóa đối xứng sử
dụng cùng một khóa để mã hóa / giải mã. Trong khi đó, mã hóa bất đối xứng sử
dụng hai khóa khác nhau để mã hóa và giải mã thông tin. Mỗi hệ thống mã hóa
có ưu nhược điểm riêng. Mã hóa đối xứng xử lí nhanh nhưng độ an toàn không
cao. Mã hóa bất đối xứng xử lí chậm hơn, nhưng độ an toàn và tính thuân tiện
trong quản lí khóa cao. Trong các ứng dụng mã hóa hiện tại, người ta thường kết
hợp các ưu điểm của cả hai loại mã hóa này.

Hình 3: Sơ đồ mã hoá và giải mã đối xứng (mật mã khoá bí mật)


18

Hình 4: Mã hoá bất đối xứng (Mật mã khoá công khai)

Một thông điệp sau khi được mã hóa bởi chìa công khai sẽ chỉ có thể
được giải mã với chìa bí mật tương ứng. Do các thuật toán loại này sử dụng một
chìa khóa công khai (không bí mật) nên còn có tên gọi khác là public-key
cryptography (thuật toán mã hóa dùng chìa khóa công khai).
1.2.5. Ứng dụng của mã hoá
Mã hóa có vai trò rất quan trọng, đặc biệt là trong giao dịch điện tử. Nó
giúp đảm bảo bí mật, toàn vẹn của thông tin, khi thông tin đó được truyền trên
mạng. Mã hóa cũng là nền tảng của kĩ thuật chữ ký điện tử.
Mã hoá có thể sử dụng để thi hành các giao thức khác nhau: không kỹ
năng kiểm chứng, an toàn tính toán nhiều bên và chia sẻ bí mật.
Mã hoá có thể sử dụng để thi hành việc quản lý bản quyền số hóa.
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử
dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí
19

mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan
hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa
với mật mã hóa khóa công khai mặc dù hai khái niệm không hoàn toàn tương
đương. Có những thuật toán mật mã khóa bất đối xứng không có tính chất khóa
công khai và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã)
đều cần phải giữ bí mật.
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong
khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa
và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể
tìm ra khóa bí mật nếu chỉ biết khóa công khai.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích sau:
- Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã
được.
- Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một
khóa bí mật nào đó hay không.
- Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật
giữa 2 bên.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng
tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm
mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng.

1.3. NHỮNG KHÁI NIỆM VÀ KẾT QUẢ SỐ HỌC


CÓ NHIỀU ỨNG DỤNG TRONG MÃ HÓA VÀ GIẢI MÃ THÔNG TIN

1.3.1. Số nguyên tố. Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số
nguyên dương nào ngoài 1 và chính nó. Số nguyên lớn hơn 1 không phải là số
nguyên tố được gọi là hợp số.
20

Định lý sau đây của Số học là một cơ sở quan trọng của thuật toán tìm các
số nguyên tố không vượt quá một số tự nhiên cho trước.
1.3.2. Định lí. Mọi hợp số n đều có ước nguyên tố nhỏ hơn hoặc bằng .
Chứng minh. Thật vậy, vì n là hợp số nên ta gọi a và b là các ước thật sự của n.
Khi đó , trong đó Rõ ràng ta phải có a hoặc b không vượt

quá , giả sử đó là a. Khi đó, ước nguyên tố của a cũng đồng thời là ước
nguyên tố của n.
1.3.3. Hệ quả. Mọi số tự nhiên n lớn 1 không có ước nguyên tố nhỏ hơn hoặc
bằng đều là số nguyên tố.

Chẳng hạn, số 31 không có có ước nguyên tố là 2, 3, 5 (các số nguyên tố


không vượt quá ) nên 31 là số nguyên tố. Như vậy, để kiểm tra tính nguyên
tố của số 31 thay vì cần phải kiểm tra cả thảy là 30 phép chia, ta chỉ cần kiểm tra
3 phép chia, tức số phép chia giảm đi 10 lần.
Từ hệ quả trên, ta có thuật toán viết tất cả các số nguyên tố nhỏ hơn hoặc
bằng một số nguyên dương n cho trước.
1.3.4. Thuật toán sàng các số nguyên tố của Eratosthenes. Trước tiên, ta viết
dãy các số tự nhiên từ 1 đến n. Trong dãy đó, ta gạch bỏ số 1 vì nó không phải là
số nguyên tố. Số nguyên tố đầu tiên của dãy là số 2. Tiếp theo đó ta gạch khỏi
dãy số tất cả những số chia hết cho 2. Số đầu tiên không chia hết cho 2 là 3 và
đó chính là số nguyên tố. Ta lại gạch khỏi dãy số còn lại những số nào không
chia hết cho 3. Ta thu được số nguyên tố tiếp theo là 5. Tiếp tục như thế, ta gạch
khỏi dãy những số chia hết cho mọi số nguyên tố bé hơn hoặc bằng .

Sàng Eratosthenes mặc dù cho ta thuật toán xác định mọi số nguyên tố
không vượt quá một số cho trước nhưng lại rất ít được sử dụng để xác định xem
một số đã cho có phải là số nguyên tố hay không. Nguyên nhân là vì thuật toán
21

có độ phức tạp khá lớn: để kiểm tra n, ta phải thực hiện phép chia cho tất cả các
số nguyên tố không vượt quá .
1.3.5. Định lí cơ bản của Số học. Mọi số nguyên lớn hơn 1 đều phân tích được
một cách duy nhất thành tích các số nguyên tố, trong đó các thừa số được viết
với thứ tự không giảm.
Chứng minh. Ta chứng minh mọi số nguyên lớn hơn 1có thể viết dưới dạng tích
của một hoặc nhiều số nguyên tố. Trước hết, mỗi số nguyên tố là tích của một
thừa số là chính nó. Giả sử rằng có các số nguyên dương lớn hơn 1 không biểu
diễn được thành tích các số nguyên tố. Khi đó gọi n là số nhỏ nhất trong các số
đó. Số n ≠ 1 và là hợp số. Do đó n = ab, trong đó cả a và b là các số nguyên
dương nhỏ hơn n. Vì n là số nhỏ nhất không thể phân tích thành tích các số
nguyên tố nên cả a và b phân tích được thành tích các số nguyên tố. Nhưng khi
đó n = ab lại phân tích được. Điều này mâu thuẫn với giả thiết.
Ta giả sử rằng tồn tại số nguyên lớn hơn 1 mà có hai cách biểu diễn dưới
dạng tích các thừa số nguyên tố. Khi đó, giả sử s là số nhỏ nhất trong các số như
vậy, tức là s = p1p2...pm = q1q2...qn với pi,qj là các số nguyên tố. Do p1 chia hết
q1q2...qn suy ra tồn tại qj mà p1 chia hết qj. Từ đó ta có pi = qj, bỏ hai số nguyên tố
ra khỏi đẳng thức ta được hai vế là hai khai triển khác nhau của số s chia cho p1,
mà theo giả thiết s là số nhỏ nhất như vậy, mâu thuẩn này chứng tỏ giả thiết là
sai. Vậy mỗi số nguyên lớn hơn 1 chỉ có một biểu diễn duy nhất dưới dạng tích
thừa số nguyên tố (không kể đến thứ tự các thừa số). ▄
1.3.6. Thuật toán Euclid. Thuật toán cho phép xác định ước chung lớn nhất
(gcd) của hai số nguyên nguyên dương. Với a, b là các số nguyên dương (giả
thiết a > b). Ta xét 3 trường hợp sau:
a) Nếu b là ước của a thì (a, b) = b.
b) Nếu a = bq + r thì (a, b) = (b, r).
22

c) Trường hợp tổng quát:


Ta thực hiện liên tiếp các phép chia sau đây cho tới khi xuất hiện số dư
bằng 0 thì dừng lại.

Vì bất đẳng thức sau đây là xảy ra, nên quá trình chia nói trên là dừng lại
sau không quá a bước, hay quá trình này là một thuật toán:
.
Từ đó, ta có ước chung lớn nhất của a, b là
.
Thuật toán trên được gọi là Thuật toán Euclid tìm ước chung lớn nhất của
hai số nguyên dương.
1.3.7. Thuật toán Euclide mở rộng. Thuật toán này sử dụng để giải phương
trình Diophant ax + by = c, trong đó a,b,c là các số nguyên; x, y là các ẩn nhận
giá trị nguyên. Điều kiện cần và đủ để phương trình này có nghiệm nguyên là
ước chung lớn nhất của a và b là ước của c. Khẳng định này dựa trên một mệnh
đề sau: Nếu d là ước chung lớn nhất của a,b thì tồn tại các số nguyên x, y sao
cho ax + by = d .
Thuật toán Euclid mở rộng kết hợp quá trình tìm ước chung lớn nhất của
a,b trong thuật toán Euclid với việc tìm một cặp số nguyên x, y thoả mãn
phương trình Diophantine nói trên bằng phương pháp truy hồi.
23

1.3.8. Định nghĩa. Hàm số Euler là hàm số học có giá trị tại mỗi số tự
nhiên bằng số các số nguyên dương không vượt quá m và nguyên tố cùng
nhau với m:

Hàm có nhiều ứng dụng vì nó là kích thước (xem 1.3.12) của nhóm
nhân các số nguyên modulo m. Hơn nữa, đối với hàm Euler ta có công
thức Gaus là công thức tổng trải trên các ước dương d của m:

1.3.9. Định lí Euler. Nếu a và m > 1 là các số nguyên, nguyên tố cùng nhau thì
.
Định lí Euler có thể dùng để tìm nghịch đảo modm. Chẳng hạn, nếu a và
m là các số nguyên nguyên tố cùng nhau, ta có tức là
là nghịch đảo của a theo modm. Từ đó cũng suy ra nghiệm của phương trình
đồng dư tuyến tính với (a, m)  1 là .
Các tính chất của hàm Euler được sử dụng để tính đồng dư của những lũy
thừa rất lớn. Chẳng hạn, ta cần tính a n mod k , trong đó n là một số nguyên lớn.
Ta xét một ví dụ bằng số. Tìm số dư trong phép chia 21000000 cho 77.
Ta có .

Do đó, .

Vì vậy

Mặt khác, cho nên:


24

1.3.10. Định lí Fermat bé. Nếu p là số nguyên tố và a là số nguyên không chia


hết cho p thì Nói cách khác, nếu p là số nguyên tố và a là số

nguyên bất kỳ thì .


Một cách độc lập các nhà toán học Trung quốc đã đưa ra một giả thuyết
(thường gọi là Giả thuyết Trung Quốc) nói rằng: p là một số nguyên tố khi và
chỉ khi . Đúng là, nếu p là số nguyên tố, thì . Đây
là trường hợp đặc biệt của Định lý bé Fermat. Tuy thế, điều ngược lại
(nếu thì p là số nguyên tố) là sai. Chẳng hạn, ,
nhưng 341 = 11.31 là hợp số. Như vậy, mệnh đề ngược lại của Định lí Fermat
bé không đúng. Tuy nhiên, qua nhiều thống kê cho thấy rằng nếu một số nguyên
thỏa mãn kết luận của Định lí Fermat bé thì "có nhiều khả năng" nó là số nguyên
tố. Do đó, dẫn xuất đến khái niệm sau
1.3.11. Số giả nguyên tố. Nếu ta muốn kiểm tra số n có là số nguyên tố không,
ta lấy ngẫu nhiên các số a và kiểm tra xem đồng dư thức có đúng
không. Nếu nó không đúng với một giá trị a nào đó thì n là hợp số. Nếu đồng dư
thức đúng với một hoặc nhiều giá trị của a, thì ta nói rằng n là số nguyên tố với
xác suất nào đó, hay n là một số giả nguyên tố (pseudoprime).
Nếu n là một hợp số và tồn tại một số nguyên sao cho ,
thì p được gọi là số giả nguyên tố cơ sở a.
F. Sarrus vào năm 1820 đã tìm thấy 341 = 11×31 là số giả nguyên tố cơ
sở 2 đầu tiên.
Một số nguyên n là số giả nguyên tố cơ sở a với mọi số nguyên a được
gọi là số Carmichael (chẳng hạn số 561).
25

1.3.12. Định lí Trung Quốc (Chinese Remainder Theorem). Giả sử m1,… , mr là


các số nguyên dương, nguyên tố cùng nhau từng đôi một. Khi đó, hệ phương
trình đồng dư:

có nghiệm duy nhất theo môđun


1.3.13. Nhóm nhân các số nguyên modm
Nếu là một số nguyên thì tập hợp các lớp đồng dư modm có đại
diện nguyên tố cùng nhau với m tạo thành một nhóm với phép nhân và được ký
hiệu bởi . Cấp của nhóm này cho bởi giá trị của hàm Euler. Giá trị

được gọi là kích thước của nhóm nhân . Nếu m là số nguyên tố, thì

kích thước và cấp của nhóm này là m − 1. Một phần tử sinh của nhóm nhân
được gọi là một căn nguyên thủy modm.
Dùng Định lý số dư Trung Hoa, ta có kết quả: Nhóm nhân là tích trực
tiếp của các nhóm nhân theo mỗi lũy thừa cực đại của các ước nguyên tố của m.
Chẳng hạn, là một nhóm xyclic cấp 8.

Nhóm có nhiều ứng dụng trong Lý thuyết số và Mật mã học bởi công
cụ kích thước của nó.
1.3.14. Bậc của một số nguyên. Cho là các số nguyên dương, nguyên tố
cùng nhau. Khi đó, theo Định lý Euler ta có đồng dư thức
.
Số nguyên dương x nhỏ nhất thỏa điều kiện
26

được gọi là bậc của số nguyên theo modm và kí hiệu là


.
1.3.15. Căn nguyên thuỷ. Cho các số nguyên dương nguyên tố cùng nhau.
Khi đó, được gọi là căn nguyên thủy của theo nếu
.
Xét dãy Fibonacci xác định như sau

Nếu số nguyên tố là một ước của và không là ước của


với thì được gọi là một ước số nguyên tố nguyên thuỷ của .
Định lý Carmichael, được đặt tên sau khi nhà toán học Mỹ R. D
Carmichael, chỉ ra rằng với n lớn hơn 12, số hạng có ít nhất một ước
nguyên tố mà không phải là ước của bất kỳ số Fibonacci nào trước đó.
Ngoại lệ duy nhất cho n lên đến 12 là:
F(1) = 1 và F(2) = 1, mà không có ước nguyên tố
F(6) = 8 mà chỉ thủ chia là 2 (đó là F (3))
F(12) = 144 có ước nguyên tố chỉ có 2 (đó là F(3)) và 3 (đó là F(4))
1.3.16. Định lý Carmichael. Mỗi số Fibonacci, ngoài các trường hợp ngoại lệ
được liệt kê ở trên, có ít nhất một ước số nguyên tố nguyên thủy
1.3.17. Hàm số Carmichael. Giá trị của hàm số Carmichael tại một số nguyên
dương n, ký hiệu bởi , được định nghĩa là số nguyên dương m nhỏ nhất sao
cho với mọi số nguyên a sao cho a nguyên tố cùng nhau với n.
Ví dụ.
Chú ý rằng, bởi vì là số chẵn với mọi số nguyên lẻ nên
hay Tổng quát, theo Định lý Fermat bé ta có
. Do đó, với mọi số nguyên tố .
27

1.3.18. Phân tích Fermat. Cho n là số nguyên dương lẻ. Giả sử n = ab với a, b
là các số nguyên, do n lẻ nên a, b đều lẻ. Vì vậy, chúng ta có thể viết n = x2 - y2

với , do a, b là các số nguyên lẻ nên x, y cũng là các số

nguyên lẻ. Để tìm nghiệm của phương trình n = x2 - y2, quy trình được bắt đầu từ
số nguyên nhỏ nhất m ≥ và tìm nghiệm trong dãy số sau:
m2 - n, (m + 1)2 - n, (m+2)2 - n ...,

dãy số sẽ dừng do m không thể vượt quá . Thật vậy:

Tất cả số hạng của biểu thức này là số nguyên. Tuy nhiên phương pháp
này hiệu quả nhất khi n là tích của hai số nguyên tố gần nhau.
Ví dụ. n = 3811. Ta bắt đầu tính và tìm nghiệm trong chuỗi như sau:
622 – 3811 = 33
632 – 3811 = 159
642 - 3811=285
652 - 3811=414
662 - 3811=545
672 - 3811=678
682 - 3811=813
692 - 3811=950
702 - 3811=1089=332
Vậy ta được kết quả: 3811 = 702 - 332 = 103.37
28

CHƯƠNG 2
ỨNG DỤNG CỦA SỐ HỌC TRONG
MỘT SỐ HỆ THỐNG MẬT MÃ
2.1. MẬT MÃ CAESAR
2.1.1. Giới thiệu. Trong mật mã học, mật mã Caesar, còn gọi là mật mã dịch
chuyển, là một trong những mật mã đơn giản và được biết đến nhiều nhất. Mật
mã là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được
thay thế bằng một ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản
mã. Ví dụ, nếu độ dịch là 3, A sẽ được thay bằng B, Ă sẽ được thay bằng C và
cứ thế đến hết. Phương pháp được đặt tên theo Caesar, vị hoàng đế đã sử dụng
nó thường xuyên trong công việc.
Bước mã hóa bằng mã Caesar thường được kết hợp với một mã phức tạp
hơn, ví dụ như mật mã Vigenère, và hiện nay vẫn được dùng trong các ứng dụng
hiên đại nhưROT13. Cũng như các mật mã thay thế dùng một bảng mã khác, mã
Xê da dễ dàng bị phá vỡ và không đáp ứng được yêu cầu an toàn thông tin trong
truyền thông.
Phép dịch chuyển có thể được biểu diễn bằng hai bảng chữ cái, ví dụ dưới
đây bước dịch chuyển là 3, con số này cũng gọi là khóa mã:

Bảng chữ cái thường: ABCDEFGHIJKLMNOPQRSTUVWXYZ


Bảng chữ cái mật mã: DEFGHIJKLMNOPQRSTUVWXYZABC

Với bản chữ cái Tiếng Việt:

Bảng chữ cái thường: AĂÂBCDĐEÊGHIKLMNOÔƠPQRSTUƯVXY


Bảng chữ cái mật mã: BCDĐEÊGHIKLMNOÔƠPQRSTUƯVXYAĂÂ

Khi mã hóa hay giải mã, người ta thay thế mỗi chữ cái với chữ cái cùng
hàng trong bảng trên.
29

Mật mã cũng có thể được thực hiện bằng số học mô đun. Đầu tiên ta
chuyển đổi các chữ cái sang số, A = 0, Ă = 1, Â = 2, B = 3,... Y = 28. Mã hóa
ký tự bằng cách dịch chuyển một đoạn n có thể được mô tả bằng công thức
toán học dưới đây:
.
Giải mã:
Có nhiều định nghĩa cho phép toán môđun. Trong trường hợp trên, kết quả
phải nằm trong khoảng từ 0, 1, ... , 28. Do đó, nếu x + n hoặc x – n không nằm
trong đoạn 0, 1, ... , 28, ta phải cộng hoặc trừ nó với 29. Phép thế vẫn giữ
nguyên cho toàn bộ văn bản, vì vậy mà mã hóa Ceasar được xếp loại vào mã
thay thế một bảng chữ cái, khác với mã thay thế nhiều bảng chữ cái.
Giải mã là quá trình dịch ngược lại dựa theo bảng mật mã trên.
Ví dụ. Với văn bản Help we are being attacked với khóa mã là 15.
Mã hóa: Bảng chữ cái để mã hóa:

Bảng chữ cái thường: ABCDEFGHIJKLMNOPQRSTUVWXYZ


Bảng chữ cái mật mã: PQRSTUVWXYZABCDEFGHIJKLMNO

Ta sẽ thay các chữ H = W, E = T, L = A, ...

Văn bản ban đầu: Help we are being attacked


Văn bản mã hóa: Wtae Lt Pgt Qtxcv Piiprzts

Giải mã
Cũng theo bảng trên, ta thay các chữ W = H, T = E, L = A, ...

Văn bản mã hóa: Wtae Lt Pgt Qtxcv Piiprzts


Văn bản ban đầu: Help we are being attacked
30

2.1.2. Bảng thay thế ký tự của mã Ceasar


Thay thế từng kí tự trong mã Ceasar bởi Plaintext sau bằng kí tự đứng thứ
3 sau nó, nghĩa là:

Như thấy ở bảng trên, chữ A sẽ được thay thế bằng chữ D, B thay bằng E ...
Với mã Ceasar, người ta chỉ áp dụng phép dịch 3 vị trí như trên hình
minh họa. Nhưng sau này khi áp dụng nó người ta sử dụng các phép dịch khác
lớn hơn. Nhưng đối với bảng chữ cái tiếng Anh thì từ A -> Z có 26 chữ cái, do
đó điểm yếu của phương pháp này nằm ở chỗ phạm vi của phép dịch chỉ được
phép nằm trong khoảng từ 0 – 25. Ví dụ nếu ta sử dụng phép dịch 26 thì sẽ
tương đương với phép dịch 0.
2.1.4. Vòng tròn Ceasar
31

Dựa vào phương pháp này người ta đã xây dựng nên công thức cho
Ceasar Cipher như sau:
1) Đánh số thứ tự cho từng kí tự trong bảng chữ cái (ở đây là bảng chữ cái mã
hóa bằng tiếng Việt):

A ă â b c d
1 2 3 4 5 6
Đ e ê g h i
7 8 9 10 11 12
K l m n o ô
13 14 15 16 17 18
Ơ p q r s t
19 20 21 22 23 24
U ư v x y
25 26 27 28 29

2) Công thức cho mã Ceasar:


C = E(P) ≡ (P + 3) (mod 29) (1)
trong đó P, C: số thứ tự của Plaintext và Ciphertext trong bảng trên, số 3 là chìa
khóa (key) của mã Ceasar.

2.2. THUẬT TOÁN MÃ HOÁ RSA

Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai.
Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với
việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã
học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến
32

trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ
dài khóa đủ lớn.
Thuật toán RSA được Ron Rivest, Adi Shamir và Len Adleman mô tả lần
đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của
thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả nói trên.
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh, đã
mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật
toán này không khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát
minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật.
Hệ mã RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983.
2.2.1. Mô tả sơ lược. Thuật toán RSA có hai khóa: khóa công khai (hay khóa
công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử
dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi
cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng
khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách
khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí
mật) mới có thể giải mã được.
Quá trình truyền và sử dụng mã hoá RSA được thực hiện như sau:
- Bên gửi (Alice) yêu cầu cung cấp hoặc tự tìm khoá công khai của bên
nhận (Bob) trên một server chịu trách nhiệm quản lý khoá.
- Sau đó hai bên thống nhất thuật toán dùng để mã hoá dữ liệu, bên gửi sử
dụng khoá công khai của bên nhận cùng với thuật toán đã thống nhất để mã hoá
thông tin được gửi đi.
- Khi nhận được thông tin đã mã hoá, bên nhận sử dụng khoá bí mật của
mình để giải mã và lấy ra thông tin ban đầu.
33

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai RSA như
sau: Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh
không an toàn (ví dụ như Internet). Để làm được điều này, với thuật toán RSA,
Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob
nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như
loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob
cũng không thể mở lại được, không đọc lại hay sửa thông tin trong thư được
nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của
mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng
vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.
2.2.2. Tạo khoá. Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua
một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên
cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước
sau:
1. Chọn p và q là hai số nguyên tố đủ lớn ngẫu nhiên phân biệt.
2. Tình môđun n là tích của hai số nguyên tố này: n = pq.
3. Tính giá trị hàm số Euler của n cho bởi:
34

4. Chọn một số nguyên sao cho


, .
5. Sử dụng thuật toán Euclid mở rộng ta tính được sao cho
hay .
Ta gọi là số mũ công khai (public exponent), là số mũ bí mật (private
exponent). Thông thường người ta chọn số mũ công khai nhỏ, chẳng hạn
. Giá trị của d và hai số nguyên tố p và q được giữ bí mật.
Alice gửi khoá công khai cho Bob và giữ bí mật khoá cá nhân. Ở đây, p
và q giữ vai trò rất quan trọng. Việc tìm ra hai số p và q thường được thực hiện
bằng cách thử xác suất của các số ngẫu nhiên có độ lớn phù hợp
2.2.3. Mã hóa. Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob
chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác
định lại M) được thỏa thuận trước. Lúc này Bob có m và biết n cũng như e do
Alice gửi. Bob sẽ tính c là bản mã hóa của m theo công thức:

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo
môđun) bằng thuật toán bình phương và nhân. Cuối cùng Bob gửi c cho Alice.
Việc mã hóa được thực hiện bằng cách tính với M là bản rõ (plaintext) thỏa 0 ≤
M < n. Số C là bản mã (ciphertext) tương ứng của M. Từ C, M được tính bằng

Tính đúng đắn của thuật toán RSA được chứng minh bằng Định lý Euler
như sau: Nếu a và n là các số nguyên, nguyên tố cùng nhau và n > 1 thì
.
Do nghĩa là , với k là số nguyên, chúng
ta có thể viết lại:
35

do M và n nguyên tố cùng nhau.


Trong trường hợp M và n không nguyên tố cùng nhau. Theo Định lý
Carmichael trong đó là hàm Carmichael, cụ thể hơn nếu

thì

Chú ý rằng luôn là ước thật sự của khi n là tích của các
số nguyên tố lẻ phân biệt; trong trường hợp này, nhỏ hơn . Quan hệ
giữa e và d cho bởi
nếu
Do n là tích của các số nguyên tố phân biệt nên điều trên đúng với mọi M,
do đó nó giúp đối phó với ngoại lệ nêu trên trong Định lý Euler.
Ví dụ. Xây dựng một hệ mã hóa RSA đơn giản như sau: Chọn p = 11, q = 13,
và tính Chúng ta cũng tính
hàm Carmichael của n
.
Số mũ công khai e được chọn thỏa Chẳng
hạn e = 17 sẽ thoả mãn ràng buộc này. Số mũ bí mật sẽ được tính bởi:
36

Sử dụng Thuật toán Euclid mở rộng hoặc một số thuật toán khác, ta tính
toán được nghịch đảo môđun. Do đó, người dùng mã RSA công bố công khai số
mũ và môđun (e, n) = (13,143) và giữ bí mật d = 113; p = 11; q = 13. Quy trình
mã hoá / giải mã thường được dung như sau:
+ Bản rõ: M = 50
Mã hoá

.
+ Bản mã: C = 85
Giải mã:

.
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ
để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn.
Lấy: p = 61 là số nguyên tố thứ nhất (giữ bí mật)
q = 53 là số nguyên tố thứ hai (giữ bí mật)
n = pq = 3233 là môđun (công bố công khai)
e = 17 là số mũ công khai
d= 2753 là số mũ bí mật.
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(M) = Me mod n = M17 mod 3233
với M là văn bản rõ. Hàm giải mã là:
decrypt(C) = Cd mod n = C2753 mod 3233
với C là văn bản mã.
37

Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = 8552753 mod 3233 = 123
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ thuật toán
bình phương và nhân.
2.2.3. Mã hóa và giải mã RSA trên phần mềm Maple
Ví dụ. Thực hành bằng Maple để lập mã và giải mã:
> p :=
nextprime(134782378478234782378448238458111289485437857834534785783432344111
45784353478578343463643457987554271777111543227899876234561117791);
> q :=
nextprime(199933313458347853478523478234782378478237842378784534785783372578
34574785547545781776756543334544566668765432111176);
> n := p*q;
> e :=
nextprime(983247823478323124141113823884578473248238478234323423473824782347
243478237847834785784578311113247823784784773473799369678909000266266433117
);
> d := `mod`(1/e, (p-1)*(q-1));
> vbgoc := "em xin chuc cac thay co manh khoe";
> str := convert (vbgoc, bytes);
> dectohex := [seq(convert(str[i], hex, decimal), i = 1 .. nops(str))];
> hextostr := cat(seq(dectohex[i], i = 1 .. nops(dectohex)));
> number := convert(hextostr, decimal, hex);
> vbmat := `mod`(`&^`(number, e), n);
38

Giải mã :
> vbmat :=
1502954547155201051382152029941795627852490910898593311934127014025290877792467863
4631921098800398258571677455870022482611419896511153830288196322336458024235479784
3152958445351147244020595302348870979467519215276862913989511716810729980997714035
> p :=
nextprime(13478237847823478237844823845811128948543785783453478578343234411145784353478578
343463643457987554271777111543227899876234561117791):
> q :=
Nextprime(199933313458347853478523478234782378478237842378784534785783372578345747
85547545781776756543334544566668765432111176):
> n := p*q:
> e :=
nextprime(9832478234783231241411138238845784732482384782343234234738247823472434782
37847834785784578311113247823784784773473799369678909000266266433117):
> d := `mod`(1/e, (p-1)*(q-1)):
> giaima;
> vbmaso := `mod`(`&^`(vbmat, d), n):
> hexstr := convert(vbmaso, hex, decimal):
> hexlist := [seq(substring(hexstr, 2*i-1 .. 2*i), i = 1 .. (1/2)*length(hexstr))]:
> declist := [seq(convert(hexlist[i], decimal, hex), i = 1 .. nops(hexlist))]:
> vbgiaima := convert(convert(convert(declist, list), bytes), name);
39

2.2.4. Trao đổi các thông điệp bí mật


Thư mục khóa công khai chứa các cặp (e, n). Người dùng muốn gửi
các thông điệp bí mật cho một người khác truy cập đến thư mục và thu được
các tham số này. Ví dụ thư mục được sắp thứ tự như sau:

Người dùng (User) Khoá công khai (Pubilc keys)


Alice (ea, na)
Bob (eb, nb)
Cathy (ec, nc)
… …

Cặp và tương ứng là mô đun và số mũ công khai của Alice. Như vậy,
làm thế nào Alice gửi thông điệp bí mật M của cô ấy đến cho Bob? Trong giao
thức đơn giản của tác giả, Alice sẽ thực hiện các bước sau:
1) Alice xác định tên của Bob trong thư mục và lấy số mũ công khai cùng
mô đun của anh ấy: (eb, nb).
2) Alice tính: .
3) Alice gửi C đến cho Bob trên mạng Internet.
4) Bob nhận C.
5) Bob sử dụng số mũ bí mật của anh ấy và mô đun tính
để thu được M.
2.2.5. Ký các tài liệu số
Thuật toán RSA cung cấp một thủ tục để ký tài liệu số và xác minh
(verifying) nếu chữ ký thật sự là xác thực (authentic). Ký một tài liệu số có phần
khác với ký một tài liệu giấy (sinh ra cùng một chữ ký). Chữ ký số không thể là
một hằng, nó là một hàm của nhiều biến số. Sau khi có được chữ ký (chỉ là một
phần dữ liệu số) của một tài liệu số, nó được đính kèm vào tài liệu cho những ai
40

có nhu cầu xác minh tính xác thực của tài liệu và chữ ký. Ở đây, luận văn chỉ
minh họa tóm tắt qui trình ký sử dụng hệ mã RSA.
Giả sử Alice muốn ký một thông điệp và Bob muốn chứng minh rằng
thông điệp này thực sự được ký bởi Alice. Trước hết, Alice thực hiện các bước
như sau:
1) Alice lấy thông điệp M và tính
2) Alice sẽ gửi thông điệp M và chữ ký S của cô ấy cho những ai
có nhu cầu xác minh chữ ký.
Bob thực hiện các bước sau để xác minh chữ ký S của Alice trên tài liệu M:
1) Bob thu được M và S; Bob xác định tên của Alice trong thư mục và
thu được số mũ công khai cùng mô đun của cô ấy: (ea, na).
2) Bob tính
3) Nếu thì chữ ký được chứng thực. Ngược lại, hoặc thông điệp
gốc M hoặc chữ ký S được sửa đổi. Do đó, chữ ký là không có giá trị.
Chú ý rằng các ví dụ về giao thức được trình bày ở đây chỉ nhằm mục
đích minh họa – chúng là các giao thức đơn giản. Trong thực tế, các giao thức
phức tạp hơn nhiều.
Ví dụ, các kỹ thuật mật mã khóa bí mật (secret-key cryptographic) cũng
có thể được dùng để gửi các thông điệp bí mật. Ngoài ra, chữ ký được áp dụng
với các thông điệp có độ dài tùy ý. Chữ ký thông thường được tính bằng cách
trước hết tính một giá trị băm (hash value) của các thông điệp dài và sau đó ký
giá trị băm này.
41

Hình 5: Mô tả quá trình ký, xác thực chữ ký

2.2.6. Tính lũy thừa modulo (Modular Exponentiation)


Một khi hệ mã RSA được cài đặt, nghĩa là môđun, số mũ bí mật và số mũ
công khai được xác định và các thành phần công khai được công bố, người
gửi cũng như người nhận thực hiện một thao tác duy nhất để ký, xác thực, mã
hóa và giải mã. Thuật toán RSA trong khía cạnh này là một trong các hệ mã đơn
giản nhất. Thao tác yêu cầu tính , nghĩa là lũy thừa modulo. Phép
tính lũy thừa modulo là một thao tác thông dụng để xáo trộn nội dung
(scrambling), được sử dụng trong một số hệ mã. Chẳng hạn, lược đồ trao đổi
khóa Diffie-Hellman yêu cầu tính lũy thừa modulo. Hơn nữa, lược đồ ký
ElGamal và Digital Signature Standard (DSS) được đề xuất gần đây của Nation
Institute for Standards and Technology cũng yêu cầu tính lũy thừa
modulo. Tuy nhiên, chú ý rằng quy trình tính lũy thừa modulo trong hệ mã dựa
trên bài toán logarit rời rạc là khác nhau: Cơ số (M) và mô đun (n) được biết
trước. Điều này cho phép một số tính toán trước do các lũy thừa của cơ số
42

được tính toán trước và được lưu lại. Trong qui trình tính lũy thừa của thuật
toán RSA, chúng ta biết trước được số mũ (e) và mô đun (n) nhưng không biết
được cơ số (base) có khả năng không được áp dụng.
Phép tính các lũy thừa modulo có ứng dụng trên các máy tính đa năng
(general - purpose computers), chẳng hạn như các máy tính cá nhân, các vi xử
lý (microprocessors), các vi điều khiển (microcontrollers), các bộ xử lý tín hiệu
(signal processors), các máy trạm và các máy tính lớn (mainframe).
2.2.7. Độ an toàn của hệ thống RSA. Độ an toàn của hệ thống RSA dựa trên 2
cơ sở của Toán học: Bài toán phân tích ra thừa số nguyên tố các số nguyên lớn
và Bài toán RSA. Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu
quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với
RSA. Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi
bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số
m sao cho , trong đó (e, n) chính là khóa công khai và c là bản
mã. Hiện nay phương pháp triển vọng nhất để giải bài toán này là phân tích n ra
thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí
mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán.
Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n = pq thì có thể dễ
dàng tìm được giá trị (p - 1)( q - 1) và qua đó xác định d từ e. Chưa có một
phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian
đa thức (polynomial-time). Tuy nhiên người ta cũng chưa chứng minh được điều
ngược lại (sự không tồn tại của thuật toán).
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số
nguyên tố có độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA
có độ dài từ 1024 tới 2048 bít. Một số chuyên gia cho rằng khóa 1024 bít có thể
43

sớm bị phá vỡ (cũng có nhiều người phản đối việc này). Với khóa 4096 bít thì
hầu như không có khả năng bị phá vỡ trong tương lai gần. Do đó, người ta
thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn đủ lớn. Nếu n
có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài giờ với máy
tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bít, nó có thể bị
phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Một thiết bị lý thuyết có
tên là TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an
toàn của khóa 1024 bít. Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có
độ dài tối thiểu 2048 bít.
2.2.8. Tấn công dựa trên thời gian lên RSA
Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: Nếu
kẻ tấn công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định được
thời gian giải mã đối với một số bản mã lựa chọn thì có thể nhanh chóng tìm ra
khóa d. Dạng tấn công này có thể áp dụng đối với hệ thống chữ ký điện tử sử
dụng RSA. Năm 2003, Dan Boneh và David Brumley chứng minh một dạng tấn
công thực tế hơn: phân tích thừa số RSA dùng mạng máy tính (Máy chủ web
dùng SSL). Tấn công đã khai thác thông tin rò rỉ của việc tối ưu hóa Định lý số
dư Trung quốc mà nhiều ứng dụng đã thực hiện.
Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã
luôn diễn ra trong thời gian không đổi bất kể văn bản mã. Tuy nhiên, cách này
có thể làm giảm hiệu suất tính toán. Thay vào đó, hầu hết các ứng dụng RSA sử
dụng một kỹ thuật gọi là che mắt. Kỹ thuật này dựa trên tính nhân của RSA:
thay vì tính cd mod n, Alice đầu tiên chọn một số ngẫu nhiên r và tính (rec)d mod
n. Kết quả của phép tính này là rm mod n và tác động của r sẽ được loại bỏ bằng
cách nhân kết quả với nghịch đảo của r. Đối với mỗi văn bản mã, người ta chọn
44

một giá trị của r. Vì vậy, thời gian giải mã sẽ không còn phụ thuộc vào giá trị
của văn bản mã.
2.3. MẬT MÃ VIGENÈRE

Mật mã Vigenère là một phương pháp mã hóa văn bản bằng cách sử
dụng xen kẽ một số phép mã hóa Caesar khác nhau dựa trên các chữ cái của một
từ khóa. Nó là một dạng đơn giản của mật mã thay thế dùng nhiều bảng chữ cái.
Trong phép mã hóa Caesar, mỗi ký tự của bảng chữ cái được dịch đi một
khoảng nhất định, ví dụ với bước dịch là 3, A trở thành D, B trở thành E ... Mật
mã Vigenère là sự kết hợp xen kẽ vài phép mã hóa Caesar với các bước dịch
khác nhau.
Để mã hóa, ta dùng một hình vuông Vigenère (hình 6 - công cụ của phép
mã hóa Vigenere). Nó gồm 26 hàng, mỗi hàng dịch về bên trái một bước so với
hàng phía trên, tạo thành 26 bảng mã Caesar. Trong quá trình mã hóa, tùy theo
từ khóa mà mỗi thời điểm ta dùng một dòng khác nhau để mã hóa văn bản.

Hình 6: Hình vuông Vigenère (Bảng Vigenère)


45

Ví dụ, ta có văn bản cần mã hóa như sau:


ATTACKATDAWN
Người gửi lựa chọn một từ khóa và viết nó lặp lại nhiều lần trên một dòng
đến khi số chữ cái trên dòng bằng số chữ cái trong thông điệp, với từ khóa
"LEMON" thì:
LEMONLEMONLE
Chữ cái đầu tiên của văn bản, A, được mã hóa bằng bảng bắt đầu
với L (chữ cái đầu tiên của từ khóa). Nó sẽ được mã hóa thành chữ cái trên
dòng L và cột A của hình vuông Vigenère, đó là chữ L. Tương tự như vậy, chữ
cái thư hai của văn bản sẽ được mã hóa bằng chữ cái thứ hai của từ khóa: chữ
trên dòng E và cột T là X. Sau đây là bản mã:
46

KẾT LUẬN

Bản luận văn này là nhằm tìm hiểu cơ sở của việc áp dụng Số học vào
lĩnh vực mã hoá thông tin hay rộng hơn là Lý thuyết mật mã.
Nội dung chủ yếu của luận văn bao gồm:
1. Trình bày tổng quan các kiến thức về Lý thuyết mật mã: Mã hoá, giải mã,
các hệ thống mã hoá (mã hóa đối xứng và mã hóa bất đối xứng).
2. Giới thiệu một số khái niệm và kết quả Số học có ứng dụng trực tiếp trong
mã hoá và giải mã thông tin: Phân tích nguyên tố, Phân tích Fermat, Phép tính đồng
dư, Định lý số dư Trung Quốc, Định lý Euler, Định lý Fermat bé, Số giả nguyên tố,
Định lý Carmichael, Hàm số Euler, Hàm số Carmichael.
3. Giới thiệu về một số hệ mật mã (mã Cesaz, mã Vigenère, mã RSA) có liên
quan trực tiếp đến việc ứng dụng công cụ phép tính đồng dư và các kết quả khác
của Số học trong mã hoá, giải mã và bảo vệ an toàn thông tin.
4. Thực hành mã hoá và giải mã RSA trên phần mềm Maple.
Luận văn có thể đi sâu tìm hiểu các ứng dụng sâu sắc hơn của Số học trong
một số lĩnh vực cụ thể của ngành Toán - Tin học ứng dụng như: Thẻ tín dụng ATM,
Chứng khoán, Chữ ký điện tử, Xử lý ảnh, Quản lý chính phủ điện tử…
47

TÀI LIỆU THAM KHẢO

TIẾNG VIỆT
[1] Phạm Huy Điển (2002), Tính toán, lập trình và giảng dạy toán học trên
Maple, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.
[2] Phạm Huy Điển, Hà Huy Khoái (2004), Mã hóa thông tin - Cơ sở toán học và
ứng dụng, Nhà xuất bản Đại học Quốc gia Hà Nội.
[3] Doãn Tam Hòe (2008), Toán học tính toán, Nhà xuất bản Giáo dục, Hà Nội.
[4] Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật toán, Nhà xuất bản Đại
học Quốc gia Hà Nội.
TIẾNG ANH
[5] Brassard (1988), Modern Cryptology. Lecture Notes in Computer Science,
Springer Verlag.
[6] D. M. Burton (2002), Elementary Number Theory, Tata McGraw - Hill
Company, New Delhi.
[7] L. Y. Kiang, Living with Mathematics (2011), McGraw - Hill Education
(Asia), Singapore.
[8] B. Scheier (1996), Applied Cryptography, Wiley.
[9] D. Stinson (1995), Cryptography: Theory and Pratice, CRS Press LLC.
[10] R. Rivest, A. Shamir, L. Adleman (1978), A Method for Obtaining Digital
Signatures and Public-Key Cryptosystems, Communications of the ACM,
Vol. 21 (2), pp. 120–126.
[11] S. G. Telang (2001), Number Theory, Tata McGraw-Hill Company, New
Delhi.
48

You might also like