Tải bản đầy đủ (.docx) (61 trang)

Hệ mã luân phiên và ứng dụng trong bảo mật dữ liệu văn bản

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 (698.61 KB, 61 trang )

===£offlca===
Bộ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC sư PHẠM HÀ

TRẦN HOÀNG

HỆ MÃ LUÂN PHIÊN VÀ ỨNG DỤNG TRONG BẢO MẬT DỮ
LIỆU VĂN BẢN

LUẬN VĂN THẠC sĩ MÁY TÍNH

HÀ NỘI,


===£offlca===

TRẦN HOÀNG

HỆ MÃ LUÂN PHIÊN VÀ ỨNG DỤNG TRONG BẢO MẬT DỮ
LIỆU VĂN BẢN

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

LUẬN VĂN THẠC sĩ MÁY TÍNH

Nguôi huóng dẫn khoa học: TS. Trịnh Đình Vinh

HÀ NÔI.




4
LỜI CẢM ƠN

Luận văn này được hoàn thành tại Trường Đại học Sư phạm Hà Nội 2 dưới sự
hướng dẫn khoa học của Tiến sĩ Kiều Văn Hưng. Tác giả xin được bày tỏ lòng biết ơn
chân thành đối với thẫy hướng dẫn đã tận tâm giúp đỡ để luận văn được hoàn thành.
Tác giả xin chân thành các ơn Ban Giám hiệu, Phòng Sau đại học Trường Đại
học Sư phạm Hà Nội 2 và các thầy cô giáo đã giảng dạy, giúp đỡ tác giả trong suốt
quá trình học tập và nghiên cứu.
Tác giả chân thành cảm ơn các bạn học viên lớp KI 7 Khoa học máy tính, cùng
gia đình, người thân đã quan tâm, động viên, giúp đỡ tác giả trong quá trình học tập
và nghiên cứu.
Ngày 03 tháng 12 năm 2015


5
Học viên
*

LỜI CAM ĐOAN

Trần Hoàng Minh

Tôi xin cam đoan rằng số liệu và kết quả nghiên cứu trong luận văn này là trung
thực và không trùng lặp với các đề tài khác. Tôi cũng xin cam đoan rằng mọi sự giúp
đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong
luận văn đã được chỉ rõ nguồn gốc.
Ngày 03 tháng 12 năm 2015
Học

* viên

Trần Hoàng Minh


MỤC LỤC


DANH MỤC
• HÌNH

MỞ ĐẦU

1. Lý do chọn đề tài
Lý thuyết mã bắt nguồn từ lý thuyết thông tin do c. E. Shannon khởi xướng đã
đặt nền móng toán học cho lý thuyết thông tin hiện đại. Do nhu cầu thực tiễn, lý
thuyết mã phát triển theo nhiều hướng khác nhau, chẳng hạn như hướng nghiên cứu
liên quan đến mã độ dài cố định, điển hình là mã sửa sai, ứng dụng để phát hiện và
sửa lỗi xuất hiện trên các kênh truyền tin; hay một hướng nghiên cứu khác có liên
quan đến mã độ dài biến đổi, được nghiên cứu đầu tiên bởi Schũzenberger. Một số bài
toán cơ bản trong nghiên cứu lý thuyết mã là: các tính chất liên quan đến sự phân tích
một từ thành dãy các từ thuộc một tập cho trước; tính chất không nhập nhằng của
ngôn ngữ trong quan hệ với mã; mã trong mối qua hệ với đại số, tổ họp trên từ, lý
thuyết ngôn ngữ hình thức và otomat (xem [7], [8]).
Bảo mật thông tin là một hướng nghiên cứu luôn được nhiều người quan tâm
nhằm xây dựng những hệ mật mã với độ an toàn cao, nhưng cho đến nay vẫn chưa có
một hệ mật mã nào có thể có độ an toàn tuyệt đối. Đây là động lực quan trọng thúc
đẩy sự liên tục phải cải tiến, nghiên cứu xây dựng các hệ mã mới, cả về khía cạnh lý
thuyết cũng như thực hành.
Năm 2004, Phan Trung Huy, Vũ Thành Nam [4] đã đề xuất các hình thức mã

mới, là mã của một cặp hai ngôn ngữ (mã luân phiên, mã luân phiên chẵn) dựa vào
phân tích luân phiên của hai ngôn ngữ trên một bảng chữ và thiết lập được một số tính
chất cơ sở ban đầu về hai lóp mã mới này. Mã luân phiên, mã luân phiên chẵn là một
phát triển mở rộng tự nhiên, nhưng không tầm thường của mã truyền thống. Trong khi


mỗi mã truyền thống là một ngôn ngữ X trên một bộ chữ nào đó thì mã luân phiên, mã
luân phiên chẵn là một cặp {X,y} của hai ngôn ngữ mà mỗi một trong chúng không
nhất thiết phải là một mã truyền thống. Mặt khác, nếu X là một mã truyền thống thì
{X,X} là một mã luân phiên chẵn. Như vậy mã luân phiên, mã luân phiên chẵn là một
mở rộng thực sự của mã truyền thống, hứa hẹn một khả năng ứng dụng rộng rãi hơn
và khả năng thúc đẩy phát hiển các nghiên cứu mới, sâu sắc hơn về ngôn ngữ nói
chung, lý thuyết mã nói riêng.
Với mong muốn tìm hiểu về các hệ mật mã và mã luân phiên, luân phiên chẵn
và những ứng dụng của các hệ mã này, tôi mạnh dạn chọn đề tài “Hệ mã luân phiên
và ứng dụng trong bảo mật dữ liệu văn bản ” cho luận văn tốt nghiệp thạc sĩ chuyên
ngành Khoa học máy tính.

