Các thuật toán Pohlig-Hellman

Một phần của tài liệu (LUẬN văn THẠC sĩ) lý thuyết vành trong máy tính (Trang 57 - 62)

Nếu m = m1 ·m2· · ·mt là tích của các cặp số nguyên tố cùng nhau, thì định lý thặng dư Trung Hoa nói rằng việc giải quyết một phương trình môđun m là tương đương với việc giải phương trình môđunmi với mỗii, vì định lý cho chúng ta biết làm thế nào để đan các nghiệm với nhau để có được một nghiệm môđunm.

Trong các bài toán logarit rời rạc (DLP), chúng ta cần phải giải quyết các phương trình

gx ≡h (mod p).

Trong trường hợp này, các môđun p là số nguyên tố, điều đó cho thấy lý thặng dư Trung Hoa là không thích hợp. Tuy nhiên, nhớ lại rằng các nghiệmxchỉ xác định theo môđun p−1, do đó chúng ta có thể xét các nghiệm tồn tại trong Z/(p−1)Z. Điều

này gợi ý phân tíchp−1 thành tích các số nguyên tố đóng vai trò trong việc xác định sự khó khăn của DLP trong F∗p. Tổng quát hơn, nếu G là một nhóm bất kỳ vàg ∈G

một phần tử cấp N, thì nghiệm của gx =h trong G chỉ xác định môđun N. Ý tưởng này là cốt lõi của thuật toán Pohlig-Hellman.

Như trong phần 2.7 chúng ta đã chứng minh kết quả trong phần này cho một nhóm Gtùy ý. Chúng ta cũng có thể thay thế G bởiF∗p.

Định lý 2.8.1. (Thuật toán Pohling-Hellman). Cho G là một nhóm, và giả sử chúng ta có một thuật toán để giải quyết bài toán logarit rời rạc trong G cho phần tử bất kỳ mà cấp là lũy thừa của một số nguyên tố. Cụ thể, nếu g ∈ G có cấp qe, chúng ta có thể giải quyết gx = h trong O(Sqe) bước. (Ví dụ, mệnh đề 2.7.2 nói rằng chúng ta có thể mất Sqe là qe/2.)

Bây giờ cho g ∈G là một phần tử cấp N, và giả sử rằngN phân tích thành tích lũy thừa các số nguyên tố như là

N =qe1

1 ·qe2

2 · · ·qet

t .

Thì bài toán logarit rời rạc gx =h có thể giải quyết trong

O(Pt i=1Sqei

i + logN) bước sử dụng các tính chất sau đây:

(1) Với mỗi 1≤i≤t, cho

gi =gN/qeii và hi =hN/qiei.

Chú ý rằng gi có lũy thừa nguyên tố cấp qei

i , vì vậy sử dụng thuật toán để giải quyết các bài toán logarit rời rạc

giy =hi.

Cho y=yi là nghiệm của gyi =hi.

(2) Sử dụng định lý thặng dư Trung Hoa để giải quyết

x≡y1 (mod qe1

1 ), x≡y2 (mod qe2

2 ),· · · , x≡yt (mod qet

t ).

Chứng minh. Bước (1) mất O(PSqei

i ) bước, và bước (2) thông qua định lý thặng dư Trung Hoa, mấtO(logN)bước. Thực tế, định lý thặng dư Trung Hoa tính toán thường không đáng kể so với các tính toán logarit rời rạc.

Định lý vẫn chỉ ra bước (1) và (2) đưa ra một nghiệm cho gx =h.Cho x là một nghiệm của hệ thống quan hệ đồng dư

x≡y1 (mod qe1

1 ), x≡y2 (mod qe2

2 ),· · · , x≡yt (mod qet

t ).

Thì với mỗi i chúng ta có thể viết

x=yi+qei

với mọt số i.Điều này cho phép chúng ta tính (gx)N/qeii = (gyi+qeii zi)N/qeii vì x=yi+qei i zi, = (gN/qeii )yi ·gN zi, = (gN/qeii )yi vì gN là phần tử đơn vị, =gyi i từ định nghĩa củagi, =hi vì giy =hi =hN/qeii vì định nghĩa của hi.

Trong điều kiện của logarit rời rạc cơ sở g, chúng ta có thể viết lại như là

N qei i ·x≡ N qei i ·logg(h) (mod N),

Logarit rời rạc cơ sở g chỉ xác định môđunN, vì gN là phần tử đơn vị. Tiếp theo, chúng ta nhận thấy rằng các số

N qe1 1 , N qe2 2 ,· · · , N qet t

không có ước chung tầm thường, tức là, ước chung lớn nhất của chúng bằng 1.Lặp đi lặp lại ứng dụng của định lý Euclid mở rộng, chúng ta có thể tìm số nguyênc1, c2,· · · , ct

