CHƯƠNG 1 - GIỚI THIỆU1.1 Mã hóa:- Mã hoá là quá trình biến đổi các thông tin, bằng cách sử dụng một phương pháp toán học và một khoá bí mật để sinh ra một chuỗi các kí tự khó hiểu.. Hiện
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO GIỮA KÌ MÔN XÁC SUẤT VÀ THỐNG KÊ ỨNG DỤNG CHO
CÔNG NGHỆ THÔNG TIN
Người hướng dẫn: ThS PHAN HOÀNG PHÚC VINH Người thực hiện: ĐỖ ANH KHOA – 52100968
Lớp: 21050401 Khoá: 25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 2LỜI CẢM ƠN
Em xin cảm ơn thầy Vinh rất nhiều vì đã cống hiến hết sức mình cho công cuộcdạy học ở trường đại học Tôn Đức Thắng Nhờ có sự hướng dẫn chi tiết và tận tình của thầy mà em có thể hoàn thành được bài báo cáo giữa kì, em chân thànhcảm ơn thầy rất nhiều
Trang 3BÁO CÁO ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi vàđược sự hướng dẫn của ThS Phan Hoàng Phúc Vinh; Các nội dung nghiên cứu,kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thứcnào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích,nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi
rõ trong phần tài liệu tham khảo
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như
số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thíchnguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung báo cáo của mình Trường đại học Tôn Đức Thắng không
liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trìnhthực hiện (nếu có)
TP Hồ Chí Minh, ngày 02 tháng 04 năm 2023
Tác giả (ký tên và ghi rõ họ tên)
Đỗ Anh Khoa
Trang 4PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊNPhần xác nhận của GV hướng dẫn
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Phần đánh giá của GV chấm bài
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Trang 5TÓM TẮT
Bài báo cáo này đầu tiên khái quát các khái niệm về mã hóa và giải mã, sau đótìm hiểu sâu vào 2 thuật toán Đầu tiên là thuật toán mã hóa MonoalphabeticSubstitution Cipher dùng để mã hóa 1 chuỗi kí tự thành các mã tương ứng.Thuật toán thứ 2 là thuật toán phân tích tần suất Frequency Analysis Đây làthuật toán giải mã, nó cho biết tần suất xuất hiện của kí tự đó trong thực tế Sau
đó có code minh họa bằng python cho từng thuật toán
Trang 6MỤC LỤC
LỜI CẢM ƠN II PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN III TÓM TẮT IV
MỤC LỤC 1
DANH MỤC CHỮ VIẾT TẮT 2
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ 3
CHƯƠNG 1 - GIỚI THIỆU 4
1.1 Mã hóa: 4
1.1.1 Mã hóa đối xứng: 4
1.1.2 Mã hóa bất đối xứng: 5
1.2 Giải mã: 5
CHƯƠNG 2 - MẬT MÃ THAY THẾ ĐƠN BẢNG 6
2.1 Vấn đề: 6
2.2 Thuật toán: 6
2.3 Ví dụ: 7
2.4 Nhận xét: 7
CHƯƠNG 3 - PHÂN TÍCH TẦN SỐ 8
3.1 Vấn đề: 8
3.2 Thuật toán: 8
3.3 Ví dụ: 8
3.4 Nhận xét: 9
CHƯƠNG 4 - THỰC NGHIỆM 10
4.1 Code demo Monoalphabetic Substitution Cipher: 10
4.1.1 Source code: 10
4.1.2 Ý tưởng xây dựng code: 10
4.1.3 Hướng dẫn sử dụng code: 10
4.1.4 Kết quả chạy code: 11
4.2 Code demo Frequency Analysis: 12
4.2.1 Ý tưởng xây dựng code 12
4.2.2 Hướng dẫn sử dụng code 12
4.2.3 Kết quả chạy code 13
TÀI LIỆU THAM KHẢO 15
Trang 7DANH MỤC CHỮ VIẾT TẮT
RSA : Rivest-Shamir-Adleman
Trang 8DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ DANH MỤC HÌNH
Hình 1.1 Quy trình mã hoá và giải mã 4
Hình 1.2.1: Mô hình mã hóa đối xứng 4
Hình 1.2.2 Mô hình mã hóa không đối xứng 5
Hình 3.3: Biểu đồ tần suất các chữ cái tiếng Anh 9
Hình 4.2.2 Hàm decryption 13
Hình 4.2.2 Input chương trình và gọi hàm Decryption 13
Hình 4.2.3a Giải mã khoảng 50 từ 14
Hình 4.2.3b Giải mã khoảng 100 từ 14
Hình 4.2.3c Giải mã khoảng 1000 từ 14
Trang 9CHƯƠNG 1 - GIỚI THIỆU
1.1 Mã hóa:
- Mã hoá là quá trình biến đổi các thông tin, bằng cách sử dụng một phương pháp toán học và một khoá bí mật để sinh ra một chuỗi các kí tự khó hiểu Thực chất là việc che dấu các thông báo, chỉ người gửi và người nhận có thể đọc nó Hiện nay, mã hóa là một trong những phương pháp bảo mật dữ liệu phổbiến và hiệu quả nhất được sử dụng bởi các tổ chức, doanh nghiệp Có hai loại
mã hóa chính: mã hóa đối xứng và mã hóa bất đối xứng
Hình 1.1 Quy trình mã hoá và giải mã Nguồn:ve-ma-hoa-thong-tin-va-giai-thuat-ma-hoa-khoa-bat-doi-xung
https://viblo.asia/p/co-ban-1.1.1 Mã hóa đối xứng:
Hình 1.2.1: Mô hình mã hóa đối xứngNguồn: https://locker.io/blog/ma-hoa-du-lieu-2
Trang 10- Mã hóa đối xứng là loại mã hóa trong đó chỉ có một khóa được sử dụng để vừa mã hóa vừa giải mã thông điệp Các thực thể giao tiếp thông qua mã hóa đối xứng phải trao đổi khóa để nó có thể được sử dụng trong quá trình giải mã Đây là hình thức mã hóa được sử dụng phổ biến hiện nay.
1.2 Giải mã:
- Giải mã là phương pháp đưa thông tin ở dạng mã hóa về dạng thông tin ban đầu, đây là quy trình ngược của mã hóa
Trang 11CHƯƠNG 2 - MẬT MÃ THAY THẾ ĐƠN BẢNG
2.1 Vấn đề:
- Hiện nay trong thời đại công nghệ 4.0, việc bảo mật và an toàn thông tin
là vô cùng quan trọng Thế nên việc mã hóa dữ liệu là vô cùng cần thiết trong tất cả mọi lĩnh vực
- Lợi ích của việc mã hóa:
+ Mã hóa đảm bảo rằng không ai có thể đọc thông tin liên lạc hoặc dữ liệu ở chế độ nghỉ ngoại trừ người nhận hoặc chủ sở hữu dữ liệu hợp pháp Điều này giúp ngăn những kẻ tấn công, mạng quảng cáo, nhà cung cấp dịch vụ Internet
và trong một số trường hợp, chính phủ chặn và đọc dữ liệu nhạy cảm.+ Mã hóa còn giúp ngăn vi phạm dữ liệu, cho dù dữ liệu đang chuyển tiếp hay
ở trạng thái nghỉ Nếu một thiết bị của công ty bị mất hoặc bị đánh cắp và ổ cứng của nó được mã hóa đúng cách, dữ liệu trên thiết bị đó sẽ vẫn được bảo mật Tương tự, thông tin liên lạc được mã hóa cho phép các bên liên lạc trao đổi dữ liệu nhạy cảm mà không làm rò rỉ dữ liệu
- Một trong những phương pháp mã hóa hiệu quả và đã được sử dụng từ rất lâu
đó chính là Monoalphabetic Substitution Cipher
2.2 Thuật toán:
- Mật mã thay thế đơn bảng(Monoalphabetic Substitution Cipher) là một mật
mã mà trong đó mỗi kí tự trong văn bản gốc sẽ được thay thế bằng một kí tự bản mã tương ứng, trong đó thường sử dụng bảng chữ cái tiếng Anh Quá trình giải mã được hành ngược lại
- Bảng chữ cái tiếng anh gồm 26 chữ cái, ta có thể tạo ra tối đa là 26! hoán vị của 26 chữ cái đó để làm khóa cho hệ mã hóa một bảng thế Việc liệt kê và kiểm tra toàn bộ 26! khóa là không khả thi với trình độ khoa học kỹ thuật của
Trang 12thời điểm phát sử dụng hệ mã này và trong thời điểm hiện tại vẫn khó thực hiện
2.3 Ví dụ:
Cho bảng mã hóa:
Plain text A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Cipher text Z P B Y J R S K F L X Q N W V D H M G U T O I A E C
Văn bản gốc: HELLO EVERYONE !
Văn bản sau khi được mã hóa theo bảng trên: KJQQV JOJMEVWJ !
2.4 Nhận xét:
- Hiện nay thì có rất nhiều thuật toán mã hóa ra đời và MonoalphabeticSubstitution Cipher là một phương pháp mã hóa cổ điển được sử dụng từ rấtlâu và được sử dụng nhiều
- Phương pháp này có ưu điểm:
+ Thuật toán dễ hiểu, dễ sử dụng
+ Khó bị giải mã bởi chúng ta có thể tạo ra tối đa 26! bảng mã thế nên việc vétcạn từng trường hợp là rất khó Tuy nhiên với sự phát triển của khoa học côngnghệ, chúng ta có thể dùng máy móc để làm cho thời gian giải mã giảm xuống
- Đánh giá của em: Em cảm thấy thuật toán này rất dễ tiếp cận, ai cũng có thểtạo ra cho mình một bảng mã riêng để mã hóa Thế nhưng em nghĩ thuật toánnày rất dễ để bị giải mã bởi tác động của những yếu tố bên ngoài Ví dụ trongcông ty đó sử dụng 1 bảng mã để mã hóa thông tin, nhưng vì lí do nào đó nhânviên của họ nghỉ việc và tuồng bảng mã ra ngoài Điều đó sẽ gây rò rỉ thông tin
và làm ảnh hưởng không nhỏ tới công ty Cho nên em nghĩ là thuật toán khôngchỉ khó phá mà phải đi kèm với sự bí mật và trung thành
Trang 13CHƯƠNG 3 - PHÂN TÍCH TẦN SỐ
3.1 Vấn đề:
- Phân tích mật mã là ngành học nghiên cứu các phương thức để thu được ý nghĩa của thông tin đã được mã hóa Điều này liên quan đến việc tìm khóa bí mật Trong ngôn ngữ không kĩ thuật, đây là việc codebreaking hoặc là bẻ khóa code, mặc dù những cụm từ này cũng có một ý nghĩa kỹ thuật đặc biệt
- Một trong những phương pháp phân tích mật mã phố biến đó chính là Frequency Analysis
3.2 Thuật toán:
- Frequency Analysis phương pháp thường dùng để phân tích mật mã cổ điển, bằng cách tính tần suất các ký tự hoặc nhóm ký tự trong bản mã và so sánh với tần suất thực tế trong các văn bản thường
- Phương pháp phân tích tần suất được biết đến đầu tiên là trong cuốn Sổ tay
phương pháp giải mã của nhà thông thái Ả-rập Al-Kindi vào thế kỷ thứ 9 Ông
nhận ra rằng trong kinh Koran, mỗi chữ cái Ả rập đều có một tần suất xác định,điều tương tự cũng xảy ra trong các ngôn ngữ khác
- Nguyên lý của phân tích tần suất dựa trên một thực tế là trong mỗi ngôn ngữ, mỗi ký tự trong bảng chữ cái có một tần suất xuất hiện nhất định Tần suất này càng rõ ràng khi văn bản phân tích càng dài Ví dụ trong tiếng Anh, E, T, A và
O là những chữ cái xuất hiện nhiều nhất, trong khi Z, Q và X lại rất hiếm hoi Tương tự, ta có TH, ER, ON, và AN là các nhóm ký tự phổ thông nhất, còn SS,
EE, TT, và FF là các bộ đôi ký tự lặp xuất hiện nhiều nhất
3.3 Ví dụ:
Trang 14Kí tự Tầnsuất(%)
Bảng dữ liệu tần suất các chữ cái tiếng Anh
Hình 3.3: Biểu đồ tần suất các chữ cái tiếng Anh
Nguồn: Wikipedia Phân tích tần suất
3.4 Nhận xét:
- Frequency Analysis là một phương pháp giúp giải mã các mật mã cổ điển Bằng việc so sánh tần suất xuất hiện các kí tự trong bản mã và ngoài thực tế thì chúng ta sẽ có thể đoán được hoặc giải được các mật mã
Trang 15- Đánh giá của em: Cá nhân em thì em thấy muốn giải mã một mật mã nào đó thì trước tiên mình phải có kiến thức vững về toán học để từ đó có thể tìm ra các quy luật logic của các đoạn mã hóa Việc kết hợp toán học với phương pháp Frequency Analysis sẽ giúp loại bỏ những giả thuyết không đúng và đưa
ra được kết quả giải mã phù hợp
Trang 16CHƯƠNG 4 - THỰC NGHIỆM
4.1 Code demo Monoalphabetic Substitution Cipher:
4.1.1 Source code:
Đã được gửi chung với file word và file PDF, có tên là 52100968.py
4.1.2 Ý tưởng xây dựng code:
- Em code mã hóa và giải mã dựa trên lí thuyết mật mã bất đối xứng, mỗi
chữ cái sẽ có 1 khóa riêng
- Đầu tiên em tạo 1 list character từ a-z, sau đó em tạo ra 1 biến key giống với list character, rồi em random shuffle biến key Từ đó em có được 2 cái list, 1 list là chữ cái theo thứ tự từ a-z, 1 list là chữ cái đã được trộn lại để tạo thành 1 cái bảng mã hóa và giải mã
- Khi muốn mã hóa, em tìm cái index của từng kí tự trong chuỗi em nhập vào bằng cách tạo 1 vòng for trong chuỗi em nhập, sau đó em lấy ra index của từng
kí tự, mà index đó là index trong list character Sau khi có index trong chuỗi listcharacter, em chỉ cần xuất ra chuỗi sau khi mã hóa bằng cách gọi value trong chuỗi key bằng index em có được ở trong list character, vì 2 chuỗi này có độ dài tương tự
- Khi muốn giải mã thì em cũng làm y vậy, nhưng thay đổi lại các biến cho nó phù hợp
Lưu ý: Do em chạy random shuffle cho chuỗi key nên mỗi lần chạy chuỗi key
sẽ khác, nhưng em có xuất ra cho thầy dễ đọc và dễ dò ạ
4.1.3 Hướng dẫn sử dụng code:
- Đầu tiên khi chạy code nó sẽ hiện ra chỗ nhập số 1 hoặc 2, 1 là chương trình
mã hóa, 2 là giải mã Chỉ được nhập số thôi ạ do em để là int, nếu nhập số khác
1 hoặc 2 thì sẽ in ra dòng “Bạn nhập sai số”
- Sau khi chọn thì sẽ hiện ra thêm 1 cái input nữa để nhập chuỗi Nếu là chươngtrình mã hóa thì nhập 1 đoạn hay 1 vài từ có nghĩa Còn nếu là chương trình giải mã thì nên nhập theo cái bảng giải mã và mã hóa em đã in trên đầu code để
dễ theo dõi
4.1.4 Kết quả chạy code:
Trang 17* Với 10 từ:
- Kết quả chạy chương trình mã hóa:
- Kết quả chạy chương trình giải mã:
*Với 100 từ:
- Kết quả chạy chương trình mã hóa:
- Kết quả chạy chương trình giải mã:
*Với 1000 từ:
Trang 18- Kết quả chạy chương trình mã hóa:
- Kết quả chạy chương trình giải mã:
4.2.1 Ý tưởng xây dựng code
Dùng phương pháp giải mã Caesar
4.2.2 Hướng dẫn sử dụng code
• Khởi tạo hàm decryption
• Đầu vào gồm ciphertext (đoạn văn bản đã được mã hoá) kiểu string Đầu
ra output (văn bản đã được giải mã) kiểu string
• T = "ETAOINSHRDLCUMWFGYPBVKJXQZ" là tần số các chữ cái tiếng anh được sử dụng sắp xếp theo giảm dần tần suất được sử dụng trong tiếng anh
Trang 19Hình 4.2.2 Hàm decryption
Hình 4.2.2 Input chương trình và gọi hàm Decryption
4.2.3 Kết quả chạy code
Giải mã
• Với input khoảng 50 từ:
Trang 20Hình 4.2.3a Giải mã khoảng 50 từ
• Với input khoảng 100 từ:
Hình 4.2.3b Giải mã khoảng 100 từ
• Với input khoảng 1000 từ:
Hình 4.2.3c Giải mã khoảng 1000 từ
Trang 21TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Vinh Phạm (2020), truy cập ngày 07/ 04/ 2023, Mã hóa thông tin – Cách hiểu đơn giản nhất dành cho kẻ ngoại đạo tìm hiểu về mã hóa
[2] Trương Linh (2023), truy cập ngày 08/ 04/ 2023, Mã hoá dữ liệu là gì? 4
Tiếng Anh
[3] Vinh Phạm (2020), truy cập ngày 07/ 04/ 2023, Mã hóa thông tin – Cách hiểu đơn giản nhất dành cho kẻ ngoại đạo tìm hiểu về mã hóa
[4] Trương Linh (2023), truy cập ngày 08/ 04/ 2023, Mã hoá dữ liệu là gì? 4