Tải bản đầy đủ (.pdf) (7 trang)

KỸ THUẬT PHÂN TÍCH RA THỪA số TRÊN nền TÍNH TOÁN SONG SONG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.06 MB, 7 trang )

Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM

VII-O-11

KỸ THUẬT PHÂN TÍCH RA THỪA SỐ TRÊN NỀN TÍNH TOÁN SONG SONG
Vũ Anh Tuấn1, Nguyễn Cao Đạt2
1

Trường Đại học Tây Nguyên
Trường Đại học Bách khoa, ĐHQG-HCM
Email:,
2

TÓM TẮT
Mặc dù chuẩn mã hoá khoá công khai RSA được giới thiệu cách đây hơn 35 năm nhưng hiện tại
vẫn còn an toàn. Bởi vì nó dựa trên bài toán khó phân tích ra thừa số nguyên tố.Bài viết này sẽ tìm
hiểu một số phương pháp phân tích ra thừa số nguyên tố và thử nghiệm với phương pháp mạnh nhất
hiện nay là sàng trường số trên nền tính toán song song.
Từ khóa: phân tích ra thừa số, tính toán song song, sàng trường số
GIỚI THIỆU
Cùng với bài toán logarith rời rạc (Discrete Logarithm Problem - DLP), bài toán phân tích ra thừa số
nguyên tố (Prime Factorization Problem – PFP) là cơ sở của mã hoá khoá công khai. Chuẩn RSA ra đời năm
1977, dựa trên độ khó của bài toán phân tích ra thừa số nguyên tố, lấy theo tên của ba tác giả R. Rivest, A.
Shamir, và L. Adleman được mô tả như sau [1]:
(1) Chọn 𝑝, 𝑞 là hai số nguyên tố rất lớn và phân biệt
(2) Tính 𝑛 = 𝑝𝑞 và 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1)
(3) Chọn ngẫu nhiên một số nguyên 𝑒 (1 < 𝑒 < 𝜙(𝑛)) thỏa gcd(𝑒, 𝜙(𝑛)) = 1
(4) Tính 𝑑 = 𝑒 −1 (mod 𝜙 𝑛 )
(5) Công bố (𝑛, 𝑒) và giữ bí mật (𝑝, 𝑞, 𝑑).
Trong đó, 𝑛 được gọi là modulo, 𝑒 là số mũ công khai (hay còn gọi là số mũ mã hóa) và 𝑑 là số mũ bí mật
(hay còn gọi là số mũ giải mã). Bộ (𝑛, 𝑒) gọi là khóa công khai, còn (𝑝, 𝑞, 𝑑) là khóa bí mật.


