1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo Lý Thuyết Mật Mã Đề Tài Hệ Mật Bất Đối Xứng Rsa.pdf

29 5 0

Đ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 đề Hệ Mật Bất Đối Xứng RSA
Tác giả Pham Chính Hiệp, Nguyễn Mạnh Tùng, Nguyễn Danh Đức, Tô Quang Sáng
Người hướng dẫn PGS.TS Hà Duyên Trung
Trường học Trường Điện – Điện Tử, Đại Học Bách Khoa Hà Nội
Chuyên ngành Hệ Mật Bất Đối Xứng RSA
Thể loại Báo cáo lý thuyết
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 29
Dung lượng 1,3 MB

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

Nội dung

Trong toán học, giải thuật Euclid hay thuật toán Euclid là một giải thuật để tính ước chung lớn nhất ƯCLN của hai số nguyên, là số lớn nhất có thể chia được bởi hai số nguyên đó với số d

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG ĐIỆN – ĐIỆN TỬ

BÁO CÁO

LÝ THUYẾT MẬT MÃ

Đề tài:

HỆ MẬT BẤT ĐỐI XỨNG RSA

Giảng viên hướng dẫn: PGS.TS Hà Duyên Trung

Sinh viên thực hiện:

Trang 2

1

MỤC LỤC

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 6

1 Giới thiệu về hệ mật bất đối xứng 6

1.1 Sơ lược về mã hoá đối xứng và bất đối xứng 6

1.2 Tại sao cần mã hoá bất đối xứng? 6

2 Cơ sở toán học 7

2.1 Số nguyên tố 7

2.2 Thuật toán tìm ước chung lớn nhất 7

2.3 Thuật toán Modulo 9

2.4 Thuật toán tìm nghịch đảo nhân 10

CHƯƠNG 2 HỆ MẬT RSA 12

1 Giới thiệu về hệ mật mã RSA 12

1.1 Giới thiệu chung 12

1.2 Mô tả sơ lược 13

2 Quy trình tạo khóa 14

2.1 Thuật toán 14

2.2 Một số phương pháp tìm số nguyên tố p, q 15

2.3 Mã hóa và giải mã 16

3 Tính bảo mật 18

4 Một số cách tấn công 19

4.1 Tấn công dựa trên thời gian 19

4.2 Tấn công lựa chọn thích nghi bản mã 20

5 Chữ ký số 20

5.1 Khái niệm về chữ ký số 20

5.2 Quy trình tạo và xác minh chữ ký số 21

Trang 3

2

CHƯƠNG 3 MÔ PHỎNG HỆ MẬT RSA 24

1 Mô phỏng hệ mật RSA 24

2 Kết luận 27

TÀI LIỆU THAM KHẢO 28

Trang 4

3

LỜI NÓI ĐẦU

Bảo mật là một ngành công nghiệp toàn cầu lớn và nó vô cùng đa dạng Cho dù

đó là việc bảo vệ các thông tin cá nhân hay bảo vệ các cơ sở hạ tầng tiện ích, thì

“cảnh giới đe dọa” ngày càng phức tạp và đòi hỏi sự hội tụ của an ninh mạng và các hình thức vật lý, truyền thống hơn để ngăn chặn hành vi trộm cắp và các hình thức hoạt động tội phạm khác

Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin, mạng máy tính

đã trở thành phương tiện hữu dụng phục vụ công tác điều hành, trao đổi thông tin trong mọi lĩnh vực của xã hội Song song với việc ứng dụng công nghệthông tin trong cuộc sống, đặc biệt là việc sửdụng mạng internet như một môi trường giao tiếp thì vấn đề an toàn thông tin dữliệu trong quá trình gửi và nhận thông qua mạng có một vai trò hết sức quan trọng Vì vậy, đề tài “Hệ mật bất đối xứng RSA”, đã nghiên cứu phương pháp mã hóa/giải mã hóa với hệ mật RSA – một hệ mật mã được ứng dụng rộng rãi trong nhiều lĩnh vực bảo mật hiện nay Song đề tài cũng nêu ra một số phương pháp tấn công hệ mật RSA và đưa ra phương án bảo mật, chống tấn công bởi “tin tặc” đảm bảo an toàn, tin cậy cho người dùng,…

