Để 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 (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:
Theo phương án 2, mã hóa chứng thực: 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: ̅
Theo phương án 2, mã hóa chứng thực: ̅ 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: ̅ , xét phương án 1: Từ bước 4 ta suy ra:
1 với k là một số nguyên nào đó Vậy: ̅
Trước tiên ta chứng minh: . Xét hai trường hợp của M:
67
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:
1 (theo định lý Fermat)
Vậy: với mọi M. Hay nói cách khác
chia hết cho p. Chứng minh tương tự ta có
chia hết cho q. Vì p, q là hai số nguyên tố nên suy ra chia hết cho N = pq. Tóm lại:
̅ (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ó ̅ . 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 . Do đó phải tính được n. Vì 1 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.