Khi B mã hóa thông điệp 𝑚 cho A thì B phải tính giá trị 𝑦 = 𝑒𝑘 (𝑚) = 𝑚𝑒 (mod 𝑛), với 𝑘 = (𝑛, 𝑒)
Khi A muốn giải mã tìm 𝑚 từ 𝑦 thì A tính 𝑚 = 𝑑𝑘 ′ 𝑦 = 𝑦 𝑑 mod 𝑛 với 𝑘 ′ = 𝑑 hay 𝑘 ′ = (𝑑, 𝑝, 𝑞)nếu sử
dụng định lý Số dư Trung Hoa để giải mã nhanh.
RSA được sử dụng trong rất nhiều lĩnh vực đòi hỏi dữ liệu số cần được bảo mật. Nó được sử dụng trong
các máy chủ, trình duyệt để bảo vệ dữ liệu mạng, trong quá trình xác thực, bảo vệ tính riêng tư, … và là thành
phần cốt lõi của các hệ thống thanh toán điện tử. Do RSA là một chuẩn được công khai rộng rãi nên được rất
nhiều nhà nghiên cứu phân tích cách tấn công. Tuy vậy, sau hơn 35 năm tồn tại, RSA vẫn được tin tưởng, do
hiện tại bài toán phân tích số𝑛 ra thừa số nguyên tố chưa được giải quyết triệt để. Độ khó của nó không phải do
không có cách giải, mà do thời gian thực hiện bằng máy tính là quá lâu, không thể chấp nhận được.
Các thuật toán phân tích ra thừa số nguyên tố có thể được chia làm hai nhóm:
Nhóm các thuật toán phân tích đặc biệt: bao gồm các phương pháp như phương pháp chia thử, phương
pháp 𝑝 − 1, ―rho‖ 𝜌 của Pollard, phương pháp 𝑝 + 1 của Williams, đường cong elliptic (Elliptic Curve Method –
ECM) của Lenstra... Nhóm thuật toán phân tích này hiệu quả khi các thừa số nguyên tố được chọn để lập mã là
nhỏ, và có một số điểm đặc biệt.
Nhóm các thuật toán phân tích tổng quát: bao gồm các phương pháp sàng bậc hai (Quadratic Sieve – QS),
các biến thể của nó và phương pháp sàng trường số tổng quát (General Number Field Sieve – GNFS). Sự hiệu
quả của nhóm này phụ thuộc vào chính kích thước số cần phân tích chứ không phụ thuộc vào tính chất cụ thể
nào đó của nó.
Trong thực tế, các số nguyên tố RSA được đề xuất là các số nguyên tố mạnh, có giá trị rất lớn do đó nhóm
thuật toán phân tích đặc biệt không khả thi. Nhóm thuật toán tổng quát đang là hướng chính để giải quyết bài
toán phân tích ra thừa số nguyên tố. Tuy nhiên, hạn chế về tốc độ của máy tính làm cho thời gian thực thi là
không chấp nhận được. Để giải quyết vấn đề này, ngoài việc nghiên cứu cải thiện thuật toán, còn phải tăng tốc
độ tính toán. Việc tận dụng môi trường song song là một giải pháp hiệu quả, do các yếu tố sau:
Tốc độ của các bộ xử lý theo kiểu von Neumann đã dần tiến tới giới hạn.
Giá thành của các bộ xử lý phần cứng giảm mạnh, tạo điều kiện để xây dựng những hệ thống nhiều bộ xử
lý.
Sự phát triển của công nghệ mạch tích hợp cho phép tạo ra những hệ thống đa nhân trên một chip.
ISBN: 978-604-82-1375-6

67



Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Bài viết sau khi nhắc lại một số phương pháp sẽ tập trung vào phương pháp sàng trường số, và các kỹ thuật
tận dụng môi trường tính toán song song nhằm làm giảm thời gian phân tích.
CÁC PHƢƠNG PHÁP PHÂN TÍCH ĐẶC BIỆT
Phƣơng pháp chia thử (Trivial Division)
Thông thường khi cần phân tích số nguyên 𝑛 ra thừa số nguyên tố, trước khi phải thực hiện với các kĩ thuật
mạnh hơn, chúng ta dùng phương pháp chia thử với các số nguyên tố ―nhỏ‖. Ở đây ―nhỏ‖ so với giá trị của
𝑛.Các số nguyên tố ―nhỏ‖ này có giá trị từ 2 đến 𝑛 [1]. Tuy nhiên thay vì chia thử từ 2 đến 𝑛 , ta chỉ cần
chia thử cho 2, 3 và các số có dạng 𝑝 = 6𝑘 ± 1 với 𝑘 ∈ ℤ+ , 𝑝 ≤ 𝑛 (do các số dạng 6𝑘, 6𝑘 + 2, 6𝑘 + 3,
6𝑘 + 4 không thể là số nguyên tố). Thuật toán của phương pháp chia thử như sau:
input: số nguyên n cần phân tích
output: một thừa số nguyên tố của n
1. if𝑛 ≡ 0 (mod 2)return𝑝 = 2
2. if𝑛 ≡ 0 (mod 3)return𝑝 = 3
3. set
𝑝 = 3
𝑏 = 2
4. while𝑝 < 𝑛
set𝑝 = 𝑝 + 𝑏
if𝑛 ≡ 0 (mod 𝑝)return𝑝
set𝑏 = 6 – 𝑏
5. return 0
Thuật toán 1. Thuật toán chia thử (Trivial Division)
Ưu điểm của phương pháp này là đơn giản, tuy nhiên nhược điểm là thời gian thực thi rất lớn khi 𝑛 là tích
của hai số nguyên tố gần bằng nhau. Do đó, phương pháp này chỉ thích hợp khi 𝑛 có thừa số nguyên tố nhỏ.
Phƣơng pháp 𝝆
Phương pháp phân tích thừa số nguyên tố mang tên 𝜌 do Pollard công bố năm 1975. Ý tưởng của phương
pháp này dựa trên thuật toán tìm chu trình của Floyd.

