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ã
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
======
TRẦN HOÀNG MINH
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, 2015
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
======
TRẦN HOÀNG MINH
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
Người hướng dẫn khoa học: TS Trịnh Đình Vinh
HÀ NỘI, 2015
Trang 3LỜ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 K17 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
Học viên
Trần Hoàng Minh
Trang 4LỜI CAM ĐOAN
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
Trang 5MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
DANH MỤC HÌNH 5
MỞ ĐẦU 6
1 Lý do chọn đề tài 6
2 Mục đích nghiên cứu 7
3 Nhiệm vụ nghiên cứu 7
4 Đối tượng và phạm vi nghiên cứu 7
5 Phương pháp nghiên cứu 8
Chương 1 TỔNG QUAN VỀ CÁC HỆ MẬT MÃ 9
1.1 Sơ lược về lịch sử mật mã 9
1.2 Hệ thống mã hóa 17
1.3 Thám mã và tính an toàn các hệ mã 20
1.3.1 Lý thuyết mã hóa 20
1.3.2 Nguyên lý 21
1.3.3 Những điều căn bản về mã hoá 21
1.3.4 Độ an toàn của thuật toán 24
1.3.5 Phân loại các thuật toán mã hoá 25
1.3.6 Mã hóa trên kênh truyền 26
1.3.7 Mã khối tuyến tính 27
1.3.8 Mã kết hợp 29
Chương 2 MÃ LUÂN PHIÊN 31
2.1 Tích không nhập nhằng 31
2.2 Mã luân phiên 33
2.3 Đặc trưng của mã luân phiên 40
Chương 3 ỨNG DỤNG MÃ LUÂN PHIÊN TRONG BẢO MẬT DỮ LIỆU VĂN BẢN 51
Trang 63.1 Một sơ đồ mã hóa, giải mã sử dụng mã luân phiên 51
3.2 Cài đặt chương trình mã hoá, giải mã RSA-ALT thử nghiệm 52
3.2.1 Chức năng mã hóa 55
3.2.2 Chức năng giải mã 58
KẾT LUẬN 61
TÀI LIỆU THAM KHẢO 62
Trang 7DANH MỤC HÌNH
Hình 1.1: Sơ đồ hệ mật mã 18
Hình 2.1 Các Overlap của hai phân tích của từ w 35
Hình 2.2 Hai phân tích của w trong (XY)+ và (XY)+X–1 41
Hình 2.3 Các lớp thương Ui, Vj của hai phân tích 46
Hình 2.4 Quan hệ của các lớp mã đã xét trên A* 47
Hình 3.1: Sơ đồ mã hóa kết hợp ALT - RSA 51
Hình 3.2: Sơ đồ giải mã RSA –ALT 52
Hình 3.3: Giao diện chính của chương trình 53
Hình 3.4: Giao diện đăng ký 54
Hình 3.5: Giao diện đăng nhập 55
Hình 3.6: Tạo khóa và mã hóa dữ liệu 56
Hình 3.7: Xác nhận yêu cầu mã hóa ALT 57
Hình 3.8 Tùy chọn lưu kết quả 57
Hình 3.9: Xác nhận mã hóa RSA 57
Hình 3.10: Thông báo kết quả mã hóa thành công 58
Hình 3.11: Giao diện giải mã tệp tin 58
Hình 3.12: Giải mã tệp tin 59
Hình 3.13: Xác nhận giải mã tệp tin bằng RSA 59
Hình 3.14: Xác nhận giải mã tệp tin bằng RSA 60
Hình 3.15: Xác nhận giải mã ALT và lưu tệp giải mã 60
Trang 8MỞ ĐẦ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à
Trang 9mộ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 triể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 tượng và phạm vi 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
Trang 105 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 chương trình thử nghiệm và đánh giá kết quả thu được
Trang 11Chươ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ề lịch 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
Trang 12mạ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
Trang 13Mậ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ử
Trang 14tử 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
Trang 15dù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óżycki 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ề,
Trang 16và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 România 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 phẳng" (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
Trang 17Quâ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-machine), 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)
Trang 18Thờ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
Trang 19tiê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
Trang 20Hì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ẻ
Hệ mật mã
Mã không dùng khóa
Mã dùng một khóa
Mã dùng hai khóa
Hàm hash Mã đối xứng Mã bất đối
xứng
Chữ ký điện
tử
Mã dòng Mã khối
Trang 21Mậ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á trì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,1, ,m−1} , được trang bị phép cộng (ký hiệu +) và phép nhân (ký hiệu là ×) 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ị 11×13 trong Z16 Trong Z, ta có kết quả phép nhân 11×13 = 143 Do 143 ≡ 15 (mod 16) nên 11×13 = 15 trong Z16
Trang 227 Tính giao hoán của phép nhân trong Zm , a, b Zm , a * b = b * a
8 Tính kết hợp của phép nhân trong Zm,
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
Trang 23kê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 rađiô ở 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
Trang 24nộ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
Trang 25Hệ 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
Trang 26- CryptoSystem: 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:
Trang 27- Nếu chi phí hay phí tổn cần thiết để phá vỡ một thuật toán lớn hơn 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 đam 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:
Trang 28Phân loại theo các phương pháp:
- Mã hoá cổ điển (Classical cryptography)
- Mã hoá đối xứng (Symetric cryptography)
- Mã hoá bất đối xứng(Asymetric 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 ứng dụng riêng biệt Những đặc tính mà mỗi loại mã này cần còn tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông Đối với một đĩa CD thông thường, lỗi trong âm thanh xảy ra chủ yếu là do bụi và những vết xước trên mặt đĩa Vì thế, các mã được lồng vào với nhau Dữ liệu được phân bổ trên toàn bộ mặt đĩa Tuy không được tốt cho lắm, song một mã tái diễn đơn giản có thể được dùng làm một ví dụ dễ hiểu Chẳng hạn, chúng ta lấy một khối số liệu bit (đại diện cho âm thanh) và truyền gửi chúng ba lần liền Bên máy thu, chúng ta kiểm tra cả ba phần lặp lại ở trên, từng bit từng bit một, rồi lấy cái nào có số bầu cao nhất Điểm trái khoáy ở đây là, chúng ta không chỉ truyền gửi các bit theo thứ tự Chúng ta lồng nó vào với nhau Khối dữ liệu này, trước tiên, được chia ra làm 4 khối nhỏ Sau đó chúng ta gửi một bit ở khối đầu tiên, tiếp theo một bit ở khối thứ hai v.v tuần tự qua các khối Việc này được lặp đi lặp lại ba lần để phân bổ số liệu ra trên bề mặt đĩa Trong ngữ cảnh của mã tái diễn đơn giản ở trên, việc
Trang 29làm này hình như không được hiệu quả cho lắm Song hiện nay có những mã
có hiệu ứng cao, rất phù hợp với việc sửa lỗi xảy ra đột ngột do một vết xước hay một vết bụi, khi dùng kỹ thuật lồng số liệu nói trên
Mỗi mã thường chỉ thích hợp cho một ứng dụng nhất định Viễn thông
trong vũ trụ (deep space) bị giới hạn bởi nhiễu nhiệt (thermal noise) trong
thiết bị thu Hiện trạng này không xảy ra một cách đột phát bất thường, song xảy ra theo một chu trình tiếp diễn Tương tự như vậy, modem với dải tần hẹp
bị hạn chế vì nhiễu âm tồn tại trong mạng lưới điện thoại Những nhiễu âm này có thể được biểu hiện rõ hơn bằng một mô hình âm tạp tiếp diễn Điện thoại di động "Cell phones" hay có vấn đề do sự suy sóng nhanh chóng xảy
ra Tần số cao được dùng có thể gây ra sự suy sóng tín hiệu một cách nhanh
chóng (rapid fading), ngay cả khi máy nhận chỉ dời chỗ vài phân Anh (inches) Một lần nữa, người ta hiện đã có một loại thuộc hạng Mã hóa trên
kênh truyền được thiết kế để đối đầu với tình trạng suy sóng
Từ "Lý thuyết mã hóa đại số" ám chỉ để một chi nhánh của lý thuyết
mã hóa trên kênh truyền, trong đó đặc tính của mã được biểu hiện bằng các đại số và dựa vào đó mà nghiên cứu sâu hơn
Lý thuyết mã hóa đại số được chia ra làm hai loại mã chính:
- Mã khối tuyến tính (Linear block codes)
- Mã kết hợp (Convolutional codes)
Chúng phân tích ba đặc tính sau của mã:
- Chiều dài của mã (code word length)
- Tổng số các mã ký hợp lệ (total number of valid code words)
- Khoảng cách Hamming tối thiểu giữa hai mã ký hợp lệ (the minimum
Hamming distance between two valid code words)
1.3.7 Mã khối tuyến tính
Mã khối tuyến tính mang tính năng tuyến tính (linearity), chẳng hạn tổng
của hai mã ký nào đấy lại chính là một mã ký; và chúng được ứng dụng vào
Trang 30các bit của nguồn trên từng khối một; cái tên mã khối tuyến tính là vì vậy
(linear block codes) Có những khối mã bất tuyến tính, song khó mà chứng
minh được rằng một mã nào đó là một mã tốt nếu mã ấy không có đặc tính này
Bất cứ mã khối tuyến tính nào cũng được đại diện là (n,m,d min), trong đó:
n, là chiều dài của mã ký, trong ký hiệu (symbols),
m, là số ký hiệu nguồn (source symbols) được dùng để mã hóa tức thời,
d min , là khoảng cách hamming tối thiểu của mã (the minimum hamming
distance for the code)
Có nhiều loại mã khối tuyến tính, như:
- Mã tuần hoàn (Cyclic codes) (Mã Hamming là một bộ phận nhỏ (subset) của mã tuần hoàn)
- Mã tái diễn (Repetition codes)
- Mã chẵn lẻ (Parity codes)
- Mã Reed-Solomon (Reed Solomon codes)
- Mã BCH (BCH code)
- Mã Reed-Muller
- Mã hoàn hảo (Perfect codes)
Mã khối được gắn liền với bài toán "đóng gói đồng xu" là bài toán gây một số chú ý trong nhiều năm qua Trên bề diện hai chiều, chúng ta có thể hình dung được vấn đề một cách dễ dàng Lấy một nắm đồng xu, để nằm trên mặt bàn, rồi dồn chúng lại gần với nhau Kết quả cho chúng ta một mẫu hình lục giác tương tự như hình tổ ong Các mã khối còn dựa vào nhiều chiều khác nữa, không dễ gì mà hình dung được Mã Golay có hiệu ứng cao, dùng trong truyền thông qua khoảng không vũ trụ, sử dụng những 24 chiều Nếu được dùng là mã nhị phân (thường thấy), các chiều ám chỉ đến chiều dài của mã ký như đã định nghĩa ở trên
Trang 31Lý thuyết về mã sử dụng mô hình hình cầu với số chiều "N" Lấy ví dụ, bao nhiêu đồng xu phải cần để phủ kín một mặt bàn, hay trong khoảng không
3 chiều, bao nhiêu hòn bi phải cần để nhồi kín một hình cầu Những cân nhắc khác bao gồm việc chọn lựa mã Lấy ví dụ, do nhồi nhữmg hình lục lăng vào trong một cái hộp hình chữ nhật, chúng ta để lại những khoảng trống ở các góc Khi các chiều của hộp được tăng lên, tỷ lệ phần trăm so sánh của các khoảng trống nhỏ đi, cho đến một cỡ nào đấy, những phần nhồi chiếm hết các khoảng không và mã này được gọi mã hoàn hảo Số mã kiểu này tương đối
hiếm (Hamming [n,k,3], Golay [24,12,8], [23,12,7], [12,6,6])
Một điều thường bị bỏ qua là số lượng những hàng xóm kế cận
(neighbors) mà một mã ký có thể có Chúng ta có thể dùng lại ví dụ các đồng
xu ở đây Đầu tiên, chúng ta gộp các đồng xu lại theo các hàng hình chữ nhật Mỗi một đồng xu có 4 đồng kế cận (và 4 cái ở bốn góc xa hơn) Trong bố cục của hình lục giác, mỗi đồng xu có 6 đồng kế cận Khi chúng ta tăng số chiều lên, số lượng các đồng kế cận tăng lên một cách nhanh chóng
Kết quả là số lượng các âm tạp, bên cạch các âm chính, mà máy thu có thể chọn, cũng tăng lên, và do đó mà gây ra lỗi Đây chính là khuyết điểm căn bản của mã khối, và cũng là khuyết điểm của tất cả các loại mã Có thể việc gây lỗi trở nên khó khăn hơn, nếu chỉ có một hàng xóm kế cận mà thôi, song con số các hàng xóm kế cận có thể lớn đến độ làm cho chính tổng sác xuất lỗi
bị ảnh hưởng (total error probability actually suffers)
Trang 32Ý định ở đây là làm cho tất cả các ký hiệu mã ký (codeword symbol) trở thành tổng trọng số (weighted sum) của nhiều loại ký hiệu thông điệp trong nhập liệu (various input message symbols) Nó tương tự như toán kết hợp được dùng trong các hệ tuyến tính bất biến (linear time invariant
systems) để dùng tìm xuất liệu (output) của một hệ thống, khi chúng ta biết
nhập liệu (input) và các đáp ứng xung (impulse response)
Nói chung chúng ta tìm xuất liệu của bộ mã hóa kết hợp hệ (system
convolutional encoder), tức sự kết hợp của nhập liệu bit, đối chiếu với trạng
thái của bộ mã hóa kết hợp (convolution encoder), hoặc trạng thái của các thanh biến (registers)
Về cơ bản mà nói, mã kết hợp không giúp thêm gì trong việc chống nhiễu hơn một mã khối tương ứng Trong nhiều trường hợp, chúng nói chung cho chúng ta một phương pháp thực thi đơn giản hơn, hơn hẳn một mã khối
có hiệu quả tương ứng (a block code of equal power) Bộ mã hóa thường là một mạch điện đơn giản, có một bộ nhớ (state memory), một vài biện pháp truyền thông tin phản hồi báo tình hình (some feedback logic), thường là các cổng loại trừ XOR (XOR gates) Bộ mã hóa có thể được thực thi trong phần mềm hay phần sụn (firmware)
Thuật toán Viterbi (Viterbi algorithm) là một thuật toán ngắn gọn nhất (optimum algorithm) được dùng để giải mã các mã kết hợp Hiện có những
phương pháp giảm ước giúp vào việc giảm khối lượng tính toán phải làm Những phương pháp này phần lớn dựa vào việc tìm tuyến đường có khả năng
xảy ra cao nhất (most likely paths) Tuy không ngắn gọn, song trong môi
trường nhiễu thấp hơn, người ta thường thấy chúng cho những kết quả khả
quan Các bộ điều hành vi xử lý hiện đại (Modern microprocessors) có khả
năng thực hiện những thuật toán tìm giảm ước nói trên với tỷ lệ trên 4000 mã
ký trong một giây