2. Mục đích nghiên cứu
Nghiên cứu cơ sở lý thuyết về mật mã, mã luân phiên và ứng dụng chúng
trong lĩnh vực an toàn, bảo mật dữ liệu.

3. Nhiệm vụ nghiên cứu
-

Tìm hiểu các khái niệm cơ bản, ứng dụng trong bảo mật dữ liệu của các hệ mật mã;

-

Nghiên cứu cơ sở toán học, các đặc trưng, thuật toán kiểm định mã luân phiên, mã

luân phiên chẵn;

-

Đề xuất một sơ đồ mã hóa, giải mã sử dụng mã luân phiên hoặc mã luân phiên chẵn
và ứng dụng trong bảo mật dữ liệu. Xây dựng chương trình thử nghiệm và đánh giá
kết quả thu được.

4. Đối tuợng và phạm vỉ nghiên cứu
-

Đối tượng nghiên cứu: Các hệ mật mã, mã luân phiên, mã luân phiên
chẵn.

-

Phạm vi nghiên cứu: Nghiên cứu các khái niệm, kết quả cơ bản về các hệ mật mã hiện
đại, mã luân phiên, mã luân phiên chẵn và xây dựng một sơ đồ mã hóa, giải mã sử
dụng mã luân phiên hoặc mã luân phiên chẵn.


5. Phương pháp nghiên cứu
-

Nghiên cứu lý thuyết: Nghiên cứu các kết quả đã công bố trong lĩnh vực liên quan.
Trên cơ sở đó phân tích, tổng hợp, trình bày các kết quả đã công bố.

-

Nghiên cứu thục nghiệm: Áp dụng kết quả nghiên cứu lý thuyết vào việc đề xuất một

sơ đồ ứng dụng trong bảo mật dữ liệu, cài đặt chuơng trình thử nghiệm và đánh giá
kết quả thu đuợc.


Chương 1
TỒNG QUAN VÈ CÁC HỆ MẶT MÃ

Chương này trình bày những khái niệm, kết quả cơ bản trong [1-3, 5]
liên quan tới Luận văn, gồm những kiến thức cơ bản về các hệ mật mã được
sử dụng trong an toàn, bảo mật thông tin.
1.1. Sơ lươc về lich sử mât mã *
*•
Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin
thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa.
Đây là một ngành quan trọng và có nhiều ứng dụng trong đòi sống xã hội. Ngày nay,
các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến
hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc
phòng,... cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng... Cùng với
sự phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của khoa
học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyên
sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng, ứng dụng của khoa
học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm
nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết: chứng thực nguồn gốc nội
dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sở hữu
mã khóa (chứng nhận khóa công cộng), các quy trình giúp trao đổi thông tin và thực
hiện giao dịch điện tử an toàn trên mạng... Những kết quả nghiên cứu về mật mã cũng
đã được đưa vào trong các hệ thống phức tạp hơn, kết họp vói những kỹ thuật khác để
đáp ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ
như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an
ninh của các đơn vị vói 6 hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ

multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí
tuệ đối với thông tin số...


Mât mã 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).
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 hoặc là những điều tương tự. Muộn hơn, các học giả về tiếng Hebrew có
sử dụng một phương pháp mã hóa thay thế bảng chữ cái đơn giản chẳng hạn như mật
mã Atbash (khoảng năm 500 đến năm 600). Mật mã học từ lâu đã được sử dụng trong
các tác phẩm tôn giáo để che giấu thông tin với chính quyền hoặc nền văn hóa thống
trị. Ví dụ tiêu biểu nhất là "số chỉ kẻ thù của Chúa" (tiếng Anh: Number of the Beast)
xuất hiện trong kinh Tân Ước của Cơ đốc giáo, ở đây, số 666 có thể là cách mã hóa để
chỉ đến Đế chế La Mã hoặc là đến hoàng đế Nero của đế chế này. Việc không đề cập
trực tiếp sẽ đỡ gây rắc rối khi cuốn sách bị chính quyền chú ý. Đối với Cơ đốc giáo
chính thống thì việc che giấu này kết thúc khi Constantine cải đạo và chấp nhận đạo
Cơ đốc là tôn giáo chính thống của đế chế. Người Hy Lạp cổ đại cũng được biết đến
là đã sử dụng các kỹ thuật mật mã (chẳng hạn như gậy mật mã). Cũng có những bằng
chứng rõ ràng chứng tỏ người La Mã nắm được các kỹ thuật mật mã (mật mã Caesar
và các biến thể). Thậm chí đã có những đề cập đến một cuốn sách nói về mật mã trong
quân đội La Mã; tuy nhiên cuốn sách này đã thất truyền.
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.
Mật mã thời trung cổ:
Nguyên do xuất phát có thể là từ việc phân tích bản kinh Qur'an, do nhu cầu
tôn giáo, mà kỹ thuật phân tích tần suất đã được phát minh để phá vỡ các hệ thống

mật mã đơn ký tự vào khoảng năm 1000. Đây chính là kỹ thuậtphá mã cơ bản nhất


