1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng chương trình mã hóa thông tin bằng ngôn ngữ c c++

24 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình Mã Hóa Thông Tin Bằng Ngôn Ngữ C/C++
Tác giả 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
Người hướng dẫn Ths. Nguyễn Đình Quyết
Trường học Trường Đại Học Công Nghiệp Việt – Hung
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Đồ Án
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 24
Dung lượng 381,08 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đá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 1

KHOA: 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 2

KHOA: 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 3

TRƯỜ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 4

TRƯỜ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 6

LỜ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 8

Mụ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 9

2.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 10

DANH 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 11

MỞ ĐẦ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 12

CHƯƠ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 13

1.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 14

1.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 15

1.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 17

CHƯƠ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 18

2.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á

Ngày đăng: 11/12/2024, 09:40

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w