You are on page 1of 33

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

TRƯỜNG ĐẠI HỌC VĂN HIẾN

KHOA KINH TẾ - QUẢN TRỊ

TIỂU LUẬN MÔN HỌC

AN TOÀN VÀ BẢO MẬT THÔNG TIN TRONG TMĐT

TÊN ĐỀ TÀI

HỆ MÃ HÓA CAESAR VÀ ỨNG DỤNG VÀO BẢO MẬT DỮ


LIỆU TRONG TRUYỀN VĂN BẢN ĐIỆN TỬ

GIẢNG VIÊN GIẢNG DẠY: TH. S ĐẶNG VĂN LỰC

LỚP HỌC PHẦN: ECO50701

Thành phố Hồ Chí Minh, tháng 3 năm 2024.

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

TRƯỜNG ĐẠI HỌC VĂN HIẾN

KHOA KINH TẾ - QUẢN TRỊ

TIỂU LUẬN MÔN HỌC

AN TOÀN VÀ BẢO MẬT THÔNG TIN TRONG TMĐT

TÊN ĐỀ TÀI

HỆ MÃ HÓA CAESAR VÀ ỨNG DỤNG VÀO BẢO MẬT DỮ


LIỆU TRONG TRUYỀN VĂN BẢN ĐIỆN TỬ

Sinh viên thực hiện: Lê Trọng Nghĩa 211A310025

Nguyễn Trọng Khánh 201A310001

Trương Thị Mỹ Linh 201A310008

Thành phố Hồ Chí Minh, tháng 3 năm 2024.


LỜI CẢM ƠN

Lời đầu tiên, nhóm chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Ths. Đặng
Văn Lực giảng viên trường Đại học Văn Hiến, người giảng dạy môn “An toàn và
bảo mật thông tin trong TMĐT” đã nhiệt tình hướng dẫn và chỉ bảo các sinh viên,
cũng như các nhóm trong suốt quá trình học tập.

Xin dành lời cảm ơn chân thành đến thầy và hội đồng phúc khảo đã đọc bài tiểu
luận nghiên cứu của nhóm chúng em.

Vì lượng kiến thức và thời gian còn nhiều hạn chế nên trong quá trình làm bài
còn mắc phải nhiều sai sót, kính mong thầy và hội đồng phúc khảo góp ý chỉ bảo
thêm.

Xin chân thành cảm ơn


LỜI MỞ ĐẦU

Trong thời đại kỹ thuật số ngày nay, việc bảo vệ thông tin và dữ liệu đã trở nên
cực kỳ quan trọng. Hệ mã hóa đã và đang được sử dụng rộng rãi để bảo vệ thông tin
quan trọng khỏi sự xâm nhập và truy cập trái phép. Trong số các hệ mã hóa phổ
biến, hệ mã hóa Caesar là một trong những phương pháp cổ điển nhưng vẫn được
sử dụng rộng rãi hiện nay.

Hệ mã hóa Caesar, còn được gọi là mã hóa dịch chuyển, là một hệ thống mã hóa
đơn giản dựa trên việc dịch chuyển các ký tự trong bảng chữ cái theo một khoảng
cách nhất định. Phương pháp này đã được Julius Caesar, vị hoàng đế La Mã, sử
dụng để giao tiếp bí mật trong quân đội của mình. Mặc dù đơn giản, hệ mã hóa
Caesar vẫn có thể cung cấp một mức độ bảo mật cơ bản cho thông tin.

Trong đề tài này, chúng ta sẽ tìm hiểu về hệ mã hóa Caesar và ứng dụng của nó
vào việc mã hóa và giải mã văn bản trong truyền văn bản điện tử. Chúng ta sẽ khám
phá cách thức hoạt động của hệ mã hóa Caesar, từ quá trình mã hóa dữ liệu cho đến
việc giải mã, và tìm hiểu về những ứng dụng thực tế của nó trong việc bảo vệ thông
tin và dữ liệu trong truyền văn bản điện tử. Đồng thời, chúng ta cũng sẽ xem xét các
giới hạn và hạn chế của hệ mã hóa Caesar, cũng như những cải tiến và phương pháp
mã hóa khác có thể được sử dụng để nâng cao mức độ bảo mật của thông tin.

Hy vọng rằng đề tài này sẽ mang lại cho bạn kiến thức cơ bản về hệ mã hóa
Caesar và những ứng dụng của nó trong việc bảo vệ thông tin và dữ liệu trong
truyền văn bản điện tử.
MỤC LỤC

Chương I. Tổng quan......................................................................................................1

1.1. Giới thiệu mã hóa cổ điển Ceaser........................................................................1

1.2. Ứng dụng và mục tiêu..........................................................................................7

Chương II. Nguyên lí và cách hoạt động........................................................................9

2.1. Nguyên lí hoạt động.............................................................................................9

2.1.1. Thuật Toán Ceaser........................................................................................9

2.1.2. Công thức và giải mã Code.........................................................................10

2.2. Ưu và nhược điểm của mã hóa Ceaser...............................................................11

2.2.1. Ưu điểm.......................................................................................................11

2.2.2. Nhược điểm.................................................................................................11

CHƯƠNG III. CÀI ĐẶT MẪU VÀ ỨNG DỤNG.......................................................13

3.1. Cài đặt mẫu và Demo.........................................................................................17

3.2. Ứng dụng vào bảo mật dữ liệu trong truyền văn bản điện tử.............................18

CHƯƠNG IV. KẾT LUẬN..........................................................................................21

4.1. Kết quả đánh giá.................................................................................................21

4.2. Nhận xét và đánh giá..........................................................................................21

Tài liệu tham khảo……………………………………………………………………22


MỤC LỤC HÌNH ẢNH

Hình 1: Mã hóa Encryption.............................................................................................1


