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

Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU THUẬT TOÁN RSA VÀ ỨNG DỤNG

36 671 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

Định dạng
Số trang 36
Dung lượng 834,02 KB

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

Nội dung

Vấn đề không an toàn chothông tin trên đường truyền khiến nhiều người đắn đo trong việc sử dụng mạngInternet cho những ứng dụng về tài chính, giao dịch ngân hàng, hoạt động mua bán vàkhi

Trang 1

Mục lục

MỞ ĐẦU

1 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN



ĐỒ ÁN MÔN HỌC TOÁN HỌC CHO KHOA HỌC MÁY TÍNH

Trang 2

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Hiện nay, tiềm năng của mạng Internet là rất lớn Như ta đã biết các giao tiếp, traođổi thông tin qua Internet đều sử dụng giao thức TCP/IP Các gói tin truyền từ điểmnguồn tới điểm đích sẽ đi qua rất nhiều máy tính trung gian, vì vậy độ an toàn thấp, nórất dễ bị xâm phạm, theo dõi và giả mạo trên đường truyền Vấn đề không an toàn chothông tin trên đường truyền khiến nhiều người đắn đo trong việc sử dụng mạngInternet cho những ứng dụng về tài chính, giao dịch ngân hàng, hoạt động mua bán vàkhi truyền các thông tin kinh tế, chính trị vv…

Những biện pháp đảm bảo an toàn thông tin đưa ra đều nhằm đáp ứng 3 yêu cầu:

bảo mật thông tin, xác thực thông tin và toàn vẹn thông tin trên đường truyền Các

hệ mã hóa thông tin bảo đảm tính bí mật nội dung thông tin, các sơ đồ chữ ký số bảođảm xác thực thông tin trên đường truyền

Trong mật mã học, RSA là một thuật toán mật mã hóa khó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ụngkhóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử và đượccho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn

MỤC LỤC

Trang 3

CHƯƠNG I CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN VÀ CÁC THUẬT TOÁN 5

1.1 Ước số - Bội số 5

1.2 Số nguyên tố 5

1.3 Các thuật toán trong Z 5

1.4 Thuật toán Euclide : Tính UCLN của 2 số nguyên 5

1.5 Thuật toán Euclide mở rộng 6

1.6 Định nghĩa hàm Φ Euler 6

1.7 Đồng dư thức 6

1.8 Số nghịch đảo 7

1.9 Nhóm nhân Z*n 7

1.10 Định nghĩa thặng dư bậc 2 7

1.11 Phần dư China CRT ( Chinese Remainder Theorem) 7

CHƯƠNG II: TÌM HIỂU VỀ MẬT MÃ 9

2.1 Mã cổ điển 9

2.1.1 Mã dịch chuyển 10

2.1.2 Mã thay thế 11

2.1.3 Mã hoán vị 12

2.2 Mã khóa công khai 13

2.2.1 Mã RSA 14

2.2.2 Mã Elgamal 14

CHƯƠNG III HỆ MẬT MÃ RSA 17

3.1 Lịch sử 17

3.2 Định nghĩa 17

3.3 Mô tả hoạt động 17

3.3.1.Tạo khóa 18

3.3.2.Mã hóa 18

3.3.3.Giải mã 18

3.4 Ví dụ 19

3.5 Chuyển đổi văn bản rõ 19

3.6 Tạo chữ ký vào văn bản 20

3.7 An ninh 21

3 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 4

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

CHƯƠNG IV ỨNG DỤNG MINH HỌA THUẬT TOÁN RSA 23

4.1 Giới thiệu 23

4.2 Cài đặt thử nghiệm 23

TÀI LIỆU THAM KHẢO 35

BẢNG TỪ VIẾT TẮT

Trang 5

Từ hoặc cụm từ Từ viết tắt

Chinese Remainder Theorem CRT

Ron Rivest, Adi Shamir, Len Adleman RSA

CHƯƠNG I.CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN VÀ CÁC THUẬT TOÁN

1.1 Ước số - Bội số

Định nghĩa : Ước số của a và b là c nếu c|a và c|b

