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

báo cáo bài tập lớn đề tài tìm hiểu về giải thuật mã hóa khóa công khai 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.64 MB, 23 trang )

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

<small> </small>

<b>HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN </b>

---

<b>BÁO CÁO BÀI TẬP LỚN Đề tài: Tìm hiểu về giải thuật mã </b>

<b>hóa khóa cơng khai RSA </b>

<b>Nhóm sinh viên thực hiện: Nguyễn Văn Dũng B21DCCN278 Vũ Công Duy B21DCCN302 Nguyễn Anh Huân B21DCCN402 Lê Nguyễn Hải Đăng B21DCCN200 Nguyễn Huy Tú B21DCCN750 </b>

<i><b>Hà Nội 2024</b></i>

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

<b>BẢNG PHÂN CÔNG CÔNG VIỆC </b>

Nhiệm vụ chung

Tìm hiểu và cài đặt thử nghiệm giải mã hóa cơng khai RSA

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

<b>MỤC LỤC </b>

<b><small>MỤC LỤC ... 1 </small></b>

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

<b><small>CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ... 2 </small></b>

<b><small>1. Mã hóa thơng tin là gì ... 2 </small></b>

<b><small>2. Vai trị của mã hóa trong ATTT và ứng dụng ... 3 </small></b>

<b><small>3. Một số phương pháp mã hóa cơ bản... 3 </small></b>

<b><small>CHƯƠNG 2: MÃ HÓA RSA ... 6 </small></b>

<b><small>1. Giới thiệu về mã hóa khóa bất đối xứng RSA ... 6 </small></b>

<b><small>2. Các giải thuật sinh khóa, mã hóa, giải mã... 8 </small></b>

<b><small>3. Các điểm yếu, các dạng tấn công RSA và cách phòng chống... 10 </small></b>

<b><small>CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM ... 13 </small></b>

<b><small>1. Một số công cụ, thư viện hỗ trợ ... 13 </small></b>

<b><small>2. Thiết lập môi trường cài đặt ... 13 </small></b>

<b><small>KẾT LUẬN ... 19 </small></b>

<small>Tài liệu tham khảo ... 20 </small>

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

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

<b>Lời đầu tiên nhóm em xin được gửi lời cảm ơn sâu sắc đến Học viện Cơng </b>

<b>nghệ Bưu chính Viễn thơng đã đưa mơn học An tồn và bảo mật hệ thống thơng tin vào trong chương trình giảng dạy. Đặc biệt, nhóm em xin gửi lời cảm ơn chân </b>

<b>thành nhất đến giảng viên - cô Ninh Thị Thu Trang, vì đã quan tâm giúp đỡ chúng </b>

em trong suốt q trình học tập mơn An tồn và bảo mật hệ thống thơng tin.

Đề tài “Tìm hiểu về giải thuật mã hóa khóa cơng khai RSA” là nội dung nhóm em thực hiện nghiên cứu trong suốt q trình học tập mơn học. Măc dù đã cố gắng trong quá trình tự tìm hiểu và thực hiện, song do thời gian và kiến thức cịn hạn hẹp nên khơng thể tránh khỏi sự thiếu sót. Nhóm em rất mong nhận được sự thơng cảm và đóng góp ý kiến của cô và các bạn để bài báo cáo của nhóm em được hồn thiện hơn.

<b>Nhóm em xin chân thành cảm ơn ! </b>

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

<b>CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 1. Mã hóa thơng tin là gì </b>

Mã hóa thơng tin là q trình chuyển đổi dữ liệu này sang một dữ liệu khác với ý nghĩa khác với dữ liệu ban đầu. Mục đích nhằm chỉ cho phép một số người, đối tượng nhất định đọc, hiểu được dữ liệu ban đầu thơng qua q trình giải mã dữ liệu sau khi đã được biến đổi.

Một hệ mã hóa gồm 2 khâu:

 Mã hóa

 Giải mã