Hình 2: Mã hóa Encryption.............................................................................................1
Hình 3: Mã hóa dữ liệu (Data Encryption)......................................................................3
Hình 4: Công cụ mã hóa Ceasar......................................................................................9
Hình 5: Giao Diện Visual Studio Code.........................................................................17
Hình 6: Tiến hành chạy Visual Studio Code.................................................................18
Hình 7: Giao diện hệ thống hiện lên Browser...............................................................18
Hình 8: Tiến hành nhập văn bản...................................................................................18
Hình 9: Nhập khóa 13 để tiến hành mã hóa và bảo mật văn bản..................................19
Hình 10: Nhập khóa 9 và tiến hành giải mã..................................................................19
Hình 11: Nhập khóa 32 và tiến hành giải mã................................................................19
Hình 12: Nhập khóa 13 và tiến hành giải mã................................................................20
Chương I. Tổng quan
1.1. Giới thiệu mã hóa cổ điển Ceaser
Mã hóa dữ liệu là tiến trình che dấu dữ liệu thật (plaintext), nghĩa là chuyển dữ
liệu thật thành dữ liệu không có ý nghĩa hoặc có ý nghĩa khác xa với dữ liệu thật.
Tiến trình đó gọi là mã hóa (encrytion). Kết quả của tiến trình gọi là bản mã
(ciphertext). Từ “encrytion” được tạo ra từ “cryptography” (mật mã) xuất phát từ
tiếng Hi Lạp cổ xưa “Kryptos” (Che dấu) và từ “graphia” (viết). Tiến trình mã hóa
dữ liệu có thế được thực hiện bằng cách hoán vị dữ liệu thật hoặc thay thế chúng
bằng dữ liệu khác. Tiến trình ngược với tiến trình mã hóa tức là chuyển từ bản mã
thành dữ liệu ban đầu gọi là giải mã.

HìnhHình
1: 2:
MãMãhóa Encryption
hóa Encryption

Mọi công việc hàng ngày của chúng ta có thể thực hiện được từ xa với sự hỗ trợ
của Internet. Tất cả thông tin liên quan đến công việc đều do máy vi tính quản lý và
truyền đi qua hệ thống mạng. Đối với thông tin bình thường thì không ai chú ý đến,
nhưng đối với những thông tin mang tính chất sống còn đối với một số cá nhân hay
tổ chức thì vấn đề bảo mật rất quan trọng, do đó cần phải mã hóa thông tin để gửi
đi.
Mã hóa dữ liệu rất tuyệt vời, nó có thể bảo mật và ngăn chặn được những việc
sau: Nghe trộm, xem lén dữ liệu, giả mạo thông tin, đánh cắp dữ liệu… Và ta có thể
phân loại ra hai loại hệ mã hóa cơ bản: Hệ mã hóa đối xưng và Hệ mã hóa bất đối
xứng.
 Vậy Caesar là gì?

1
Trong mật mã học, mật mã Caesar (Xê da), còn gọi là mật mã dịch chuyển, thuộc
hệ mã hóa đối xứng – do hai bên tham gia truyền dữ liệu sử dụng chung một khóa
để mã hóa và giải mã, trước khi hai bên trao đổi dữ liệu thì khóa phải được chia sẻ
và được dùng chung cho cả 2 bên.

Hình 2: Mật mã cổ điển Caesar


Là một trong những mật mã đơn giản và được biết đến nhiều nhất. Hệ mã Caesar
là một hệ mã hóa thay thế đơn âm, làm việc trên bảng chữ cái tiếng Anh 26 ký tự.
Đó là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay
thế bằng một ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã. Đồng
thời nó cũng được biết tới bởi lần đầu tiên được sử dụng trong quân sự thời La Mã
của vị hoàng đế J. Caesar. Việc mã hoá được thực hiện đơn giản là thay mỗi chữ
trong bản rõ bằng chữ thứ ba tiếp theo trong bảng chữ cái vào lúc bấy giờ.
Lợi ích đem lại

Các doanh nghiệp đã đầu tư vào hệ thống phát hiện và tường lửa bảo mật CNTT
chu vi truyền thống đang tiếp tục tìm kiếm thêm thứ gì đó để bảo vệ dữ liệu của
họ. Giữa tin tặc bên ngoài và nhân viên nội bộ, bảo vệ dữ liệu ở tất cả các trạng
thái là nhiệm vụ quá cao đối với hầu hết các giải pháp cũ. Để chống lại xu hướng
này, các doanh nghiệp đang xem xét việc bảo vệ dữ liệu và cụ thể là các giải
pháp mã hóa dữ liệu là giải pháp triển khai tiếp theo của họ. Encryption có
thể là một lựa chọn tuyệt vời cho các doanh nghiệp đang chuyển một lượng lớn dữ
liệu và muốn chắc chắn rằng họ có thể giữ an toàn cho bản thân khỏi bị đánh cắp
dữ liệu tiềm ẩn. Các vấn đề với các giải pháp mã hóa quá nặng hoặc ảnh hưởng
tiêu cực đến trải nghiệm người dùng một cách tiêu cực giờ đã là quá khứ.
Vi phạm dữ liệu là một vấn đề thực sự đối với các doanh nghiệp thuộc mọi quy
mô, mặc dù nhiều doanh nghiệp nhỏ hơn đã lầm tưởng rằng đó là một vấn đề chủ
yếu ảnh hưởng đến các thương hiệu lớn hơn. Có rất nhiều lợi ích mà mã hóa có thể
mang lại cho công ty của bạn, ngoài những lợi ích mà bạn có thể đã nghi ngờ. Nếu
bạn đang xem xét mã hóa cho doanh nghiệp của mình, bạn nên tính đến những lợi
ích này trước khi đưa ra quyết định của mình.
a. Bảo vệ dữ liệu hoàn chỉnh
Một giải pháp mã hóa hoàn chỉnh cung cấp cho các doanh nghiệp và chủ sở hữu
của họ sự an tâm vì nó bảo vệ dữ liệu ở mọi trạng thái - ở trạng thái nghỉ và khi
đang chuyển. Mặc dù các giải pháp bảo mật ngoại vi có thể khiến việc truy cập dữ
liệu từ bên ngoài trở nên khó khăn hơn, nhưng một khi mạng bị xâm phạm, dữ liệu
của bạn chỉ an toàn như mã hóa dữ liệu mà bạn sử dụng. Với giải pháp mã hóa phù
hợp, bạn có thể trải qua mỗi ngày khi biết rằng dữ liệu của mình an toàn và không
có cách nào hợp lý mà tin tặc có thể có được trong tay dữ liệu thô. Tôi sẽ không sử
dụng một chương trình kiểu brute-force hơn cả đời để giải mã thành công tất cả

