Để thực hiện mã hóa và giải mã, RSA dùng phép lũy thừa modulo của lý thuyết số. Các bước thực hiện như sau:
1) Chọn hai số nguyên tố lớn p và q và tính N = pq. Cần chọn p và q sao cho:
M < 2i-1< N <2i . Với i = 1024 thì N là một số nguyên dài khoảng 309 chữ số. 2) Tính n = (p − 1)(q −1)
3) Tìm một số e sao cho e nguyên tố cùng nhau với n
4) Tìm một số d sao cho =. 1 ≡ 1 /01 R (d là nghịch đảo của e trong phép modulo n) 5) Hủy bỏ n, p và q. Chọn khóa công khai KU là cặp (e, N), khóa riêng KR là cặp
(d, N)
6) Việc mã hóa thực hiện theo công thức:
• Theo phương án 1, mã hóa bảo mật: ? = X(l, m) = ln /01 o
• Theo phương án 2, mã hóa không thoái thác: ? = X(l, p) = lq /01 o 7) Việc giải mã thực hiện theo công thức:
• Theo phương án 1, mã hóa bảo mật: lr = Y(?, p) = ?q /01 o
• Theo phương án 2, mã hóa không thoái thác: lr = Y(?, m) = ?n /01 o Bản rõ M có kích thước i-1 bít, bản mã C có kích thước i bít.
Để đảm bảo rằng RSA thực hiện đúng theo nguyên tắc của mã hóa khóa công khai, ta phải chứng minh hai điều sau:
a) Bản giải mã chính là bản rõ ban đầu: lr = l , xét phương án 1: Từ bước 4 ta suy ra:
=1 = *R + 1 với k là một số nguyên nào đó Vậy: lr = ?q /01 o
= lnq /01 o
= ls4t( /01 o
= ls(f5()(u5()t( /01 o
Trước tiên ta chứng minh: ls(f5()(u5()t( ≡ l /01 +. Xét hai trường hợp của M:
66
• M không chia hết cho p, vì p là số nguyên tố nên suy ra M nguyên tố cùng nhau với p. Vậy:
ls(f5()(u5()t( /01 + = l. (lf5()s(u5() /01 +
= l. 1s(u5() /01 + (theo định lý Fermat) = l /01 +
Vậy: ls(f5()(u5()t(− l ≡ 0 /01 + với mọi M. Hay nói cách khác
ls(f5()(u5()t(− l chia hết cho p. Chứng minh tương tự ta có ls(f5()(u5()t(− l chia hết cho q. Vì p, q là hai số nguyên tố nên suy ra ls(f5()(u5()t(− l chia hết cho N = pq. Tóm lại:
ls(f5()(u5()t( ≡ l /01 o
⇒ lr = ls(f5()(u5()t( /01 o = l (do M<N) (đpcm). Vì e và d đối xứng nên có thể thấy trong phương án 2, ta cũng có lr = l. b) Không thể suy ra KR từ KU, nghĩa là tìm cặp (d, N) từ cặp (e, N):
Có e và N, muốn tìm d, ta phải dựa vào công thức: =. 1 ≡ 1 /01 R . Do đó phải tính được n. Vì R = (+ − 1)(y − 1) nên suy ra phải tính được p và q. Vì N = pq
nên ta chỉ có thể tính được p và q từ N. Tuy nhiên điều này là bất khả thi vì N = pq là hàm một chiềụ Vậy không thể tính được KR từ KU.