<i>Hình 1.1 Sơ đồ mã hóa và giải mã </i>

Các thuật ngữ cơ bản trong mã hóa thơng tin

 Bản rõ (plaintext) : là thông tin chưa được mã hóa hay thơng tin ở dạng có thể hiểu được.

 Bản mã (ciphertext hay encrypted text) : là thơng tin đã được mã hóa hay thông

 tin ở dạng đã bị xáo trộn.

 Mã hóa (Encryption): là hành động xáo trộn bản rõ để chuyển thành bản mã.

 Giải mã (Decryption): là hành động giải xáo trộn bản mã để chuyển thành bản rõ.

 Mã hóa sử dụng một thuật tốn (Algorithm) để mã hóa thơng tin.

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

<i>Hình 1.2 Sơ đồ mã hóa và giải mã với các thuật ngữ </i>

<b>2. Vai trò của mã hóa trong ATTT và ứng dụng </b>

Mã hố thơng tin có thể được sử dụng để đảm bảo an tồn thơng tin trên đường truyền với các thuộc tính:

<b> Bí mật (confidentiality): đảm bảo chỉ những người có thẩm quyền mới có khả </b>

năng truy nhập vào thơng tin;

<b> Tồn vẹn (integrity): đảm bảo dữ liệu khơng bị sửa đổi bởi các bên khơng có </b>

đủ thẩm quyền;

<b> Xác thực (authentication): thông tin nhận dạng về các chủ thể tham gia phiên </b>

truyền thông có thể xác thực;

<b> Khơng thể chối bỏ (non-repudiation): cho phép ngăn chặn một chủ thể chối </b>

bỏ hành vi hoặc phát ngôn đã thực hiện

<b>Ứng dụng của mã hóa thơng tin </b>

Các kỹ thuật mã hóa được ứng dụng rộng rãi trong các hệ thống/công cụ/dịch vụ bảo mật:

 Dịch vụ xác thực (Kerberos, RADIUS,…)

 Điều khiển truy cập

 Các cơng cụ đánh giá và phân tích logs

 Các sản phẩm quản lý ATTT

 Các cơng cụ cho đảm bảo an tồn cho truyền thơng không dây

 Các nền tảng bảo mật như PKI, PGP

 Các giao thức bảo mật như SSL/TLS, SSH, SET, IPSec

<b> Các hệ thống như VPN </b>

<b>3. Một số phương pháp mã hóa cơ bản Mã hóa cổ điển </b>

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

Đây là phương pháp mã hóa cơ bản nhất. Người gửi và người nhận khơng cần phải tạo khóa bảo mật mà chỉ cần biết những thuật tốn có khả năng giải mã là được. Tuy nhiên, chính sự đơn giản này khiến khả năng đảm bảo an tồn khơng cao bởi một khi người thứ 3 biết được thuật tốn giải mã đó thì dữ liệu sẽ khơng cịn được bảo mật nữa.

<b>Mã hóa đối xứng </b>

Đây là cách mã hóa thơng tin thơng dụng nhất. Khóa dùng để thực hiện mã hóa và giải mã là như nhau nên chúng được gọi là đối xứng (symmetric). Hiện nay, thuật toán thường thấy trong phương pháp mã hóa này đó là AES. Thuật tốn dùng nhiều ơ có kích thước lớn khác nhau để mã hóa dữ liệu nên hacker khó lịng giải mã hơn.

<b>Mã hóa bất đối xứng </b>

Mã hóa bất đối xứng là phương pháp mã hóa thơng tin bằng 2 loại khóa khác nhau: public key (khóa mã hóa) và private key (khóa giải mã). Chúng thường được áp dụng để mã hóa trong khóa cơng khai và khóa bí mật, với thuật tốn áp

<b>dụng phổ biến là RSA. Tuy nhiên, do loại mã hóa này tốn khá nhiều thời gian thực </b>