được sử dụng, mãi cho tới tận thời điểm của thế chiến thứ II. về nguyên tắc, mọi kỹ
thuật mật mã đều không chống lại được kỹ thuật phân tích mã (cryptanalytic
technique) này cho tới khi kỹ thuật mật mã dùng nhiều bảng chữ cái được Alberti
sáng tạo (năm 1465).
Mật mã học (tuy âm thầm) ngày càng trở nên quan trọng dưới tác động của
những thay đổi, cạnh tranh trong chính trị và tôn giáo. Chẳng hạn tại châu Âu, trong
và sau thời kỳ Phục hưng, các công dân của các thành bang thuộc Ý, gồm cả các thành
bang thuộc giáo phận và Công giáo La Mã, đã sử dụng và phát triển rộng rãi các kỹ
thuật mật mã. Tuy nhiên rất ít trong số này tiếp thu được công trình của Alberti (các
công trình của họ không phản ảnh sự hiểu biết hoặc tri thức về kỹ thuật tân tiến của
Alberti) và do đó hầu như tất cả những người phát triển và sử dụng các hệ thống này
đều quá lạc quan về độ an toàn. Điều này hầu như vẫn còn đúng cho tới tận hiện nay,
nhiều nhà phát triển không xác định được điểm yếu của hệ thống. Do thiếu hiểu biết
cho nên các đánh giá dựa trên suy đoán và hy vọng là phổ biến.
Mật mã học, phân tích mã học và sự phản bội của nhân viên tình báo, của
người đưa thư, đều xuất hiện trong âm mưu Babington diễn ra dưới triều đại của nữ
hoàng Elizabeth I dẫn đến kết cục xử tử nữ hoàng Mary I của Scotland. Một thông
điệp được mã hóa từ thời "người dưới mặt nạ sắt" (Man in the Iron Mask) (được giải
mã vào khoảng 1900 bởi Étienne Bazeries) cho biết một số thông tin về số phận của tù
nhân này (đáng tiếc thay là những thông tin này cũng chưa được rõ ràng cho lắm).
Mật mã học, và những lạm dụng của nó, cũng là những phần tử liên quan đến mưu đồ
dẫn tới việc xử tử Mata Hari và âm mưu quỷ quyệt dẫn đến trò hề trong việc kết án
Dreyfus và bỏ tù hai người đầu thế kỷ 20. May mắn thay, những nhà mật mã học
(cryptographer) cũng nhúng tay vào việc phơi bày mưu đồ dẫn đến các khúc mắc của
Dreyfus; Mata Hari, ngược lại, đã bị bắn chết.
Ngoài các nước ở Trung Đông và châu Âu, mật mã học hầu như không được
phát triển. Tại Nhật Bản, mãi cho tới 1510, mật mã học vẫn chưa được sử dụng và các



kỹ thuật tiên tiến chỉ được biết đến sau khi nước này mở cửa với phương Tây (thập kỷ
1860).
Mât mã từ năm 1800 tới thế chiến thứ II:
Tuy mật mã học có một lịch sử dài và phức tạp, mãi cho đến thế kỷ 19 nó mới
được phát triển một cách có hệ thống, không chỉ còn là những tiếp cận nhất thời, vô tổ
chức. Những ví dụ về phân tích mã bao gồm công trình của Charles Babbage trong kỷ
nguyên củaChiến tranh Krim (Crimean War) về toán phân tích mật mã đơn ký tự.
Công trình của ông, tuy hơi muộn màng, đã được Friedrich Kasiski, người Phổ, khôi
phục và công bố. Tại thời điểm này, để hiểu được mật mã học, người ta thường phải
dựa vào những kinh nghiệm từng trải (rules of thumb); xin xem thêm các bài viết về
mật mã học của Auguste Kerckhoffs cuối thế kỷ 19. Trong thập niên 1840, Edgar
Allan Poe đã xây dựng một số phương pháp có hệ thống để giải mật mã. Cụ thể là,
ông đã bày tỏ khả năng của mình trong tờ báo hằng tuần Alexander's Weekly (Express)
Messenger Ở Philadelphia, mời mọi người đệ trình các phương pháp mã hóa của họ,
và ông là người đứng ra giải. Sự thành công của ông gây chấn động với công chúng
trong vài tháng. Sau này ông có viết một luận văn về các phương pháp mật mã hóa và
chúng trở thành những công cụ rất có lợi, được áp dụng vào việc giải mã của Đức
trong Thế chiến II.
Trong thời gian trước và tới thời điểm của Thế chiến II, nhiều phương pháp
toán học đã hình thành (đáng chú ý là ứng dụng của William F. Friedman dùng kỹ
thuật thống kê để phân tích và kiến tạo mật mã, và thành công bước đầu của Marian
Rejewski trong việc bẻ gãy mật mã của hệ thống Enigma của Quân đội Đức). Sau Thế
chiến II trở đi, cả hai ngành, mật mã học và phân tích mã, ngày càng sử dụng nhiều
các cơ sở toán học. Tuy thế, chỉ đến khi máy tính và các phương tiện truyền thông
Internet trở nên phổ biến, người ta mới có thể mang tính hữu dụng của mật mã học
vào trong những thói quen sử dụng hằng ngày của mọi người, thay vì chỉ được dùng
bởi các chính quyền quốc gia hay các hoạt động kinh doanh lớn trước đó.



