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 1Mụ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 2PGS.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 3CHƯƠ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 4PGS.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 5Từ 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 6PGS.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 71.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 8PGS.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 9Nguồ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 10Nguồ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 112 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 12PGS.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 13P = 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 14PGS.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 15Do 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 là
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 16PGS.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 17x = 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 18PGS.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 193.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 20PGS.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