hiện, dẫn tới chi phí cao nên ít ai sử dụng nó để mã hóa cả một file.

<i>Hình 1.3 Sơ đồ mã hóa bất đối xứng </i>

<b>Mã hóa 1 chiều </b>

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

Mã hóa 1 chiều hay cịn gọi là mã hóa Hash, một phương pháp mã hóa được sử dụng khi chỉ cần mã hóa dữ liệu mà khơng cần phải giải mã. Ví dụ như, khi người dùng đăng nhập, phương pháp này sẽ xử lý mật khẩu thành chuỗi ký tự. Sau đó, nó sẽ so sánh chuỗi ký tự đó với thơng tin lưu trong cơ sở dữ liệu để xác định mật khẩu đó có đúng hay khơng.

<i>Hình 1.4 Sơ đồ mã hóa một chiều </i>

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

<b>CHƯƠNG 2: MÃ HĨA RSA </b>

<b>1. Giới thiệu về mã hóa khóa bất đối xứng RSA </b>

<b>RSA là một thuật toán hay cịn gọi là hệ mã hóa đối xứng được sử dụng cho các mục </b>

<b>đích bảo mật. Nó cho phép </b>mã hóa khóa cơng khai và được sử dụng phổ biến, rộng rãi để đảm bảo an toàn cho các dữ liệu nhạy cảm đặc biệt là những dữ liệu gửi qua mạng Internet.

<b>Năm 1997 RSA lần đầu tiên được ra mắt bởi Ron Rivest, Adi Shamir và Leonard </b>

<b>Adleman. Cái tên RSA là bắt nguồn từ ba chữ cái đầu trong tên của ba nhà khoa </b>

học.

<i>Hình 2.1 Sơ đồ mã hóa khóa bất đối xứng RSA </i>