Mật mã trong thế chiến thứ II:
Trong thế chiến II, các hệ thống mật mã cơ khí và cơ điện tử được sử dụng
rộng rãi mặc dù các hệ thống thủ công vẫn được dùng tại những nơi không đủ điều
kiện. Các kỹ thuật phân tích mật mã đã có những đột phá trong thời kỳ này, tất cả đều
diễn ra trong bí mật. Cho đến gần đây, các thông tin này mới dần được tiết lộ do thời
kỳ giữ bí mật 50 năm cjủa chính phủ Anh đã kết thúc, các bản lưu của Hoa Kỳ dần
được công bố cùng với sự xuất hiện của các bài báo và hồi ký có liên quan.
Người Đức đã sử dụng rộng rãi một hệ thống máy rôto cơ điện tử, dưới nhiều
hình thức khác nhau, có tên gọi là máy Enigma. Vào tháng 12 năm 1932, Marian
Rejewski, một nhà toán học tại Cục mật mã Ba Lan (tiếng Ba Lan: Biuro Szyfrów), đã
dựng lại hệ thống này dựa trên toán học và một số thông tin có được từ các tài liệu do
đại úy Gustave Bertrand của tình báo quân sự Pháp cung cấp. Đây có thể coi là đột
phá lớn nhất trong lịch sử phân tích mật mã trong suốt một nghìn năm trở lại.
Rejewski cùng với các đồng sự của mình là Jerzy Rózycki và Henryk Zygalski đã tiếp
tục nghiên cứu và bắt nhịp với những tiến hóa trong các thành phần của hệ thống cũng
như các thủ tục mật mã hóa. Cùng với những tiến triển của tình hình chính trị, nguồn
tài chính của Ba Lan trở nên cạn kiệt và nguy cơ của cuộc chiến tranh trở nên gần kề,
vào ngày 25 tháng 7 năm 1939 tại Warszawa, cục mật mã Ba Lan, dưới chỉ đạo của bộ
tham mưu, đã trao cho đại diện tình báo Pháp và Anh những thông tin bí mật về hệ
thống Enigma.
Ngay sau khi Thế chiến II bắt đầu (ngày 1 tháng 9 năm 1939), các thành viên
chủ chốt của cục mật mã Ba Lan được sơ tán về phía tây nam; và đến ngày 17 tháng 9,
khi quân đội Liên Xô tiến vào Ba Lan, thì họ lại được chuyển sang Romania. Từ đây,
họ tới Paris (Pháp). Tại PC Bruno, ở gần Paris, họ tiếp tục phân tích Enigma và họp
tác với các nhà mật mã học của Anh tại Bletchley Park lúc này đã tiến bộ kịp thời.
Những người Anh, trong đó bao gồm những tên tuổi lớn của ngành mật mã học như
Gordon Welchman và Alan Turing, người sáng lập khái niệm khoa học điện toán hiện



đại, đã góp công lớn trong việc phát triển các kỹ thuật phá mã hệ thống máy Enigma.
Ngày 19 tháng 4 năm 1945, các tướng lĩnh cấp cao của Anh được chỉ thị
không được tiết lộ tin tức rằng mã Enigma đã bị phá, bởi vì như vậy nó sẽ tạo điều
kiện cho kẻ thù bị đánh bại cơ sở để nói rằng họ đã "không bị đánh bại một cách sòng
phang" (were not well and fairly beaten)[ 1].
Các nhà mật mã học của Hải quân Mỹ (với sự họp tác của các nhà mật mã học
Anh và Hà Lan sau 1940) đã xâm nhập được vào một số hệ thống mật mã của Hải
quân Nhật. Việc xâm nhập vào hệ thống JN-25 trong số chúng đã mang lại chiến
thắng vẻ vang cho Mỹ trong trận Midway. SIS, một nhóm trong quân đội Mỹ, đã
thành công trong việc xâm nhập hệ thống mật mã ngoại giao tối mật của Nhật (một
máy cơ điện dùng "bộ chuyển mạch dịch bước" (stepping switch) được người Mỹ gọi
là Purple) ngay cả trước khi thế chiến II bắt đầu. Người Mỹ đặt tên cho những bí mật
mà học tìm được từ việc thám mã, có thể đặc biệt là từ việc phá mã máy Purple, với
cái tên "Magic". Người Anh sau này đặt tên cho những bí mật mà họ tìm ra trong việc
thám mã, đặc biệt là từ luồng thông điệp được mã hóa bởi các máy Enigma, là "Ultra".
Cái tên Anh trước đó của Ultra là Boniface.
Quân đội Đức cũng cho triển khai một số thử nghiệm cơ học sử dụng thuật
toán mật mã dùng một lần (one-time pad). Bletchley Park gọi chúng là mã Fish, và
ông Max Newman cùng đồng nghiệp của mình đã thiết kế ra một máy tính điện tử số
khả lập trình {programmable digital electronic computer) đầu tiên là máy Colossus để
giúp việc thám mã của họ. Bộ ngoại giao Đức bắt đầu sử dụng thuật toán mật mã dùng
một lần vào năm 1919; một số luồng giao thông của nó đã bị người ta đọc được trong
Thế chiến II, một phần do kết quả của việc khám phá ra một số tài liệu chủ chốt tại
Nam Mỹ, do sự bất cẩn của những người đưa thư của Đức không hủy thông điệp một
cách cẩn thận.
Bộ ngoại giao của Nhật cũng cục bộ xây dựng một hệ thống dựa trên nguyên
lý của "bộ điện cơ chuyển mạch dịch bước" (được Mỹ gọi là Purple), và đồng thời


cũng sử dụng một số máy tương tự để trang bị cho một số tòa đại sứ Nhật Bản. Một