5 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 6

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Ước số chung lớn nhất : Là số lớn nhất mà a và b chia hết

Ký hiệu : c = gcd (a,b) ; (great common divisor)

Bội số chung nhỏ nhất : d là BCNN của a và b nếu ∀ c mà a|c , b|c → d|c

Ký hiệu : d = lcm (a,b) ; (least common multiple)

Tính chất: lcm (a,b) = a.b/gcd(a,b)

1.2 Số nguyên tố

Định nghĩa : Số nguyên tố là số chỉ chia hết cho 1 và chính nó, ngoài ra không còn

số nào nó có thể chia hết nữa Hệ mật thường sử dụng số nguyên tố lớn cỡ 512bits vàthậm chí còn lớn hơn nữa

Hai số m và n gọi là hai số nguyên tố cùng nhau khi ước số chung lớn nhất củachúng bằng 1 Chúng ta có thể viết như sau:

UCLN(m,n)=1

1.3 Các thuật toán trong Z

Cho a và b là các số nguyên không âm và nhỏ hơn hoặc bằng n Cần chú ý rằng sốcác bit trong biểu diễn nhị phân của n là [lgn] + 1 và số này xấp xỉ bằng lg n Số cácphép toán bit đối với bốn phép toán cơ bản trên các số là cộng , trừ, nhân và chia sửdụng các thuật toán kinh điển được tóm lược trên bảng sau Các kỹ thuật tinh tế hơnđối với các phép toán nhân và chia sẽ có độ phức tạp nhỏ hơn

0 ((lg a)∗( lg b)) = 0 ((lg n)2)

0 ((lg a)∗( lg b)) = 0 ((lg n)2)

1.4 Thuật toán Euclide : Tính UCLN c a 2 s nguyên ủa 2 số nguyên ố nguyên

VÀO : Hai số nguyên không âm a và b với a > b

RA : UCLN của a và b

(1) while b ≠ 0 do

R ← a mod b, a ← b, b ← r (2) Return (a)

Trang 7

1.5 Thuật toán Euclide mở rộng

VÀO : Hai số nguyên không âm a và b với a > b

RA : d = UCLN (a, b) và các số nguyên x và y thỏa mãn ax + by = d

(1) Nếu b = 0 thì đặt d ← a, x ← l, y ← 0 và return (d, x, y) (2) Đặt x2 ← l, x1 ← 0, y2 ← 0, y1 ← l

(3) while b > 0 do

1 q ← [a/b], r ← a – qb, x ← x2 – qx1 , y ← y2 – qy1

2 a ← b, b ← r, x2 ← x1, x1 ← x, y2 ← y1 , y1 ← y (4) Đặt d ← a, x ← x2, y ← y2 và return (d, x, y)

a+b≡ a1+b1 (mod n)

a.b ≡ a1.b1 (mod n)

7 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 8

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

1.8 Số nghịch đảo

Định nghĩa : Cho a  Zn Một số nguyên x  Zn gọi là nghịch đảo của a theo modn

nếu a.x ≡ 1mod n

Nếu có số x như vậy thì nó là duy nhất và ta nói a là khả nghịch Ký hiệu là a-1

Có thể suy ra rằng a khả nghịch theo mod n khi và chỉ khi gcd (a,n)=1

bậc hai được kí hiệu là Q ¯n .

1.11 Phần dư China CRT ( Chinese Remainder Theorem)

Nếu các số nguyên n1, n2, …, nk là nguyên tố cùng nhau từng thì hệ các phươngtrình đồng dư:

−1

mod niCác tính toán này có thể được thực hiện bởi 0 ((lg n )2) các phép toán trên bit

Ví dụ : Cặp phương trình đồng dư

x  5 (mod 9)

x  19 (mod 23) có nghiệm duy nhất x  203 (mod 207)Tính chất

Trang 9

Nguồn tin Bộ mã hóa Kênh mở

có một nghiệm duy nhất x  a (mod n1,n2)

CHƯƠNG II: TÌM HIỂU VỀ MẬT MÃ