sao cho N qe1 1 ·c1+ N qe2 2 ·c2+· · ·+ N qet t ·ct= 1.

Bây giờ nhân cả hai vế vớici với i= 1,2,· · · , t. Điều này cho phép

t X i=1 N qei i ·ci·x≡ t X i=1 N qei i ·ci·logg(h) (mod N), và từ N qe1 1 ·c1+ N qe2 2 ·c2+· · ·+qNet t ·ct = 1 ta thấy x= logg(h) (mod N).

Điều này hoàn thành chứng minh rằngx thỏa mãn gx ≡h.

Nhận xét 2.8.2. Các thuật toán Pohlig-Hellman cho chúng ta biết các bài toán logarit rời rạc trong một nhómGkhông an toàn nếu cấp của nhóm Gnày là tích của lũy thừa của các số nguyên tố nhỏ. Tổng quát hơn,gx =h dễ dàng được giải quyết nếu cấp của các phần tử g là tích của lũy thừa của các số nguyên tố nhỏ. Điều này áp dụng, đặc biệt là đối với bài toán logarit rời rạc trongFp nếu p−1phân tích thành lũy thừa của các số nguyên tố nhỏ. Vì p−1 thường là chẵn nên cách tốt nhất mà chúng ta có thể làm là lấy p= 2q+ 1 với q là số nguyên tố và sử dụng phần tử g cấp q. Khi đó, thời gian chạy của thuật toán va chạm mô tả trong mệnh đề 2.7.2 làO(√

q) = O(√ p).

Hiện tại chúng ta giải thích các thuật toán làm giảm bài toán logarit rời rạc cho các phần tử có cấp lũy thừa nguyên tố đối với bài toán logarit rời rạc cho các phần tử

có cấp lũy thừa nguyên tố. Ý tưởng rất đơn giản: nếu g có cấp qe, thì gqe−1 có cấp q.

Bí quyết là lặp lại quá trình này nhiều lần và sau đó lắp ráp các thông tin vào các câu trả lời sau cùng.

Mệnh đề 2.8.3. Cho G là một nhóm. Giả sử rằng q là một số nguyên tố, và giả sử chúng ta biết một thuật toán mà chỉ mấtSq bước để giải quyết bài toán logarit rời rạc

gx = h trong G bất cứ khi nào g có cấp q. Bây giờ cho g là một phần tử cấp qe với

e≥1.Khi đó, chúng ta có thể giải quyết bài toán logarit rời rạc gx =h trong O(eSq) bước.

Chứng minh. Ý tưởng quan trọng để chứng minh mệnh đề là viết số mũ không biết x

dưới dạng

x=x0+x1q+x2q2+· · ·+xe−1qe−1 với 0≤xi< q,

và sau đó xác định tiếp x0, x1, x2,· · · Chúng ta bắt đầu bằng cách quan sát phần tử

gqe−1 có cấp q. Điều này cho phép chúng ta tính toán

hqe−1 = (gx)qe−1 nâng cả hai vế của gx=h lên lũy thừa qe−1

= (gx0+x1q+x2q2+···+xe−1qe−1

)qe−1 =gx0qe−1·(gqe)x1q+x2q2+···+xe−1qe−2

= (gqe−1)x0 vì gqe = 1.

Vì gqe−1 có cấp q trong G, nên phương trình

(gqe−1)x0 =hqe−1

là một bài toán logarit rời rạc với cơ sở là một phần tử cấp q.Theo giả thiết, chúng ta có thể giải quyết bài toán này trongSq bước. Một khi điều này được thực hiện, chúng ta biết một số mũ x0 với tính chất

gx0qe−1 =hqe−1 trong G.

Tiếp theo chúng ta làm một tính toán tương tự, lần này nâng cả hai bên của gx = h

lên lũy thừa qe−2, trong đó

hqe−2 = (gx)qe−2 nâng cả hai vế của gx =h lên lũy thừa qe−2

= (gx0+x1q+x2q2+···+xe−1qe−1)qe−2 =gx0qe−2·(gqe−1)x1q+x2q2+···+xe−1qe−3

= (gqe−2)x0 ·(gqe−1)x1.

Hãy nhớ rằng chúng ta đã xác định được giá trị củax0 và phần tửgqe−1 có cấpq trong

G.Để tìm x1, chúng ta phải giải quyết bài toán logarit rời rạc (gqe−1)x1 = (h·g−x0)qe−2

cho biết số chưa biết x1. Một lần nữa áp dụng thuật toán nhất định, chúng ta có thể giải quyết này trong Sq bước. Do đó trong O(2Sq) bước, chúng ta đã xác định được giá trị của x0 và x1 thỏa mãn

g(x0+x1q)qe−2 =hqe−2 trongG.