Bài toán tìm chu trình: Giả sử có hàm bất kỳ 𝑓 ∶ 𝑆 → 𝑆, với 𝑆 là một tập hữu hạn. Lấy 𝑥0 là một phần tử
bất kỳ của 𝑆, ta luôn có một dãy các số 𝑥0 , 𝑥1 , 𝑥2 , … định nghĩa bởi 𝑥𝑖+1 = 𝑓(𝑥𝑖 )∀𝑖 ≥ 0. Vì 𝑆 là hữu hạn do đó
chắc chắn tồn tại một chu trình.
Thuật toán Floyd tìm chu trình: Floyd nhận thấy với bất kỳ số nguyên 𝑖 ≥ 𝜇 và 𝑘 ≥ 0, 𝑥𝑖 = 𝑥𝑖+ 𝑘𝜆 ,
trong đó λ là chiều dài của chu trình được tìm thấy. Đặc biệt, với 𝑖 = 𝑘𝜆 ≥ 𝜇, thì luôn có 𝑥𝑖 = 𝑥2𝑖 . Do đó,
thuật toán bắt đầu với cặp (𝑥1 , 𝑥2 ) và tính toán tuần tự cặp (𝑥𝑖 , 𝑥2𝑖 ) từ các cặp(𝑥𝑖−1 , 𝑥2(𝑖−1) ) cho tới khi
𝑥𝑖 = 𝑥2𝑖 . Sau đó thuật toán sẽ lần lượt tìm giá trị được lặp lại đầu tiên 𝑥𝜇 và chiều dài ngắn nhất của chu trình 𝜆.
Phương pháp 𝜌 áp dụng thuật toán Floyd với dãy số 𝑥0 , 𝑥1 , 𝑥2 , … với 𝑥0 = 2, 𝑥𝑖+1 = 𝑓 𝑥𝑖 = 𝑥𝑖 2 +
1 (mod 𝑝)∀𝑖 ≥ 0 để tìm𝑥𝑚 ≡ 𝑥2𝑚 (mod 𝑝) [1].
input: số nguyên 𝑛 cần phân tích
output: một thừa số nguyên tố của 𝑛
1. Set𝑎 = 2, 𝑏 = 2
2. For𝑖 = 1, 2, …do:
2.1 Tính 𝑎 = 𝑎2 + 1 (mod 𝑛), 𝑏 = 𝑏 2 + 1 (mod 𝑛), 𝑏 = 𝑏 2 + 1 (mod 𝑛)
2.2 Tính 𝑑 = gcd(𝑎 − 𝑏, 𝑛)
2.3 If1 < 𝑑 < 𝑛then
return𝑑
2.4 If𝑑 = 𝑛then
Kết thúc mà không tìm được kết quả
Thuật toán 2. Thuật toán 𝝆 Pollard
Phương pháp phân tích thừa số nguyên tố 𝜌 của Pollard áp dụng thuật toán Floyd với tập 𝑆 gồm 𝑝 phần tử
(là ước của 𝑛 và chưa biết) do đó tốc độ thuật toán phụ thuộc vào 𝑝. Vì vậy phương pháp này chỉ dùng được với
những số 𝑛 có thừa số nguyên tố nhỏ.

ISBN: 978-604-82-1375-6

68


Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM

Phƣơng pháp 𝒑 − 𝟏
Phương pháp 𝑝 − 1 của Pollard dựa vào định lý Fermat nhỏ (Little Theorem of Fermat) và khái niệm thừa
số trơn - smooth.
Định lý Fermat nhỏ: Nếu gcd(𝑎, 𝑝) = 1 thì 𝑎𝑝−1 ≡ 1 (mod 𝑝)
Khái niệm smooth: Gọi 𝐵 là một số dương bất kỳ, khi đó số nguyên 𝑄 được gọi là 𝐵-smooth nếu tất cả các
thừa số nguyên tố của 𝑄 nhỏ hơn hoặc bằng 𝐵.
Ý tưởng của phương pháp 𝑝 − 1 là chọn một giá trị 𝐵 làm biên xét smooth. Tính giá trị 𝑄 là bội chung nhỏ
nhất của tất cả các luỹ thừa cơ số nguyên tố nhỏ hơn 𝐵 mà nhỏ hơn n. Do đó: 𝑄 = 𝑞 ≤𝐵 𝑞 𝑙𝑛 𝑛/ 𝑙𝑛 𝑞 (vì 𝑞 𝑙 ≤
𝑙𝑛 𝑛

𝑛 ⟹ 𝑙 𝑙𝑛 𝑞 ≤ 𝑙𝑛 𝑛 ⟹ 𝑙 ≤

𝑙𝑛 𝑞

). Nếu 𝑝 là một thừa số nguyên tố của 𝑛 mà 𝑝 − 1 là một số B-smooth thì

𝑝 − 1|𝑄, nên theo định lý Fermat nhỏ ta có 𝑎𝑄 ≡ 1 (mod p). Do đó nếu 𝑑 = gcd(𝑎𝑄 − 1, 𝑛) thì 𝑝|𝑑 [1].
Input: số 𝑛 cần phân tích
Output: thừa số nguyên tố 𝑑 của 𝑛
1. Chọn ngưỡng smooth 𝐵.
2. Chọn số nguyên ngẫu nhiên 𝑎 (2 ≤ 𝑎 ≤ 𝑛 − 1), và tính 𝑑 = gcd(𝑎, 𝑛).
If𝑑 ≥ 2then
Return 𝑑
3. For each số nguyên tố 𝑞 ≤ 𝐵do:
3.1 Tính =

ln 𝑛
ln 𝑞
𝑞𝑙


.

3.2 Tính 𝑎 ← 𝑎 (mod 𝑛)
4. Tính 𝑑 = gcd(𝑎 − 1, 𝑛)
5. If𝑑 = 1 hoặc 𝑑 = 𝑛then
Kết thúc mà không tìm được kết quả
Elsereturn𝑑
Thuật toán 3. Thuật toán 𝒑 − 𝟏 của Pollard
Phương pháp phân tích thừa số nguyên tố 𝑝 − 1 của Pollard dựa vào điều kiện 𝑝 − 1 là một số 𝐵-smooth.
Vì vậy phương pháp này chỉ dùng được với những số 𝑛 có thừa số nguyên tố 𝑝, mà 𝑝 − 1 thoả 𝐵-smooth.
Phƣơng pháp đƣờng cong Elliptic (Elliptic Curve Method – ECM)
Phương pháp 𝑝 − 1 của Pollard thành công khi 𝑝 − 1 là một số B-smooth với 𝑝 là một thừa số nguyên tố
của 𝑛. Nhận thấy 𝑝 − 1 cũng là cấp của nhóm ℤ𝑝 ∗ , do đó phương pháp ECM tổng quát hoá thuật toán 𝑝 − 1
bằng cách thay nhóm ℤ𝑝 ∗ bằng một nhóm đường cong Elliptic bất kỳ trên ℤ𝑝 . Nếu cấp của nhóm được chọn
smooth trong phạm vi 𝐵 thì khả năng cho kết quả là rất cao, ngược lại thì cần phải chọn một nhóm đường cong
Elliptic khác.
Mặc dù ECM khá mạnh, tuy nhiên nó vẫn thuộc nhóm các phương pháp phân tích đặc biệt nên không thể
giải quyết bài toán một cách tổng quát. Bài viết không tập trung vào phương pháp này, chi tiết được trình bày
trong tài liệu tham khảo [2].
CÁC PHƢƠNG PHÁP SÀNG
Phƣơng pháp Fermat
Phương pháp Fermat dựa trên ý tưởng sai biệt bình phương.
Gọi 𝑛 là số lẻ cần phân tích, tìm các cặp số nguyên 𝑥 và 𝑦 sao cho
𝑥 2 ≡ 𝑦 2 mod n và 𝑥 ≢ ± 𝑦 (mod 𝑛)
Khi đó gcd 𝑥 − 𝑦, 𝑛 và gcd⁡(𝑥 + 𝑦, 𝑛) là những thừa số không tầm thường của 𝑛 [1].
1. If𝑛 ≡ 0 (mod 2) return2
2.𝑥 = 𝑛
𝑧=𝑥∗𝑥−𝑛
3. Trong khi 𝑧 không là thặng dư bậc hai mod 𝑛 và 𝑥 < (𝑛 + 1)/2
3.1. Tính 𝑧 = 𝑧 + 2 ∗ 𝑥 + 1

