Thuật toán Pohlig–Hellman

Một phần của tài liệu Bài toán logarit rời rạc và ứng dụng trong mật mã (Trang 27 - 35)

Nếu

m = m1.m2...mt

là một tích số của cặp số nguyên tố, thì định lý số dư Trung Quốc nói rằng việc giải quyết một phương trình mô đun m tương đương việc giải phương trình mô đun mi cho mỗi i, vì chúng cho chúng ta biết cách đan các đáp án với nhau để có được một đáp án mô đun m.

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

gx ≡h mod p.

Trong trường hợp này, mô đun p là số nguyên tố, trong đó cho thấy rằng định lý phần dư Trung Quốc là không thích hợp. Tuy nhiên, nhớ lại rằng đáp án x được xác định mô đun p−1, vì vậy chúng ta có thể nghĩ về đáp án trong Z/(p −1)Z. Điều này gợi ý rằng các thừa số số nguyên tố của

p−1có thể đóng một vai trò trong việc xác định những khó khăn của DLP trong F∗p. Tổng quát hơn, nếu G là nhóm bất kỳ và g ∈ G là một phần tử của N, thì đáp án để gx = h trong G chỉ được xác định theo mô đun N, do đó các thừa số nguyên tố của N sẽ xuất hiện có liên quan. Ý tưởng này là cốt lõi của thuật toán Pohlig-Hellman.

Định lý 2.2. (Thuật toán Pohlig-Hellman). Cho G là một nhóm, và giả sử rằng 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à bậc lũy thừa nguyên tố. Để cụ thể, nếu g ∈ G có bậc qe, chúng ta có thể giải quyết gx = h trong O(Sqe) bước.

Bây giờ cho g ∈ G là một phần tử có bậc N, và giả sử rằng tồn tại tích số các thừa số của lũy thừa số nguyên tố như

N = qe1

1 .qe2

2 ...qet

Thì bài toán logarit rời rạc gx = h có thể được giải quyết trong O t X i=1 Sqei i + logN ! bước (2.13)

bằng cách sử dụng phương pháp sau đây: (1) Đối với mỗi 1 ≤i ≤t, cho

gi = gN/qiei và hi = hN/qeii Chú ý rằng gi là lũy thừa số nguyên tố bậc qei

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

giy = hi. (2.14)

Cho y = yi là một đáp án cho (2.14).

(2) Sử dụng định lý phần dư (Định lý 2.1) để giải quyết

x ≡ y1 mod qe1

1 , x ≡ y2 mod qe2

2 , ..., x ≡yt mod qet

t . (2.15)

Chứng minh. Thời gian chạy là rõ ràng, kể từ Bước (1) lấyO P

Sqet t

bước, và Bước (2), thông qua định lý số dư, phải mất O(logN) bước. Trong thực tế, các tính toán định lý phần dư Trung Quốc thường không đáng kể so với các tính toán logarit rời rạc.

Nó vẫn cho thấy Bước (1) và (2) đưa ra một đáp án cho gx = h. Cho

x là một đáp án cho các hệ thống của đồng dư (2.15). Thì với mỗi i chúng ta có thể viết

x = yi +qei

Khóa luận tốt nghiệp Nguyễn Hồng Nhung

Điều này cho phép chúng ta tính toán

(gx)N/qeii = (gyi+qeii zi

)N/qeii từ (2.16),

= (gN/qeii ).gN zi

= (gN/qeii )yi khi đó gN là phần tử đồng nhất,

= gyi

i bởi định nghĩa của gi

= hi từ (2.14)

= hN/qeii bởi định nghĩa của hi.

Trong quan điểm logarit rời rạc cơ số g, chúng ta có thể viết lại là

N qei i .x≡ N qei i .logg(h) mod N, (2.17) nhớ lại rằng logarit rời rạc cơ số g được xác định chỉ theo mô đun N, từ đó gN là phần tử đồng nhất.

Tiếp theo chúng ta quan sát những con số

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

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

N qe1 1 .c1 + N qe2 2 .c2 +...+ N qet t .ct = 1 (2.18)

Bây giờ nhân cả hai vế của (2.17) với ci và tổng tất cả với i = 1,2, ..., t. Điều này cho

