Phƣơng pháp sàng bậc ha

Một phần của tài liệu Nghiên cứu tấn công RSA và xây dựng công cụ phân tích RSA (Trang 54 - 57)

2. Các phƣơng pháp sàng

2.2. Phƣơng pháp sàng bậc ha

Trong trường hợp tổng quát, 𝑛 rất lớn, rất khó để tìm được 𝑥, 𝑦 sao cho 𝑥2 ≡ 𝑦2 𝑚𝑜𝑑 𝑛 .

Ý tưởng thuật toán là: Khi nhân các hàng với nhau thì vế trái là sớ chính phương. Do đó ta sẽ tìm các hàng mà khi nhân với nhau, vế phải là chính phương.

Nếu 𝑛 rất lớn, các thừa số bên vế phải là rất lớn. Việc tìm các dòng để khi nhân với vế phải là số chính phương có chi phí rất lớn.

Dùng kĩ thuật sàng để chỉ chọn những dịng có vế phải là 𝐵 − 𝑠𝑚𝑜𝑜𝑡𝑕 (tất cả các thừa số nguyên tố ≤ 𝐵)

Thực hiện biến đổi đại số tuyến tính trên ma trận để xuất hiện một dòng O trên ma trận.

Một cách tổng quát, một ma trận 𝐴𝑚 ,𝑛 ln đưa được về ma trận có một dịng O (dịng tồn các phần tử 0) khi 𝑚 > 𝑛. Từ đó, thuật tốn sàng bậc hair a đời.

Input: số 𝑛 cần phân tích.

42

1. Chọn cơ sở thừa số S={p1, p2, ... , pt}, với p1 = -1 và pj ( j ≥ 2 ) là số nguyên tố thứ 𝑗 − 1 mà n là thặng dư bậc hai modulo p.

2. Tính 𝑚 = 𝑛

3. (Tìm t+1 cặp (ai, bi). Giá trị x được chọn theo thứ tự 0, ±1, ±2, ....) Gán i = 1. Trong khi i ≤ t+1 làm các bước sau:

3.1 Tính b = q(x) = (x+m)2 - n, và dùng thuật toán chia thử (Trial

Division) để kiểm tra b có pt - smooth ? Nếu khơng, Lấy giá trị x mới

và lặp lại bước 3.1.

3.2 Nếu b là pt - smooth, ta có b = t pjeij

j=1 , và gán ai = x+m, bi = b,

và vi =(vi1, vi2,... , vit) với vij = eij (mod 2) ; 1 ≤ j ≤ t.

3.3 Tăng i = i+1.

4. Áp dụng đại số tuyến tính trên ℤ2 để tìm một tập con khác rỗng T⊆ {1, 2, ... ,

t+1} sao cho 𝑖∈𝑇𝑣𝑖 = 0 5. Tính 𝑥 = 𝑖∈𝑇𝑎𝑖 (𝑚𝑜𝑑 𝑛)

6. Với mỗi 𝑗, 1 ≤ 𝑗 ≤ 𝑡, tính 𝑙𝑗 = ( 𝑖∈𝑇𝑒𝑖𝑗)/2 7. Tính 𝑦 = 𝑡 𝑝𝑗𝑙𝑗 (𝑚𝑜𝑑 𝑛)

𝑗 =1

8. Nếu 𝑥 ≡ ±𝑦 (𝑚𝑜𝑑 𝑛), tìm một tập con T⊆{1, 2, ... , t+1} khác và quay lại bước 5. (Nếu như không tìm thấy được tập T nào thì thay thế một vài cặp (ai, bi) mới và quay lại bước 4)

9. Tính 𝑑 = 𝑔𝑐𝑑(𝑥 − 𝑦, 𝑛) và return d.

Thuật toán 2.2. Thuật toán Sàng bậc hai nguyên bản

Trong thực tế cài đặt thì bước sàng có thời gian thực thi lâu nhất, do đó đã có nhiều phương pháp cải tiến bước sàng trong phương pháp sàng bậc hai. Thuật toán sau là một cải tiến nhằm tăng tốc bước sàng.

43

Input: số 𝑛 cần phân tích.

Output: thừa số nguyên tố 𝑑 của 𝑛.

Lấy 𝑸 𝒙 = (𝒙 + 𝒏 )𝟐 − 𝒏

Bước 1: Tính tốn dữ liệu khởi động

Chọn cận trên cho cơ sở thừa số nguyên tố 𝐵.

Khởi tạo cơ sở thừa số nguyên tố (𝑝1, 𝑝2, … , 𝑝𝑡) với 𝑝1 = −1 ; 𝑖 ∈ 2, 𝑡 𝑡𝑕ì 2 < 𝑝𝑖 < 𝐵 𝑣à 𝑝𝑛