3.2. Tính 𝑥 = 𝑥 + 1
4. If𝑥 < (𝑛 + 1)/2
return𝑥 − 𝑧
Else
return0
Thuật toán 4. Thuật toán Fermat
Trong trường hợp tổng quát, 𝑛 rất lớn thì rất khó để tìm được 𝑥, 𝑦 sao cho 𝑥 2 ≡ 𝑦 2 mod n .
ISBN: 978-604-82-1375-6

69


Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Phương pháp sàng bậc hai
Ý tưởng dựa trên khái niệm thừa số trơn – smooth đã được nhắc tới trong phương pháp 𝑝 − 1.
Dùng kĩ thuật sàng để tìm ra các giá trị 𝑥 2 mod 𝑛 thoả 𝐵-smooth. Tích một phần các giá trị tìm được có
khả năng dạng 𝑦 2 mod 𝑛 [3].
Lấy 𝑄 𝑥 = (𝑥 + 𝑛 )2 − 𝑛
1. Tính toá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, 𝑡 : 𝑝𝑖 < 𝐵 và
2

Với mỗi 𝑝𝑖 giải phương trình 𝑚 = 𝑛 (mod 𝑝𝑖 ) bằng thuật toán Shank-Tonelli lưu lại
𝑆𝑖1 = 𝑚 − 𝑛 ,
𝑆𝑖2 = −𝑚 − 𝑛
2. Sàng tìm tập 𝑈 gồm 𝑡 + 1 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à 𝐵-smooth và đưa 𝑄 𝑥 vào trong 𝑈
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 𝑄 𝑥𝑗 = 𝑣
4. Tính
𝑢=

𝑟
𝑗 =1 (𝑥

+

𝑛)

𝑣=

𝑟
𝑗 =1 𝑄

𝑛
𝑝𝑖

=1

𝑥𝑗


Kết quả rả về là gcd 𝑢 + 𝑣, 𝑛
Thuật toán 5. Thuật toán sàng bậc hai
Với thuật toán sàng bậc hai như trên thì ta thấy giá trị 𝑄(𝑥) tăng rất nhanh, do đó khả năng thoả 𝐵-smooth
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. Theo [4], chi
phí chuyển đổi đa thức chiếm khoảng 25%–30% tổng chi phí chương trình. 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ị 𝑎 được cố định trong nhiều đa thức và có giá trị bằng tích của
𝑘số nguyên tố lẻ thuộc cơ sở thừa số. Khi đó sẽ có 2𝑘−1 giá trị 𝑏 là nghiệm của 𝑏 2 = 𝑛 (mod 𝑎).
Phƣơng pháp sàng trƣờng số
Phương pháp sàng trường số trong bài viết này là phương pháp sàng trường số tổng quát (General Number
Field Sieve – GNFS), phân biệt với phương pháp sàng trường số đặc biệt (Special Number Field Sieve – SNFS).
Trong phương pháp sàng bậc hai, việc tìm 𝑥, 𝑦 sao cho 𝑥 2 ≡ 𝑦 2 (mod 𝑛) dựa trên một đồng cấu vành
𝑓: ℤ → ℤ/𝑛ℤ với 𝑓 𝑥 = 𝑥 2 − 𝑛, ánh xạ một bình phương trong ℤ tới một bình phương trong ℤ/𝑛ℤ. Tổng quát
hơn ta có tồn tại một vành ℛ và một đồng cấu vành 𝜙: ℛ → ℤ/𝑛ℤ. Nếu 𝛽 ∈ ℛ và 𝜙 𝛽 2 = 𝑦 2 (mod 𝑛) và
𝑥 = 𝜙 𝛽 (mod 𝑛) thì ta có:
𝑥 2 ≡ 𝜙 𝛽 2 ≡ 𝜙 𝛽 2 ≡ 𝑦 2 (mod 𝑛)
-