Mật mã học là khoa học nghiên cứu sự an toàn, toàn vẹn của dữ liệu, xác nhận sựtồn tại và xác nhận tính nguyên bản của thông tin

Hình 1:Sơ đồ khối một hệ truyền tin mật

9 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 10

Nguồn tin Bộ mã hóa Kênh mở

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Định nghĩa : Một hệ mật mã là một bộ năm (P, C, K, E, D) thoả mãn các điều kiện

Các đặc điểm của hệ mã cổ điển

1 Các phương pháp mã hóa cổ điển đòi hỏi người mã hóa và người giải mã phải

có cùng chung một khóa

Trang 11

2 Khóa phải được giữ bí mật tuyệt đối, khóa phải được gửi đi trên kênh an toàn.

Vì dễ dàng xác định một khóa nếu biết khóa kia

Nhược điểm chính của phương pháp này là khóa được truyền trên kênh an toànnên chi phí tốn kém và không kịp thời Ưu điểm là tốc độ mã hóa và giải mã rấtnhanh

Các hệ mật mã cổ điển cũng dùng chung một khoá cho việc lập mã và giải mã, cácbản rõ và bản mã thường dùng cơ sở là bảng chữ cái trong ngôn ngữ tự nhiên Vàtrong phần này ta sẽ dùng bảng chữ cái tiếng Anh làm ví dụ

Ví dụ: Dùng khoá k = 2 để mã hoá dòng thư:

Cách đây 2000 năm mã dịch chuyển đã được Julius Ceasar sử dụng, với khoá k=3

mã địch chuyển được gọi là mã Ceasar

11 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 12

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Tập khoá phụ thuộc vào Zm với m là số khoá có thể

Trong tiếng Anh tập khoá chỉ có 26 khoá có thể, việc thám mã có thể được thựchiện bằng cách duyệt tuần tự 26 khoá đó, vì vậy độ an toàn của mã dịch chuyển rấtthấp

với x, y є Z26, π -1 là nghịch đảo của π

Ví dụ: π được cho bởi (ở đây ta viết chữ cái thay cho các con số thuộc Z26):

Mã thay thế có tập hợp khoá khá lớn - bằng số các hoán vị trên bảng chữ cái, tức

số các hoán vị trên Z26, hay là 26! > 4.1026 Việc duyệt toàn bộ các hoán vị để thám

mã là rất khó, ngay cả đối với máy tính Tuy nhiên, bằng phương pháp thống kê, ta cóthể dễ dàng thám được các bản mã loại này, và do đó mã thay thế cũng không thểđược xem là an toàn

2.1.3 Mã hoán vị

Định nghĩa Mã hoán vị: (P, C, K, E, D)

Cho m là số nguyên dương

Trang 13

P = C = Z26 , K = Sm

e k(x1, x2, , x m) = (x π (1) , x π (2) , , x π (m))

d k(y1, y2, , y m) = (y π−1(1), y π−1(2 ), , y π−1(m))

với mỗi k = π  Sm , ta có

Trong đó π-1 là hoán vị nghịch đảo của π

Ví dụ:Giả sử m = 4, và khoá k được cho bởi phép hoán vị π

Khi đó phép hoán vị nghịch đảo π-1 là:

Trang 14

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Thì dễ thấy rằng mã Hill với khoá Kπ trùng với mã hoán vị với khoá π

Với m cho trước, số các khoá có thể có của mã hoán vị là m!

Dễ nhận thấy với m = 26 ta có số khóa 26! (mã Thay thế)

2.2 Mã khóa công khai

Trong mô hình mật mã cổ điển trước đây mà hiện nay đang được nghiên cứu,A(người gửi) và B (người nhận) chọn khóa bí mật K Sau đó dùng K để tạo luật mãhóa ek và luật giải mã dk Trong hệ mật này dk hoặc giống ek hoặc khác, nếu để lộ ek thìlàm cho hệ thống mất an toàn

Nhược điểm của hệ mật này là nó yêu cầu phải có thông tin trước về khóa K giữa