trong số chúng được người Mỹ gọi là "Máy-M" (M- machỉne), và một cái nữa được
gọi là "Red". Tất cả những máy này đều ít nhiều đã bị phía Đồng Minh phá mã.
Các máy mật mã mà phe Đồng Minh sử dụng trong thế chiến II, bao gồm cả
máy TypeX của Anh và máy SIGABA của Mỹ, đều là những thiết kế cơ điện dùng
rôto trên tinh thần tương tự như máy Enigma, song với nhiều nâng cấp lớn. Không có
hệ thống nào bị phá mã trong quá trình của cuộc chiến tranh. Người Ba Lan sử dụng
máy Lacida, song do tính thiếu an ninh, máy không tiếp tục được dùng. Các phân đội
trên mặt trận chỉ sử dụng máy M-209 và các máy thuộc họ M-94 ít bảo an hơn. Đầu
tiên, các nhân viên mật vụ trong Cơ quan đặc vụ của Anh (Special Operations
Executive - SOE) sử dụng "mật mã thơ" (các bài thơ mà họ ghi nhớ là những chìa
khóa), song ở những thời kỳ sau trong cuộc chiến, họ bắt đầu chuyển sang dùng các
hình thức của mật mã dùng một lần (one-time pad).
Mât mã hiên đai:
• • •
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 ảnh hưởng đó, mật mã học hầu như bị thâu tóm bởi các cơ quan truyền thông mật
của chính phủ, chẳng hạn như NSA, và biến mất khỏi tầm hiểu biết của công chúng.
Rất ít các công trình được tiếp tục công bố, cho đến thời kỳ giữa thập niên 1970, khi
mọi sự được thay đổi.


Thời kỳ giữa thập niên kỷ 1970 được chứng kiến hai tiến bộ công chính lớn

(công khai). Đầu tiên là sự công bố đề xuất Tiêu chuẩn mật mã hóa dữ liệu (Data
Encryption Standard) trong "Công báo Liên bang" (Federal Register) ở nước Mỹ vào
ngày 17 tháng 3 năm 1975. Với đề cử của Cục Tiêu chuẩn Quốc gia (National Bureau
of Standards - NBS) (hiện là NIST), bản đề xuất DES được công ty IBM
(International Business Machines) đệ trình trở thành một trong những cố gắng trong
việc xây dựng các công cụ tiện ích cho thương mại, như cho các nhà băng và cho các
tổ chức tài chính lớn. Sau những chỉ đạo và thay đổi của NSA, vào năm 1977, nó đã
được chấp thuận và được phát hành dưới cái tên Bản Công bố về Tiêu chuẩn Xử lý
Thông tin của Liên bang (Federal Information Processing Standard Publication FIPS) (phiên bản hiện nay là FIPS 46-3). DES là phương thức mật mã công khai đầu
tiên được một cơ quan quốc gia như NSA "tôn sùng". Sự phát hành bản đặc tả của nó
bởi NBS đã khuyến khích sự quan tâm chú ý của công chúng cũng như của các tổ
chức nghiên cứu về mật mã học.
Năm 2001, DES đã chính thức được thay thế bởi AES (viết tắt của Advanced
Encryption Standard - Tiêu chuẩn mã hóa tiên tiến) khi NIST công bố phiên bản FIPS
197. Sau một cuộc thi tổ chức công khai, NIST đã chọn Rijndael, do hai nhà mật mã
người Bỉ đệ trình, và nó trở thành AES.

1.2.

Hệ thống mã hóa
Định nghĩa 1.1: Hệ thống mã hóa (cryptosystem) là một bộ năm (P, c, K, E,

D) thỏa mãn các điều kiện sau:

1. Tập nguồn p là tập hữu hạn tất cả các mẩu tin nguồn cần mã hóa có
thể có.

2. Tập đích c là tập hữu hạn tất cả các mẩu tin có thể có sau khi mã
hóa.


3. Tập khóa K là tập hữu hạn các khóa có thể được sử dụng.
4. E và D lần lượt là tập mã hóa và giải mã với mỗi khóa k € K, tồn tại luật mã hóa ek €


E và luật giải mã dk € D tương ứng. Luật mã hóa ek : p —> c và luật giải mã dk : C—
> p là hai ánh xạ thỏa mãn dk(ek(x))= X X € p.
Tính chất 4 là tính chất quan trọng của một hệ thống mã hóa. Tính chất này
đảm bảo một mẩu tin X € p được mã hóa bằng luật mã hóa ek € E có thể được giải mã
chính xác bằng thuật giải mã dk € D.

Hình 1.1: Sơ đồ hê mât mã •

Hàm hash - là hàm mật mã (thuật toán), mà đối số của nó là một bản tin có độ
dài bất kỳ biểu diễn dưói dạng dãy bit, giá trị của hàm hash có kích thước không đổi.
Vì có đặc tính như thế, nên hash là một lóp mã hõa đặc biệt kiểm tra tính toàn vẹn của
thông tin. Thường thì hàm hash không có sự tham gia của khóa mật và nó phải đảm
bảo được độ phức tạp phụ thuộc của giá trị đầu ra của hàm vào từng bit của bản tin.
Mật mã đối xứng là thuật toán mật mã mà quá trình mã hóa và giải mã chỉ
dùng một khóa. Thực tế thì hai khóa(mã hóa, giải mã) có thể khác nhau, trong trường
họp này thì một khóa nhận được từ khóa kia bằng phép tính toán đơn giản.