-

-

-

1. Chọn đa thức (Polynomial Selection)
Chọn số nguyên 𝑚, chọn đa thức bất khả quy 𝑓(𝑥) ∈ ℤ[𝑥] có bậc 𝑑 thoả 𝑓(𝑚) ≡ 0 (mod 𝑛). Gọi
𝜃 ∈ ℂ là một nghiệm của 𝑓(𝑥) = 0.

2. Khởi tạo cơ sở thừa số (Set up Factor Base)
Cơ sở thừa số RFB được lưu trữ là các cặp (𝑟, 𝑝) với 𝑝 nguyên tố và 𝑟 ≡ 𝑚 (mod 𝑝)
Cơ sở thừa số đại số AFBsẽ được lưu trữ là các cặp (𝑟, 𝑝) với 𝑝 nguyên tố và 𝑟 ∈ ℤ/nℤ sao
cho 𝑓 𝑟 ≡ 0 (mod 𝑝).
3. Sàng tuyến tính (Line Sieving)
Tìm một lượng cần thiết các cặp số nguyên (𝑎, 𝑏)nguyên tố cùng nhau sao cho các giá trị (𝑎 + 𝑏𝑚)
mịn trên RFB và 𝑁 𝑎 + 𝑏𝜃 mịn trên AFB.
4. Đại số tuyến tính (Linear Algebra)
Xây dựng ma trận trong đó mỗi cột của ma trận tương ứng với một số nguyên tố trong các cơ sở RFB,
AFB. Mỗi dòng tương ứng với một cặp (𝑎, 𝑏).
Giá trị các phần tử trong ma trận là số mũ của các thừa số nguyên tố trong cơ sở khi phân tích giá trị
(𝑎 + 𝑏𝑚), 𝑁(𝑎 + 𝑏𝜃). Áp dụng thuật toán Lanczos để tìm ra một quan hệ phụ thuộc tuyến tính trên
các dòng của ma trận.

ISBN: 978-604-82-1375-6

70


Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM

-

5. Tính căn bậc hai (Square Root)
Tính 𝑥 với 𝑥 2 ≡ 𝜙 𝑓 ′ 𝜃 2 . 𝑎,𝑏 ∈𝑇(𝑎 + 𝑏 𝜃) bằng thuật toán của Shanks - Tonelli và định lý số dư
Trung Hoa (Chinese Remainder Theorem – CRT)
Tính 𝑦 với 𝑦 2 ≡ 𝑓 ′ 𝑚 2 . 𝑎,𝑏 ∈𝑇(𝑎 + 𝑏 𝑚)
Thừa số của 𝑛 sẽ là: 𝑔𝑐𝑑(𝑥 ± 𝑦 , 𝑛)

Thuật toán 6. Thuật toán sàng trường số