A và B qua một kênh an toàn trước khi gửi một bản mã bất kỳ Trên thực tế điều nàyrất khó đảm bảo Chẳng hạn khi A và B ở cách xa nhau và họ chỉ có thể liên lạc vớinhau bằng E-mail Trong tình huống đó A và B không thể tạo một kênh bảo mật vớigiá phải chăng

Ý tưởng xây dựng một hệ mật khóa công khai là tìm một hệ mật không có khảnăng tính tóan để xác định dk khi biết ek Nếu thực hiện được như vậy thì quy tắc mã ek

có thể được công khai bằng cách công bố nó trong một danh bạ (bởi vậy nên có thuật

ngữ hệ mật khóa công khai).

Ưu điểm của hệ mật khóa công khai là ở chỗ A (hoặc bất kỳ A) có thể gửi một bảntin đã mã hóa cho B (mà không cần thông tin trước về khóa mật) bằng cách dùng mật

mã công khai ek Người nhận A sẽ là người duy nhất có thể giải mã được bản mã nàybằng việc sử dụng luật giải bí mật dk của mình Có thể hình dung hệ mật này tương tựnhư sau: A đặt một vật vào một hộp kim loại và rồi khóa nó lại bằng một khóa số do B

để lại Chỉ có B là người duy nhất có thể mở được hộp vì chỉ có anh ta mới biết tổ hợp

mã của khóa số của mình

Ý tưởng về một hệ mật khóa công khai được Diffie và Hellman đưa ra vào năm

1976 Còn việc hiện thực hóa nó thì do Riyesrt, Shamir và Ableman đưa ra lần đầuvào năm 1977, họ đã tạo nên hệ mật nổi tiếng RSA và một số hệ mật khác Độ bảomật của hệ RSA dựa trên độ khó của việc phân tích ra thừa số nguyên lớn

Trang 15

Do UCLN((n), b) = 1 nên chọn b = 3

a.b  1 mod (n) nên chọn a = 7

Giả sử G muốn gửi bản rõ x = 3 tới N, G phải tính:

y = eK(x)= xb mod n = 33 mod 10 = 7Khi N nhận được bản mã y = 7, anh ta sử dụng số mũ a mật để tính:

x = dK(y) = ya mod n = 77 mod 10 = 3

Đó chính là bản rõ mà G đã mã hoá

Độ mật của hệ RSA được dựa trên giả thiết là hàm mã eK(x) = x b mod n là hàmmột chiều Bởi vậy thám mã sẽ gặp khó khăn về mặt tính toán để giải mã một bản

mã Cửa sập cho phép N chính là thông tin về phép phân tích thừa số n (n = p.q)

Vì N biết phép phân tích này nên anh ta có thể tính

(n) = (p – 1).(q – 1) và rồi tính số mũ giải mã a bằng cách sử dụng thuật toánEculide mở rộng

2.2.2 Mã Elgamal

Mô tả hệ mã Elgamal

Hệ mật mã ElGamal được T.ElGamal đề xuất năm 1985, dựa vào độ phức tạp củabài toán tính lôgarit rời rạc, và sau đó đã nhanh chóng được sử dụng rộng rãi khôngnhững trong vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ kýđiện tử

Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu

và được xem là bài toán khó nếu p được chọn cẩn thận Cụ thể là không có một thuậttoán thời gian đa thức nào cho bài toán logarithm rời rạc Để gây khó khăn cho cácphương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p – 1) phải có ít nhấtmột thừa số nguyên tố lớn

Hệ mật mã Elgamal là một hệ mật không tất định vì bản mã phụ thuộc vào cả bản

rõ x lẫn giá trị ngẫu nhiên k do G chọn Bởi vậy sẽ có nhiều bản mã được mã từ cùngmột bản rõ

Bài toán logarithm rời rạc trong Z p :

Đặc trưng của bài toán: I = (p, , ) trong đó p là số nguyên tố,  Zp

phần tử nguyên thuỷ (hay phần tử sinh),  Z¿p

15 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 16

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0  a  p – 2 sao cho:

Các giá trị p, ,  được công khai, còn a giữ kín