Hình 3: Mã hóa dữ liệu (Data Encryption)


thông tin.
Mặc dù có những phương tiện khác mà dữ liệu có thể bị truy cập, nhưng thực
hiện một bước đơn giản để mã hóa sẽ giúp làm cho công việc trở nên quá khó khăn
đối với những tin tặc thường quan tâm đến việc nhắm mục tiêu doanh nghiệp của
bạn.
b. Bảo mật trên nhiều thiết bị

Với việc điện thoại thông minh và các thiết bị di động khác trở nên phổ biến
trong những năm gần đây, nhiều công ty đã phải vật lộn để tìm ra giải pháp giữ
cho dữ liệu được lưu trữ và truyền qua các thiết bị này an toàn trước khả năng bị
đánh cắp. May mắn thay, phần mềm mã hóa dữ liệu sẽ cho phép bạn đảm bảo rằng
tất cả dữ liệu, trên bất kỳ thiết bị nào, đều được mã hóa hoàn toàn với các biện
pháp bảo vệ tương tự như bạn sẽ tìm thấy trong dữ liệu được lưu trữ trên máy tính
để bàn. Mã hóa dữ liệu sẽ giúp xử lý một tình huống căng thẳng, không thể tránh
khỏi và giúp nó có thể kiểm soát được, đồng thời mang lại sự yên tâm. Trên hết,
xác thực thiết bị có thể loại bỏ nguy cơ xâm nhập từ những người dùng không
mong muốn.
c. Di chuyển dữ liệu một cách an toàn
Một trong những khía cạnh dễ bị tấn công nhất của dữ liệu xuất hiện trong quá
trình vận chuyển. Mặc dù SSL / TLS là tiêu chuẩn công nghiệp cho dữ liệu đang
chuyển động, nó có nhiều nhược điểm đối với bảo mật dữ liệu của bạn. Một giải
pháp mã hóa hiệu quả giúp đảm bảo rằng dữ liệu được bảo vệ mọi lúc, mọi nơi và
chuyển động. Các tệp được chia sẻ hoặc tải lên hệ thống đám mây phải đảm bảo
rằng các tệp vẫn an toàn trong suốt quá trình vận chuyển.
d. Tính toàn vẹn được duy trì
Một trong những lo lắng mà nhiều tổ chức thuộc mọi quy mô đều chia sẻ là liệu
quá trình mã hóa có ảnh hưởng đến tính toàn vẹn của dữ liệu của họ hay không.
Mặc dù đánh cắp dữ liệu là một vấn đề rất phổ biến, nhưng một cách khác để tin
tặc thực hiện hành vi gian lận dữ liệu là làm thay đổi dữ liệu có sẵn. Mã hóa
giữ cho dữ liệu của bạn an toàn không bị thay đổi và người nhận dữ liệu sẽ có thể
xem liệu nó có bị giả mạo hay không. Thay đổi dữ liệu là điều mà các doanh
nghiệp thường bỏ qua khi họ đang tìm cách giữ an toàn cho dữ liệu của mình.

Bảo vệ dữ liệu cơ bản là hoàn toàn cần thiết cho doanh nghiệp của bạn.
Đối với những người muốn thực hiện bước tiếp theo hoặc đang khôi phục sau sự
cố đánh cắp dữ liệu của chính họ, mã hóa là một trong những phương pháp tốt nhất
để đảm bảo rằng dữ liệu của bạn vẫn an toàn. Nó cho phép bạn đạt được bảo mật
hoàn toàn trên tất cả các thiết bị, gửi và nhận dữ liệu một cách an toàn và đảm bảo
tính toàn vẹn tuyệt đối, bất cứ khi nào tệp được truy cập hoặc chia sẻ. Nếu bạn
quan tâm đến việc bảo vệ doanh nghiệp của mình khỏi tác động của việc vi
phạm dữ liệu, thì phần mềm mã hóa là một khoản đầu tư tuyệt vời.
Giải pháp đưa ra
Có hai loại giải pháp mã hóa cơ bản: Giải pháp cho dữ liệu ở trạng thái nghỉ và
cho dữ liệu đang chuyển.
Dữ liệu ở trạng thái nghỉ là thông tin được lưu trữ chẳng hạn như trên máy chủ
hoặc trong ổ cứng máy tính. Dữ liệu đang truyền có nghĩa là dữ liệu đang được
truyền cho dù là email hoặc các thông điệp nội bộ từ hệ thống sang hệ thống có
truyền dữ liệu xung quanh mạng của bạn hay không. Các tin nhắn có thể là email,
nhưng chúng cũng có thể là các tin nhắn nội bộ, từ hệ thống đến hệ thống mang dữ
liệu xung quanh mạng của bạn.