t X i=1 N qei i .ci.x ≡ t X i=1 N qei i .ci.logg(h) mod N,

và sau đó (2.18) cho chúng ta biết rằng

x = logg(h) mod N.

Chú ý 2.6. Các thuật toán Pohlig-Hellman ít nhiều làm giảm các bài toán của bậc tuỳ ý đến bài toán logarit rời rạc cho phần tử có bậc lũy thừa số nguyên tố. Một điều quan trọng, mà chúng ta thảo luận trong phần này, về cơ bản làm giảm các bài toán với các phần tử của lũy thừa. Chính xác hơn, thời gian chạy Sqe cho các phần tử có bậc qe có thể được giảm xuống O(eSq).

Mệnh đề 2.5. Cho G là một nhóm. Giả sử q là số nguyên tố, và giả sử rằng chúng ta biết một thuật toán mà có Sq bước để giải quyết bài toán logarit rời rạc gx = h trong G khi g có bậc q. Bây giờ cho g ∈ G là một phần tử có bậc qe với e ≥ 1. Thì chúng ta có thể giải quyết các bài toán logarit rời rạc

gx = h trong O(eSq) bước. (2.19)

Chú ý 2.7. Mệnh đề 2.3 nói rằng chúng ta có thể mất Sq = O(√

q), do Mệnh đề 2.5 nói rằng chúng ta có thể giải quyết DLP (2.19) trong O(e√

q)

bước. Chú ý rằng nếu chúng ta áp dụng Mệnh đề 2.3 trực tiếp đến DLP

(2.19), thì thời gian chạy là O(qe/2), mà chậm hơn nhiều nếu e ≥2.

Chứng minh Mệnh đề 2.5 . Ý tưởng quan trọng để chứng minh định lí là viết số mũ chưa biết x có dạng

x = x0 +x1q +x2q2 +...+xe−1qe−1 với 0 ≤xi < q, (2.20) và sau đó xác định tiếp x0, x1, x2, .... Chúng ta bắt đầu bằng cách quan sát các phần tử gqe−1 bậc q. Điều này cho phép chúng ta tính toán

hqe−1 = (gx)qe−1 đưa lên cả hai vế của (2.19) với lũy thừa qe−1

= (gx0+x1q+x2q2+...+xe−1qe−1)qe−1 từ (2.20) = gx0qe−1

.(gqe)x1+x2q+...+xe−1qe−2

Khóa luận tốt nghiệp Nguyễn Hồng Nhung

Khi đó gqe−1 là một phần tử bậc q trong G, phương trình

gqe−1

x0

= hqe−1

là một bài toán logarit rời rạc có cơ số là phần tử bậc q. Theo giả thiết, chúng ta có thể giải quyết bài toán này trong Sq 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 rằng

gx0qe−1

= hqe−1 trong G.

Tiếp theo ta làm một tính toán tương tự, lần này thời gian cả hai bên

(2.19) tăng lên với qe−2 lũy thừa, cho

hqe−2 = (gx)qe−2 = (gx0+x1q+x2q2+...+xe−1qe−1 )qe−2 = gx0qe−2 .gx1qe−1 .(gqe)x2+x3q+...+xe−1qe−3 = gx0qe−2 .gx1qe−1 .

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

có bậc q trong G. Để tìm x1, chúng ta phải giải bài toán logarit rời rạc

gqe−1

x1

= h.g−x0qe−2

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 trong Sq bước. Do đó trong O(2Sq) bước, chúng ta đã xác định các giá trị cho x0 và x1 thỏa mãn

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

Tương tự như vậy, chúng ta thấy x2 bằng cách giải quyết bài toán logarit rời rạc gqe−1 x2 = h.g−x0−x1qqe−3 ,

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

thu được bằng cách giải quyết gqe−1 xi = h.g−x0−x1q−...−xi−1qi−1q e−i−1 trong G.

Trong mỗi số này là một bài toán logarit rời rạc có cơ số bậc q, trong mỗi số chúng có thể được giải quyết trong Sq bước. Do đó sau O(eSq) bước, chúng ta có được một số mũ x = x0+x1q+...+xe−1qe−1 thỏa mãn gx = h, khi đó giải quyết bài toán logarit rời rạc ban đầu. 2 Ví dụ 2.11. Chúng ta 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.5. Chúng ta giải quyết