Với K =(p, , a, ) và một số ngẫu nhiên bí mật k  Zp−1 , ta xác định:

eK(x, k) = (y1, y2)

là phần tử nguyên thuỷ nên  = 3

Chọn a sao cho 0  a  p – 2 nên a = 2

Khi đó :  = a mod p = 32 mod 7 = 2

Chọn một số ngẫu nhiên bí mật k  Zp−1 , chọn k =3

Giả sử G muốn gửi thông báo x = 3 cho N, G phải tính:

eK(x, k) = (y1, y2)Trong đó:

y1 = k mod p = 33 mod 7 = 6y2 = x k mod p = 3*23 mod 7 = 3Khi N thu được bản mã (y1, y2) = (6, 3), anh ta sẽ tính:

Trang 17

x = dK(y1, y2) = y2(y1a)-1 mod p = 3*(62)-1 mod 7 = 3

Đó chính là bàn rõ mà G đã mã hoá

17 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 18

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

CHƯƠNG III HỆ MẬT MÃ RSA

Cho n = p.q trong đó p và q là các số nguyên tố Đặt P = C = Zn và định nghĩa:

K = {(n, p, q, a, b): n = p.q, p, q là các số nguyên tố, a.b  1 mod (n)}

Với K = (n, p, q, a, b) ta xác định: eK (x) = xb mod n

và dK (y) = ya mod n

(x, y  Zn) Các giá trị n và b được công khai và các giá trị p, q, a được giữ kín

3.3 Mô tả hoạt động

Thuật toán RSA có hai khóa:

 khóa công khai (Public Key)

 khóa bí mật ( Private Key)

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.Khóa bí mật được cá nhân giữ kín và dùng để giải mã

( Mã hóa M bằng Public Key của A đc c ) (Giải mã c bằng Private Key của A đc M )

Trang 19

3.3.1.Tạo khóa

Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không antoàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặpkhóa gồm khóa công khai và khóa bí mật theo các bước sau:

Các bước tạo khóa:

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

2 Tính: n = pq

3 Tính: giá trị hàm số Ơle ф(n) = (p-1)(q-1)

4 Chọn một số tự nhiên e sao cho 1 < e < ф(n), và là số nguyên tố cùng nhauvới ф(n)

5 Tính: d sao cho d e ≡ 1 (mod ф(n).)

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

Khóa bí mật: (d, n)

3.3.2.Mã hóa

Giả sử Bob muốn gửi đoạn thông tin M cho Alice Đầu tiên Bob chuyển Mthành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) đượcthỏa thuận trước Quá trình này được mô tả ở phần Chuyển đổi văn bản rõ

Lúc này Bob có m và biết n cũng như e do Alice gửi Bob sẽ tính c là bản mãhóa của m theo công thức:

c = me mod n Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (môđun) bằngphương pháp bình phương (exponentiation by squaring) Cuối cùng Bob gửi c choAlice

3.3.3.Giải mã

Alice nhận c từ Bob và biết khóa bí mật d Alice có thể tìm được m từ c theocông thức sau:

m = cd mod n Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước Quá trình giải

mã hoạt động vì ta có :

cd ≡ (me)d ≡ med (mod n)

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:

med ≡ m (mod p)

19 Nguyễn Hữu Lộc | CH1301023Đề tài: Tìm hiểu thuật toán RSA và ứng dụng

Trang 20

PGS.TS Đỗ Văn Nhơn [ TOÁN HỌC CHO KHOA HỌC MÁY TÍNH ]

cd ≡ m (mod n)

3.4 Ví dụ

Lấy:

p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)

q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)

n = pq = 3233 — môđun (công bố công khai)

3.5.Chuyển đổi văn bản rõ.

Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ(chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mãkhông an toàn Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:

Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng

Ngày đăng: 23/05/2015, 10:16

HÌNH ẢNH LIÊN QUAN

Hình 2 : Mã hóa RSA - Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU THUẬT TOÁN RSA VÀ ỨNG DỤNG
Hình 2 Mã hóa RSA (Trang 22)

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