Do kiến thức và khả năng còn hạn chế, nên chúng em rất mong thầy đọc và đưa

ra nhận xét để chúng em những thiếu sót, sai sót còn tồn tại

Chúng em xin trân thành cảm ơn!

Trang 5

4

DANH MỤC HÌNH ẢNH

Hình 0.1 Mô hình hệ mã hóa bất đối xứng 7

Hình 0.2 Thuật toán tìm ước chung lớn nhất 8

Hình 0.3 Toán tử modulo 9

Hình 0.4 Tâp dư 9

Hình 0.5 Khái niệm về đồng dư 10

Hình 0.6 Thuậ toán tìm nghịch đảo nhân 11

Hình 0.1 Hệ mật RSA 12

Hình 0.2 Clifford Cocks – người phát minh thuật toán RSA 13

Hình 0.3 Mô tả mã hóa RSA 13

Hình 0.4 Thuật toán tạo khóa 14

Hình 0.5 Mã hóa và giải mã 17

Hình 0.6 Bảo mật hệ thống RSA 18

Hình 0.7 Chữ ký số 20

Hình 0.8 Những xử lý trong mô hình chữ ký số 21

Hình 0.9 Tạo chữ ký số RSA 22

Hình 0.10 Thẩm định chữ ký số RSA 23

Hình 0.1 Giao diện mô phỏng hệ mật RSA 24

Hình 0.2 Chươn trình mã hóa và giải mã 25

Hình 0.3 Chương trình mô phỏng mã hóa và giải mã sau khi thay đổi bản rõ 26

Trang 6

5

DANH MỤC BẢNG BIỂU

Bảng 0.1 Ví dụ tìm ước chung lớn nhất 8 Bảng 0.2 Ví dụ tìm nghịch đảo nhân 11

Trang 7

6

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1 Giới thiệu về hệ mật bất đối xứng

1.1 Sơ lược về mã hoá đối xứng và bất đối xứng

Khi tìm hiểu về an toàn thông tin ta biết đến hai loại mã hoá phổ biến là mã hoá đối xứng (symmetric cryptography) và mã hoá bất đối xứng (asymmetric cryptography) Về cơ bản thì:

❖ Mã hoá đối xứng (hay còn gọi là mã hoá bí mật): Nói đơn giản là người ta dùng cùng một chìa khoá để khoá và mở thông tin cần được giữ bí mật Và cả hai bên gửi và nhận thông tin đều phải có chìa khoá này

❖ Mã hoá bất đối xứng (hay còn gọi là mã hoá công khai): Có thể hiểu

là người ta dùng hai chìa khoá khác nhau để khoá và mở khoá thông tin bí mật public key sẽ được công khai, và được gửi đi đến đối tượng cần mã hoá thông tin, còn private key được giữ bí mật, và nó đóng vai trò như chìa khoá vạn năng có thể mở được tất cả thông tin được khoá bằng public key

1.2 Tại sao cần mã hoá bất đối xứng?

Nói ngắn gọn thì hầu như các ứng dụng bạn dùng hàng ngày hiện nay như Facebook, Gmail, Amazon, PayPal v.v đều sử dụng giao thức HTTPs Có thể hiểu là giao thức HTTPs an toàn hơn HTTP vì toàn bộ thông tin truyền đi giữa client và server được bảo vệ bởi bộ mã hoá SSL/TSL SSL/TSL này hoạt động dựa trên cả hai loại mã hoá đối xứng và bất đối xứng Nhờ nó mà chúng

ta có thể đảm bảo bí mật khi thực hiện những giao dịch có chứa thông tin nhạy cảm trên Internet mà không bị đánh cắp thông tin trong suốt quá trình truyền nhận dữ liệu Có thể nói, nếu không có mật mã, đặc biệt là mã hoá bất đối xứng thì không có thương mại điện tử

Về cơ bản, HTTP truyền dữ liệu dưới dạng plain text, nghĩa là nếu ai đó nghe lén dữ liệu bạn truyền và nhận với server thì có thể đọc và can thiệp được nội dung (man-in-the-middle attack) Ngay cả khi dùng mã hoá đối xứng để encrypt và decrypt thông tin truyền và nhận thì cũng có lỗ hổng là hai bên

Trang 8

7

phải trao đổi key mới mã hoá và giải mã được, như vậy attacker vẫn có thể tóm được key và đọc được thông tin như thường

Hình 0.1 Mô hình hệ mã hóa bất đối xứng

Điểm yếu của mã hoá đối xứng được khắc chế trong mã hoá bất đối xứng Ý tưởng là thay vì gửi chìa khoá cho phía client, thì server sẽ gửi ổ khoá, để client khoá thông điệp bí mật trong một chiếc hộp, và chỉ có server có thể giải mã được Cho nên các client sẽ không đọc được thông điệp của nhau, và chỉ có sever với private key mới mở khoá được những chiếc hộp này (Trên thực tế thì public key vừa dùng để mã hoá vừa dùng để giải mã thông tin nhận

và gửi lên server!)

2 Cơ sở toán học

2.1 Số nguyên tố

❖ Một số nguyên dương được gọi là số nguyên tố khi nó chỉ có hai ước là

1 và chính nó Chẳng hạn: 2, 3, 5, 7, 11,…, 997,…

❖ Số nguyên tố cùng nhau là hai số có cùng chung ước duy nhất là 1

2.2 Thuật toán tìm ước chung lớn nhất

Ước chung lớn nhất (Greatest Common Divisor - GCD) là một giá trị số tự nhiên được sử dụng để định nghĩa là ước chung lớn nhất của hai hoặc nhiều

số tự nhiên Ước lớn nhất của hai số tự nhiên là số lớn nhất mà cả hai số chia hết Trong toán học, giải thuật Euclid (hay thuật toán Euclid) là một giải thuật

để tính ước chung lớn nhất (ƯCLN) của hai số nguyên, là số lớn nhất có thể chia được bởi hai số nguyên đó với số dư bằng không

Trang 9

Hình 0.2 Thuật toán tìm ước chung lớn nhất

❖ Ví dụ: Tìm ước chung lớn nhất của 2740 và1760

Trang 10

9

❖ Như vậy: gcd(2740, 1760) = 20

2.3 Thuật toán Modulo

Phép toán modulo là phép toán tìm số dư của phép chia 2 số Cho hai số

dương, a - số bị chia và n - số chia

Phép a modulo n (viết tắt là a mod n) là số dư của phép chia có dư Euclid

của a cho n

❖ Toán tử Modulo

Toán tử modulo được hiển thị dưới dạng mod Đầu vào thứ hai (n) được gọi

là môđun Đầu ra r được gọi là số dư

Trang 11

10

Hình 0.5 Khái niệm về đồng dư

2.4 Thuật toán tìm nghịch đảo nhân

Khi chúng ta làm việc trong số học mô-đun, chúng ta thường cần tìm nghịch đảo của một số liên quan đến một phép toán Thông thường chúng ta đang tìm kiếm một phép cộng nghịch đảo (liên quan đến phép toán cộng) hoặc phép nhân nghịch đảo (liên quan đến phép nhân)

Thuật toán tìm nghịch đảo nhân (Modular Multiplicative Inverse) là một thuật toán toán học có thể được sử dụng để tính nghịch đảo nhân của số được chỉ định bằng một số nguyên dương m Nghịch đảo nhân của một số là số nguyên dương b thỏa mãn công thức sau:

𝑎 × 𝑏 ≡ 1 (𝑚𝑜𝑑 𝑛) (1) Thuật toán Euclide mở rộng tìm các nghịch đảo nhân của b trong Zn khi n và b cho trước và gcd(n, b) = 1 Nghịch đảo nhân của b là giá trị của t sau khi được ánh xạ vào Zn

Trang 12

11

Hình 0.6 Thuậ toán tìm nghịch đảo nhân

❖ Ví dụ: Tìm nghịch đảo nhân của 8 trong Z10

➢ Không có phép nhân nghịch đảo vì gcd(10, 8) = 2 ≠ 1

❖ Ví dụ: Tìm nghịch đảo nhân của 23 trong Z100