Các giải pháp riêng biệt có sẵn cho dữ liệu ở trạng thái nghỉ so với dữ liệu đang
chuyển. Về mặt hệ thống, mỗi thứ đều có tác động riêng. Đối với dữ liệu ở trạng
thái nghỉ, bạn phải định cấu hình bất kỳ ứng dụng nào cần quyền truy cập vào dữ
liệu được mã hóa với các phương tiện để giải mã nó. Có khá nhiều giải pháp bảo
mật dữ liệu cho việc này như Bitlocker (dành cho Windows) hoặc Firevault (dành
cho MACos). Đối với dữ liệu đang chuyển, bạn phải sắp xếp để cả người gửi và
người nhận có khả năng mã hóa / giải mã. Loại mã hóa này được gọi là mã hóa
đầu cuối hoặc E2EE. Những yêu cầu này tạo ra gánh nặng quản trị và mọi thứ có
thể nhanh chóng trở nên khá phức tạp khi bạn gửi tin nhắn được mã hóa ra bên
ngoài tổ chức của mình, v.v.
1.2. Ứng dụng và mục tiêu
Hệ mã Caesar có thể được ứng dụng trong nhiều lĩnh vực khác nhau, bao gồm:
• Giao tiếp bí mật: Hệ mã Caesar có thể được sử dụng để truyền đạt thông tin
bí mật giữa hai hoặc nhiều người.
• Giáo dục: Hệ mã Caesar có thể được sử dụng để dạy học sinh về các khái
niệm cơ bản về mật mã học.
• Giải trí: Hệ mã Caesar có thể được sử dụng để tạo ra các trò chơi và câu đố.
Vào thế kỷ XIX, phần quảng cáo cá nhân trên các tờ báo đôi khi là nơi người ta
sử dụng để trao đổi những thông điệp mã hóa, sử dụng các bộ mã đơn giản. Kahn
(1967) mô tả về các trường hợp mà những cặp đôi tham gia đối đáp bí mật với
nhau bằng cách dùng mật mã Caesar trên tờ The Times. Ngay cả vào cuối năm
1915, mật mã Caesar vẫn được sử dụng khi quân đội Nga thay thế nó cho những
dạng mật mã phức tạp hơn, vốn tỏ ra quá khó đối với họ; thế nhưng các nhà phân
tích mật mã người Áo và người Đức lại rất dễ dàng phá giải các tin nhắn mã hóa
của quân đội Nga.
Cấu trúc của hai đĩa quay với mật mã Caesar có thể được sử dụng trong cả việc
mã hóa lẫn giải mã.
Ngày nay, chúng ta có thể tìm thấy mật mã Caesar trong các trò chơi dành cho
trẻ em, chẳng hạn như vòng giải mã bí mật. Thuật toán ROT13 là một mật mã
Caesar với độ dịch chuyển 13, nó được sử dụng để làm xáo trộn các văn bản được
tìm thấy trên Usenet và dùng để che mờ đoạn văn (như đoạn cuối của câu chuyện
cười hay phần tiết lộ nội dung câu chuyện), nhưng không được dùng như một
phương pháp mã hóa nghiêm túc.
Mật mã Vigenère sử dụng mật mã Caesar với độ dịch chuyển khác nhau tại mỗi
vị trí trong văn bản; giá trị của mỗi khóa mã được xác định bằng một từ khóa lặp
lại. Nếu từ khóa có dung lượng bằng tin nhắn, được chọn ngẫu nhiên, không bị
người khác biết đến và không bao giờ được sử dụng lại, thì đây là dạng mật mã
một lần, được chứng minh là không thể phá giải. Điều kiện trên khó tới mức gần
như không bao giờ đạt được. Những từ khóa ngắn hơn tin nhắn (ví dụ: "Complete
Victory" được Liên Minh miền Nam sử dụng trong Nội chiến Hoa Kỳ), tạo ra một
dạng mật mã tuần hoàn có thể phá giải bằng cách thực hiện phân tích tần suất với
thống kê nâng cao.

7
Tháng 4 năm 2006, trùm Mafia Bernardo Provenzano bị bắt ở Sicilia khi đang
trên đường chạy trốn, một phần vì các thông điệp bị phá giải của ông ta được viết
bằng một biến thể vụng về của mật mã Caesar. Mật mã của Provenzano sử dụng
các con số, trong đó "A" được viết là "4", "B" là "5"...
Năm 2011, Rajib Karim bị kết án ở Vương quốc Anh về "tội khủng bố" sau khi
sử dụng mật mã Caesar để liên lạc với các nhà hoạt động Hồi giáo Bangladesh,
thảo luận về âm mưu làm nổ máy bay hoặc phá vỡ mạng công nghệ thông tin của
British Airways. Mặc dù các bên có quyền tiếp cận các kỹ thuật mã hóa tốt hơn
nhiều (bản thân Karim đã sử dụng PGP để lưu trữ dữ liệu trên đĩa máy tính),
nhưng họ vẫn chọn bộ mã của riêng mình (được triển khai trên Microsoft Excel),
khước từ một bộ mã phức tạp hơn có tên Mujahedeen Secrets, "bởi vì các 'kaffir'
hay những kẻ ngoại đạo biết về nó, nên sẽ kém bảo mật hơn". Suy nghĩ trên khiến
họ tạo một trình ứng dụng an ninh qua trạng thái mập mờ.
Tuy không còn hưu dụng nhiều, nhưng hệ mã hóa Caesar đã là nền tảng cho sự
phát triển Mật mã học nói chung và hệ mã hóa đối xứng nói riêng. Nhờ Caesar mà
con người có thể phát triển ra nhiều hệ mã hóa hơn với độ bảo mật cao. Đặc biệt đã
xuất hiện hệ mã hóa cấp cao như AES được sử dụng rộng rãi trong các ứng dụng
nhắn tin an toàn lẫn lưu trữ đám mây, chính là một ví dụ điển hình của mật mã đối
xứng.
Hoặc mục đích đơn giản của Caesar như đã nói ở trên là giúp những bạn mới dễ
tiếp cận và hiểu về Mật mã học từ lúc mới bắt đầu, hoặc ứng dụng thực tiễn vào
truyền văn bản dữ liệu. Để rồi có nền tảng tốt thì chúng ta có thể học tập và phát
triển tới các hệ mã hóa có độ phức tạp và tính hữu dụng cao hơn.

8
Chương II. Nguyên lí và cách hoạt động
2.1. Nguyên lí hoạt động
Mật mã là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được
thay thế bằng một ký tự cách nó một đoạn trong bảng chữ cái sau khi dịch chuyển k
đơn vị để tạo thành bản mã. Bởi sự đơn giản của nó nên hệ mã hóa này được biết
đến rất rộng rãi.
Để giải mã, ta thực hiện ngược lại bằng cách chuyển dịch từng kí tự của bản mã
lùi về k bước.

2.1.1. Thuật Toán Ceaser


Mã hóa: Ci = (Pi + ki mod m) mod 26 , các biến có ý nghĩa như sau:
Ci: Ký tự mã hóa ở vị trí thứ i trong văn bản mã hóa.)
Pi: Ký tự cần mã hóa ở vị trí thứ i trong văn bản gốc.)
ki: Khóa hoặc "chìa khóa" sử dụng để mã hóa.)
m: Một giá trị hằng số (thường là kích thước của bảng mã hoặc tập hợp các ký tự
có thể được mã hóa).)
Trong ví dụ sau muốn mã hóa một ký tự Pi bằng cách thêm một giá trị khóa ki
vào nó, sau đó thực hiện toán tử mod m và cuối cùng mod 26 để đảm bảo kết quả
nằm trong khoảng từ 0 đến 25 (vì có 26 chữ cái trong bảng chữ cái tiếng Anh).
Giải mã: Trong công thức Pi = (Ci - ki mod m) mod 26, giữa các biến, ta có:
Pi: Ký tự gốc ở vị trí thứ i trong văn bản gốc.)
Ci: Ký tự đã được mã hóa ở vị trí thứ i trong văn bản mã hóa.)