5448x = 6909 trong F∗11251. (2.21)

Số nguyên tố p= 11251 có tính chất rằng p−1 chia hết cho 54, và nó rất dễ dàng để kiểm tra xem 5448 có bậc chính xác 54 trong F11251. Bước đầu tiên là giải quyết

544853

x0

= 690953,

làm giảm đến 11089x0 = 11089. Cái này rất dễ dàng; câu trả lời là x0 = 1, do đó giá trị của x là x = 1. Bước tiếp theo là giải quyết

544853 x1 = 6909.5448−x052 = 6909.5448−15 2 ,

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

x = 11 = 1 + 2.5.

Tiếp tục, chúng ta giải quyết

544853

x2

= 6909.5448−x0−x1.55

= 6909.5448−115,

làm giảm đến 11089x2 = 1. Do đó x2 = 0, có nghĩa là giá trị của x còn lại là x = 11.

Bước cuối cùng là giải quyết

544853

x3

Khóa luận tốt nghiệp Nguyễn Hồng Nhung Điều này làm giảm để đáp án 11089x3 = 6320, trong đó đáp án x3 = 4. Do đó 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 toán

5448511 = 6909 trong F11251.

Ví dụ 2.12. Hãy xem xét bài toán logarit rời rạc

23x = 9689 trong F11251. (2.22)

Cơ số 23 là một gốc nguyên thủy trong F11251, tức là, nó có bậc 11250. Từ

11250 = 2.32.54 là một tích số của các số nguyên tố nhỏ, các thuật toán Pohlig-Hellman làm việc tốt. Trong các ký hiệu của Định lý 2.2, chúng ta đặt

p= 11251, g = 23, h = 9689, N = p−1 = 2.32.54.

Bước đầu tiên là giải quyết ba bài toán logarit rời rạc con, như được chỉ ra trong bảng sau.

q e g(p−1)/qe h(p−1)/qe Giải (g(p−1)/qe)x = h(p−1)/qe cho x

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

Bước thứ hai là sử dụng định lý phần dư Trung Quốc để giải quyết đồng thời các đồng dư

x ≡ 1 mod 2, x ≡ 4 mod 32, x ≡ 511 mod 54.

Đáp án 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 toán

KẾT LUẬN

Trên đây là toàn bộ nội dung khóa luận "Bài toán logarit rời rạc và ứng dụng trong mật mã". Cụ thể:

Chương 1: Trình bày tổng quan về lí thuyết nhóm.

Chương 2: Mục 2.1 trình bày về bài toán logarit rời rạc. Mục 2.2 Diffie-Hellman trao đổi khóa bảo mật. Mục 2.3 trình bày về hệ mật khóa công khai ElGamal. Mục 2.4 bài toán logarit rời rạc khó đến mức nào. Mục 2.5 nghiên cứu về thuật toán va chạm cho DLP. Mục 2.6 trình bày về định lí phần dư Trung quốc và Mục 2.7 nghiên cứu về thuật toán Pohlig-Hellman. Do thời gian nghiên cứu và năng lực còn hạn chế nên khóa luận mới chỉ đạt được một số kết quả nhất định. Em rất mong các thầy cô, các bạn góp ý và nhận xét để khóa luận này được đầy đủ và hoàn thiện hơn.

Trước khi kết thúc khóa luận này, một lần nữa em xin bày tỏ lòng biết ơn sâu sắc đối với các thầy giáo trong trường, đặc biệt là thầy giáo Trần Vĩnh Đức đã tận tình giúp đỡ em hoàn thành khóa luận này.

Tài liệu tham khảo

[1] Jeffrey, Hoffstein, Jill Pipher, Joseph H.Silverman. An Introduction to Mathematical Cryptography.

[2] W. Diffie and M. E. Hellman. New directions in cryptography. IEEE Trans. Information Theory, IT-22(6):644-654, 1976.

[3] T. ElGamal. A public key cryptosystem and a signature scheme based on discrete logarithms. IEEE Trans. Inform. Theory, 31(4):469-472, 1985.

Một phần của tài liệu Bài toán logarit rời rạc và ứng dụng trong mật mã (Trang 27 - 35)

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

(35 trang)