<b>Độ an toàn của RSA dựa trên tính khó của việc phân tích số ngun rất lớn (số có </b>

hàng trăm chữ số thập phân.

<b>RSA sử dụng một cặp khóa: </b>

 Khóa cơng khai (Public key) dùng để mã hóa;

 Khóa riêng (Private key) dùng để giải mã.

 Chỉ khóa riêng cần giữ bí mật. Khóa cơng khai có thể cơng bố rộng rãi.

<b>Kích thước khóa của RSA: </b>

 Khóa < 1024 bít khơng an tồn hiện nay.

 Khuyến nghị dùng khóa >= 2048 bít với các ứng dụng mật mã dân sự hiện nay.

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

 Tương lai nên dùng khóa >=3072 bít.

Hệ mã RSA được xây dựng trên cơ sở mã hóa khối trong đó khóa mã hóa là cặp (e,n) gồm số mũ e và module n. Với n là tích số của 2 số nguyên tố rất lớn nào đó, n = p*q cịn (e, φ(n)) = 1, với φ(n) là giá trị hàm Euler của n, trong trường hợp này φ(n) = (p - 1)*(q-1).

Một số ứng dụng phổ biến:

 Bảo mật thông tin: RSA được sử dụng để mã hóa và giải mã thơng tin nhạy cảm, như thông tin ngân hàng, thông tin cá nhân, hoặc thông tin liên quan đến bảo mật quốc gia.

 Chữ ký số: RSA được sử dụng để tạo và xác minh chữ kí số, đảm bảo tính xác thực và toàn vẹn của tài liệu kỹ thuật, hợp đồng và các giao dịch điện tử.

- RSA sử dụng cho mã hóa thơng điệp:

+ Người nhận phải sở hữu cặp khóa cơng khai (Public key) và khóa riêng (Private key). Người nhận chuyển khóa cơng khai của mình cho người gửi;

+ Người gửi mã hóa thơng điệp sử dụng khóa cơng khai của người nhận và chuyển bản mã cho người nhận;

+ Người nhận giải mã thơng điệp sử dụng khóa riêng của mình để khơi phục bản rõ của thông điệp.

- RSA sử dụng cho tạo chữ ký số thông điệp:

+ Người gửi phải sở hữu cặp khóa cơng khai (Public key) và khóa riêng (Private key). Người gửi chuyển khóa cơng khai của mình cho người nhận;

+ Người gửi sử dụng khóa riêng để tạo chữ ký số cho thông điệp (bản chất là sử dụng khóa riêng để mã hóa chuỗi đại diện cho thơng điệp);

+ Người nhận sử dụng khóa công khai của người gửi để kiểm tra chữ ký số của thông điệp (bản chất là sử dụng khóa cơng khai để giải mã khơi phục chuỗi đại diện cho thông điệp)

 Giao tiếp an toàn qua mạng: RSA được sử dụng trong các giao thức bảo mật như SSL/TLS để bảo vệ dữ liệu trong quá trình truyền tải qua mạng.

 Xác thực người dùng: RSA được sử dụng trong các hệ thống xác thực người dùng và quản lý quyền truy cập, đảm bảo rằng chỉ những người được ủy quyền mới có thể truy cập vào thông tin nhạy cảm hoặc các tài khoản quan trọng.

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

<b>2. Các giải thuật sinh khóa, mã hóa, giải mã Giải thuật sinh khóa </b>

1. Chọn 2 số nguyên tố lớn p và q với p khác q,lựa chọn ngẫu nhiên và độc lập. 2. Tính n = p x q

3. Tính (n) = (p-1) x (q-1)

4. Chọn số e sao cho 0 < e < (n) và gcd(e, (n)) = 1

5. Chọn số d sao cho d  e -1 mod (n), hoặc (d x e) mod (n) = 1 (d là molulo nghịch đảo của e)

<b>Khóa cơng khai: (n,e) </b>

Chọn số e sao cho 0 < e < 20, và e và (n) là số nguyên tố cùng nhau ((n) không chia hết cho e). Chọn e = 7

Tính (d x e) mod (n) → (d x 7) mod 20 = 1 d = (20*k +1)/7 → d = 3 (k=1) Khóa cơng khai (33, 7)

Khóa bí mật (33, 3)

<b>Thuật tốn mã hóa </b>

Để mã hóa một thơng điệp (plaintext), chia nó thành các khối nhỏ hơn. Mỗi khối được biểu diễn bằng một số nguyên m (nhỏ hơn n).

Áp dụng cơng thức mã hóa:

Kết quả là ciphertext (văn bản mã hóa).

<b>Thuật tốn giải mã </b>

Khi nhận được ciphertext, để giải mã chúng ta sử dụng khóa bí mật (n, d). Áp dụng công thức giải mã:

Kết quả là plaintext (văn bản gốc).

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

<i>Hình 2.2 Sơ đồ biểu diễn giải thuật RSA </i>

Ví dụ:

 Chọn 2 số nguyên tố p=3 và q=11.

 Tính n = p x q = 3 x 11 = 33

 Tính (n) = (p-1) x (q-1) = 2 x 10 = 20

 Chọn số e sao cho 0 < e < 20, và e và (n) là số nguyên tố cùng nhau ((n) không chia hết cho e). Chọn e = 7 Một số yêu cầu với q trình sinh khóa

- u cầu với các tham số sinh khóa p và q:

+ Các số nguyên tố p và q phải được chọn sao cho việc phân tích n (n = p × q) là khơng khả thi về mặt tính tốn. p và q nên có cùng độ lớn (tính bằng bit) và phải là các số đủ lớn. Nếu n có kích thước 2048 bit thì p và q nên có kích thước khoảng 1024 bit.

+ Hiệu số p – q không nên quá nhỏ, do nếu p – q quá nhỏ, tức p  q và p  √𝑛. Như vậy, có thể chọn các số nguyên tố ở gần √𝑛 và thử. Khi có được p, có thể tính q và

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

tìm ra d là khóa bí mật từ khóa cơng khai e và (n) = (p - 1)(q - 1). Nếu p và q được chọn ngẫu nhiên và p – q đủ lớn, khả năng hai số này bị phân tích từ n giảm đi - Vấn đề sử dụng số mũ mã hóa (e) nhỏ:

Khi sử dụng số mũ mã hóa (e) nhỏ, chẳng hạn e = 3 có thể tăng tốc độ mã hóa. Kẻ tấn cơng có thể nghe lén và lấy được bản mã, từ đó phân tích bản mã để khôi phục bản rõ. Do số mũ mã hóa nhỏ nên chi phí cho phân tích, hoặc vét cạn không quá lớn. Do vậy, nên sử dụng số mũ mã hóa e đủ lớn và thêm chuỗi ngẫu nhiên vào khối rõ trước khi mã hóa để giảm khả năng bị vét cạn hoặc phân tích bản mã.

- Vấn đề sử dụng số mũ giải mã (d) nhỏ: Khi sử dụng số mũ giải mã (d) nhỏ, có thể tăng tốc độ giải mã. Nếu d nhỏ và gcd(p-1, q-1) cũng nhỏ thì d có thể tính được tương đối dễ dàng từ khóa cơng khai (n, e). Do vậy, để đảm bảo an toàn, nên sử dụng số mũ giải mã d đủ lớn.

<b>3. Các điểm yếu, các dạng tấn cơng RSA và cách phịng chống </b>

Mã hóa RSA là mã hóa bất đối xứng nên tốc độ mã hóa sẽ chậm hơn nhiều so với các loại mã hóa đối xứng hiện nay.Q trình mã hóa và giải mã RSA rất tốn kém về mặt tính tốn, đặc biệt là khi sử dụng khóa có độ dài lớn. Điều này có thể gây khó khăn đối với các thiết bị có tài nguyên hạn chế hoặc trong các ứng dụng đòi hỏi thời gian xửa lí nhanh. Để đảm bảo tính bảo mật, các khóa RSA thường có kích thước lớn từ 2048 bit trở lên. Điều này gây tác động đáng kể đến hiệu xuất và tốc độ của q trình mã hóa và giải mã.

Các nhược điểm mã hóa RSA cần được chú ý:

-Sử dụng khóa nhỏ có thể khiến thuật tốn dễ bị tấn cơng.

-Cơng nghệ tính tốn mạnh mẽ có thể làm cho việc phá vỡ RSA trở nên dễ dàng hơn.

-Việc cơng bố khóa khơng an tồn có thể dễ dàng dẫn đến việc tấn cơng.

-Kẻ tấn cơng có thể tìm kiếm mối quan hệ giữa các khóa cơng khai để phá vỡ hệ thống RSA.

-Tấn công bằng cách thu thập dữ liệu cũng là một nguy cơ.

<b>Các kiểu tấn cơng RSA: </b>

 <b>Tìm cách xác định khóa bí mật 1.Bị lộ một trong các giá trị: p, q, (n) </b>

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

Giả sử trong quá trình lập khóa mà người sử dụng để lộ nhân tử p, q hoặc (n) ra ngồi thì kẻ tấn cơng sẽ dễ dàng tính được khóa bí mật a theo công thức:

a*b 1 (mod (n))

Biết được khóa bí mật, kẻ tấn cơng sẽ có thể giả mạo người dùng.

<b>- Phương pháp phịng chống: </b>

Q trình tạo lập khóa phải được tiến hành ở một nơi kín đáo, bí mật. Sau khi thực hiện xong thì phải giữ cẩn thận khóa bí mật a, đồng thời hủy hết các giá trị trung gian: p, q, (n)

<b>2.Sử dụng các tham số (p-1) hoặc (q-1) có các ước nguyên tố nhỏ </b>

Nếu ta bất cẩn trong việc chọn các tham số p và q để cho (p-1) hoặc (q-1) có các ước nguyên tố nhỏ sẽ khơng an tồn. Bởi vì, khi (p-1) hoặc (q-1) có các ước ngun tố nhỏ thì ta có thể dùng thuật tốn (p-1) của Pollar để phân tích giá trị modulo n thành thừa số một cách dễ dàng.

<b>- Phương pháp phòng chống: </b>

Chọn các tham số p và q sao cho (p-1) và (q-1) phải có các ước nguyên tố lớn.

<b> 3.Tấn cơng dựa theo khóa cơng khai n </b>

Lúc này, kẻ tấn cơng sẽ tìm cách phân tích giá trị n ra hai thừa số nguyên tố p và q. Từ đó, sẽ tính được (n)=(p-1).(q-1); cuối cùng tính được khóa bí mật a.

<b>- Phương pháp phòng chống: </b>

Nên chọn số nguyên tố p và q đủ lớn để việc phân tích n thành tích của hai thừa số ngun tố là khó có thể thực hiện được trong thời gian thực. Trong thực tế, người ta thường sinh ra các số lớn (ít nhất 100 chữ số), sau đó kiểm tra tính ngun tố của nó.

 Phân phối khố

Cũng giống như các thuật tốn mã hóa khác, cách thức phân phối khóa cơng khai là một trong những yếu tố quyết định đối với độ an tồn của RSA. Q trình phân phối

<i>khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack). Giả sử Hắc </i>