10
ki: Khóa hoặc "chìa khóa" sử dụng để mã hóa.)
m: Một giá trị hằng số (thường là kích thước của bảng mã hoặc tập hợp các ký tự
có thể được mã hóa).)

Hình 4: Công cụ mã hóa Ceasar


Trong đó: N = 26 nếu hệ mã Caesar sử dụng trên bảng chữ cái tiếng Anh (nếu sử
dụng trên bảng chữ cái khác thì N sẽ thay đổi). k: Tương ứng với số thứ tự chữ cái
trong bảng mã (Ví dụ: a = 0, b = 1 ....)

2.1.2. Công thức và giải mã Code


• Mã hóa
Công thức mã hóa của hệ là:
Khi tiến hành mã hóa, người gửi mật mã sẽ tra cứu từng ký tự của tin nhắn gốc.
Sau đó đọ và viết ra ký tự tương ứng lấy bảng chữ cái mà ta có bên trên kết hợp với
khóa K tự chọn.
Ở đây, x là số thứ tự của chữ trong bản rõ và y là số thứ tự của chữ tương ứng
của bản mã; k là khóa của mã Caesar. Khóa k là số bước tịnh tiến các chữ trong
bảng chữ. Do đó có 26 khóa khác nhau. Độ dài khóa biểu diễn qua bit ở đây là 5, vì
đó là số bit ít nhất cần thiết để biểu diễn 26 giá trị khác nhau.
Ví dụ : Văn bản gốc: "HELLO"
Khóa ki: 3 (được chọn ngẫu nhiên))
Mỗi ký tự Pi trong "HELLO" sẽ được mã hóa bằng công thức Ci = (Pi + 3) mod
26.)
H (7 + 3) mod 26 = 10 (ký tự "K")
E (4 + 3) mod 26 = 7 (ký tự "H")
L (11 + 3) mod 26 = 14 (ký tự "O")
L (11 + 3) mod 26 = 14 (ký tự "O")

11
O (14 + 3) mod 26 = 17 (ký tự "R")
Do đó, khi mã hóa "HELLO" với khóa 3, ta sẽ nhận được "KHOOQ" như là văn
bản đã được mã hóa.
• Giải mã
Công thức giải mã của hệ là:
Quá trình giải mã của người nhận mật mã được thực hiện ngược lại, với thao tác
dịch sang phải theo khóa K đã chọn ban đầu.
Thám mã Caesar là việc làm đơn giản, do số khóa có thể có là rất ít. Chỉ có 26
khóa có thể, vì một ký tự chỉ có thể ánh xạ vào một trong số 26 chữ cái của bảng
chữ cái tiếng Anh: A, B, C… Các chữ khác sẽ được xác định bằng số bước tịnh tiến
tương ứng của. Kẻ thám mã có thể thử lần lượt từng khóa một, tức là sử dụng
phương pháp tìm duyệt tổng thể. Vì số khóa ít nên việc tìm duyệt là khả thi. Cho
trước bản mã, thử 26 cách dịch chuyển khác nhau, ta sẽ đoán nhận thông qua nội
dung các bản rõ nhận được.
Văn bản mã hóa: "KHOOQ"
Khóa ki: 3 (giả sử ta biết khóa đã được sử dụng))
Mỗi ký tự Ci trong "KHOOQ" sẽ được giải mã bằng công thức Pi = (Ci - 3) mod
26.)
K (10 - 3) mod 26 = 7 (ký tự "H")
H (7 - 3) mod 26 = 4 (ký tự "E")
O (14 - 3) mod 26 = 11 (ký tự "L")
O (14 - 3) mod 26 = 11 (ký tự "L")
Q (17 - 3) mod 26 = 14 (ký tự "O")
Do đó, khi ta giải mã "KHOOQ" với khóa 3, sẽ nhận được "HELLO" như là văn
bản đã giải mã.
Ví dụ thực tế:
• Chọn bản rõ: TOIYEUHUMG
• Chọn khóa K = 3
• Áp dụng công thức mã hóa: và áp dụng bảng chữ mã chữ cái khóa ENG
bên trên ta có thể chuyển từ bản rõ sang bản mã như sau:
 T (x=19) 19 + 3 = 22(W)
 O (x=14) 14 + 3 = 17(R)

12
 I (x=8) 8 + 3 = 11(L)
 …..

T O I Y E
W R L B H
U H U M G
X K X P J
Ta thu được bản mã: WRLBHXKXP
• Để giải mã thì ta áp dụng công thức: Và ta sẽ thu được bản rõ ban đầu là:
TOIYEUHUMG.
Để làm rõ vấn đề ta thêm một ví dụ
Văn bản gốc (Văn bản chưa mã hóa): ABCDEF
Văn bản mã hóa: CDEFGH
Trong ví dụ trên, các kí tự trong văn bản gốc được mã hóa bằng cách dịch sang
phải 2 kí tự. k=2.
Gốc A B C D E F…X Y Z
Mã hóa C D E F G H … Z A B
Vì được dịch sang phải 2 ký tự nên A được mã hóa thành C, B mã hóa thành
D… Đặc biệt, Y được mã hóa thành A, Z được mã hóa thành B, quay lại các ký tự
đầu tiên.
Ví dụ 2:
Văn bản gốc (Văn bản chưa mã hóa): ABCDEF
Văn bản mã hóa: YZABCD
Trong ví dụ trên, các kí tự trong văn bản gốc được mã hóa bằng cách dịch sang
trái 2 kí tự. k=-2.
Gốc ABCDEF…XYZ
Mã hóa Y Z A B C D … U V X
Vì được dịch sang trái 2 ký tự nên C được mã hóa thành A, D mã hóa thành
B… Đặc biệt, A được mã hóa thành Y, B được mã hóa thành Z, quay lại các ký tự
cuối cùng.