Sàng trường số là thuật toán phân tích ra thừa số nguyên tố mạnh nhất hiện nay, nhưng được dùng để phân
tích các số rất lớn, nên việc cải tiến, tối ưu cài đặt là một yêu cầu bắt buộc. Trong phần tiếp theo sẽ trình bày một
số kỹ thuật được sử dụng trong quá trình hiện thực bước sàng, là bước có thời gian tính toán lớn nhất.
KỸ THUẬT TĂNG TỐC BƢỚC SÀNG TRÊN NỀN TÍNH TOÁN SONG SONG
Lattice Sieve
Hiện nay, trong bước sàng, Lattice Sieve (sàng lưới) được công nhận là phương pháp hiệu quả nhất. Các số
RSA được phân tích gần đây đều sử dụng phương pháp này [5].
Lattice Sieve được giới thiệu trong tài liệu [6], chia cơ sở thừa số thành 3 phần:
S : các số nguyên tố nhỏ
p ≤ B0
M : các số nguyên tố trung bình
B0 < 𝑝 ≤ B1
L : các số nguyên tố lớn
B1 < 𝑝 ≤ B2 (B2 lớn hơn B1 rất nhiều)
1. Chọn vùng 𝑅 các cặp (𝑎, 𝑏) được sàng
2. Với một số 𝑞 trong M, chỉ sàng những cặp (𝑎, 𝑏) trong 𝑅 với𝑎 + 𝑏𝑚 ≡ 0 (mod 𝑞)
˗ Sàng giá trị 𝑎 + 𝑏𝑚 với các số 𝑝 < 𝑞
˗ Sàng giá trị 𝑁(𝑎, 𝑏) với tất cả các số nguyên tố trong S và M
Thuật toán 7. Thuật toán Lattice Sieve
Các cặp (𝑎, 𝑏) thoả 𝑎 + 𝑏𝑚 ≡ 0 (mod 𝑞) sẽ tạo nên một lưới 𝐿𝑞 trong mặt phẳng(𝑎, 𝑏). Dễ dàng tìm được
hai vector cơ sở của lưới này là:
𝑉1 = (𝑎1 , 𝑏1 ) và 𝑉2 = (𝑎2 , 𝑏2 )
Khi đó một một điểm (𝑐, 𝑑) của lưới có dạng 𝑐 ∙ 𝑉1 + 𝑑 ∙ 𝑉2 tương ứng
𝑎, 𝑏 = (𝑐 ∙ 𝑎1 + 𝑑 ∙ 𝑎2 , 𝑐 ∙ 𝑏1 + 𝑑 ∙ 𝑏2 )
Phương pháp Lattice Sieve hiệu quả hơn phương pháp sàng tuyến tính (Line Sieving) do phương pháp sàng
tuyến tính dựa trên mảng một chiều để duyệt qua tất cả các giá trị của cặp (a, b) trong khi Lattice sieve sàng một
cách rất chủ động trên sàng hai chiều.
Tăng tốc sàng dựa trên tính toán song song
Bước sàng có thời gian thực thi rất lớn, nên việc hiện thực song song trên nhiều máy tính là cần thiết. Việc
song song đối với bước sàng có thể theo hai cách:

Cách 1: Nhiều máy tính sàng một giá trị 𝑞
Cách 2: Mỗi máy tính sàng một giá trị 𝑞
Với cách 1 thì các máy tính phải chia sẻ vùng nhớ, mỗi máy sẽ sàng một phần lưới 𝐿𝑞 tương ứng với kích
thước bộ nhớ L1-cache. Tuy nhiên với cách này thì việc quản lý phức tạp và thời gian trao đổi dữ liệu giữa các
máy lớn do đó rất ít khi được sử dụng.
Song song hoá bước sàng theo cách 2 hiệu quả hơn cách 1, và được sử dụng trong hầu hết các hệ thống
thực nghiệm. Với cách song song hoá này thì mỗi máy trạm (client) sẽ được giao sàng một số lượng thích hợp
giá trị 𝑞, sau khi sàng xong các số 𝑞 được giao, gửi kết quả cho máy chủ (master) và master sẽ tổng hợp các kết
quả sàng (Bảng 1). Nếu số lượng kết quả sàng chưa đủ thì master tiếp tục giao các giá trị 𝑞 cho các client.
Bảng 1. Mô hình sàng trên một máy và ba máy
Số máy
𝑞 cần sàng

[𝑞0 , 𝑞1 ]

Thời gian
sàng

𝑡

ISBN: 978-604-82-1375-6

[𝑞0 ,

𝑞1
3

]

𝑞1 𝑞1∗2


[ ,
3

3



]

𝑞1∗2

[

3

, 𝑞1 ]

𝑡
3

