Nhƣ đã nói trong mục 3.6.1 kỹ thuật sinh khóa và kiểm tra tính hợp lệ khóa RSA không bao hàm trong các chuẩn PKCS#1 v2.1. Tuy nhiên để tiện theo dõi, kỹ thuật sinh khóa RSA sẽ đƣợc trình ngày ngay dƣới đây
1/. Thuật toán sinh số nguyên tố ngẫu nhiên
PG(r,s,e)
Input: r – cận dƣới cho số nguyên tố sẽ đƣợc sinh ra s – cận trên cho số nguyên tố sẽ đƣợc sinh ra e – một số nguyên dƣơng lẻ
Output: p – một số nguyên tố lẻ trong đoạn [r, s] thỏa mãn UCLN(p – 1, e) =1
Các bước:
3/ sinh ngẫu nhiên số nguyên dƣơng lẻ trong đoạn [r – 2, s – 2] 4/ p = p + 2
5/ Nếu p cho một số nguyên tố nào đó trong 2000 số nguyên tố đầu tiên thì quay lại bƣớc 2
6/ Nếu UCLN(p – 1, e) ≠ 1 thì quay lại bƣớc 2 7/ Lấy v, w sao cho w là số lẻ và p – 1 = w.2w
8/ Chọn một số nguyên dƣơng t sao cho việc kiểm tra tính nguyên tố ở bƣớc 8 thành công với xác suất lớn
9/ i = 1
10/while i t do
1. sinh ra một số nguyên a ngẫu nhiên trong đoạn [1, p – 1] 2. b = aw mod p
3. Nếu b = 1 hoặc b = p – 1 chuyển tới 8.6 4. j = 0
5. while b ≠ p – 1 i. j = j+1
ii. nếu j = v thì quay lại bƣớc 2 (p là hợp số) iii. b = b2 mod p
iv. Nếu b = 1 quay lại bƣớc 2 (p là hợp số) 6. I = i + 1
7. Nếu p > s thì quay lại 1 8. Ra p
Ghi chú: phƣơng pháp sinh số nguyên tố ngẫu nhiên ở trên sử dụng thuật toán xác suất Rabin – Miller kiểm tra số nguyên tố tại bƣớc 8
2/. Thuật toán sinh khóa RSA
RSAKG(L, e)
Input: L – chiều dài tính theo bit của modulo n
e – số mũ công khai, một số nguyên lẻ lớn hơn 1
Output: K – khóa bí mật hợp lệ
(n, e) – khóa công khai hợp lệ
Các bước:
1. Sinh một số nguyên tố p thỏa mãn: 2(L-1)/2
+ 1 p 2L/2 - 1 và UCLN(p – 1, e) = 1, sử dụng PG với đầu vào (: 2(L-1)/2
+ 1, 2L/2 - 1, e) 2. Sinh một số nguyên tố q thỏa mãn: 2(L-1)/2
+ 1 q 2L/2 - 1 và UCLN(q – 1, e) = 1, sử dụng PG với đầu vào (: 2(L-1)/2
+ 1, 2L/2 - 1, e) 3. Tính n = p.q đƣợc khóa công khai (n, e)
4. Tính các tham số cần thiết cho khóa bí mật K 5. Ra khóa công khai và khóa bí mật
Ghi chú:
Thuật toán trên đây sinh khóa cho trƣờng hợp modulo RSA n là tích của 2 số nguyên tố. Việc cài đặt thuật toán RSA đa nguyên tố yêu cầu việc sinh khóa với n là tích của 3 số nguyên tố trở lên, khi đó thuật toán cũng tƣơng tự nhƣ trên nhƣng cần thay đổi một vài thông số.