Chương 1 TỔNG QUAN VỀ THUẬT TOÁN MÃ HOÁ
3.3 Nghiên cứu, đề xuất xây dựng thuật toán hiệu quả nhân nhanh đa thức
3.3.2 Biểu diễn các phần tử trường và phép nhân nhanh trong vành đa thức
Trong phần này sẽ trình bày ngắn gọn về phương pháp tối giản Montgomerỵ Bổ đề 3.1 sau đây là cơ sở cho phương pháp tối giản Montgomery [64]:
Bổ đề 3.1 Cho a, b, M, R là các số nguyên sao cho gcd(M, R) = 1, a, b<M<R, q M 1mod R, và t1 = a • b t2 = t1 mod R t3= t2 • q t4 = t3 mod R t5 = t4•M t = (t1 + t5)/R.
Khi đó, một trong những phương trình sau đây là đúng:
abR-1 mod M = t hoặc abR-1 mod M = t - M
Trong thực tế, số M thường là số lẻ, và R là lũy thừa của số 2. Điều này có nghĩa việc tính X mod R và X div Rchỉ là lấy w số lượng bit thấp của X và dịch X sang phải w bit với wlà số mũ của R. Thực tế rút gọn Montgomery [64] cho phép thực hiện tính tốn hiệu quả trên vành ℤ/Mℤ.
Định lý 3.1 Cho M và R là các số nguyên dương. Nếu gcd(M, R) = 1,M
< R và vành
R1= <{0,1 ,. . . M - 1}, 0, 1, + , − , • >,
R2 = <{0,1, . . . , M-1}, 0, R mod M, + , - , ⊙ >
và được định nghĩa như sau:
a ± b = a ± b mod M
a • b = ab mod M
a ⊙ b = abR-1 mod M,
thì R1 và R2 đẳng cấu cùng nhau
Chứng minh: Chúng ta định nghĩa biến đổi h: R1 → R2 như sau:
Vì M và R nguyên tố cùng nhau, luôn tồn tại q M1modR. Điều này
có nghĩa là h trong thực tế là một song ánh. Để hoàn thành chứng minh chúng ta phải chỉ ra rằng biến đổi h là một đồng cấu:
1. h 0 0, 1 h Rmod ,M
2. h a b a b R modM aR bR modM h a h b , 3. h a b . abRmodM aRbR R 1modM h a h b .
Điều này đã được chứng minh.
Giả thiết rằng: n là một số lũy thừa của 2 và lớn hơn bậc tối đa của đa thức muốn nhân. Giả định rằng giá trị tuyệt đối các hệ số của đa thức nhỏ hơn B.
Định nghĩa 3.13: cho 1
1 1 0
( ) n ...
n
f X f X f X f X vàM . Chúng ta định nghĩa f(X) mod M như sau:
f(X) mod M = (fn-1 mod M)Xn−1+ • • • + (f0 mod M),
Trong đó mod 1,..., 1,0,1,..., 1 , 2 2 i M M f M với i từ 0 đến n-1
Nếu lựa chọn được một số hợp lý M thì nhân hai đa thức trong vành
(ℤ/Mℤ)[X] cho cùng kết quả như nhân chính các đa thức đó cùng trong vành
ℤ[X]. Bổ đề sau chỉ ra cách chọn số M để đạt được kết quả nàỵ
Bổ đề 3.2 Cho 1 1 n ... 1 0 n f X f X f X f , 1 1 n ... 1 0 n g X g X g X g
là các đa thức có hệ số nguyên, sao cho fi B và gi B| với i0,1,...,n1. Nếu số nguyên M thỏa mãn điều kiện: 2nB2<M Thì f (X)g(X) mod M = f(X)g(X)
Chứng minh: Nếu ( ) ( ) ( ) 2 2 2 2n ... 1 0
n
1 1 1 1 1 1 1 0 0 0 0 1 0 n n n i n n i i j i n i i j j i j i j n j i j i j i j h X f X g X f g X f g X 1 1 1 1 1 1 0 0 0 0 n n n n i i n i j i j i j n j i i i j X f g X f g Bởi vì | fi | < B và | gi | < B nên chúng ta có 1 1 2 2 1 1 0 0 0 1. i n i i j n j n i i j n j i ( 1) j j j h f g f g B i B với i từ 0 đến n-1. 1 1 2 2 1 0 1 0 1 0 2. n i n i i j n j n i i j n j i ( ) j j j h f g f g B n i B với i từ 0 đến n-1.
Điều đó có nghĩa là |hi|<nB2 với mọi i từ 0 đến 2n - 2. Nếu M>2nB2 thì tất cả các hệ số (được mô tả trong định lý 3.1) của các đa thức f(X), g(X) và
h(X) được biểu diễn trong vành là phần dư theo module M mà khơng cần rút
gọn. Điều đó suy ra phương trình f(X) g(X) mod M = f(X) g(X).
Định lý 3.2
Cho 1 1
1 n ... 1 0, 1 n ... 1 0
n n
f X f X f X f g X g X g X g là các
đa thức có hệ số nguyên, sao cho |fi| <B và |gi| <B|. Nếu số nguyên tố p thỏa
mãn các điều kiện sau:
(1) 2nB2<p, (2) 2m 1
p r với 2m 2
n
và r ∈ ℤ, thì
f(X)g(X) = f(X)g(X) mod p = (f(X) mod p)(g(X) mod p) mod p
và trường 𝔽p có thể sử dụng để nhân đa thức f và g bằng cách sử dụng
thuật tốn FFT.
Chứng minh: Bởi vì tốn tử mod p đồng cấu tự nhiên của vành ℤ, nên
(f(X) mod p)(g(X) mod p) mod p = f(X)g(X) mod p
Trên cơ sở của Bổ đề 3.2 chúng ta có được đẳng thức
Như vậy, việc nhân các đa thức f (X), g (X) ∈ℤ[X] cho cùng kết quả như
phép nhân đa thức f(X) mod p, g(X) mod p ∈𝔽p[X] với điều kiện các phần tử
của trường 𝔽p[X] được biểu diễn bằng các số 1,..., 1,0,1,..., 1 .
2 2 p p Số nguyên tố có dạng 2m 1 1
p r được chọn khi sử dụng thuật toán FFT, do thực tế là với một số p xác định, trường 𝔽p có căn nguyên thủy bậc
1
2m của đơn vị.
Áp dụng biến đổi Fourier nhanh trên trường hữu hạn thay vì trên trường số phức cho phép loại bỏ các phép toán dài, phức tạp trên số dấu phẩy động và thay bằng các phép tính nhanh trên số nguyên. Điều này cho phép xây dựng một thuật tốn nhanh hơn, bởi vì trên bộ vi xử lý Intel Core 2 thì thực hiện phép nhân các số nguyên khoảng 30 lần nhanh hơn so với thực hiện phép nhân trên số dấu phẩy động. Trường hữu hạn được đề xuất sử dụng vì hai lý do:
1. Tối đa hóa tốc độ của thuật tốn,
2. Loại bỏ lỗi làm trịn, được đặc trưng bởi các phép tốn trên các số dấu phẩy động.
Tất nhiên, ở đây phát sinh câu hỏi về các điều kiện cần phải thỏa mãn sao cho việc thực hiện các thuật toán nhân đa thức nhanh nhất. Để trả lời câu hỏi này, cần lưu ý rằng phép tốn chính được thực hiện khi nhân đa thức là phép nhân trong trường hữu hạn 𝔽p. Gồm phép nhân các số nguyên và rút gọn
theo module. Tối ưu hóa việc rút gọn theo module cho kết quả tốt nhất về tốc độ thuật tốn nhân đa thức. Thơng thường, bài tốn quy về theo module được giải quyết bằng một trong ba cách:
(a) Tìm một số nguyên tố p, sao cho phép toán rút gọn theo module dẫn đến thực hiện một số phép cộng và phép trừ. Thực tế là có rất nhiều số ngun tố như vậỵ Ví dụ: 2224- 296 + 1 = 296(2128 - 1) + 1 hoặc 2512 - 232 + 1 = 232(2480 - 1) + 1.
(b) Một phương pháp tối ưu hóa khác phép rút gọn theo module là sử dụng thuật toán rút gọn Montgomery [64]. Phương pháp này tổng quát hơn và có thể áp dụng cho bất kỳ số nguyên tố nào khác 2.
(c) Cuối cùng, có thể sử dụng thuật tốn cổ điển để tính tốn tỉ số và phần dư của phép chia, nhược điểm của phương pháp này là rất khó thực hiện một cách hiệu quả [64].
Phương pháp đề xuất trong (a) cho phép tính tích các phần tử phần tử trường hữu hạn chỉ sử dụng một phép nhân số nguyên và chắc chắn là nhanh nhất trong số các phép tính được đề xuất. Các số nguyên tố dạng đặc biệt này có vai trị quan trọng trong mật mã và thường được sử dụng trong các thuật toán dựa trên đường cong elliptic (FIPS 186-3 và ANSI X509.62).
Việc nhân các đa thức bao gồm các phép toán sau: Thực hiện biến đổi Fourier, nhân các vectơ thu được và thực hiện phép biến đổi Fourier nghịch đảọ Trong tất cả các phép toán này tốn kém nhất là phép nhân trong trường 𝔽p.
Do đó, chúng ta đánh giá độ phức tạp của thuật toán dựa trên số phép nhân cần thiết theo modulep.
Định lý 3.3 Cho trước hai đa thức có bậc nhỏ hơn n, trong đó, giá trị tuyệt đối của từng hệ số nhỏ hơn B. Nếu số nguyên tố p thỏa mãn các điều kiện của Định lý 3.2, việc nhân các đa thức trên bằng cách sử dụng thuật toán FFT cần thực hiện n(2 + 3log(n)) phép nhân trong trường hữu hạn 𝔽p.
Chứng minh: Một phép nhân FFT (đơn) riêng biệt gồm ba bước sau: 1. Biến đổi Fourier của hai đa thức có bậc bé hơn n địi hỏi 2nlog(n) phép nhân trong trường 𝔽p (chúng ta biến đổi mỗi một đa thức thành một véc tơ có
2n hệ số).
2. Nhân các tọa độ tương ứng của hai véc tơ với 2n hệ số yêu cầu n2 phép nhân trong 𝔽p.
3. Biến đổi Fourier ngược của vector với 2n hệ số đòi hỏi n log (n) phép nhân trong 𝔽p.
Điều này có nghĩa là một phép nhân đơn hai đa thức sử dụng thuật tốn FFT cần có n(2+3log (n)) phép nhân trong trường 𝔽p, Điều cần chứng minh.
Các thuật tốn nhân được đề xuất có thể sử dụng để tính tốn biến đổi ngược trên vành các chuỗi lũy thừa với các hệ số nguyên. Một chuỗi như vậy có thể đảo ngược khi và chỉ khi hệ số của nó có số mũ thấp nhất bằng 1 hoặc - 1. Sử dụng phương pháp lặp Newton cho các vành (pađed ring) cho phép chúng ta nhanh chóng xác định nghịch đảo của chuỗị Phương pháp Newton tính tốn nghịch đảo nhanh vì chỉ sử dụng phép nhân, phép cộng và trừ chuỗị Để biến đổi ngược chuỗi có n hệ số chúng ta phải thực hiện log n phép lặp. Nếu chuỗi lũy thừa có tính nghịch đảo có dạng:
1 0 , n k j j j A X a X (3.13) thì giao thức sau cho phép tìm nghịch đảo của nó với n hệ số:
Data: Chuỗi lũy thừaA Xk n 10a X j j j
;
Result: chuỗi lũy thừa I thỏa mãn . mod n 1
A I X ; Begin 0; m 0 1 I a ; While 2m < n do 2 2 0 2 m j mod n; j j I I I a X X 1; mm End; ; k I X I Return I; End.
Thuật toán 1. Đảo ngược chuỗi lũy thừa bằng cách sử dụng phương pháp lặp Newton