có thể gửi cho Bình một khóa bất kỳ và khiến Bình tin rằng đó là khóa (cơng khai) của An. Đồng thời Hắc có khả năng đọc được thơng tin trao đổi giữa Bình và An. Khi đó, Hắc sẽ gửi cho Bình khóa cơng khai của chính mình (mà Bình nghĩ rằng đó

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

là khóa của An). Sau đó, Hắc đọc tất cả văn bản mã hóa do Bình gửi, giải mã với khóa bí mật của mình, giữ một bản copy đồng thời mã hóa bằng khóa cơng khai của An và gửi cho An. Về nguyên tắc, cả Bình và An đều không phát hiện ra sự can thiệp của người thứ ba. Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa cơng khai (digital certificate) hoặc các thành phần của hạ tầng khóa cơng khai (public key infrastructure - PKI).

<b>-Phương pháp phịng chống: </b>

Sử dụng chứng thực khóa cơng khai (digital certificate): Một cách phổ biến để chống lại tấn công man-in-the-middle là sử dụng chứng thực khóa cơng khai. Digital certificate là một tập hợp các thơng tin xác nhận danh tính của một bên trong quá trình trao đổi dữ liệu. Khi A gửi khóa cơng khai cho B, A cũng gửi kèm theo digital certificate của mình, được ký bởi một bên thứ ba đáng tin cậy (Certificate Authority - CA). B nhận được khóa cơng khai và digital certificate, sau đó xác minh chữ ký số trên certificate để đảm bảo rằng nó được ký bởi CA. Nếu xác thực thành cơng, B có thể tin tưởng rằng khóa cơng khai mà B nhận được là của A, không phải là của kẻ tấn công.

Xác thực trước khi trao đổi khóa: Trong q trình trao đổi khóa cơng khai, A và B cần xác minh danh tính của nhau trước khi trao đổi khóa. Điều này có thể thực hiện thơng qua các kênh an toàn như gặp trực tiếp, gọi điện thoại xác nhận hoặc sử dụng các dịch vụ xác minh danh tính trực tuyến.

Thực hiện kiểm tra dấu vân tay khóa cơng khai: Một phương pháp bảo mật bổ sung là kiểm tra dấu vân tay của khóa cơng khai trước khi sử dụng. Mỗi khóa cơng khai sẽ có một dấu vân tay duy nhất, và việc kiểm tra dấu vân tay giúp xác nhận rằng khóa cơng khai đã nhận được là đúng.

</div>

×