Tương tự như vậy, chúng ta tìmx2 bằng cách giải quyết bài toán logarit rời rạc (gqe−1)x2 = (h·g−x0−x1q

)qe−3,

và nói chung, sau khi chúng ta đã xác định được x0,· · · , xi−1, thì các giá trị của xi

thu được bằng cách giải quyết

(gqe−1)xi = (h·g−x0−x1q−···−xi−1qi−1)qe−i−1 với G.

Mỗi trong số này là một bài toán logarit rời rạc với cơ sở có cấpq, mỗi trong số đó có thể được giải quyết trong Sq bước. Do đó sau O(eSq) bước, chúng ta thu được số mũ

x=x0+x1q+x2q2+· · ·+xe−1qe−1 thỏa mãn gx=h, do đó giải quyết dược bài toán logarit rời rạc ban đầu.

Nhận xét 2.8.4. Mệnh đề 2.7.2 nói rằng chúng ta có thể mất Sq = O(√

q), vì vậy mệnh đề 2.9.1 nói rằng chúng ta có thể giải quyết DLP gx = h trong O(eSq) bước. Nhận thấy rằng nếu chúng ta áp dụng mệnh đề 2.7.2 trực tiếp đến DLP gx = h, thời gian chạy là O(qe/2), mà là chậm hơn nhiều nếu e≥2.

Ví dụ 2.8.5. Chúng ta cùng làm một ví dụ để làm rõ các thuật toán được mô tả trong chứng minh của mệnh đề 2.8.3 Chúng ta giải phương trình

5448x= 6909 trong F∗11251.

Số nguyên tố p= 11251 có tính chất p−1 được chia hết bởi 54, và 5448 có cấp là 54 trong F11251. Bước đầu tiên là giải phương trình

(544853)x0 = 690953,

rút gọn được 11089x0 = 11089. Câu trả lời là x0= 1, vì vậy giá trị của x làx= 1.

Bước tiếp theo là giải phương trình

(544853)x1 = (6909·5448−x0)52,

rút gọn được11089x1 = 3742.Chú ý rằng chúng ta chỉ cần kiểm tra giá trị của x nằm giữa 1 và 4, mặc dù nếu q quá lớn, chúng ta sẽ sử dụng một thuật toán nhanh hơn mệnh đề 2.7.2 để giải quyết bài toán logarit rời rạc. Trong trường hợp bất kỳ, nghiệm làx1 = 2, vì vậy giá trị của xbây giờ là x= 11 = 1 + 2·5.

Tiếp tục, chúng ta giải các bước tiếp theo

(544853)x2 = (6909·5448−x0−x1·5)5 = (6909·5448−11)5,

Bước cuối cùng giải

(544853)x3 = 6909·5448−x0−x1·5−x2·52 = 6909·5448−11.

Rút gọn điều này để giải quyết 11089x3 = 6320, có nghiệm là x3 = 4. Do đó câu trả lời cuối cùng của chúng ta là

x= 511 = 1 + 2·5 + 4·53.

Khi kiểm tra, chúng ta tính

5448511= 6909 trong F11251√ .

Các thuật toán Pohlig-Hellman (định lý 2.8.1) để giải bài toán logarit rời rạc sử dụng định lý thặng dư Trung Hoa đan các nghiệm khác nhau với lũy thừa nguyên tố từ định lý 2.7.2. Ví dụ sau đây minh họa các thuật toán Pohlig-Hellman đầy đủ.

Ví dụ 2.8.6. Chúng ta cùng các bài toán logarit rời rạc 23x = 9689trong F11251.

Cơ sở23là một căn nguyên thủy củaF11251, tức là,23có cấp11250.Vì11250 = 2·32·54 là tích các số nguyên tố, các thuật toán Pohlig-Hellman thực hiện hiệu quả hơn. Chúng ta thiết lập

p= 11251, g = 23, h= 9689, N =p−1 = 2·32·54.

Bước đầu tiên là giải ba bài toán logarit rời rạc phụ, được chỉ ra trong bảng dưới đây. q e g(p−1)/qe h(p−1)/qe Giải (g(p−1)/qe)x=h(p−1)/qe vớix

2 1 11250 11250 1 3 2 5029 10724 4 5 4 5448 6909 511

Bước thứ hai sử dụng định lý thặng dư Trung Hoa để giải ba phương trình đồng dư

x≡1 (mod 2), x≡4 (mod 32), x≡1 (mod 54).

Nghiệm nhỏ nhất là x= 4261. Chúng ta kiểm tra câu trả lời của chúng ta bằng cách tính

234261= 9689 trong F11251√ .

Một phần của tài liệu (LUẬN văn THẠC sĩ) lý thuyết vành trong máy tính (Trang 57 - 62)

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

(77 trang)