13
=> Kết luận: chúng ta có thể thấy rằng k âm là phương pháp giải mã cho mã
hoá với k dương và ngược lại.
Trong trường hợp người ta biết một cách chắc chắn rằng mật mã Caesar đã
được sử dụng trong mã hóa, thì để thực hiện phân tích mật mã bạo lực, chỉ cần sắp
xếp thông qua 26 khóa, liên quan đến ngôn ngữ tiếng Anh, do mức độ phổ biến
của mã hóa và giải mã. Ngoài ra, nếu một ký tự đã được biết, thì bằng cách xác
định độ lệch, bạn có thể nhanh chóng giải mã toàn bộ thư. Một trong những
phương pháp phổ biến nhất được sử dụng trong phân tích mật mã là “Phân tích tần
số”, giả định rằng trong các văn bản dài và đối với các văn bản khác nhau của
cùng một ngôn ngữ, tần suất xuất hiện của một chữ cái nhất định trong bảng chữ
cái không thay đổi. Phương pháp phân tích mật mã bằng tần số đã trở nên nổi
tiếng đặc biệt vào năm 1822, trong quá trình giải mã các chữ tượng hình Ai Cập.
Kể từ giữa thế kỷ trước, sự phát triển của phần lớn các thuật toán mã hóa đã được
thực hiện có tính đến khả năng chống phá mã bằng tần số, và do đó nó thường
được sử dụng trong quá trình đào tạo các nhà mật mã trong tương lai.
Không những vậy, một máy tính bình thường hiện nay có thể giải chuỗi mã hóa
Caesar 1000 kí tự bằng phương pháp thử và lỗi (brute force) trong bao 26ms (26
mili giây).
Gỉa định
Chuỗi mã hóa có độ dài 1000 ký tự.
Số lượng khóa có thể có là 26.
Cách tính thời gian tấn công brute force:
Mỗi lần thử một giá trị khóa, cần kiểm tra xem kết quả có đúng hay không.
Điều này đòi hỏi ít nhất 1000 phép so sánh với chuỗi đã mã hóa.
Tổng số lần thử (26 khóa * 1000 so sánh) sẽ là 26,000.
Giả sử một máy tính thực hiện 1 triệu phép tính trên 1s, thời gian tối thiểu sẽ là
26,000 / 1,000,000 giây = 0.026 giây, tức là khoảng 26 mili giây.
=> Vậy nên mã hóa caesar rất dễ thực hiện trên máy tính
2.2. Ưu và nhược điểm của mã hóa Ceaser
2.2.1. Ưu điểm
 Đơn giản: Dễ hiểu và thực hiện mà không cần kiến thức toán học hay máy tính
phức tạp

14
 Nhanh chóng: Quá trình mã hóa và giải mã nhanh chóng, đặc biệt là với văn
bản ngắn
 Sử dụng cơ bản: Không cần công cụ đặc biệt, chỉ cần biết cách di duyển các ký
tự trong bảng chữ cái
 Không đòi hỏi công cụ phức tạp: Không cần sử dụng phần mềm hoặc công cụ
đặc biệt để thực hiện mã hóa và giải mã. Chỉ cần biết cách di chuyển các ký tự trong
bảng chữ cái
 Khả năng áp dụng rộng rãi: Có thể áp dụng mã hóa Caesar trong nhiều tình
huống khác nhau, từ việc bảo vệ thông tin cá nhân đến việc tạo ra các trò chơi giáo
dục về mã hóa.
 Tốc độ xử lý nhanh: Phương pháp mã hóa và giải mã đơn giản, việc xử lý
thông tin cũng rất nhanh chóng, đặc biệt là với các văn bản ngắn. Điều này có nghĩa
là có thể mã hóa và giải mã dữ liệu một cách hiệu quả mà không cần đến máy tính
hoặc công cụ phức tạp.
2.2.2. Nhược điểm
 Độ an toàn kém: Bởi vì mã hóa đơn giản và dễ dàng giải mãi, nên nó không đảm
bảo độ bảo mật cao. Có thể dễ dàng bị tấn công bằng các kỹ thuật phân tích tần số hoặc
từ điển, đặc biệt với văn bản dài hoặc ngôn ngữ phổ biến. Điều này làm cho mã hóa
Caesar không phù hợp cho việc bảo mật thông tin quan trọng hoặc nhạy cảm.
 Dễ phát hiện mẫu: Trong các văn bản dài, các mẫu từ hoặc các chuỗi ký tự phổ
biến có thể dễ dàng nhận biết và giúp kẻ tấn công suy luận được khóa mã hóa.
 Không bảo vệ trước các kỹ thuật hiện đại: Hệ mã Caesar không có khả năng
chống lại các kỹ thuật mã hóa hiện đại như phân tích từ điển hoặc các phương pháp mã
hóa phức tạp như AES.
 Dễ bị giải mãi: Vì phương pháp này rất đơn giản, nên nó dễ bị giải mã bằng cách
thử và sai hoặc phương pháp phân tích tần số
 Không an toàn: Dễ dàng bị tấn công bằng các kỹ thuật phân tích tần số hoặc từ
điển, đặc biệt với văn bản dài và ngôn ngữ phổ biến
Giới hạn: Không hiệu quả cho việc mã hóa văn bản dài hoặc trong các ứng dụng cần độ
bảo mật cao.

15
CHƯƠNG III. CÀI ĐẶT MẪU VÀ ỨNG DỤNG
Cho đoạn Source Code ta thực hiện theo trình tự:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Trò chuyện và Giải mã Caesar Cipher</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>Trò chuyện và Giải mã Caesar Cipher</h1>
<div id="chatSection">
<div id="chatWindow" class="chat-window">
<div class="form-row">
<input type="text" id="userInput" placeholder="Nhập tin nhắn của
bạn" required>
<button id="sendButton">Gửi</button>
</div>
<div id="systemMessage" class="chat-message system-
message"></div>
<div class="form-row" style="display:none;" id="khóaInputRow">
<label for="khóaInput">Khóa:</label>
<input type="number" id="khóaInput" placeholder="Nhập khóa"
min="1" max="25" required>
<button id="encryptButton">Mã hóa</button>
</div>
<div id="encryptedMessage" class="chat-message encrypted-
message"></div>
<div class="form-row" style="display:none;"
id="decryptKhóaInputRow">