Trang 13

12

CHƯƠNG 2 HỆ MẬT RSA

1 Giới thiệu về hệ mật mã RSA

1.1 Giới thiệu chung

Trong mật mã học, RSA là một thuật toán mật mã hóa công khai Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc

sử dụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn

Hình 0.1 Hệ mật RSA

Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên

vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu tiên của tên 3 tác giả

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm

đó thì thuật toá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 1977 vì được xếp vào loại tuyệt mật Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không

có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký

Trang 14

13

Hình 0.2 Clifford Cocks – người phát minh thuật toán RSA

1.2 Mô tả sơ lược

Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa

bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được

Hình 0.3 Mô tả mã hóa RSA

Trang 15

❖ Bước 1: Chọn 2 số nguyên tố lớn p và q với 𝑝 ≠ 𝑞, được lựa chọn ngẫu nhiên và độc lập

❖ Bước 2: Tính: 𝑛 = 𝑝𝑞

❖ Bước 3: Tính giá trị hàm số Euler 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1)

❖ Bước 4: Chọn một số tự nhiên 𝑒 sao cho 1 < 𝑒 < 𝜙(𝑛) và là số

nguyên tố cùng nhau với 𝜙(𝑛)

❖ Bước 5: Tính: 𝑑 sao cho 𝑑𝑒 ≡ 1 (𝑚𝑜𝑑 𝜙(𝑛))

Hình 0.4 Thuật toán tạo khóa

Một số lưu ý:

❖ Các số nguyên tố thường được chọn bằng phương pháp thử xác suất

❖ Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng

❖ Bước 5 có thể viết cách khác: Tìm số tự nhiên 𝑥 sao cho:

Trang 16

15

2.2 Một số phương pháp tìm số nguyên tố p, q

Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác suất các số ngẫu nhiên có độ lớn phủ hợp Phép kiểm tra số nguyên tố được thực hiện như sau:

❖ Phương pháp thô sơ:

Phương pháp đơn giản nhất để kiểm tra một số 𝑛 có là số nguyên tố không là kiểm tra xem nó có chia hết cho các số 𝑚 từ 2 đến 𝑛 − 1 hay không Nếu 𝑛 chia hết cho một số 𝑚 nào đó thì 𝑛 là hợp số, ngược lại 𝑛 là số nguyên tố

❖ Kiểm tra theo xác suất:

Các phép kiểm tra tính nguyên tố hay dùng nhất là các thuật toán ngẫu nhiên Giả

sử có một mệnh đề Q(p, a) nào đó đúng với mọi số nguyên tố 𝑝 và một số tự nhiên 𝑎 ≤ 𝑝 Nếu 𝑛 là một số tự nhiên lẻ và mệnh đề Q(n,a) đúng với một 𝑎 ≤ 𝑛 được lấy ngẫu nhiên, khi đó có khả năng là một số nguyên tố Ta đưa ra một thuật toán, kết luận rằng 𝑛 là số nguyên tố Nó là một thuật toán ngẫu nhiên hay thuật toán xác suất Trong các thuật toán loại này, dùng một kiểm tra ngẫu nhiên không bao giờ kết luận một số nguyên tố là hợp số nhưng có thể kết luận một hợp

số là số nguyên tố Xác suất sai của phép kiểm tra có thể giảm xuống nhờ việc chọn một dãy độc lập các số 𝑎; nếu với mỗi số 𝑎 xác suất để thuật toán kết luận một hợp số là số nguyên tố là nhỏ hơn một nửa thì sau k lần thử độc lập, xác suất sai là nhỏ hơn 2−𝑘, độ tin cậy của thuật toán sẽ tăng lên theo 𝑘

o Cấu trúc cơ bản của một phép kiểm tra ngẫu nhiên là:

• Chọn một số ngẫu nhiên 𝑎

• Kiểm tra một hệ thức nào đó giữa số 𝑎 và số 𝑛 đã cho Nếu hệ thức sai thì chắc chắn 𝑛 là một hợp số (số 𝑎 là "bằng chứng" chứng tỏ 𝑛 là hợp số) và dừng thuật toán

