Hệ mã hóa RŠA, được đặt tên theo tên của ba nhà khoa hoc Ronald Rivest, Adi Shamrr, và Leonard Adleman, là một trong những thuật toán mã hóa bất đối xứng nôi tiếng nhất, đóng vai trò qua
Trang 1
HOC VIEN CONG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA AN TOÀN THÔNG TIN
&
==———._=
BAO CAO MON HOC CƠ SỞAN TOÀN THÔNG TIN
ĐÈ TÀI: Giải thuật mã hóa khóa công khai RSA
Giảng viên : Đinh Trường Duy
Nhóm : 04
Thành viên
Đoàn Minh Yến B22DCAT320 Văn Thị Hải B22DCAT109
Neuyén Hoang Anh B22DCAT0I8
Lé Quang Hiép B22DCATII3
Đỗ Thanh Thảo B22DCAT285
Trang 2
Muc luc
MUIC LUC 0.00 ốeeốe 2
LỜI CẢM ƠN Sát nh HH HH HH HH HH ghi 3
Giới thiệu về hệ mã hoá RSA - - 5 5222 S33 x về xe theo 4 90:8 10 90A v01 -4 ẢẢ ôÔỎ 5 )90:81099:100/:0/9: 8 nng 5
I Khai niệm giải thuật mã hóa khóa công khai RSA: -. Ặ 6
1 Giải thuật: - LH KT KH eee eee eee 6
2 Một số yêu cầu với quá trình sinh khóa: . 5-52 <++<+e+eeeerereeereeee 5 a)_ Yêu cầu với các tham số sinh khóa p VA Qi -ssssesescsescecscecsseseecseeessssensesseneacaees 5
b) Vấn đề sử dụng số mũ mã hóa (e) hd: .cccccescescseseeeeecseecseeeseeeeeetneneass 5 c) Vấn đề sử dụng số mũ giải mã (d) nhỏ: . 5-5555 +c+c+scezeceeeeere2 5
THT Ma hoa, giai mas «2.0 ee 5
TV Các điểm yếu của giải thuật: -Ă- 2-5 2c rrrrrerrrre 7
I ' TS nh aq (:-]ÂÃ ÔỎ 7
2 Kích thước khóa lớn: . - -SS SH HT KH 7
V Cac dang tan công và cách phòng chống sử dụng thuật toán RSA: 7
1 Tấn công vào modulus n (tấn công vào phép nhân các số nguyên tô): 7 1.1 Phân tích thừa số nguyên tố (Factorization Attack): - 8 1.2, Common moduÏus: SG KT nọ nh 8 1.3 Ferma£s Attack (p và q gần nhau): 5-5-5 Sc+c+esessrereeerrererererrrs 9
2 Tấn công vào số mũ công khai e (Public Exponent Attack): - 10 2.1 Tấn công số mũ nhỏ (Small Exponent A ttaek): . 7-5 5555<55+- 10 2.2 Tấn công Broadecast Atfack: - 5-5 se SEScseerekrerereerrrrrsrrcee II
3 Tấn công vào số mũ bí mật d (Private Exponent Attaek): II 3.1 Tấn công bằng thông tin từng phần (Partial Key Exposure Attack): L2 3.2 Wiener's Attack (Tấn công dựa trên khóa nhỏ): . 5-5555 12
¡ốc 5^< ,ÔỎ 15
Tat LiGur than Kua OS eee eee 16
Trang 3LOI CAM ON
Đề hoàn thành bài báo cáo học phần Cơ sở An toàn thông tin này trước tiên nhóm em
xin gửi lời cảm ơn chân thành đến thầy Đính Trường Duy thuộc khoa An toàn thông
tin, Học viện Công nghệ Bưu chính Viễn thông đã cho chúng em cơ hội để có thê làm việc cùng nhau và từ đó hiểu biết nhiều hơn
Vì kiến thức còn hạn chế, trong quá trình tìm hiểu về để tài này chúng em không thể
tránh những sai sót Chúng em rất mong muốn nhận được những nhận xét, đánh giá,
đóng góp ý kiến từ thay dé rút ra kinh nghiệm từ bài báo cáo học phần này và chuẩn bị cho những bài báo cáo học phần sau
Chúng em xin chân thành cảm ơn!
Trang 4Giới thiệu về hệ mã hoá RSA
Trong bối cảnh phát trién cua cong nghệ thông tin và truyền thông, việc bảo mật đữ liệu ngày càng trở nên cấp thiết, đặc biệt là khi đữ liệu được truyền tải qua các mạng lưới công cộng như Internet Hệ mã hóa RŠA, được đặt tên theo tên của ba nhà khoa hoc Ronald Rivest, Adi Shamrr, và Leonard Adleman, là một trong những thuật toán mã hóa bất đối xứng nôi tiếng nhất, đóng vai trò quan trọng trong việc đảm bao
sự bảo mật và an toàn của thông tin
RSA được phát minh vào năm 1977 và nhanh chóng trở thành nền tảng cho nhiều ứng dụng bảo mật, từ truyền thông qua Internet đến chữ ký số và xác thực danh tính Điểm đặc biệt của RSA nam ở cơ chế mã hóa bất đối xứng, sử dụng cặp khóa
công khai và khóa riêng tư để mã hóa và giải mã thông tin Khóa công khai có thể
được chia sẻ rộng rãi dé mã hóa dữ liệu, trong khi khóa riêng tư được giữ bí mật và chỉ người sở hữu mới có thê giải mã
Nhờ vào tính chất an toàn và hiệu quả trong việc bảo vệ dir ligu, RSA đã trở thành một phương pháp mã hóa tiêu chuẩn được sử dụng rộng rãi trong nhiều hệ thống bảo mật trên toàn thé giới
Trang 5DANH MUC TU VIET TAT
STT Ký hiệu chữ viết tat Chữ viết đây đủ
DANH MUC CHU THICH
STT Ký tự Ý nghĩa
4 e Số bất kỉ sao cho GCD (e, Ø())=l
9 C Bản mã (là thông điệp M sau khi được mã
hoá)
Trang 6
I Khái niệm giải thuật mã hóa khóa công khai RSA:
1 Khái niệm:
Đây là thuật toán mã hóa bất đối xứng phỏ biến nhất Nó chủ yếu được sử dụng đề mã hóa tin nhắn nhưng cũng có thể được sử dụng đề thực hiện chữ
ký số trên tin nhắn RSA là thuật toán mã hóa được sử dụng rộng rãi, đảm bảo truyền đữ liệu an toàn bằng cách mã hóa và giải mã thông tin RSA rất cần thiết trong nhiều ứng dụng, chăng hạn như ngân hàng trực tuyến và giao tiếp email an toàn, cung cấp một khuôn khô mạnh mẽ cho các tương tác an toàn trong thế giới kỹ thuật số
Đề mã hóa tin nhắn, người gửi sử dụng public key của người nhận đề mã hóa tin nhắn, sau đó chỉ có thê giải mã bằng private key của người nhận
Điều này cung cấp một phương thức liên lạc an toàn qua mạng công cộng,
vì bất cứ ai cũng có thể sử dụng public key đề mã hóa tin nhắn nhưng chỉ
có người nhận mới có thê giải mã nó bằng private key của ho
H — Giải thuật sinh khóa:
1 Giải thuật:
Giả sử mỗi bên liên lạc A và B cần trao đồi thông tin bí mật thông qua một kênh không an toàn Với thuật toán RSA, mỗi bên liên lạc (A, B) cần tự tạo cho mình một cặp khóa công khai, bí mật theo các bước sau:
o Tao 2 số nguyên tổ lớn ? và gq, p khac g
© Tính modulo n=p xq vatinh O(n) = (p-L) x (g-L)
o Chon sé e sao cho 0<e< P(n) va ged (e, @(n)) = 1, trong do ham øcd () tính ước số chung lớn nhất của 2 số nguyên Nếu gcd (e, Ø®(z))
= | thì e và Ø(nø) là 2 số nguyên tố cùng nhau
o Chon sé d sao cho d= e! mod Ø(ø), hoặc (ở x e) mod @(n) = | hay
đ là modulo nghịch đảo của e
©_ Ta có (?, e) là khóa công khai, (n, đ) là khóa riêng và # còn được gọi
là modulo
Ví dụ:
Sinh khóa:
Chọn 2 số nguyên tô p = 3 và q = 11
o Tinhn=pxq=3x 11=33
o Tinh @(n) = (p-1) x (q-1) =2 x 10 = 20 o_ Chọn số e sao cho 0 < e < 20, và e và &(n) la số nguyên tố cùng nhau (#(n) không chia hết cho e) Chon e = 7
o_ Tính (dx e) mod ø(n) > (d x 7) mod 20 = 1
d = (20 x k +1)/7 -> d = 3 (k=1)
Trang 72
o_ Ta có: khóa công khai là (33, 7) và khóa riêng là (33, 3)
Một số yêu cầu với quá trình sinh khóa:
Dưới đây liệt kê các yêu câu đặt ra với các tham sô sinh khóa và khóa đê đảm bảo sự an toàn cho cặp khóa RŠA Các yêu câu cụ thê gom:
a) Yê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 x q) la khéng kha thi ve mat tinh toan p va q nên có cùng độ lớn
(tính bằng bít) 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 bịt
*_ Hiệu số p- q không nên quá nhỏ, do nếu p- q quá nhỏ, tức p > q và
p = Vn Nhu vay, CO thê chọn các sé nguyén té o gan Vn va thi Khi
có được p, có thê tính q và tìm ra d là khóa bí mật từ khóa công khai eva ớ(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
b) 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 chỉ 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
dé giảm khả năng bị vét cạn hoặc phân tích bản mã
c) Van dé sir dung số mũ giải mã (d) nhỏ:
*_ Khi sử dụng số mũ giải mã (đ) nhỏ, có thê tăng tốc độ giải mã Nếu ở
nhỏ và gcd (?-L, ø-L) cũng nhỏ thì đ có thê tính được tương đối dễ dàng
từ khóa công khai (ø, e) Do vậy, để đảm bảo an toàn, nên sử dụng số
mũ giải mã ở đủ lớn
HH Mã hóa, giải mã:
Mã hóa: là quá trình biến đôi thông tin ban đầu thành dạng mã hoặc mã hóa,
mà chỉ những người có kiến thức, khóa hoặc phương pháp tương ứng mới có thê giải mã và đọc được nội dung ban đầu
©_ Quá trình mã hóa của RSA:
1 Chọn 2 số nguyên tổ p, q và tính tích n=p.q
Can chon p,q sao cho 2'1 <n <2!
2 Tinh &(n)=(p-1).(q-1)
Trang 83 Tìm một số e, sao cho e là số nguyên tổ cùng nhau với Ø(n)
4 Tìm mét s6 d, sao cho e.d = | mod #(n)
5 Chọn ra mã khoá công khai Ku = (e,n) và khóa riêng Kr = (d,n)
e Giải mã: là quá trình chuyền đôi dữ liệu đã được mã hóa (hoặc mã hóa) thành
dạng có thê đọc được, được hiểu bởi con người hoặc máy tính Đây là phương pháp ngược lại của mã hóa
e Tir qua trình mã hóa trên, đến đây ta có 2 phương pháp:
©_ Phương pháp |: ma hoa bao mat
*Mã hoa: C = E(M, Ku) = M® mod n
*Giai ma: M = D (C, Kr) = C4 mod n
©_ Phương pháp 2: mã hoá chứng thực
*Mã Hoá: C = E(M, Kr) = M¢ mod n
*Giai ma: M = D(C, Ku) = C°modn
e Bai tap VD: ma hoa theo RSA voi kich thudc khoa la 4 bit (nghia la 1=4)
-23<n<2'
Chon p = 7, q=2
> n=72=14
- O(n) = (p-1).(q-1) = (7-1).2-1) = 6
- chọn e = 5 (là số nguyên tô cùng nhau với 6)
- chọn d = § (vi e.d = I mod 6) -> Khoá công khai Ku = (e,n) = (5, 14) -> Khoá riêng Kr = (d, n) = (5, 14)
Mã hoá bảo mật Mã hoá chứng thực
- giả sử mã hoá thông điệp M=S | - giả sử mã hoá thông điệp M = Š ( chon M <n) ( chon M <n)
C = M® mod n= 5° mod 14 =3 C=M! mod n= 5° mod 14 =3
- Giai m4 ban ma C = 3 - GIải mã bản mã C = 3
M =C°modn =3” mod 14 =5 M=C* modn=3° mod 14 =5
Trang 9
1
Các điểm yếu của giải thuật:
Mặc dù RSA là một trong những thuật toán mã hóa bất đối xứng phô biến và
mạnh mẽ nhất hiện nay, nó vẫn tồn tại một số điểm yếu tiềm ân Việc hiểu rõ
những hạn chế này sẽ giúp bạn đánh giá và sử dụng RSA một cách hiệu quả hơn
trong các ứng dụng bảo mật
1 Tốc độ:
e© Mã hóa/Giải mã chậm: So với các thuật toán mã hóa đối xứng như AES, RSA có tốc độ mã hóa và giải mã chậm hơn đáng kê (do kích thước khóa lớn và các phép toán số học phức tạp) Điều này làm cho RSA không phù hợp cho việc mã hóa các lượng dữ liệu lớn hoặc trong các ứng dụng đòi hỏi thời gian thực
e_ Giải pháp: Để khắc phục vấn đề này, người ta thường kết hợp RSA voi các thuật toán mã hóa đối xứng RSA được sử dụng để mã hóa khóa của thuật toán đối xứng, còn thuật toán đối xứng sẽ được sử dụng để mã hóa
dữ liệu thực tế
2 Kích thước khóa lớn:
e© Yêu cầu tài nguyên: Để đảm bảo tính bảo mật, các khóa RSA cần có kích thước lớn (2048 bít hoặc cao hơn) Điều này dẫn đến yêu cầu về tài nguyên tính toán và lưu trữ cao hơn so với các thuật toán khác
e Ảnh hưởng đến hiệu suất: Kích thước khóa lớn cũng làm giảm hiệu suất của các hoạt động mã hóa và giải mã
3 Tấn công:
e Tấn công dựa trên phân tích số: An toàn của RSA dựa trên sự khó khăn của việc phân tích một số lớn thành các thừa số nguyên tố Tuy nhiên, với sự phát triển của công nghệ máy tính lượng tử, các thuật toán phân tích số hiện tại có thể bị phá vỡ trong tương lai
e Tấn công kênh phụ: Các tấn công kênh phụ khai thác thông tin rò rỉ từ quá trình thực hiện thuật toán dé suy ra khoa bi mat
e An công dựa trên lỗi triển khai: Các lỗi trong quá trình triển khai thuật toán hoặc các giao thức liên quan có thê tạo ra các lỗ hồng bảo mật
Các dạng tấn công và cách phòng chống sử dụng thuật toán RSA:
Trong hệ thông mã hóa RŠA, có ba loại thông tin chính có thê là mục tiêu của Các cuộc tấn công, bao gồm modulus n, số mũ công khai ©,và số mũ bí mật d Dưới
đây là 3 dạng tấn công chính và cách khai thác các yêu tô này
Tan công vào modulus n (tần công vào phép nhân các số nguyên to):
« _ Mục tiêu: n =pxq (sản phâm của hai số nguyên tô lớn p và q)
Trang 10¢ Chiến lược: Kẻ tấn công cố găng phân tích N thành hai thừa số nguyên tổ
p va q Một khi p và q được biệt, khóa bí mật d có thê dê dàng tính toán
> Các dạng tấn công tiêu biểu:
1.1 Phân tích thừa số nguyên tố (Factorization Attack):
" Phương pháp thông thường là tìm cách phân tích n thành p và q băng cách sử dụng các thuật toán như General Number FIeld Sieve (GNFS)
= Taco thé sur dung Bruteforce attack dé xac dinh mét p kha thi Cach này được sử dụng khả thi nhất khi n nhỏ (nhỏ hơn 25 6 bit)
= Một công cụ hữu ích cho phép chúng ta phân tích 1 số n như:
http:/Aactordb.com/
»" VD: n = 9567648541342714273618397561 214215397959
Ta dùng công cụ trên sẽ thu được kết quả
p = 70636931
q = 135448247905089679980836052478189
Nhưng thông thường ta sẽ không phân tích được thừa số nguyên tô của n nên cân khai thác các yêu tô khác cua mat ma RSA 1.2.Common modulus:
Đặt bối cảnh trong mạng nội bộ sử dụng RŠA làm phương thức truyền tin
và quản trị viên không muốn tạo ra n khác nhau cho mỗi _người nên sử dụng cùng một n cho toàn mạng lưới và e sẽ được chọn ngâu nhiên
a External attack:
“ M6 ta:
= Theo béi canh trén, méi nhan vién i sẽ có một bộ khóa công khai (n,
ei) va mét bộ khóa bi mat (n, di)
= Gia su, ban trong vai tro cua attacker không phải là thành viên của hệ thong mang Tuy nhién, bang cách nào đó bạn biết được bộ số (e, n) giữa các thành viên Việc cần làm là gửi cùng | tin nhắn cho 2 máy
A, B va thu due ban ma (C,, C2)
« Vi gcd (e¡ ,e;) = 1 (e,e2 nguyén tố cùng nhau) nên ta sẽ tìm được cặp số u và v sao cho:
U.e, + V.e, = 1 (Extended Euclidean Algorithm)
Ta sé tinh m (plaintext) nhu sau: