Chọn số lượng đủ lớn biểu thức (5.3), giải hệ phương trình tuyến tính thu được ứng với các ẩn log a q -logarith rời rạc của phần tử của cơ sở nhân tử.. Tầng 4.[r]
(1)Chương 5
NHỮNG THUẬT TOÁN LOGARITH RỜI RẠC 5.1 Mở đầu Phương pháp đơn định
Cho G nhóm nhân Abel, a , b∈G Bài tốn tìm kiếm nghiệm phương trình ax=b
gọi tốn logarith rời rạc nhóm G Nghiệm x phương trình gọi logarith rời rạc số a b, ký hiệu logab , số a cố định nghiệm
phương trình tồn tại; logab∈Z|G| , ¿G∨¿∞
Bài toán logarithm rời rạc có vai trị lớn ứng dụng mật mã Đặc biệt quan trọng trường hợp Gq¿❑
=F¿ , với q=p
l , p số nguyên tố, l∈N , tức trong
trường Galois, trường hợp G nhóm điểm đường cong Elliptic trường hữu hạn
Chúng ta xem phương trình
ax≡ b(modp) (5.1)
trong nhóm Zp❑ , với p số nguyên tố Chúng ta giả sử bậc a(modp)
p-1 Khi phương trình giải được, nghiệm x phần tử Zp −1 Trong phần miêu tả phương pháp đơn định để xác định nghiệm (5.1)
Nếu với giúp đỡ phương pháp chọn giải phương trình (5.1) cần O(p) lệnh số học
Nghiệm logab phương trình (5.1) tìm theo công thức sau 1− aj
¿−1bj(modp −1)
¿
logab ≡∑
❑ ❑
¿
,
thế độ phức tạp tính theo cơng thức thi tồi cách lựa chọn
Thuật tốn giải phương trình (5.1) có độ phức tạp O(p1/2logp) lệnh số học
(2)Bước Lập bảng giá trị cu(modp
),1≤u ≤ H , xếp Bước 4. Lập bảng giá trị b.av
(modp),0≤ v ≤ H , xếp
Bước 5. Tìm trùng phần tử từ bảng thứ va bảng thứ hai Để làm điều cu≡ b.av(modp) ,
từ aHu− v≡b(modp)
Bước 6. Đưa giá trị x ≡Hu− v(modp −1) Kết thúc thuật toán.
Chúng ta chứng minh đắn thuật toán Bất kỳ số nguyên x, 0≤ x ≤ p −2 , biểu diễn dạng x ≡Hu− v(modp −1) , 1≤ u ≤ H ,0≤ v ≤ H , rõ ràng tập số H,H-1,H-2,…,H-H, 2H, 2H-1,…, H2 , H2−1 ,…, H2− H chứa tập số 0,1,…,p-2, H2
>p Từ dẫn đến đắn thuật toán Đánh giá độ phức tạp thuật toán rõ ràng đúng, tập từ N phần tử xếp cần O(NlogN) lệnh số học
5.2 Thuật toán Pohlig-Xellman
Bây giả sử biết phân tích thành nhân tử p-1 thừa số
p−1=∏
i=1
s
qiαi
Lúc phương trình (5.1) giải cần log
αi(¿p+qi)
∑
i=1
s
¿
O¿
lệnh số học với giúp đỡ
thuật toán sau
Thuật toán Pohlig-Xellman
Bản chất thuật tốn nằm chổ, tìm số lượng đủ lớn phương trình x theo modulo qiαi với tất i, sau tìm nghiệm phương trình ban đầu định lý phần dư trung hoa Để tìm x theo modulo thế, phải giải đồng dư thức
a
p −1
qi αi
¿x(a
p −1
qi αi
)(modp)
¿
Phương trình giải với độ phức tạp thời gian đa thức trường hợp qi khơng q lớn (có nghĩa không vượt qúa logp¿c
¿ , c số đó)
(3)p−1¿/q
¿
j¿
rq , j≡ a¿
, j=0, , q −1
Bước 2. Đối với số nguyên tố q, qα∨¿p −1 , tìm logab(modqα)
Đặt
x ≡logab(modqα)≡ x0+x1q+ +xα −1qα −1(modqα) , với 0≤ xi≤q −1 Lúc từ
(5.1) dẫn đến
p−1¿/q
¿
p−1¿/q
¿
x0¿ ¿
b¿
Với giúp đỡ bảng bước tìm x0 .Lúc rõ ràng ta có p−1¿/q2
¿
p −1¿/q
¿
x1¿ ¿
ba− x0¿¿ ¿
Theo bảng bước ta tìm giá trị x1 tiếp tục Giá trị xi
được tìm thấy từ phương trình
p −1¿/qi+1
¿
p −1¿/q
¿
xi¿ ¿
ba− x0− x1q − − xi−1qi −1
¿¿ ¿
Bước 3. Khi tìm logab(modqiαi
), i=1, ., s , tìm logab(modp −1) theo
định lý phần dư trung hoa Kết thúc thuật toán
Chúng ta chứng minh đánh giá độ phức tạp thuật toán Tập phần tử
p−1¿/qi
¿ ¿
a¿
cần ∑
i=1
s
O(logp) lệnh số học Sau tập rqi,j tất q
(4)∑
i=1
s
O(qi) lệnh số học Để tìm giá trị xi bước cần nâng bậc(có nghĩa tìm
axi−1q
i −1
), tìm phần tử nghịch đảo,nhân, nâng bậc tiến hành theo bảng Tất kết hợp lại độ phức tạp thuật toán nêu
Chú ý Thuật tốn Polug-Xellman có độ phức tạp đa thức (logOp¿c1)
¿ trường
hợp tất ước nguyên tố qi của p không vượt logp¿c2
¿ , c1, c2
hằng số dương
5.3 Phương pháp ρ - Pollaid logarithm rời rạc
Chúng ta tìm hiểu phương pháp ρ - Pollaird nhân tử hóa số ngun Bây tìm hiểu tốn logarithm rời rạc theo modulo số nguyên tố p Chúng ta muốn giải phương trình ax≡ b(modp) Để làm việc xem dãy số
{ui},{vi},{zi} , i=0,1,2, .,
Được xác định sau: u0=v0=0 , z0=1 ,
ui+1≡ui+1(modp −1) , 0<zi<p/3 ;
ui+1≡2ui(modp −1) , p/3<zi<2/3p ;
ui+1≡ui(modp −1) , 2/3p<zi<p ;
vi+1≡ vi(modp −1) , 0<zi<p/3 ;
vi+1≡2vi(modp −1) , p/3<zi<2/3p ;
vi+1≡ vi+1(modp−1) , 2/3p<zi<p ;
zi+1≡ bui+1avi+1
(modp −1)
Tiếp theo xem tập hợp (zi, ui, vi, z2i,u2i, v2i) , i=1,2,3, ., tìm vị
trí i, cho zi=z2i Từ đẳng thức cuối ta rút bu2i− ui≡ avi− v2i(modp
)
Nếu gcd(u2i− ui, p −1)=1 , l∈Z , l(u2i−ui)≡1(modp −1) thu
được
b ≡ al(vi−v2i)(modp ) , từ giá trị x cần tìm logab ≡l(vi− v2i)(modp −1)
5.4 Logarith rời rạc trường nguyên tố
(5)ở p số nguyên tố Thuật tốn có độ phức tạp Lp[1
2; c] với số giá trị số c Chúng ta cho a(modp) có bậc p-1
Thuật tốn Adleman
Tầng 1 Hình thành sở nhân tử, bao gồm tất số nguyên tố q, q ≤ B=econst√logploglogp
Tầng 2 Bằng cách chọn lựa tìm số tự nhiên ri cho ari≡
∏
q ≤ B
qαiq
(modp) , q số nguyên tố Từ dẫn đến
ri≡∑
q ≤ B
αiqlogaq(modp −1) (5.3), q số nguyên tố
Tầng 3 Chọn số lượng đủ lớn biểu thức (5.3), giải hệ phương trình tuyến tính thu ứng với ẩn logaq -logarith rời rạc phần tử sở nhân tử.
Tầng 4 Bằng cách lựa chọn tìm giá trị r, cho ar⋅b ≡∏
q ≤B
qβq⋅p
1 pk(modp) ,
ở p1, , pk - số nguyên tố với độ lớn “trung bình”, có nghĩa B<pi<B1 , với B1=econst√logploglogp
Tầng 5 Bằng cách tính tốn tương tự tầng thuật tốn, tìm logarithm rời rạc logapi đối với số nguyên tố p1, , pk tầng 4.
Tầng 6 Xác định giá trị cần tìm logab : logab ≡− r+∑
q ≤ B
βqlogaq+∑
i=1
k
logapi(modp −1) Kết thúc thuật toán.
Thuật toán COS Tầng 1 Đặt
H:=[P1/2]+1, J:=H2− p>0, L
=e√logploglogp,0<ε<1 Hình thành tập hợp
{q∨q<L1/2}∪{H+c∨0<c<L1/2+ε} , q số nguyên tố
Tầng 2 Bằng cách sàng tìm cặp c1, c2 sao cho 0<ci<L1/2+ε , i=1,2
(H+c1)(H+c2)≡ ∏
q ≤ L1/2
(6)(H+c1)(H+c2)≡ J+(c1+c2)H+c1c2(modp)
Logarith theo số a thu biểu thức sau
loga(H+c1)+loga(H+c2)≡ ∑
q ≤ L1/2
αq(c1, c2)logaq(modp −1) a tính theo cơng thức
a ≡∏
q ≤ L1/2
qβq(modp ) Từ
1≡ ∑
q ≤ L1/2
βqlogaq(modp −1)
Tầng 3 Trên tầng tìm số lượng đủ lớn phương trình, giải hệ phương trình tuyến tính thu tìm loga(H+c),logaq
Tầng 4 Để tìm x, đưa giới hạn L2 Bằng cách chọn ngẫu nhiên,chúng ta tìm giá trị w, thỏa mãn biểu thức
awb ≡
∏
q<L1/2
qgq ∏
L1/2 ≤ u<L2
uhu(modp
) ,q,u số nguyên tố
Trong biểu thức với có mặt số nguyên tố u có độ lớn “trung binh” Tầng 5 Bằng cách tương tự tầng tìm logarithm số số nguyên tố u, u xuất tầng
Tầng 6 Chúng ta tìm đáp số x=logab ≡− w+∑
q<L1/2
gqlogaq+ ∑
L1/2 ≤u<L2
hulogau(mod p−1) Thuật tốn có độ phức tạp làO(exp((logploglogp)1 / 2)) lệnh số học.
Thuật toán LOGsmooth
Giả sử q số nguyên tố, ước p-1 Khi tập nghiệm phương trình x 'q=1
trong trường Zp gồm phần tử 1, c , c2, , cq −1 , với
c ≡ a
p −1
q
(modp) Nếu cho
số d biết thỏa mãn điều kiện phương trình x 'q=1 , lựa chọn số t
cho d=ct,0≤ t ≤ q −1
Giả sử p−1=qkl , với q l nguyên tố Chúng ta tìm số
ui,i=0,1, , k , mà chúng thỏa mãn
ba− ui
¿lq
k −i
1(modp)
¿ (5.4)
Khi i=k có đồng dư
ba− uk
¿l1(modp)
(7)Từ (5.2) tương đương
x −uk
¿ ¿
a¿
¿
Bởi ord(a)=p-1, nên đẳng thức cuối cho ta (x − uk)l chia hết cho p-1, có nghĩa
x ≡uk(modqk)
Chúng ta tìm đồng dư thức ước q 1, tìm x (mod p-1) định lý phần dư trung hoa
Vấn đề cịn lại tìm ui để thỏa mãn phương trình (5.4) Chúng ta đặt
u0=1 Nếu số ui tìm được, từ (5.4) dẫn đến ba− ui
¿lq
k −i −1
¿ thỏa mãn phương
trình x 'q=1(modp
) Lúc tìm t cho
ba− ui
¿lq
k −i −1
ct
(modp)
¿
Chúng ta đặt ui+1=ui+tq
i
Lúc
ba− ui+1
¿lq
k− i−1
cta−tlqk−11(modp)
¿
Như điều có nghĩa thỏa mãn (5.4)
Nhờ mà tìm uk cách thực theo sơ đồ: ba
− ui
¿lq
k −i −1
(modp) u0=1,ri≡¿ ,
ti=logcri, ui+1=ui+tiqi
Chúng ta xem ví dụ sau
Tìm số n cho 2x≡74(mod 163)
Ở a=2,b=74,p=163, p−1=2 34
Đặt q=3 Khi k=4 l=2 Ngoài c ≡2p −31=254≡104(mod 163) ,chúng ta biểu
diễn thuật tốn qua bảng sau
i
ri 58 104
ti
ui+1 7 34
(8)Bây chọn q=2 Lúc k=1,l=81 c ≡2p −21≡ −1(mod163) Tương tự ta lập bảng
i
ri -1
ti
ui+1
Từ có x ≡2(mod 2) (5.6)
Từ (5.5) (5.6) suy x ≡34(mod162)
5.5 Logarith rời rạc trường Galois
Cố định số nguyên tố p, số tự nhiên n>1, đặt q=pn Giả sử a phần tử sinh nhóm cyclic qF¿❑
¿ Chúng ta muốn giải phương trình
ax
=b trường F(q) Để làm điều sử dụng thuật toán với sở nhân tử Chúng ta xem thuật toán index-calculus sau
Ý tưởng thuật toán , từ đẳng thức ∏
i=1
m
xi=∏ j=1
n
yj
Với phần tử xi, yj nằm trường hữu hạn Zp , thì ∑
i=1
m
logaxi≡∑
j=1
n
logayj(modp −1) (5.7)
Khi nhận số lượng đủ lớn biểu thức (5.7)( điều kiện phải có phần tử g, mà logag biết), giải hệ phương trình tuyến tính với ẩn logaxi logayj trong vành Zp −1 với điều kiện số lượng ẩn hệ không lớn
Phương pháp đơn giản để tạo biểu thức (5.7) – chọn phần tử g∈Zp , tính u=ag(modp) cách lựa chọn thử tìm số thỏa mãn điều kiện sau
u=∏ pi
Từ ý tưởng ta có thuật tốn cụ thể sau: Thuật toán index-calculus
(9)vậy rút gọn theo modulo f(y), điều tìm hiểu chương trường số Phần tử q −1¿/(¿¿p −1)
a1=a¿ có bậc p-1 tạo thành p¿❑
F¿ Với hổ trợ lập
bảng logarithm “hằng số”- có nghĩa phần tử trường nguyên tố F(p)⊆F(q) Chúng ta tính a10=1,a1, a12, , a1p −2
Tầng 2 (Lựa chọn sở nhân tử) Cơ sở nhân tử B⊆F(q) thành lập từ tất đa thức bất khả quy g bật không lớn t, t số tham số, t<n
Tầng 3 (Tìm biểu thức) Lựa chọn ngẫu nhiên m, 1≤ m≤ q −2 , tìm giá trị cho thỏa mãn biểu thức
am≡ c
0∏
g∈B
gαg(m)
(modf(y)) , Với c0∈F(p) , từ tìm biểu thức
m≡logac0+∑
g∈B
αa(m)logag(modq −1) ,
ở logac0 chúng ta biết, logag chưa biết độ lớn.
Tầng 4 (tìm thuật toán cho phần tử sở nhân tử) Khi tìm tầng với số lượng đủ lớn biểu thức (lớn |B|), giải hệ phương trình tuyến tính vành Zq −1 tìm logag với g∈B
Tầng 5 (Tìm logarith riêng) Chúng ta tìm giá trị m cho modf(x)
gβg (¿) b⋅am≡ c1∏
g∈B
¿
, c1∈F(p) Từ tìm giá trị cần tìm
logab ≡− m+logac1+∑
g∈B
βqlogag(modq −1)