RSA do Rivest, Shamir và Adleman phát triển năm 1977. Sơđồ RSA là sơđồ
mã hĩa từng khối, với mỗi khối cĩ giá trị nhỏ hơn n. Việc mã hĩa và giải mã theo hình thức sau, cho khối văn bản M và khối bảo mật C:
C = Me mod n
M = Cd mod n = (Me)d mod n = Mde mod n
Cả người gửi và nhận phải biết giá trị n, người gửi biết e và chỉ cĩ người nhận biết d. Cho nên đây là giải thuật mã hĩa với khĩa cơng khai KU = [e,n] và khĩa bí mật KR = [d,n]. Vì giải thuật này thỏa giải thuật mã khĩa cơng khai nên các yêu cầu sau phải được đáp ứng:
Cĩ thể tìm thấy giá trị d, e, n để: M = Mde mod n với mọi M<n hay khơng?
Một cách tương đối dễ dàng tính Me và Cd với mọi M<n hay khơng?
Khơng thể xác định d khi biết e và n.
Theo lý thuyết Euler: cho 2 số nguyên p và q, 2 số nguyên n và m (n=p*q, 0<m<n) và số nguyên k. Ta cĩ:
mk0(n)+1mod n= mk(p-1)(q-1)+1 mod n= m mod n 0(n)=0(pq)=(p-1)(q-1)
Do đĩ:
Nếu: de = k0(n) + 1 và gcd(0(n),e)=1 (gcd: ước số chung lớn nhất) Thì: de mod 0(n) = 1 và d mod 0(n) = e-1
Sơđồ RSA:
• Giả sử user A đã cơng bố khĩa cơng khai e của nĩ và user B muốn gửi
đoạn tin M tới A. Khi đĩ B tính C=Me mod n và truyền C. Khi nhận được đoạn tin C này, user A giải mã bằng cách tính Cd mod n. Cĩ thể thấy rằng M=Cd mod n vì:
de mod 0(n) = 1 hay de = k0(n)+1
→ Mk0(n)+1mod n = Mk(p-1)(q-1)+1mod n=M mod n=(Mde mod n) modn=Mde mod n Cd mod n = (Me)dmod n = Mde mod n = M
Cĩ thể tĩm tắt giải thuật RSA như bảng sau:
Bảng 4.3: Tĩm tắt giải thuật RSA và độ phức tạp
Tạo khĩa Độ phức tạp
Tạo 2 số nguyên tố lớn p và q Tính n = p*q, 0(n) = (p-1)*(q-1)
Chọn 1 số ngẫu nhiên 1<e<0(n): gcd (0(n),e) = 1 Tính d: d=e-1mod 0(n) (giải thuật Euclidean mở rộng) Khĩa cơng khai KU=[e,n]
Khĩa bí mật KR=[d,n]
0((log n)2) 0(log(0(n))2) 0((log n)3)
Ví dụ về quá trình mật mã và giải mã của thuật tốn RSA: Chọn p = 3, q = 11. Khi đĩ ta cĩ n = pq = 33 và (p-1)(q-1) = 20 = 2*5*5. Giá trị e được chọn phải quan hệ
nguyên tố với 20 , nghĩa là khơng chứa các ước số 2,5 và e < 20. Ta chọn e = 3, d = 7. Khi đĩ ta cĩ: Phía mật mã: Giả sử cĩ bản tin: M = {10, 9, 5, 20} → M3={1000, 729, 125, 8000} và C=M3 mod 33={10, 3, 26, 14}. Phía giải mã: C7 ={107, 2187, 267, 147} M=C7 mod 33{10, 9, 5, 20}
Kích thước khĩa RSA: tùy thuộc vào tính bảo mật và thời gian sống của khĩa mà khĩa cĩ chiều dài thích hợp:
• Loại Export: : 512 bít. • Loại Personnal : 768 bit. • Loại Commercial : 1024 bit. • Loại Militery : 2048 bit.
Trên đây là những nội dung chính của thuật tốn mật mã RSA. Thực tế, để thực hiện được các thuật tốn với kích thước khĩa lớn địi hỏi một lượng tính tốn rất lớn liên quan đến vấn đề lý thuyết số như thuật tốn Euclide để tìm USCLN của hai số
nguyên hay thuật tốn Miller-Rabin để kiểm tra tính nguyên tố của các số tự nhiên này.