Tải bản đầy đủ (.pdf) (20 trang)

bài tập lớn môn cấu trúc rời rạc tìm hiểu về nghịch đảo modulo và mã hoá rsa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.61 MB, 20 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

<b>TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN </b>

<b>BÀI TẬP LỚN</b> MÔN <b>CẤU TRÚC RỜI RẠC</b>

<i>Người hướng dẫn: ThS MAI DUY TÂN </i>

<i><b>Người thực hiện: NGUYỄN HOÀNG KHOA 52100969 </b></i><b>–</b>

Lớp : 21050401 Khoá : 25

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

<b>TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN </b>

<b>BÀI TẬP LỚN MÔN CẤU TRÚC RỜI RẠC </b>

<b>TÌM HIỂU VỀ NGHỊCH ĐẢO MODULO </b>

VÀ MÃ HOÁ RSA

Người hướng dẫn: ThS MAI DUY TÂN

<b>Người thực hiện: NGUYỄN HOÀNG KHOA </b>

Lớp : 52100969 Khoá : 25

<b>THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN </b>

Đầu tiên, em xin gửi lời cảm ơn đến Khoa Công nghệ thơng tin v ã tì đ ạo điều kiện cho em học môn Cấu trúc rời rạc. Môn học này ã mang lđ ại cho em rất nhiều kiến thức m và cới ần thiết cho con đường phát triển của em. Em cũng xin gửi lời cảm ơn đến thầy Mai Duy T và cô Nguyân ễn Thị Huỳnh Trâm. Bài tập lớn lần này của em khơng thể hồn thành nếu thiếu đi những tri th ức quý báu của thầy v cô. Trong quá trình thà ực hiện bài tập ớn em cũng đl ã nhận được nhiều sự chỉ dạy từ thầy Mai Duy Tân. Một lần nữa, em

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>ĐỒ ÁN ĐƯỢC HOÀN THÀNHTẠI TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG </b>

Tơi xin cam đoan đây là sản phẩm đồ án của riêng tôi và được sự hướng dẫn của ThS Mai Duy Tân;. 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ức nà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.

Ngồ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ích nguồn gốc.

<b>Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hồn toàn chịu trách nhiệm về nội dung đồ án của mình. </b>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 q trình thực hiện (nếu có).

<i>TP. Hồ Chí Minh, ngày…</i>tháng<i>…năm…..Tác giả </i>

<i>(ký tên và ghi rõ họ tên) </i>

<i>Nguyễn Hoàng Khoa </i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN </b>

<b>Phần xác nhận của GV hướng dẫn </b>

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Tp. Hồ Chí Minh, ngày…tháng…năm…. (kí và ghi họ tên)

<b>Phần đánh giá của GV chấm bài </b>

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Tp. Hồ Chí Minh, ngày…tháng…năm…. (kí và ghi họ tên)

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>TÓM TẮT </b>

Bài tập lớn môn học Cấu trúc r lời ần này của em sẽ tiến hành tìm hiểu về Thuật toán Euclid mở rộng và cách dùng thuật toán để tìm nghịch đảo modulo. Từ cơ sở đó ta có thể ứng dụng để đi đến tìm hiểu về hệ thống mật mã RSA và xây dựng chương trình mơ ph ng thuỏ ật tốn.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Chương 1: Tìm nghịch đảo modulo bằng thuật tốn Euclid mở rộng ... 4

1.1. Nhắc lại về ước chung lớn nhất của hai số. ... 4

1.2. Thuật toán Euclid mở rộng tìm nghịch đảo modulo ... 4

1.3. Xây dựng bảng tính cho thuật tốn ... 5

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT </b>

<b>CÁC CHỮ VIẾT TẮT </b>

GCD Greatest Common Divisor (Ước chung lớn nhất)

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ </b>

<b>DANH MỤC HÌNH </b>

Hình 1: Ví dụ tìm nghịch đảo modulo 1 ... 6

Hình 2: Ví dụ tìm nghịch đảo modulo 2 ... 6

Hình 3: Ví dụ tìm nghịch đảo modulo 2 (tiếp theo) ... 7

Hình 4: Kết quả chạy thực nghiệm tìm nghịch đảo modulo 3 mod 5 ... 7

Hình 5: Kết quả chạy thực nghiệm tìm nghịch đảo modulo 27 mod 49 ... 8

Hình 6: Kết quả chạy thực nghiệm tìm nghịch đảo modulo 48 mod 22 ... 8

Hình 7: Kết quả chạy thử với mẫu thử 100 từ ... 11

Hình 8: Kết quả chạy thử với mẫu 300 từ ... 13

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>Chương 1: Tìm nghịch đảo m</b>odulo b<b>ằng </b>thu<b>ật toán Euclid mở </b>

<b>1.1. Nhắc lại về ước chung lớn nhất của hai số. </b>

Ứng với hai số nguyên a và b khác 0, ước chung lớn nhất (GCD - Greatest Common Divisor) là một số nguyên d lớn nhất mà d chia hết cả a và b.

Ước chung lớn nhất của hai số có thể viết dưới dạng:

<b>1.2. Thuật tốn Euclid mở rộng tìm nghịch đảo modulo</b>

Thuật tốn Euclid mở rộng là một phương pháp tính ước chung lớn nhất (GCD) của hai số nguyên dương, cùng với việc tìm hệ số Bézout của chúng.

Hệ số Bézout là một cặp số nguyên dương (x, y) sao cho: 𝑎𝑥 + 𝑏𝑦 = 𝐺𝐶𝐷(𝑎, 𝑏) .2) (1Các tính chất cơ bản của thuật tốn Euclid mở rộng:

1. Nếu a chia hết cho b thì GCD (a, b) = b.

2. GCD (a, b) = GCD (b, a mod b) với a mod b là số dư của phép chia a cho b

3. GCD (a, 0) = a.

Tính chất thứ 2 cho phép ta chuyển một bài toán lớn, phức tạp thành một bài toán nhỏ và dễ dàng xử lí hơn. Từ đó khi viết theo dạng biểu thức (1.1) ta xây dựng được một dãy các phép chia:

GCD (a, b)

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

𝑎<small>0</small>= 𝑏<sub>0</sub>𝑞<small>0</small> + 𝑟<sub>0</sub>GCD (𝑏<sub>0</sub>, 𝑟<sub>0</sub>) 𝑏<small>0</small>= 𝑟<small>0</small>𝑞<small>1</small> + 𝑟<small>1</small>GCD (𝑟<small>0</small>, 𝑟<sub>1</sub>) 𝑟<small>0</small>= 𝑟<sub>1</sub>𝑞<small>2</small> + 𝑟<sub>2</sub>GCD (𝑟<sub>1</sub>, 𝑟<sub>2</sub>) 𝑟<small>1</small>= 𝑟<small>2</small>𝑞<small>3</small> + 𝑟<small>3</small>GCD (𝑟<small>2</small>, 𝑟<small>3</small>)

𝑟<small>𝑚−2</small>= 𝑟<sub>𝑚−1</sub>𝑞<small>𝑚</small> + 𝑟 <sub>𝑚</sub>GCD (𝑟<sub>𝑚−1</sub>, 𝑟<sub>𝑚</sub><sub>) </sub>Ta xây dựng dãy truy hồi:

𝑡<small>0</small>= 0 𝑡<small>1</small>= 1

a khởi tạo là max (𝑎<sub>0</sub>, 𝑏<sub>0</sub>) b khởi tạo là min (𝑎<small>0</small>, 𝑏<small>0</small>) q = 𝑎 // 𝑏

r = 𝑎 𝑚𝑜𝑑 𝑏t0 khởi tạo là 0t1 khởi tạo là 1t = 𝑡0 – 𝑡1 × qwhile b ≠ 0: a = b, b = r q = 𝑎 // 𝑏 r = 𝑎 𝑚𝑜𝑑 𝑏

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<i>Lưu ý: trường hợp giá trị t0 nhận được là âm thì ta cộng với max (𝑎0</i>, 𝑏<small>0</small>). Ví dụ:

➢ Tìm nghịch đảo của 3 mod 5

Hình 1: Ví dụ tìm nghịch đảo modulo 1 ➢ Tìm nghịch đảo của 11 mod 26

Hình 2: Ví dụ tìm nghịch đảo modulo 2

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Hình 3: Ví dụ tìm nghịch đảo modulo 2 (tiếp theo)

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Hình 5: Kết quả chạy thực nghiệm tìm nghịch đảo modulo 27 mod 49

Hình 6: Kết quả chạy thực nghiệm tìm nghịch đảo modulo 48 mod 22

Ở ví dụ tìm nghịch đảo 48 mod 22, do 48 và 22 không phải là hai s nguyên t ố ốcùng nhau (𝐺𝐶𝐷 (48 22, ) ≠ 1) nên không tồn tại nghịch đảo modulo, kết quả trả về là None.

<b>Chương 2: ệ thống mật m</b>Hã RSA

<b>2.1. Sơ lược về mã hoá và mật mã học </b>

Một trong các yếu tố chính quyết định sự phát triển của con người là nhu cầu giao tiếp và hệ thống ngôn ngữ, truyền tin. Tuy nhiên trong truyền tin liên lạc hay các vấn đề hiện nay là truyền tải dữ liệu trên các kênh truyền chung, ta cần một phương pháp để hạn chế những người không liên quan đọc được dữ liệu hoặc thông tin, thông điệp. Nhu cầu che giấu những thông tin quan trọng đã xuất hiện từ rất lâu trong lịch sử và từ đó, hệ thống mật mã và mật mã học đã ra đời.

Các khái niệm về mật mã học:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

• Thơng điệp: là thực thể vật lí mang thơng tin cần trao đổi. Thực thể có thể là dạng văn bản như lá thư, điện tín; dạng âm thanh là cuộc nói chuyện điệ thoại, bài phát biểu; dạng hình ảnh hay truyền thơng đa phương tiện là dạng kết hợp cả văn bản, hình và âm thanh như video, chương trình truyền hình. • Plaint text: là dữ liệu gốc tường minh của thông điệp, mọi người trong cùng

mơi trường tạo ra thơng điệp đều có thể đọc hiểu được.

• Cipher text: là thơng điệp đã được biến đổi theo một nguyên tắc nào đó để hạn chế những người có thể đọc nó. Chỉ có những người nắm được nguyên tắc biến đổi và biến đổi trở về dạng plain text

• Mã hố: là cách thức biến đổi thơng tin từ bản có thể đọc hiểu được sang một dạng mật mã chỉ có những người giải mã mới có thể hiểu được.

• Giải mã: là cách thức ngược lại của mã hoá, chỉ cách thức chuyển đổi thông tin từ dạng mật mã trở về thành dạng mà mọi người có thể dễ dàng đọc được. • Key: được coi là chìa khố, quy tắc để giải mật mã, được thống nhất giữa bên gửi và bên nhận mật mã. Key thường được giữ bí mật để tránh bị bên thứ ba giải được mật mã.

Hai dạng mã hoá phổ biến được triển khai hiện nay có thể kể đến là mã hố đối xứng và mã hố bất đối xứng:

• Mã hố đối xứng (mã hố bí mật): Chỉ dùng một chìa khố (key) cho q trình mã hố và giải mã.

• Mã hố bất đối xứng (khố cơng khai và khoá riêng): sử dụng hai khoá khác nhau cho q trình mã hố (khố cơng khai) và giải mã (khoá riêng).

<b>2.2. Tổng quan về hệ thống mật mã RSA</b>

Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 Học viện Cơng nghệ Massachusetts (MIT). Tên của thuật tốn lấy từ 3 chữ tại

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh đã mơ tả một thuật tốn tương tự. Với khả năng tính tốn tại thời điểm đó thì thuật tốn này khơng khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật.

Hệ thống mật mã RSA thuộc loại mã hoá bất đối xứng, sử dụng một khố cơng khai để mã hố thơng điệp và một khố bí mật dùng để giải mã.

<b>2.3. Cách thức hoạt động của hệ thống mật mã RSA </b>

• Tính một số giả ngun tố bằng phi hàm Euler:

𝜑(𝑛) = (𝑝 − 1)(𝑞 − 1) . Giá trị này sẽ được giữ bí mật.• Chọn m t s t nhiên e trong kho ng ộ ố ự ả (1, 𝜑(𝑛)) sao cho 𝐺𝐶𝐷 (𝑒, 𝜑(𝑛)) =

1, tức là e và 𝜑(𝑛) ngun tố cùng nhau.

• Tính tốn s d sao cho ố 𝑑 ≡ 1/𝑒 (𝑚𝑜𝑑 𝜑(𝑛)) hay vi t d hiế ễ ểu hơn thì 𝑒𝑑 ≡ 1 (𝑚𝑜𝑑 𝜑(𝑛)). S d ố được g i là s nghọ ố ịch đảo modulo của e (theo modulo 𝑚𝑜𝑑 𝜑(𝑛)). Ta có thể ứng dụng thuật toán Euclid m ởrộng ở Chương 1 để tìm nghịch đảo modulo của e mod 𝜑(𝑛)

Public key sẽ là bộ số (n, e), và private key sẽ là bộ số (n, d). Chúng ta cần giữ private key thật cẩn thận cũng như các số nguyên tố p và q vì từ đó có thể tính tốn các khóa rất dễ dàng.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

2.3.2.Mã hoá từ và giải mã bằng khoá đã tạo

Từ bản rõ A, ta cần ấy m l ã ascii và chuyển nó thành một số tự nhiên a trong khoảng (0, n) sao cho , n nguyên tố cùng nhau (GCD (a a, n) = 1). Tiếp đó, ta sẽ tiến hành mã hố a thành c theo cơng thức:

Mẫu: “The world is changing rapidly, and it can be difficult to keep up with all the latest developments. With new technologies, scientific breakthroughs, and cultural shifts happening all around us, it's important to stay informed and adaptable. But in the midst of all this change, it's also crucial to hold onto the things that matter most - our relationships, our values, and our sense of purpose. By staying grounded in what truly matters, we can navigate the challenges of a rapidly evolving world with confidence and resilience.”

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Ch y vạ ới mẫu thử 300 t ừ:

M u: The concept of time is a fascinating one. It is something that we all ẫ “experience, yet it remains one of the great mysteries of the universe. We measure time in seconds, minutes, and hours, but it is also something that we feel - the passage of time can be experienced as a sense of urgency or as a slow, steady march.

Our understanding of time has evolved over the centuries, from the sundials and hourglasses of ancient times to the atomic clocks and GPS systems of today. But even as our methods of measuring time become more precise, the nature of time itself remains elusive.

As we go through life, we are constantly aware of time - we age, we grow, we change. And yet, in some ways, time seems to stand still. Moments of joy or sorrow can feel like they last forever, while hours or days can pass in a blur.

The world is changing rapidly, and it can be difficult to keep up with all the latest developments. With new technologies, scientific breakthroughs, and cultural shifts happening all around us, it's important to stay informed and adaptable. But in the midst of all this change, it's also crucial to hold onto the things that matter most - our relationships, our values, and our sense of purpose. By staying grounded in what truly matters, we can navigate the challenges of a rapidly evolving world with confidence and resilience.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Ultimately, time is a reminder of the fleeting nature of life. We must cherish the moments we have, and make the most of the time we are given. Whether we use it to learn, to love, or to simply be, time is a precious gift that should be treasured. As we move forward into the future, let us remember the lessons of the past, embrace the opportunities of the present, and look forward with hope and optimism to what lies ahead”

Hình 8: Kết quả chạy thử với mẫu 300 từ

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>TÀI LIỆU THAM KHẢO </b>

<b>Tiếng Việt </b>

1. Dương Anh Đức, Trần Minh Triết (2003), Mã hóa và ứng dụng

2. Phạm Thanh Science&Tech (2021), “Thuật toán RSA T– ính đúng đắn, Tính an tồn và Ví dụ tính tốn cụ thể”

</div>

×