Mật mã đối xứng thì được chia ra thành hai loại: mã dòng và mã khối.
Mã khối là mã, thực hiện biến đổi khối dữ liệu với một kích thước không đổi.
Mã dòng là mã, thực hiện biến đổi tuần tự từng bit hoặc ký tự riêng rẻ.
Mật mã bất đối xứng là phương pháp mật mã dùng hai khóa: Khóa công khai
dùng cho quá hình mã, khóa mật dùng cho quá trình giải mã. Khóa công khai và khóa
mật có quan hệ vói nhau bằng biểu thức phức tạp, khóa công khai tính dễ dàng từ
khóa mật, còn tính khóa mật từ khóa công khai là bài toán khó và hầu như không giải
được.

Chữ ký điện tử là phương pháp ký một bức điện dưới dạng điện tử, để đảm bảo
tính nguyên vẹn và xác thực quyền tác giả. Như trong mật mã bất đối xứng, chữ ký
điện tử cũng dùng thuật toán mật mã với hai khóa, khóa công khai tính dễ dàng từ
khóa mật, còn khóa mật thì rất khó và hầu như là không thể tính được từ khóa công
khai. Nhưng khác với mật mã bất đối xứng là quá trình ký bức điện dùng khóa mật,
còn quá trình kiểm tra bứu điện dùng khóa công khai. Và khóa mật ngoài chủ của bức
điện thì không ai biết được, nhờ tính chất này mà chống từ chối bức điện.
Định nghĩa 1.2: zm được định nghĩa là tập họp {0,l,...,m-l} , được trang bị
phép cộng (ký hiệu +) và phép nhân (ký hiệu là x). Phép cộng và phép nhân trong zm
được thực hiện tương tự như trong z, ngoại trừ kết quả tính theo modulo m.
Ví dụ: Ta cần tính giá trị 11x13 trong Z16. Trong z, ta có kết quả phép nhân
11x13 = 143. Do 143 — 15 (mod 16) nên 11x13 = 15 trong Z16.
Một số tính chất của zm:

1. Phép cộng đóng trong zm , V a, b e Zm , e a + b Zm
2. Tính giao hoán của phép cộng trong 4, Va, b e zm,a + b = b + a
3. Tính kết họp của phép cộng trong Zm,
Va, b, c e zm , (a + b)+ c = a + (b + c)

4. zm có phần tử trung hòa là 0, Va, be Z m , a + 0 = 0 + a = a
5. Mọi phần tử a trong Zm đều có phần tử đối là m a


6. Phép nhân đóng trong zm , V a, b e Zm, a * b e Zm
7. Tính giao hoán của phép nhân trong zm , Va, be Z m , a * b = b * a
8. Tính kết hợp của phép nhân trong zm,
V a, b, c e zm, (a * b) * c = a *(b * c)

9. zm có phần tử đơn vị là 1, Va, be z m , a * l = l*a = a
10. Tính chất phân phối của phép nhân vói phép cộng V a, b, c e z m ,

(a + b)* c = a*c + b * c .

1.3.
1.3.1.

Thám mã và tính an toàn các hệ mã
Lý thuyết mã hóa
Là một ngành của toán học và khoa học điện toán(computer science) nhằm

giải quyết tình hạng lỗi dễ xảy ra trong quá trình huyền thông số liệu trên các kênh
truyền có độ nhiễu cao (noisy channels), dùng những phương pháp tinh xảo khiến
phần lớn các lỗi xảy ra có thể được chỉnh sửa. Nó còn xử lý những đặc tính của mã, và
do vậy giúp phù họp với những ứng dụng cụ thể. Có hai loại mã hiệu:
Mã hóa dùng nguồn (Mã hóa entrôpi {Entropy encoding));
Mã hóa trên kênh truyền (Sửa lỗi ở phía trước {Forward error correction)).
Đầu tiên chúng ta nói đến là mã hóa dùng nguồn. Ý định của phương pháp này
là nén dữ liệu từ chính nguồn của nó, trước khi truyền đi, giúp cho việc truyền thông
có hiệu quả hơn. Chúng ta chứng kiến thói quen này hằng ngày trên Internet, nhất là
trong cách dùng "zip" nén dữ liệu để giảm lượng dữ liệu phải truyền, giảm nhẹ gánh
nặng cho mạng lưói truyền thông, đồng thời thu nhỏ cỡ tập tin. Cái thứ hai là mã hóa
trên kênh truyền. Bằng việc cộng thêm những bit mới vào trong dữ liệu được truyền,
còn gọi là bit chẵn lẻ (parity bits), kỹ thuật này giúp cho việc truyền thông tín hiệu
chính xác hơn trong môi trường nhiễu loạn của kênh truyền thông. Có nhiều chương
trình ứng dụng, mà người dùng trung bình không để ý đến, sử dụng mã hóa trên kênh
truyền. Kỹ thuật Reed-Solomon được dùng để nhằm sửa lỗi do những vết xước và bụi
trên bề mặt đĩa âm nhạc CD thông thường. Trong ứng dụng này, kênh truyền thông lại


chính là bản thân cái đĩa CD. Điện thoại di động "Cell phones" cũng dùng kỹ thuật mã
hóa có hiệu ứng cao (powerful coding technique) để sửa các lỗi trong việc truyền sóng

radio ở tần số cao bị yếu mờ và bị nhiễu. Modem xử lý số liệu, việc truyền thông qua
đường điện thoại, và đương nhiên ngay cả chính NASA, tất cả đều sử dụng kỹ thuật
mã hóa trên kênh truyền hiệu ứng để truyền những bit số liệu qua đường dây.

1.3.2.

Nguyên lý
Entrôpi của nguồn là một đo đạc về tin tức. Căn bản mà nói, mã của nguồn

