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

Báo cáo Mã hóa và Ứng dụng Đề tài Tìm hiểu về giải thuật mã hóa RSA

14 0 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 đề Tìm hiểu về giải thuật mã hóa RSA
Tác giả Lê Anh Duy, Nguyễn Phú Thuận, Lưu Tấn Phúc, Võ Minh Phú
Người hướng dẫn Vũ Đức Thịnh
Trường học Trường Đại học Công thương TP. Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo
Năm xuất bản 2024
Thành phố Hồ Chí Minh
Định dạng
Số trang 14
Dung lượng 2,45 MB

Nội dung

Thuật toán RSA ra đời vào năm 1977 và nó đã trở thành một trong những phương pháp mã hóa phổ biến nhất được sử dụng rộng rãi trong bảo mật thông tin.. Nhờ sự kết hợp giữa lý thuyết toán

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

Báo cáo Mã hóa và Ứng dụng

Đề tài:

Tìm hiểu về giải thuật mã hóa RSA

GVHD: Vũ Đức Thịnh Nhóm 7:

Lê Anh Duy – 2033220707 Nguyễn Phú Thuận - 2033225037 Lưu Tấn Phúc– 2033223741

Võ Minh Phú - 2033223692

Trang 2

LỜI MỞ ĐẦU

1 Cơ sở toán học

1.1 Phép toán Modulo

1.2 Số nguyên tố lớn và tích của chúng

1.3 Tính phi hàm Carmichael λ(n)n)

1.4 Hàm mũ và nghịch đảo modulo

1.5 Khóa công khai và khóa bí mật

2 Phân tích bài toán

2.1 Mục đích của bài toán

2.2 Cách làm

3 Ngôn ngữ sử dụng

3.1 Tổng quan về ngôn ngữ lập trình C#:

3.2 Đặc điểm nổi bật của C#:

3.3 Ứng dụng thực tiễn:

Các thuật toán sử dụng trong thuật toán mã hóa RSA

Giao diện và kết quả chạy chương trình

Tài liệu tham khảo

2

Trang 3

Bảng phân công

thành

100%

Trang 4

LỜI MỞ ĐẦU

Trong thời đại số hóa và sự phát triển mạnh mẽ của internet, việc bảo mật thông tin đã trở thành một yêu cầu cấp bách đối với hệ thống và người dùng Dữ liệu cá nhân, giao dịch tài chính và nhiều thông tin khác cần được bảo vệ khỏi các mối đe dọa từ cuộc tấn công mạng

Thuật toán RSA ra đời vào năm 1977 và nó đã trở thành một trong những phương pháp mã hóa phổ biến nhất được sử dụng rộng rãi trong bảo mật thông tin Thuật toán này được phát minh bởi 3 nhà khoa học, Ron Rivest Adi Shamir và Len Adleman RSA mã hóa bằng cách sử dụng hai khóa riêng biệt: khóa công khai(n)public key) và khóa bí mật(n)private key) Nhờ tính chất dựa trên các phép toán số học và tính chất khó phân tích của việc tích số nguyên lớn, RSA giúp đảm bảo an toàn cho việc truyền thông tin trên các kênh không an toàn

Nhờ sự kết hợp giữa lý thuyết toán học và ứng dụng thực tiễn, thuật toán RSA đã trở thành nền tảng quan trọng trong nhiều giao thức an ninh hiện đại, bao gồm HTTPS, chữ ký số và hệ thống xác thực

1

Trang 5

1 Cơ sở toán học

Thuật toán RSA dựa trên các nguyên lý toán học liên quan đến số học mô-đun và lý thuyết số Dưới đây là những cơ sở toán học chính được sử dụng trong RSA:

1.1 Phép toán Modulo

Phép toán module là một phần cơ bản của RSA Nó liên quan đến việc tính toán phần dư khi chia hai số nguyên Trong RSA, các phép toán này giúp mã hóa và giải mã dựa trên các khóa công khai và khóa bí mật