71


Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Thực nghiệm song song bằng chương trình mã nguồn mở MSIEVE và GGNFS với 32 core CPU 2.20GHz,
hệ điều hành Linux 64 bit với các trường hợp như trong Bảng 2 được kết quả về mặt thời gian thực thi và dung
lượng lưu trữ như trong Hình 1 và Hình 2.
Bảng 2. Các trường hợp thực nghiệm phân tích ra thừa số nguyên tố
Số kí tự của 𝑛 = 𝑝 × 𝑞


Số kí tự của 𝑝

Số kí tự của 𝑞

100

45

55

105

47

58

110

50

60

115

53

62

120


56

64

126

51

76

129 (RSA-129)

64

65

giờ
6
5
Tổng
thời
gian

4
3

Thời
gian
sàng


2
1
0
95

100

105

110

115

120

125

130

135

số kí tự của n

Hình 1. So sánh thời gian phân tích ra thừa số theo độ lớn của n

ISBN: 978-604-82-1375-6

72



Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
MB
5000
4500
4000
3500
Dung
lượng
lưu trữ

3000
2500
2000
1500
1000
500

số kí tự của n

0
95

100

105

110

115


120

125

130

135

Hình 2. So sánh dung lượng lưu trữ trong phân tích thừa số theo độ lớn của n
KẾT LUẬN
Kết quả thực nghiệm ta thấy thời gian của bước sàng chiếm phần lớn thời gian phân tích và tăng nhanh khi
kích thước n tăng lên. Với số RSA-129, có 129 kí tự thập phân (426 bit), hệ thống 32 core đã phải phân tích
trong 5.11 giờ, thời gian sàng là 4.16 giờ và dung lượng đĩa cứng cần thiết là 4.5GB. Do đó để thực hiện với các
số lớn hơn nhiều thì cần phải song song hoá với những hệ thống có số lượng máy lớn hơn rất nhiều. Và với các
số RSA-1024 thì hệ thống mã hoá khoá công khai RSA vẫn an toàn.
Việc song song trên các máy trạm làm cho tốc độ tính toán tăng lên. Tuy nhiên vẫn có thể làm tăng hơn
nữa tốc độ tính toán bằng cách tận dụng thêm sức mạnh của GPU. Do đó hướng phát triển là chúng ta cần cài đặt
thư viện tương tự GMP trên GPU, sau đó song song hoá thuật toán sàng trường số trên GPU để tăng hiệu quả
thực hiện.

INTEGER FACTORIZATION TECHNIQUE BASED ON PARALLEL COMPUTING
Vu Anh Tuan1, Nguyen Cao Đat2
1

Tay Nguyen University
University of Technology, VNU-HCM

2


ABSTRACT
RSA Public-Key Cryptography Standard is described more than 35 years ago, but it is still
secure. Because it is based on Prime Factorization Problem (PFP). This paper will survey some
methods for this problem and implement parallel computing the Number Field Sieve Algorithm.
Key words: prime factorization, parallel computin, number filed sieve.
TÀI LIỆU THAM KHẢO
[1] Menezes, P.V. Oorschot and S.Vanstone, Handbook of Applied Cryptography, CRC Press, Florida, 1997,
pp. 286 90-94 .
[2] H.W. Lenstra Jr, Factoring integers with elliptic curves, The Annals of Mathematics 126(1987) 649-673.
[3] J. Buchmann,V. Muller, Algorithms for Factoring Integers, Technische Universität Darmstadt, Darmstadt,
2005, pp. 40.
[4] S.Contini, Factoring Large Integers with the Self-Initializing Quadratic Sieve, Master Thesis, University of
Georgia, Georgia, 1997, pp.6-9.
[5] Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen K. Lenstra, Emmanuel Thomé, Joppe W. Bos,
Pierrick Gaudry, Alexander Kruppa, Peter L. Montgomery, Dag Arne Osvik, Herman te Riele, Andrey
Timofeev, Paul Zimmermann, Factorization of a 768-Bit RSA Modulus, Advances in
Cryptology6223(2010) 333-350.
[6] J. M. Pollard, The lattice sieve, Lecture Notes in Mathematics 1554(1993) 43-49.

ISBN: 978-604-82-1375-6

73



×