16
<label for="decryptKhóaInput">Khóa giải mã:</label>
<input type="number" id="decryptKhóaInput" placeholder="Nhập
khóa giải mã" min="1" max="25" required>
<button id="decryptButton">Giải mã</button>
</div>
</div>
</div>
<div id="decryptedSection" style="display:none;">
<h2>Tin nhắn đã giải mã:</h2>
<div id="decryptedMessage" class="decrypted-message"></div>
</div>
</div>

<script>
document.addEventListener("DOMContentLoaded", function() {
var sendButton = document.getElementById('sendButton');
var encryptButton = document.getElementById('encryptButton');
var decryptButton = document.getElementById('decryptButton');
var systemMessage = document.getElementById('systemMessage');
var encryptedMessage = document.getElementById('encryptedMessage');
var decryptedMessage = document.getElementById('decryptedMessage');
var userInputField = document.getElementById('userInput');
var khóaInputField = document.getElementById('khóaInput');
var decryptKhóaInputField =
document.getElementById('decryptKhóaInput');
var khóaInputRow = document.getElementById('khóaInputRow');
var decryptKhóaInputRow =
document.getElementById('decryptKhóaInputRow');
var decryptedSection = document.getElementById('decryptedSection');

function isValidKhóa(khóa) {
return khóa >= 1 && khóa <= 25;

17
}

sendButton.addEventListener('click', function() {
var userInput = userInputField.value.trim();
if (userInput === "") {
alert('Vui lòng nhập tin nhắn của bạn.');
return;
}
systemMessage.textContent = 'Tin nhắn của bạn: ' + userInput;
khóaInputRow.style.display = 'block'; // Hiển thị phần nhập khóa
});

encryptButton.addEventListener('click', function() {
var shift = parseInt(khóaInputField.value.trim(), 10);
if (!isValidKhóa(shift)) {
alert('Khóa phải nằm trong khoảng từ 1 đến 25.');
return;
}
var userInput = systemMessage.textContent.replace('Tin nhắn của bạn:
', '');

fetch('caesar_cipher.php', {
method: 'POST',
body: JSON.stringify({ text: userInput, shift: shift }),
headers: { 'Content-Type': 'application/json' }
})
.then(response => response.json())
.then(data => {
if (data.encrypted) {
encryptedMessage.textContent = 'Tin nhắn đã mã hóa: ' +
data.encrypted;

18
decryptKhóaInputRow.style.display = 'block'; // Hiển thị phần
nhập khóa giải mã
decryptedSection.style.display = 'block'; // Hiển thị phần giải mã
} else {
systemMessage.textContent = data.error || 'Đã có lỗi xảy ra.';
}
})
.catch(error => {
systemMessage.textContent = 'Lỗi khi gửi tin nhắn: ' +
error.message;
});
});

decryptButton.addEventListener('click', function() {
var encryptedText = encryptedMessage.textContent.replace('Tin nhắn
đã mã hóa: ', '');
var shift = parseInt(decryptKhóaInputField.value.trim(), 10);
if (!isValidKhóa(shift)) {
alert('Khóa giải mã phải nằm trong khoảng từ 1 đến 25.');
return;
}

fetch('caesar_cipher.php', {
method: 'POST',
body: JSON.stringify({ text: encryptedText, shift: shift, decrypt: true
}),
headers: { 'Content-Type': 'application/json' }
})
.then(response => response.json())
.then(data => {
if (data.decrypted) {

19
decryptedMessage.textContent = 'Tin nhắn đã giải mã: ' +
data.decrypted;
} else {
decryptedMessage.textContent = data.error || 'Đã có lỗi xảy ra khi
giải mã.';
}
})
.catch(error => {
decryptedMessage.textContent = 'Lỗi khi giải mã tin nhắn: ' +
error.message;
});
});
});
</script>
</body>
</html>

3.1. Cài đặt mẫu và Demo


Demo “ứng dụng mã hóa Caesar vào bảo mật dữ liệu trong truyền văn bản điện
tử”
 Bước 1: Mở công cụ Visual Studio Code

Hình 5: Giao Diện Visual Studio Code

20
 Bước 2: Sử dụng ngôn ngữ lập trình PHP, Sau đó ta nhập Source sẵn có vào
VScode và tiến hành chạy

Hình 6: Tiến hành chạy Visual Studio Code

 Bước 3: Giao diện mẫu ứng dụng hiện lên Browser

Hình 7: Giao diện hệ thống hiện lên Browser


3.2. Ứng dụng vào bảo mật dữ liệu trong truyền văn bản điện tử
 Bước 4: Tiến hành chạy demo “Bảo mật dữ liệu văn bản trong truyền tin điện tử”
Nhập văn bản: “Chờ duyên chờ phận chờ thời, Khi mà đủ cả cuộc đời đổi thay,
Không còn nhăn mặt nhíu mày, Không còn phiền não từ rày sẽ vui.” và ấn Gửi

Hình 8: Tiến hành nhập văn bản

21
Sau đó ta nhập “Khóa” mã hóa để bảo mật dữ liệu văn bản

Ví dụ: Khóa là 13 và tiến hành mã hóa

Hình 9: Nhập khóa 13 để tiến hành mã hóa và bảo mật văn bản
Sau khi văn bản đến tay người nhận, ta tiến hành giải mã văn bản:
Sau đây ta chia thành 2 trường hợp: “Khóa Sai” và “Khóa đúng”
Trường hợp 1: “Khóa Sai” gồm: Chuỗi kí tự khác “13” và các chuỗi số không nằm
trong khoản từ “1-25”
 Ví dụ: Khóa là 9

Hình 10: Nhập khóa 9 và tiến hành giải mã


 Không khớp (Người nhận chưa nhận được tin)
 Ví dụ: Khóa là 32 (không nằm trong khoản 1 - 25)

Hình 11: Nhập khóa 32 và tiến hành giải mã

22
Ta thấy được hệ thống báo lỗi (người nhận chưa nhận được tin)

Trường hợp 2: Khóa đúng: Nhập khóa là giá trị 13

Hình 12: Nhập khóa 13 và tiến hành giải mã


Ta nhận được tin nhắn giải mã: “Chờ duyên chờ phận chờ thời Khi mà đủ cả
cuộc đời đổi thay Không còn nhăn mặt nhíu mày Không còn phiền não từ rày sẽ
vui”
 Khớp với kết quả (Người nhận đã nhận được tin nhắn)

23
CHƯƠNG IV. KẾT LUẬN
4.1. Kết quả đánh giá
Sau khi tìm hiểu sâu về mã khóa em đã tìm hiểu được Hệ thống mật mã cổ điển
(các loại mật mã được phát minh và ứng dụng trong thời kỳ tiền máy tính) có rất
nhiều. Nhưng tựu chung lại có thể chia thành 2 dạng lớn: Mật mã chuyển vị và
Mật mã thay thế.
Mật mã chuyển vị là loại mật mã mà các kí tự trong bản rõ sẽ được hoán vị theo
một cách thức nào đó để tạo nên bản mã. Ví dụ điển hình là cách mã hóa mà người
ta dùng một mảnh vải dài quắn hình xoắn ốc quanh một thanh hình trụ, người tạo
mã sẽ viết thông tin lên vải theo chiều dọc của thanh hình trụ rồi trải mảnh vải ra
đọc theo chiều dài mảnh vải sẽ được bản mã. Cách mã hóa này thường xuất
hiện ở những trò chơi đi tìm mật thư trong nhà trường. Hệ thống mã hóa này yếu
và ít biến thể nên tôi sẽ không trình bày ở đây.
Mật mã thay thế là loại mật mã mà mỗi kí tự trong bản rõ được thay bằng một
kí tự trong bản mã theo một quy tắc nhất định. Thể loại này có nhiều biến thể, và
trong các bài tiếp theo chúng ta sẽ đi qua một số loại mã thay thế phổ biến nhất:
Mã Caesar, mã Affine, mã thay thế đơn giản, mã Vigenere… Đầu tiên và đơn giản
nhất là mã Caesar.
Mã hóa Caesar là một mã hóa đơn giản nhưng có hiệu quả ở thời kỳ Trung đại
và không còn hiệu quả tại thời kỳ hiện nay.
4.2. Nhận xét và đánh giá
Mặc dù mật mã Caesar rất đơn giản, rất dễ dàng phá được nếu biết được cơ chế
mã hoá. Tuy nhiên với thời kỳ của "Xê-da" thì việc này thực sự khó khăn và hầu
như không thể vì không biết được đến cơ chế mã hoá đó.
Về cơ bản, một mật mã mạnh hay yếu (quá trình mã hoá có dễ dàng giải mã được
hay không) phụ thuộc vào 2 yếu tố là cơ chế mã hoá và số lượng các khoá. Chúng ta
có thể hình dung đơn giản việc đó như ví dụ ở trên phần giải mã, sau này khi tiếp
cận với các cơ chế mã hoá phức tạp hơn rất nhiều thì chúng vẫn giữ những nguyên
tắc cơ bản tương tự như Mật mã Caesar ngay cả trong trường hợp người giải mã chỉ
có trong tay các bản mật mã. Có ba kỹ thuật chính mà hắn có thể sử dụng: phân tích
tần suất, dựa vào nội dung gốc đã biết và dò tìm triệt để (brute-force).

24
Phân tích tần suất
Ngôn ngữ của loài người thường dùng một số ký tự nhiều hơn những ký tự khác.
Ví dụ, chữ "E" là chữ cái phổ biến nhất trong tiếng Anh. Ta có thể phân tích tần
suất xuất hiện của các chữ cái trong tin nhắn trên và tìm ra chữ cái có khả năng
tương ứng với chữ "E" nhất, từ đó suy ra khoảng dịch chuyển chữ cái.
Ta cùng thử nhé! Hãy copy và dán lại tin nhắn mà phe địch đã nắm được ở trên
vào ô bên dưới rồi phân tích biểu đồ tần suất để tìm ra chữ cái có thể là "E":
Dựa vào nội dung gốc đã biết
Một thuật ngữ khác để chỉ tin nhắn gốc chưa bị mã hóa là nội dung gốc. Nếu như
kẻ thù đã biết được một vài phần của bản gốc thì chúng có thể dễ dàng bẻ khóa
phần còn lại của mật mã hơn nhiều.
Ví dụ, có thể các tin nhắn đều sẽ có phần mở đầu giống nhau. Trong Thế Chiến
II, những tin nhắn được mã hóa của quân Đức luôn bắt đầu bằng việc dự báo thời
tiết. Điều này giúp cho nhà toán học người Anh Alan Turing dễ dàng bẻ khóa chúng
hơn.
Dò tìm triệt để (brute force)
Chỉ có 25 cách dịch chuyển chữ cái trong bảng chữ cái tiếng Anh. Kẻ thù có thể
dành thời gian để thử từng cách và tìm ra tin nhắn có nghĩa nhất. Thậm chí, chúng
có thể không cần phải thử tất cả các cách dịch chuyển đó trên toàn bộ tin nhắn, mà
chỉ cần dùng với một hay hai từ đầu tiên là có thể tìm ra đáp án.
Vậy nên mật mã Caesar vẫn là tiền đề để phát triển an toàn thông tin mạng trong
hiện nay.

25
Tài liệu tham khảo
1. Sách Caesar Cipher - 2012 - Jesse Russell, Ronald Cohn.
2. WikiBook: wikibooks.org/wiki/Cryptography/Caesar_cipher
3. Mật mã và an toàn thông tin – NXB Thông tin và Truyền thông.
4. Khoa Học Khám Phá - Mật Mã - Từ Cổ Điển Đến Lượng Tử -NXB Trẻ.
5. Sách The Mathematics of Secrets - tác giả: Joshua Hoden
6. Bài viết về Caesar: Viblo.asia/p/mat-ma-hoc-phan-1-ma-hoa-caesar-
RQqKLM0MZ7z

26
13

You might also like