Với a mod  n, ta sẽ lấy phần dư khi chia a cho n

1.2 Số nguyên tố lớn và tích của chúng

Thuật toán RSA sử dụng hai số nguyên tố p và q, để tạo ra một số n:

n=p × q

1.3 Hàm Euler và phi Euler ϕ(n)n)

Hàm Eulerϕ(n)n) (n)hay còn gọi là hàm phi Euler) là một khái niệm trong

lý thuyết số được sử dụng trong RSA để sinh khóa riêng Hàm này được định nghĩa là số các số nguyên dương nhỏ hơn nnn mà nguyên tố cùng nhau với nnn

Trong trường hợp n = p×q với p và q là các số nguyên tố, hàm phi Euler được tính là:

ϕ(n)=(p−1)×(q−1)n)=(p−1)×(q−1))=(n)=(p−1)×(q−1)p−1)×(q−1))×(n)=(p−1)×(q−1)q−1)×(q−1)) Hàm Euler có tính chất quan trọng đối với RSA, vì nó được dùng để tính khóa riêng tư ddd từ khóa công khai e

Trang 6

1.4 Hàm mũ và nghịch đảo modulo

Một phần quan trọng trong việc sinh khóa riêng tư ddd là tìm số nghịch đảo

của e theo modulo ϕ(n)n) Nghịch đảo của e theo modulo ϕ(n)n) là một số d sao

cho:

d×e≡ 1 mod  ϕ(n)dn)d)dd

Điều này có nghĩa là d×e chia cho ϕ(n)n) sẽ dư 1 Để tính d, người ta sử dụng

thuật toán Euclid mở rộng (n)Extended Euclidean Algorithm), giúp tìm ra số

nghịch đảo modulo của e một cách hiệu quả

1.5 Khóa công khai và khóa bí mật

Thuật toán RSA sử dụng hàm mũ và nghịch đảo modulo để mã hóa và giải mã

dữ liệu:

Mã hóa: Để mã hóa một thông điệp M, người dùng tính C, là thông điệp đã mã

hóa:

Với e là khóa công khai

Giải mã : Để giải mã thông điệp C, người dùng tính lại M, là thông điệp ban

đầu :

Với d là khóa bí mật

1.6 Khóa công khai và khóa bí mật

3

Trang 7

2 Phân tích bài toán

2.1 Mục đích của bài toán

Mục đích của thuật toán RSA là để đảm bảo an toàn và bảo mật thông tin trong quá trình truyền tải dữ liệu Cụ thể, các mục đích chính bao gồm:

- Bảo mật thông tin: Đảm bảo rằng chỉ người nhận dự định mới có thể đọc được thông tin đã mã hóa

- Xác thực: Xác minh danh tính của người gửi thông qua chữ ký số, đảm bảo rằng thông tin đến từ nguồn đáng tin cậy

- Toàn vẹn dữ liệu: Đảm bảo rằng thông tin không bị thay đổi trong quá trình truyền tải

- Chống chối bỏ: Người gửi không thể phủ nhận việc đã gửi thông tin, nhờ vào chữ ký số

2.2 Cách làm

Hoạt động của RSA dựa trên các bước sau:

a) Quy trình sinh khóa

Quá trình sinh khóa gồm các bước sau:

1) Chọn hai số nguyên tố lớn p và q:

Đây là hai số bí mật mà chỉ người tạo khóa mới biết.

2) Tính toán n:

Ta sẽ tính n bằng cách nhân p và q lại với nhau:

n = p x q Giá trị n này sẽ được dùng trong cả quá trình mã hóa và giải mã

3) Tính hàm Euler:

Hàm Euler được tính dựa trên q và q:

ϕ (n)=( p−1) ×(q−1)

Trang 8

4) Chọn số tự nhiên e:

Chọn số tự nhiên e sao cho 1<ⅇ<ϕ( n) sao cho gcd(ⅇ , ϕ(n))= 1

5) Tính số d:

Tính số d sao cho d×e≡ 1 mod ϕ(n)n)

Lưu ý: Nếu ϕ (n) quá lớn thì sẽ sử dụng thuật toán Euclid mở rộng để tính toán

Về thuật toán Euclid thì chúng ta sẽ có công thức như sau:

6) Xuất cặp khóa:

Khóa công khai gồm: (n)e, n) Khóa này có thể chia sẻ công khai

Khóa riêng tư gồm: (n)d,n) Khóa này sẽ được giữ bí mật

b) Mã hóa và giải mã

1) Mã hóa:

Bước 1: Biến đổi thông điệp thành số nguyên

Khi có một thông điệp M (n)biểu diễn dưới dạng số nguyên), người gửi sẽ

mã hóa thông điệp bằng khóa công khai của người nhận

Bước 2: Tính toán mã hóa

Sử dụng khóa công khai (n)e, n) để mã hóa:

C=Mmod n

Trong đó:

C: là bản mã hóa của thông điệp

M: là thông điệp gốc

5

Trang 9

2) Giải mã :

Người nhận, với khóa bí mật, sẽ thực hiện giải mã để khôi phục thông điệp ban đầu

Sử dụng khóa bí mật để giải mã

Sử dụng khóa bí mật (n)d, n) để tính toán:

M=C d mod n

Trong đó:

M: thông điệp gốc

C: là bản mã hóa nhận được

Trang 10

Ví dụ :

Giả sử: cho p = 5, q = 7

- Tính n: n=p × q=5 ×7=35

- Tính ϕ (n)= (n)d5− 1)d × (n)d7 − 1)d = 24

- Chọn e = 5 (n)thỏa mãn GCD(n)5,24) =1)

- Tính d sao cho d ×5 ≡ 1 mod 24 thì ta sẽ có được d = 29

Ta sẽ có cặp khóa:

Khóa công khai :(n)e, n) = (n)5, 35)

Khóa riêng tư : (n)d, n) = (n)29, 35)

Giả sử ta có thông điệp M = 32

Mã hóa: C=Mmod 35 = 32^5 mod 35 = 2

Giải mã: M=C d mod 35 = 2^29 mod 35= 32

7

Trang 11

3 Ngôn ngữ sử dụng

3.1 Tổng quan về ngôn ngữ lập trình C#:

Ngôn ngữ lập trình C# (n)C-Sharp) được phát triển bởi Microsoft vào đầu những năm

2000 C# được thiết kế với mục tiêu tạo ra một ngôn ngữ đơn giản, mạnh mẽ và an toàn, hỗ trợ lập trình hướng đối tượng và nhiều mô hình lập trình khác nhau

3.2 Đặc điểm nổi bật của C#:

- Hướng đối tượng: C# hỗ trợ lập trình hướng đối tượng với các tính năng như kế thừa, đa hình và đóng gói

- Quản lý bộ nhớ: C# tự động quản lý bộ nhớ thông qua Garbage Collection, giảm thiểu lỗi liên quan đến bộ nhớ

- Cú pháp dễ hiểu: Cú pháp của C# đơn giản, dễ học và tương tự như C và C++, phù hợp cho cả người mới và lập trình viên có kinh nghiệm

- Tính tương thích: C# có thể chạy trên nhiều nền tảng nhờ vào NET Core và NET 5+

- Hệ sinh thái phong phú: C# hỗ trợ nhiều thư viện và framework, phục

vụ cho phát triển ứng dụng đa dạng từ desktop đến web và di động

3.3 Ứng dụng thực tiễn:

- Phát triển ứng dụng doanh nghiệp: Nhờ tính ổn định và khả năng mở rộng

- Phát triển game: Thông qua Unity, C# là ngôn ngữ chính cho nhiều trò chơi