• Lặp lại bước 1 cho đến khi đạt được số lần đã định hoặc gặp bước 2

o Sau một loạt lần kiểm tra, nếu không tìm được bằng chứng chứng tỏ 𝑛 là hợp số thì ta kết luận 𝑛 là số nguyên tố

❖ Phép kiểm tra tất định:

Vào năm 2002, Manindra Agrawal, Nitin Saxena và Neeraj Kayal đề xuất một giải thuật tất định kiểm tra tính nguyên tố, là kiểm tra AKS, có khả năng chạy trong 𝑂((log 𝑛)12) Trên thực tế thuật toán này chạy chậm hơn các phương pháp xác suất

Trang 17

và 𝑞 còn cần được chọn không quá gần nhau để phòng trường hợp phân tích 𝑛 bằng phương pháp phân tích Fermat Ngoài ra, nếu 𝑝 − 1 ℎ𝑜ặ𝑐 𝑞 − 1 có thừa số nguyên tố nhỏ thì 𝑛 cũng có thể dễ dàng bị phân tích và vì thế 𝑝 𝑣à 𝑞 cũng cần được thử để tránh khả năng này

Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà kẻ tấn công có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các bộ tạo số ngẫu nhiên tốt) Yêu cầu ở đây là các số được lựa chọn cần đồng thời ngẫu nhiên và không dự đoán được Đây là các yêu cầu khác nhau: một số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng nếu có thể dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng không được đảm bảo Một ví dụ là bảng các số ngẫu nhiên do tập đoàn Rand xuất bản vào những năm

1950 có thể rất thực sự ngẫu nhiên nhưng kẻ tấn công cũng có bảng này Nếu kẻ tấn công đoán được một nửa chữ số của 𝑝 hay 𝑞 thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm 1997) Một điểm nữa cần nhấn mạnh là khóa bí mật 𝑑 phải đủ lớn Năm 1990, Wiener chỉ ra rằng nếu giá trị của 𝑝 nằm trong khoảng 𝑞 và 2𝑞 và 𝑑 < 𝑛1/4

3 thì có thể tìm ra được 𝑑

từ 𝑛 và 𝑒

2.3 Mã hóa và giải mã

2.3.1 Mã hóa

Giả sử B muốn gửi đoạn thông tin bản mã M cho A Đầu tiên B chuyển bản

mã M thành một số 𝑚 < 𝑛 theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước Lúc này B có 𝑚 và biết 𝑛 cũng như 𝑒 do A gửi, B sẽ tính 𝑐 là bản mã hóa của 𝑚 theo công thức:

𝑐 = 𝑚𝑒 𝑚𝑜𝑑 𝑛 (3) Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun) bằng thuật toán bình phương và nhân Cuối cùng B gửi 𝑐 cho A

Trang 19

18

3 Tính bảo mật

Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích

ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn

Hình 0.6 Bảo mật hệ thống RSA

Bài toán RSA là bài toán tính căn bậc 𝑒 môđun n (với n là hợp số): tìm số m sao cho 𝑚𝑒 = 𝑐 𝑚𝑜𝑑 𝑛, trong đó (𝑒, 𝑛) chính là khóa công khai và 𝑐 là bản mã Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích 𝑛 ra thừa số nguyên tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật 𝑑 từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được 2 số nguyên tố 𝑝 và 𝑞 sao cho: 𝑛 = 𝑝𝑞 thì có thể dễ dàng tìm được giá trị (𝑝 − 1)(𝑞 − 1) và qua đó xác định 𝑑 từ 𝑒 Chưa có một phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức (polynomial-time) Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán) Xem thêm phân tích ra thừa số nguyên

tố về vấn đề này

Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố

có độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ

1024 tới 2048 bít Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá

vỡ (cũng có nhiều người phản đối việc này) Với khóa 4096 bít thì hầu như không

có khả năng bị phá vỡ trong tương lai gần Do đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện 𝑛 được chọn đủ lớn Nếu 𝑛 có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có sẵn Nếu n có độ dài 512 bít, nó có thể bị phân tích bởi vài trăm

Ngày đăng: 03/03/2023, 10:48

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

w