Đánh giá: - Mức đạt: Báo cáo rõ ràng, sáng sủa, đủ nội dung theo yêu cầu ở mục 2; - Mức khá: Trình bày được một thuật toán mã hóa thông tin và trả lời tốt các câu hỏi của hội đồng đánh g
Trang 1KHOA: CÔNG NGHỆ THÔNG TIN
TỐNG HUY TUẤN HẢI NGUYỄN HỮU ANH HƯNG NGUYỄN ĐỨC NAM
NGUYỄN GIANG NAM
HÀ NỘI, NĂM 2024
Trang 2KHOA: CÔNG NGHỆ THÔNG TIN
XÂY DỰNG CHƯƠNG TRÌNH
MÃ HÓA THÔNG TIN
BÁO CÁO ĐỒ ÁN HỌC PHẦN I CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Giáo viên hướng dẫn : Ths Nguyễn Đình Quyết
Họ tên sinh viên : Tống Huy Tuấn Hải - 2101050
Nguyễn Hữu Anh Hưng - 2101351 Nguyễn Đức Nam - 2101189 Nguyễn Giang Nam - 2100920
Bế Hữu Quốc - 2100779
HÀ NỘI, NĂM 2024
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT-HUNG
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ THÔNG TIN
1 Yêu cầu về kiến thức, kỹ năng:
- Có kiến thức lý thuyết về mã hóa thông tin;
- Thành thạo ngôn ngữ lập trình C/C++;
2 Yêu cầu về chương trình:
- Dùng ngôn ngữ C/C++ để mô phỏng một thuật toán mã hóa thông tin
3 Nộp kết quả
- Báo cáo bản cứng theo đúng mẫu của bộ môn;
- Mã nguồn chương trình và file mềm báo cáo
4 Đánh giá:
- Mức đạt: Báo cáo rõ ràng, sáng sủa, đủ nội dung theo yêu cầu ở mục 2;
- Mức khá: Trình bày được một thuật toán mã hóa thông tin và trả lời tốt các câu hỏi của hội đồng đánh giá;
- Mức tốt: Trình bày thêm được các thuật toán mã hóa khác
5 Các yêu cầu khác:
- Sinh viên lập kế hoạch thực hiện gửi cho giảng viên hướng dẫn;
- Trong qua trình thực hiện mỗi tuần phải liên hệ với giảng viên ít nhất một lầnthông qua email hoặc gặp trực tiếp
Số lượng sinh viên tham gia tối đa: 05 (tối đa 02 nhóm sinh viên được trùng đề
tài/ lớp học phần)
Thời gian thực hiện: Theo lịch của bộ môn
Tài liệu tham khảo: Giáo trình đồ họa máy tính; Nguồn Internet
Thông qua tổ bộ môn Người biên soạn
Nguyễn Đình Quyết
ĐT: 0983750717Email: nguyendinhquyet@viu.edu.vn
Trang 4TRƯỜNG ĐHCN VIỆT – HUNG
KHOA CÔNG NGHỆ THÔNG TIN
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do – Hạnh phúc
NHẬN XÉT ĐỒ ÁN HỌC PHẦN 1
Chuyên ngành: Công nghệ thông tin
(Nhận xét của GV hướng dẫn Nhận xét của GV phản biện )
Họ tên sinh viên: Tống Huy Tuấn Hải, Nguyễn Hữu Anh Hưng, Nguyễn Đức Nam, Nguyễn Giang Nam, Bế Hữu Quốc Tên đề tài: Xây dựng một chương trình mã hóa thông tin bằng ngôn ngữ lập trình C/C++ Người nhận xét (họ tên, học hàm, học vị): Ths Nguyễn Đình Quyết Đơn vị công tác (nếu có): Khoa Công Nghệ Thông Tin, Trường ĐHCN Việt-Hung Ý KIẾN NHẬN XÉT 1 Về nội dung & đánh giá thực hiện nhiệm vụ nghiên cứu của đề tài:
2 Về phương pháp nghiên cứu, độ tin cậy của các số liệu:
3 Về kết quả của đề tài:
Trang 5
4 Những thiếu sát và vấn đề cần làm rõ (nếu có):
5 Ý kiến kết luận (mức độ đáp ứng yêu cầu đối với ĐA/KL tốt nghiệp)
6 Câu hỏi người nhận xét dành cho học viên (nếu có):
Đánh giá điểm:
Kết luận: Đồng ý / Không đồng ý cho phép sinh viên được tham dự bảo vệ kết quả trước hội đồng
Ngày………tháng…… năm 2024
NGƯỜI NHẬN XÉT
(chữ ký & họ tên)
Trang 6LỜI CẢM ƠN
Với sự hướng dẫn và hỗ trợ nhiệt tình của thầy Nguyễn Đình Quyết, chúng em
đã hoàn thành đồ án này đúng tiến độ được giao Chúng em xin chân thành cảm ơnthầy vì những kiến thức thầy đã truyền đạt và định hướng, cùng với những kinhnghiệm quý báu của thầy đã giúp nhóm em tự tin thực hiện đồ án này Dù đã cố gắng,nhưng nhóm em biết rằng đồ án của mình vẫn còn nhiều thiếu sót Chúng em mongthầy sẽ tiếp tục hướng dẫn để có thể hoàn thiện hơn kỹ năng mã hóa của mình
Xin chân thành cảm ơn thầy
Hà Nội, Ngày 10 tháng 06 năm 2024
Nhóm sinh viên thực hiện Tống Huy Tuấn Hải Nguyễn Hữu Anh Hưng Nguyễn Đức Nam
Nguyễn Giang Nam
Bế Hữu Quốc
Trang 7
NHẬT KÝ THỰC HIỆN ĐỀ TÀI
05/04/2024 Nhận đề tài từ giáo viện hướng dẫn
13/04/2024 Xin ý kiến thầy về đồ án
29/04/2024 Xin ý kiến thầy về hướng giải quyết
06/05/2024 Tìm hiểu về mã hóa Caesar
13/05/2024 Tìm hiểu về mã hóa Affine
05/06/2024 Viết báo cáo
15/06/2024 Xin ý kiến của thầy về đồ án và chỉnh sửa
20/06/2024 Hoàn thiện báo cáo
26/06/2024 Nộp báo cáo
Trang 8Mục lục
CHƯƠNG 1 : TỔNG QUAN VỀ MÃ HÓA THÔNG TIN 10
1.1 Tổng quan về mã hóa 10
1.1.1 Giới thiệu về mã hóa 10
1.1.2 Các thành phần của một hệ thống mã hóa 11
1.1.3 Các tiêu chí đặc trưng của một hệ thống mã hóa 11
1.2 Tính bảo mật thông tin 12
1.2.1 Thành phần của một hệ thống thông tin 12
1.2.2 Những mối đe dọa và thiệt hại đối với hệ thống thông tin 12
1.2.3 Giải pháp an toàn và bảo mật 12
1.3 Tấn công một hệ thống mật mã 13
1.3.1 Khái quát 13
1.3.2 Các kiểu tấn công mã 13
CHƯƠNG 2 : XÂY DỰNG CHƯƠNG TRÌNH MÃ HÓA BẰNG PHƯƠNG PHÁP CAESAR VÀ AFFINE 15
2.1 Phương pháp mã hóa CAESAR 15
2.1.1 Tổng quan về mã hóa Caesar 15
2.1.2 Nguyên lý hoạt động 15
2.1.3 Công thức mã hóa 16
2.1.4 Ví dụ minh họa mã hóa Caesar 16
2.1.5 Ví dụ minh họa giải mã Caesar 17
2.1.6 Độ an toàn của Mã hóa caesar 17
2.1.7 Ưu và nhược điểm 18
2.1.8 Ứng dụng và mục tiêu 18
2.2 Phương pháp mã hóa AFFINE 18
2.2.1 Tổng quan về mã hóa AFFINE 18
2.2.2 Công thức Affine 19
2.2.3 Định lí 19
Trang 92.2.4 Các bước tính của mã Affine 19
2.2.5 Yêu cầu 20
2.2.6 Ưu và nhược điểm 20
KẾT LUẬN 21
TÀI LIỆU THAM KHẢO 22
Trang 10DANH MỤC HÌNH VẼHình 1.1 Khái niệm về Mã hóa
Hình 1.2 Các thành phần của 1 hệ thống mã hóa
Hình 1.3 Tấn công của một hệ thống mật mã
Hình 2.1 Nguyên lý hoạt động của mã hóa Caesar
Trang 11MỞ ĐẦU
I Đặt vấn đề
Trong thời đại bùng nổ của công nghệ thông tin, con người bước vào kỷ nguyênmới, kinh tế thông tin toàn cầu Mọi hoạt động xã hội, chính trị, kinh tế đều liên quanđến thu nhập, xử lý, lưu trữ và trao đổi thông tin Do đó, bảo mật thông tin trở lên vôcùng quan trọng, đặc biệt là trong giao dịch điện tử trên môi trường internet, nơi cótính mở và không đáng tin cậy
Để bảo vệ thông tin trong môi trường mở, người ta sử dụng mã hóa, mộtphương pháp biến đổi thông tin ban đầu thành dạng bảo mật Chỉ những người nắmđược quy luật mới có thể giải mã và khôi phục lại thông tin gốc
Có nhiều phương pháp mã hóa khác nhau, từ mã hóa cổ điển như Caesar,Vigenere, Hill, Playfair đến mã hóa khối như Des, Aes, Cast 128, RC5, Blowfish
II Mục tiêu nghiên cứu của đề tài
- Xây dựng chương trình mã hóa thông tin bằng ngôn ngữ lập trình C++
III Nhiệm vụ của đề tài
- Tìm hiểu về Lập trình bằng ngôn ngữ C++
- Mô phỏng mã hóa thông tin trên ngôn ngữ lập trình C++
IV Kết quả đạt được của đề tài
- Ứng dụng ngôn ngữ C++ để lập trình
- Xây dựng chương trình mã hóa trên ngôn ngữ C++
V Bố cục của đề tài
Đề tài gồm 2 chương như sau:
Chương I : Tổng quan về mã hóa thông tin
Chương II : Xây dựng chương trình mã hóa bằng phương pháp
Caesar và Affine
Trang 12CHƯƠNG 1:
TỔNG QUAN VỀ MÃ HÓA THÔNG TIN
Chương này bao gồm các nội dung giới thiệu về mã hóa và tính năng bảo mật thông tin:Tổng quan về mã hóa; Tính bảo mật thông tin; Tấn công một hệ thống mật mã
1.1 Tổng quan về mã hóa
1.1.1 Giới thiệu về mã hóa.
Mật mã (Encryption) là kỹ thuật cơ sở quan trọng trong bảo mật thông tin Biến
đổi thông tin gốc thành dạng thông tin bí mật mà chỉ có những thực thể tham gia xử lý
thông tin một cách hợp lệ mới hiểu được
Kỹ thuật mã hoá được chia thành hai loại:
- Mã hoá dùng khoá đối xứng (symmetric key encryption)
- Mã hoá dùng khoá bất đối xứng (asymmetric key encryption)
Trang 131.1.2 Các thành phần của một hệ thống mã hóa.
Hình 1.2
- Plaintext: Là thông tin gốc cần truyền đi giữa các hệ thống thông tin
- Encryption algorithm: Thuật toán mã hóa
- Key: Khóa mật mã, gọi tắt là khóa Đây là thông tin cộng thêm mà thuật toán
mã hóa sử dụng để trộn với thông tin gốc tạo thành thông tin mật
- Ciphertext: Thông tin đã mã hóa (thông tin mật) Đây là kết quả của thuật toán
mã hóa
- Decryption algorithm: Thuật toán giải mã Đầu vào của thuật toán này làthông tin đã mã hóa (ciphertext) cùng với khóa mật mã Đầu ra của thuật toán là thôngtin gốc (plaintext) ban đầu
1.1.3 Các tiêu chí đặc trưng của một hệ thống mã hóa.
- Phương pháp mã (operation)
- Thay thế (substitution): Thay thế 1 đơn vị mã (từ, ký tự, bit, …) bởi 1 đơn vị
mã khác
- Chuyển vị (transposition): Thay đổi vị trí mã
- Số khóa sử dụng (number of keys)
- Nếu phía mã hóa và phía giải mã dùng chung một khóa (symmetric key) mãđối xứng còn gọi là mã một khóa (single-key), mã khóa bí mật (secret key) hoặc mãquy ước (conventional cryptosystem)
- Nếu phía mã hóa và phía giải mã dùng 2 khóa khác nhau mã bất đối xứng (asymmetric key), mã hai khóa (two key) hoặc mã khóa công khai (public key)
- Cách xử lý thông tin gốc (mode of cipher)
- Xử lý liên tục theo từng phần tử hệ thống mã dòng (stream cipher)
- Xử lý theo từng khối ta có hệ thống mã khối (block cipher)
Trang 141.2 Tính bảo mật thông tin.
1.2.1 Thành phần của một hệ thống thông tin.
Khái niệm hệ thống: Hê ˆthống là một tập hợp các máy tinh gồm các thành phầnphần cứng, phần mềm và dữ liệu làm việc được tích lũy qua thời gian
Tài sản của hệ thống bao gồm:
- Phần cứng
- Phần mềm
- Dữ liệu
- Các truyền thông giữa các máy tính của hệ thống
- Môi trường làm việc
- Con người
1.2.2 Những mối đe dọa và thiệt hại đối với hệ thống thông tin.
- Phá hoại: kẻ thù phá hỏng thiết bị phần cứng hoặc phần mềm hoạt động trên
hệ thống
- Sửa đổi: Tài sản của hệ thống bị sửa đổi trái phép Điều này thường làm cho
hê ˆ thống không làm đúng chức năng của nó Chẳng hạn như thay đổi mật khẩu, quyềnngười dùng trong hê ˆthống làm ho ˆkhông thể truy cập vào hệ thống để làm việc
- Can thiệp: Tài sản bị truy cập bởi những người không có thẩm quyền
- Các truyền thông thực hiện hệ thống bị ngăn chặn, sửa đổi
- Các đe dọa đối với một hệ thống thông tin có thể đến từ nhiều nguồn và đượcthực hiện bởi các đối tượng khác nhau Chúng ta có thể chia thành 3 loại đối tượngnhư sau: các đối tượng từ ngay bên trong hệ thống (insider), đây là những người cóquyền truy cập hợp pháp đối với hệ thống, những đối tượng bên ngoài hê ˆthống(hacker, cracker), thường các đối tượng này tấn công qua những đường kết nối với hệthống như Internet chẳng haṇ, và thứ ba là các phần mềm (chẳng hạn như spyware,adware …) chạy trên hệ thống
1.2.3 Giải pháp an toàn và bảo mật.
Thường có 3 biện pháp ngăn chặn:
- Điều khiển thông qua phần mềm: dựa vào các cơ chế an toàn bảo mật của hệthống nền ( hệ điều hành), các thuật toán mật mã học
- Điều khiển thông qua phần cứng: các cơ chế bảo mật, các thuật toán mật mãhọc được cứng hóa để sử dụng
- Điều khiển thông qua các chính sách của tổ chức: ban hành các quy định của
tổ chức nhằm đảm bảo tính an toàn bảo mật của hệ thống
Trang 151.3 Tấn công một hệ thống mật mã.
1.3.1 Khái quát
- Tấn công (attack), bẻ khoá (crack) một hệ thống mật mã là quá trình thực hiệnviệc giải mã thông tin mật một cách trái phép
Để giải mã cần: thông tin mật (ciphertext), khóa (secret key) và thuật toán giải
mã (decryption algorithm) Nếu không có thì thực hiện theo các phương pháp:
- Phương pháp phân tích mã (cryptanalysis) tìm ra khóa (thuật toán không đượccoi là thông tin mật)
- Phương pháp thử tuần tự (brute-force)
Ví dụ,
- Nếu khoá có chiều dài là 8 bit thì sẽ có tất cả 28 = 256 khoá khác nhau Đểchọn được khoá đúng thì kẻ tấn công phải thử trung bình khoảng 256 / 2 = 128 lần(Xác suất 50%)
- Nếu mã két là 4 số phải thử bao nhiêu?
Hình1.3
1.3.2 Các kiểu tấn công mã
- Ciphertext only (Encryption algorithm + Ciphertext): Kẻ tấn công E chỉ biết
giải thuật, một số bản mã E tiến hành phân tích mã với một số thông tin có thể thuthập được như ngôn ngữ mà bản rõ sử dụng
- Known plaintext (Encryption algorithm + Ciphertext + plaintext-ciphertext
pairs): Kẻ tấn công E đã biết giải thuật, một số cặp X-Y (bản rõ - bản mật tương ứng)nào đó E tiến hành phân tích mã cho bản mã cần tấn công Rõ ràng mô hình tấn côngnày làm mạnh hơn so với tấn công chỉ qua bản mã E có thể dùng phép thử loại trừ đểvét cạn không gian khóa (exshautive key search) và tìm ra khóa K sao choEnc(K,X) = Y
Trang 16- Chosen plaintext (Encryption algorithm + Ciphertext + chosen
plaintextciphertext pairs)
- Chosen ciphertext |(Encryption algorithm + Ciphertext + chosen
ciphertextplaintext pairs)
Chosen text (Encryption algorithm + Ciphertext + chosen ciphertext
-plaintext pairs + chosen -plaintext-ciphertext pairs)
Trang 17CHƯƠNG 2:
XÂY DỰNG CHƯƠNG TRÌNH MÃ HÓA BẰNG PHƯƠNG
PHÁP CAESAR VÀ AFFINE 2.1 Phương pháp mã hóa CAESAR
2.1.1 Tổng quan về mã hóa Caesar
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ộtkhó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 chiasẻ và được dùng chung cho cả 2 bên
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 thaythế 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ã Đồngthờ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ờ
2.1.2 Nguyên lý hoạt động
Mã hóa Caesar là một dạng mã hóa thay thế, trong đó mỗi ký tự trong bản rõ(plaintext) được thay thế bằng một ký tự khác theo một quy tắc dịch chuyển cố địnhtrong bảng chữ cái
Cụ thể:
- Bạn chọn một số nguyên k làm khóa (key), đây là số bước dịch chuyển
- Mỗi ký tự của bản rõ sẽ được dịch chuyển xuống kkk vị trí trong bảng chữ cái
Ví dụ: Với khóa k = 3, chữ cái A sẽ trở thành D, B sẽ trở thành E, C sẽ trở thành
F, và cứ tiếp tục như vậy
Hình 2.1
Trang 182.1.3 Công thức mã hóa
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ịchchuyể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 đượcbiết đến rất rộng rãi Tiếp theo ta cùng tìm hiểu công thức của hệ:
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 đó đo 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ớikhó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 ứngcủ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ảngchữ 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
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 thaotá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ó 26khó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áptì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
2.1.4 Ví dụ minh họa mã hóa Caesar
1 Mã hóa và giải mã chuỗi “CAESAR”, với k = 4:
Sử dụng Caesar Cipher với key = 4 để mã hóa ta được:
Mã hóa: CAESAR => GEIWEVGiải mã: GEIWEV=> CAESAR
2 Áp dụng công thức: C[i] = (s[i] – ‘A’ + k) % 26 + ‘A’
Trong đó:
s[i] là mã ASCII của ký tự thứ i trong chuỗi ban đầu
k là số nguyên dương thể hiện số bước dịch vị trong quá trình mã hoá