- Phát triển web: Với ASP.NET, C# cho phép xây dựng các ứng dụng web mạnh mẽ và linh hoạt

Trang 12

Các thuật toán sử dụng trong thuật toán mã hóa RSA

Trong đoạn code này, có các thuật toán liên quan đến việc mã hóa và giải mã RSA Cụ thể gồm:

1) Thuật toán kiểm tra số nguyên tố:

Hàm IsPrime(n)BigInteger number) được sử dụng để kiểm tra xem một số lớn có phải là số nguyên tố hay không Nó dựa trên việc loại bỏ các số chẵn và lặp lại việc chia thử cho các số nhỏ hơn căn bậc hai của số đó

2) Thuật toán tính UCLN (n)Ước chung lớn nhất - Greatest Common Divisor):

Hàm GCD(n)BigInteger a, BigInteger b) là thuật toán Euclid để tìm UCLN của hai số Nó tiếp tục tính toán cho đến khi phần dư bằng 0

3) Thuật toán tìm số nguyên công khai e:

Hàm FindE(n)BigInteger phi) được sử dụng để tìm số e thỏa mãn 1 < e < φ(n)n) và GCD(n)e, φ(n)n)) = 1 e là một thành phần quan trọng trong khóa công khai của RSA

4) Thuật toán Euclid mở rộng (n)Extended Euclidean Algorithm):

Hàm ModInverse(n)BigInteger e, BigInteger phi) tính nghịch đảo modulo của e theo phi, đây là giá trị d trong khóa riêng của RSA Thuật toán này

là biến thể của Euclid để giải phương trình dạng ax + by = gcd(n)a, b)

5) Thuật toán mã hóa RSA:

Hàm Encrypt(n)BigInteger M, BigInteger e, BigInteger n) sử dụng phép lũy thừa theo modulo để mã hóa thông điệp M Cụ thể, nó thực hiện C = M^e mod n, trong đó M là thông điệp gốc, e là khóa công khai và n là tích của hai số nguyên tố p và q

6) Thuật toán giải mã RSA:

Hàm Decrypt(n)BigInteger C, BigInteger d, BigInteger n) sử dụng phép lũy thừa theo modulo để giải mã bản mã C Nó thực hiện M = C^d mod

n, trong đó C là bản mã, d là khóa riêng và n là tích của p và q

Như vậy, các thuật toán chính bao gồm:

- Kiểm tra số nguyên tố (n)Prime Checking)

- Tính UCLN (n)GCD)

- Tìm e thỏa mãn điều kiện

- Thuật toán Euclid mở rộng (n)Extended Euclidean)

9

Trang 13

- Mã hóa và giải mã RSA (n)RSA Encryption/Decryption)

Giao diện và kết quả chạy chương trình

Sau khi code thì sẽ có giao diện như sau:

Ở giao diện này ta sẽ có:

1 Message: Trường để nhập thông điệp cần mã hóa hoặc giải mã.

2 P và Q: Các trường nhập hai số nguyên tố (n)P và Q), cần thiết để tạo ra

khóa RSA

3 Action (n)Encrypt/Decrypt): Tùy chọn để chọn hành động mã hóa

(n)Encrypt) hoặc giải mã (n)Decrypt)

4 D: Trường nhập khoá riêng tư để giải mã

5 Result: Hiển thị kết quả sau khi mã hóa hoặc giải mã.

6 Encrypt Message: Nút bấm để thực hiện hành động mã hóa (n)hoặc có

thể là giải mã tùy thuộc vào tùy chọn)

Trang 14

Tài liệu tham khảo

(n)eca.com.vn)

[3] RSA là gì? Cách thức hoạt động, ứng dụng RSA - Tạo chữ ký số (n)vietnix.vn)

11

Ngày đăng: 21/10/2024, 06:06

TỪ KHÓA LIÊN QUAN

w