Tải bản đầy đủ (.doc) (48 trang)

Một vài ứng dụng của số học trong mã hóa và giải mã thông tin

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 (682.04 KB, 48 trang )

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Ã HÓA 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Ã HÓA 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

MỞ ĐẦU
CHƯƠNG 1

TRANG
1
4

MỘT SỐ KIẾN THỨC CƠ SỞ
1.1
1.2
1.3

Tổng quan về mật mã
Mã hoá
Những khái niệm và kết quả Số học có nhiều ứng dụng trong mã

4
9
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
2.2
2.3

Mật mã Caesar
Thuật toán mã hoá RSA
Mật mã Vigenère
KẾT LUẬN
TÀI LIỆU THAM KHẢO

25
28
41
43
44

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à



4

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
đế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à



5

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à tìm hiểu những ứng dụng của Số học
vào một số lĩnh vực mã hóa và giải mã thông tin, nhằm khẳng định tính đúng
đắn của các thuật toán mật mã và đảm bảo toán học của chúng.


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.
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 học tập và nghiên cứu.
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ính
và 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.


10

1.1.3. Mật mã học cổ điển
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
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ã.


12

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),
thoả mãn điều kiện sau: Với mỗi k ∈ K có một quy tắc mã ek : P → C và một quy
tắc giải mã tương ứng d k : C → P sao cho d k ( ek ( x) ) = x, ∀x ∈ P.


13

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:

EK ( P ) = C ; DK (C ) = P.

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


14

- 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ự.
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ờ.


15

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.
Đị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.


16

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ó

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ã hóa
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


17

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ã hóa
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 n .
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 đó n = ab , trong đó 1 < a ≤ b < n. Rõ ràng ta phải có a hoặc b không vượt
quá

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

n đề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á

31 ) 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

n.

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á n .
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.
a = bq0 + r0 , 0 < r0 ≤ b − 1
b = r0 q1 + r1 , 0 < r1 ≤ r0 − 1
r0 = r1q2 + r2 , 0 < r2 ≤ r1 − 1
M
rm −2 = rm −1qm + rm , 0 < rm ≤ rm −1 − 1
rm −1 = rm qm +1 ,

rm +1 = 0.
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:
a > b > r0 > r1 > L > rm−1 > rm > rm+1 = 0 .

Từ đó, ta có ước chung lớn nhất của a, b là
d = (a, b) = (b, r0 ) = (r0 , r1 ) = (r1, r2 ) = L = (rm −1 , rm ) = rm .
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 ϕ (m) là hàm số học có giá trị tại mỗi số tự
nhiên m ≠ 0 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:

ϕ ( m) =




1

1≤ k ≤m
( k , m ) =1

.

Hàm ϕ (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 ϕ (m) 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:

å j (d ) = m .
dm

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ì

aϕ ( m ) ≡ 1(mod m) .
Đị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ó aaϕ ( m) −1 ≡ 1(mod m) tức là aϕ ( m )−1
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 ax ≡ b(mod m) với ( a, m) = 1 là x ≡ aϕ ( m )−1b(mod m) .
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ó ϕ (7) = 6; ϕ (11) = 10;26 ≡ 1(mod 7); 210 ≡ 1(mod11) .
Do đó, 230 ≡ 1(mod 7); 230 ≡ 1(mod11) .
Vì vậy

230 º 1(mod 77).


Mặt khác, 1000000 = 30.33333 + 10 cho nên:
21000000 º 210 º 23(mod 77) .


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ì a p −1 ≡ 1(mod p) Nói cách khác, nếu p là số nguyên tố và a là số
nguyên bất kỳ thì a p ≡ a (mod p ) .
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 2 p º 2(mod p) . Đúng là, nếu p là số nguyên tố, thì 2 p º 2(mod p) . Đâ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 2 p º 2(mod p) thì p là số nguyên tố) là sai. Chẳng hạn, 2341 º 2(mod341) ,
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 a n ≡ a(mod n) 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 a sao cho a n º a(mod n) ,
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ư:
 x ≡ a1 (mod m1 )
 x ≡ a (mod m )

2
2

 M
 x ≡ ar (mod mr )
có nghiệm duy nhất theo môđun m = m1m2 ...mr .
1.3.13. Nhóm nhân ¢ *m các số nguyên modm
Nếu m > 1 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 ¢ *m . Cấp của nhóm này cho bởi giá trị j (m) của hàm Euler. Giá trị
j (m) được gọi là kích thước của nhóm nhân ¢ *m . 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 ¢ *m
đượ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 ¢ *m 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, ¢ 24 = ¢ 2 × ¢ 3 là một nhóm xyclic cấp 8.
3


Nhóm ¢ *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 j (m) của nó.
1.3.14. Bậc của một số nguyên. Cho a, m 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
aj ( m ) º 1(mod m) .
Số nguyên dương x nhỏ nhất thỏa điều kiện
a x º 1(mod m)


×