𝑖 = 1

Với mỗi 𝑝𝑖 giải phương trình 𝑚2 = 𝑛 (𝑚𝑜𝑑 𝑝𝑖) bằng thuật toán Shank-Tonelli lưu lại 𝑆𝑖1 = 𝑚 − 𝑛 , 𝑆𝑖2 = −𝑚 − 𝑛

Bước 2: Sàng tìm tập 𝑼 gồm 𝒕 + 𝟏 phần tử

- Với mỗi 𝑥 ∈ −𝑀, 𝑀 , tính 𝑞 𝑥 = 𝑄 𝑥

- Với mỗi 𝑝𝑖 xem xét tất cả: 𝑥 = 𝑆𝑖1+ 𝑘 ∗ 𝑝𝑖 và 𝑥 = 𝑆𝑖2 + 𝑘 ∗ 𝑝𝑖 với 𝑘 ∈ ℤ

Tính 𝑞 𝑥 = 𝑞(𝑥)/(𝑝𝑖)𝑘 với k là bậc cao nhất có thể có của 𝑞(𝑥) đối với 𝑝𝑖 - 𝑞 𝑥 = 1 𝑡𝑕ì 𝑄 𝑥 là 𝐵 − 𝑠𝑚𝑜𝑜𝑡𝑕 và đưa 𝑄 𝑥 vào trong 𝑈

Bước 3: Đại số tuyến tính

Tìm ra trong tập 𝑈, tập 𝑇 gờm các 𝑄(𝑥) mà tích là một bình phương 𝑄 𝑥𝑗 = 𝑣2 𝑟 𝑗 =1 Bước 4: Tính 𝑢 = 𝑟 (𝑥 + 𝑛 ) 𝑗 =1 𝑣 = 𝑟 𝑄 𝑥𝑗 𝑗 =1 Trả về gcd 𝑢 + 𝑣, 𝑛

Thuật toán 2.6. Thuật toán Sàng bậc hai nguyên bản cải tiến

Thuật tốn trên có thể cải tiến về mặt tính tốn và bộ nhớ trong bước 2 như sau:

Bước 2: Sàng tìm tập 𝑼 gồm 𝒕 + 𝟏 phần tử

- Với mỗi 𝑥 ∈ −𝑀, 𝑀 , tính lg | 𝑞 𝑥 |

44

Tính lg | 𝑞 𝑥 | = lg | 𝑞 𝑥 | − lg⁡|(𝑝𝑖)𝑘| 𝑞 𝑥 với k là bậc cao nhất có thể có của 𝑞(𝑥) đối với 𝑝𝑖

- 𝑞 𝑥 ≈ 0 𝑡𝑕ì 𝑄 𝑥 là 𝐵 − 𝑠𝑚𝑜𝑜𝑡𝑕 và đưa 𝑄 𝑥 vào trong 𝑈

Với thuật toán sàng bậc hai nguyên bản như trên thì ta thấy giá trị 𝑄(𝑥) tăng rất nhanh, do đó khả năng 𝐵 − 𝑠𝑚𝑜𝑜𝑡𝑕 rất thấp, nên khi 𝑄(𝑥) tăng tới một giá trị nào đó thì có thể thay đa thức bởi một đa thức khác, từ đó ta có phương pháp sàng bậc hai nhiều đa thức với 𝑄 𝑥 = (𝑎𝑥 + 𝑏)2 − 𝑛 (Multiple Polynomial Quadratic Sieve – MPQS).

Tuy nhiên phương pháp MPQS phải tốn chi phí khá lớn ở mỗi bước khởi tạo lại đa thức. Chi phí chuyển đổi đa thức chiếm khoảng 25% - 30% tổng chi phí tính tốn. Phương pháp sàng bậc hai tự khởi tạo (Self-Initializing Quadratic Sieve – SIQS ) giúp làm giảm chi phí chuyển đổi đa thức bằng cách vẫn sử dụng đa thức dạng 𝑄 𝑥 = (𝑎𝑥 + 𝑏)2 − 𝑛 nhưng giá trị a được cố định trong nhiều đa thức và có giá trị bằng tích của k số nguyên tố lẻ thuộc cơ sở thừa số. Khi đó sẽ có 2𝑘−1giá trị b là nghiệm của 𝑏2 = 𝑛 (𝑚𝑜𝑑 𝑎).

Một phần của tài liệu Nghiên cứu tấn công RSA và xây dựng công cụ phân tích RSA (Trang 54 - 57)

Tải bản đầy đủ (PDF)

(113 trang)