được dùng để loại bỏ những phần thừa, không cần thiết còn tồn trong nguồn, để lại
phần nguồn với số lượng bit ít hơn, nhưng với nhiều tin tức hơn.
Mỗi loại mã hóa nguồn sử dụng một kỹ thuật khác nhau hòng đạt được giới
hạn entrôpi của nguồn. C(x) > H(x), trong đó H(x) là entrôpi của nguồn (tần số bit),
và C(x) là tần số bit sau khi số liệu đã được nén. Cụ thể là, không có phương pháp mã
hóa nguồn nào có thể tốt hơn giới hạn entrôpi của ký hiệu (the entroy limit of the
symbol).

1.3.3.

Những điều căn bản về mã hoá
Khi bắt đầu tìm hiểu về mã hoá, chúng ta thường đặt ra những câu hỏi chẳng

hạn như là: Tại sao cần phải sử dụng mã hoá ? Tại sao lại có quá nhiều thuật toán mã
hoá ? ...
Tại sao cần phải sử dụng mã hoá ?
Thuật toán Cryptography đề cập tới nghành khoa học nghiên cứu về mã hoá và
giải mã thông tin. Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông tin từ
dạng rõ (clear text) sang dạng mờ (cipher text) và ngược lại. Đây là một phương pháp
hỗ trợ rất tốt cho trong việc chống lại những truy cập bất họp pháp tới dữ liệu được
truyền đi trên mạng, áp dụng mã hoá sẽ khiến cho nội dung thông tin được truyền đi

dưới dạng mờ và không thể đọc được đối vói bất kỳ ai cố tình muốn lấy thông tin đó.
Nhu cầu sử dụng kỹ thuật mã hoá?
Không phai ai hay bất kỳ ứng dụng nào cũng phải sử dụng mã hoá. Nhu cầu về


sử dụng mã hoá xuất hiện khi các bên tham gia trao đổi thông tin muốn bảo vệ các tài
liệu quan trọng hay gửi chúng đi một cách an toàn. Các tài liệu quan trọng có thể là:
tài liệu 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ư.
Như chúng ta đã biết, Internet hình thành và phát triển từ yêu cầu của chính
phủ Mỹ nhằm phục vụ cho mục đích quân sự. Khi chúng ta tham gia trao đổi thông
tin, thì 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 mà chúng ta truyền đi không bị đọc trộm trên đường truyền.
Do đó, mã hoá được áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính
mình cũng như những thông tin mà chúng ta gửi đi. Bên cạnh đó, mã hoá còn có
những ứng dụng khác như là bảo đảm tính toàn vẹn của dữ liệu.
Tại sao lại có quá nhiều thuật toán mã hoá?
Theo một số tài liệu thì trước đây tính an toàn, bí mật của một thuật toán phụ
thuộc vào phương thức làm việc của thuật toán đó. Nếu như tính an toàn của một thuật
toán chỉ dựa vào sự bí mật của thuật toán đó thì thuật toán đó là một thuật toán hạn
chế (Restricted Algrorithm). Restricted Algrorithm có tầm quan trọng trong lịch sử
nhưng không còn phù họp trong thời đại ngày nay. Giờ đây, nó không còn được mọi
người sử dụng do mặt hạn chế của nó: mỗi khi một User rời khỏi một nhóm thì toàn
bộ nhóm đó phải chuyển sang sử dụng thuật toán khác hoặc nếu người đó người trong
nhóm đó tiết lộ thông tin về thuật toán hay có kẻ phát hiện ra tính bí mật của thuật
toán thì coi như thuật toán đó đã bị phá vỡ, tất cả những User còn lại trong nhóm buộc
phải thay đổi lại thuật toán dẫn đến mất thời gian và công sức.
Hệ thống mã hoá hiện nay đã giải quyết vấn đề trên thông qua khoá (Key) là
một yếu tố có liên quan nhưng tách rời ra khỏi thuật toán mã hoá. Do các thuật toán
hầu như được công khai cho nên tính an toàn của mã hoá giờ đây phụ thuộc vào khoá.

Khoá này có thể là bất kì một giá trị chữ hoặc số nào. Phạm vi không gian các giá trị
có thể có của khoá được gọi là Keyspace. Hai quá trình mã hoá và giải mã đều dùng
đến khoá. Hiện nay, ngưòi ta phân loại thuật toán dựa trên số lượng và đặc tính của


khoá được sử dụng.
Nói đến mã hoá tức là nói đến việc che dấu thông tin bằng cách sử dụng thuật
toán. Che dấu ở đây không phải là làm cho thông tin biến mất mà là cách thức chuyển
từ dạng tỏ sang dạng mờ. Một thuật toán là một tập hợp của các câu lệnh mà theo đó
chương trình sẽ biết phải làm thế nào để xáo trộn hay phục hồi lại dữ liệu. Chẳng hạn
một thuật toán rất đơn giản mã hoá thông điệp cần gửi đi như sau:
Bước 1: Thay thế toàn bộ chữ cái “e” thành số “3”;
Bước 2: Thay thế toàn bộ chữ cái “a” thành số “4”;
Bước 3: Đảo ngược thông điệp.
Trên đây là một ví dụ rất đơn giản mô phỏng cách làm việc của một thuật toán
mã hoá. Sau đây là các thuật ngữ cơ bản nhất giúp chúng ta nắm được các khái niệm:

-

Sender/Receiver: Người gửi/Ngưòi nhận dữ liệu.

-

Plaintext (Cleartext): Thông tin trước khi được mã hoá. Đây là dữ liệu ban đầu ở dạng
rõ.

-

Ciphertext: Thông tin, dữ liệu đã được mã hoá ở dạng mờ.


-

Key: Thành phần quan trọng trong việc mã hoá và giải mã.

-

CryptoGraphic Algorithm: Là các thuật toán được sử dụng trong việc mã hoá hoặc
giải mã thông tin.

-

CryptoSystera: Hệ thống mã hoá bao gồm thuật toán mã hoá, khoá, Plaintext,
Ciphertext.
Kí hiệu chung: p là thông tin ban đầu, trước khi mã hoá. E() là thuật toán mã
hoá. D() là thuật toán giải mã. c là thông tin mã hoá. K là khoá. Chúng ta biểu diễn
quá trình mã hoá và giải mã như sau:

-

Quá trình mã hoá được mô tả bằng công thức: EK(P)=C

-

Quá trình giải mã được mô tả bằng công thức: DK(C)=P
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm
bảo các mục tiêu sau:


Confidentiality (Tính bí mật): Đảm bảo dữ liệu được truyền đi một cách an
toàn và không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của

dữ liệu gốc ban đầu. Chỉ những người được phép mới có khả năng đọc được nội dung
thông tin ban đầu.
Authentication (Tính xác thực): Giúp cho người nhận dữ liệu xác định được
chắc chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu. Kẻ giả mạo không thể có khả
năng để giả dạng một người khác hay nói cách khác không thể mạo danh để gửi dữ
liệu. Ngưòi nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được
Integrity (Tính toàn vẹn): Giúp cho ngưòi nhận dữ liệu kiểm tra được rằng
dữ liệu không bị thay đổi trong quá trình truyền đi. Kẻ giả mạo không thể có khả năng
thay thế dữ liệu ban đầu băng dữ liệu giả mạo
Non-repudation (Tính không thể chối bỏ): Ngưòi gửi hay người nhận không
thể chối bỏ sau khi đã gửi hoặc nhận thông tin.

1.3.4.

Độ an toàn của thuật toán
Nguyên tắc đầu tiên trong mã hoá là “Thuật toán nào cũng có thể bị phá vỡ”.

Các thuật toán khác nhau cung cấp mức độ an toàn khác nhau, phụ thuộc vào độ phức
tạp để phá vỡ chúng. Tại một thời điểm, độ an toàn của một thuật toán phụ thuộc:

-

Nếu chi phí hay phí tổn cần thiết để phá vỡ một thuật toán lớn hon giá trị của thông tin
đã mã hóa thuật toán thì thuật toán đó tạm thời được coi là an toàn.

-

Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật toán đó tạm
thời được coi là an toàn.


-

Nếu lượng dữ liệu cần thiết để phá vỡ một thuật toán quá lơn so với lượng dữ liệu đã
được mã hoá thì thuật toán đó tạm thời được coi là an toàn.
Từ tạm thời ở đây có nghĩa là độ an toàn của thuật toán đó chỉ đúng trong một
thời điểm nhất định nào đó, luôn luôn có khả năng cho phép những người phá mã tìm
ra cách để phá vỡ thuật toán. Điều này chỉ phụ thuộc vào thời gian, công sức, lòng
dam mê cũng nhưtính kiên trì bên bỉ. Càng ngày tốc độ xử lý của CPU càng cao, tốc


độ tính toán của máy tính ngày càng nhanh, cho nên không ai dám khẳng định chắc
chắn một điều rằng thuật toán mà mình xây dựng sẽ an toàn mãi mãi. Trong lĩnh vực
mạng máy tính và truyền thông luôn luôn tồn tại hai phe đối lập vói nhau những người
chuyên đi tấn công, khai thác lỗ hổng của hệ thống và những người chuyên phòng thủ,
xây dựng các qui trình bảo vệ hệ thống. Cuộc chiến giữa hai bên chẳng khác gì một
cuộc chơi trên bàn cờ, từng bước đi, nước bước sẽ quyết định số phận của mối bên.
Trong cuộc chiến này, ai giỏi hơn sẽ dành được phần thắng. Trong thế giới mã hoá
cũng vậy, tất cả phụ thuộc vào trình độ và thời gian... sẽ không ai có thể nói trước
được điều gì. Đó là điểm thú vị của trò chơi.

1.3.5.

Phăn loại các thuật toán mã hoá
Có rất nhiều các thuật toán mã hoá khác nhau. Từ những thuật toán được công

khai để mọi ngưòi cùng sử dụng và áp dụng như là một chuẩn chung cho việc mã hoá
dữ liệu; đến những thuật toán mã hoá không được công bố. Có thể phân loại các thuật
toán mã hoá như sau:
Phân loại theo các phương pháp:


-

Mã hoá cổ điển (Classical cryptography)

-

Mã hoá đối xứng (Syraetric cryptography)

-

Mã hoá bất đối xứng(Asyraetric cryptography)

-

Hàm băm (Hash function)
Phân loại theo số lượng khoá:

-

Mã hoá khoá bí mật (Private-key Cryptography)

-

Mã hoá khoá công khai (Public-key Cryptography)

1.3.6.

Mã hóa trên kênh truyền
Mục đích của lý thuyết Mã hóa trên kênh truyền (channel encoding theory) là


tìm những mã có thể truyền thông nhanh chóng, chứa đựng nhiều mã ký (code word)
họp lệ và có thể sửa lỗi hoặc ít nhất phát hiện các lỗi xảy ra {error detection). Các
mục đích trên không phụ thuộc vào nhau, và mỗi loại mã có công dụng tối ưu cho một


×