hay t ∑ i=1 N qei i .ci.x ≡ t ∑ i=1 N qei i .ci. logg(h) (mod N),
và khi đó (8.6) cho ta biết rằng
x = logg(h) (modN).
Đẳng thức này chứng minh rằng x thỏa mãn gx ≡ h.
Nhận xét 8.2. Thuật toán Pohlig-Hellman nhiều hay ít có tính suy dẫn từ bài toán logarit rời rạc với các phần tử cấp bất kỳ đến bài toán logarit rời rạc có cấp lũy thừa số nguyên tố. Chính xác hơn, theo ký hiệu của Định lý (8.1), thời gian chạySqe
với các phần tử cấp qe có thể được suy dẫn về O(e.Sq). Điều này được đưa ra trong Mệnh đề (8.1), thời gian chạySqe với các phần tử có cấpqecó thể suy dẫn vềO(e.Sq). Điều này được chứng minh trong Mệnh đề (8.3).
Thuật toán Pohlig-Hellman chỉ ra rằng bài toán logarit rời rạc trong nhóm G là không bảo mật nếu cấp của nhóm là tích của lũy thừa các số nguyên tố nhỏ. Tổng quát hơn, nếu gx = h là dễ giải nếu cấp của phần tử g là tích của lũy thừa các số nguyên tố nhỏ. Điều này được áp dụng trong bài toán logarit rời rạc trong Fp nếu
p −1 phân tích thành tích của lũy thừa các số nguyên tố nhỏ. Do p−1 luôn là số chẵn nên cách tốt nhất để làm việc này là đặt p = 2q+1 với qlà một số nguyên tố và sử dụng một phần tửg cấpq. Khi đó thời gian chạy của thuật toán va chạm được mô tả trong Mệnh đề (6.3) là O(√
q) = O(√
p). Tuy nhiên, phương pháp giải tích chỉ số có thời gian chạy là cận lũy thừa do kể cả khi p = 2q+1, số nguyên tốqđược chọn phải khá lớn.
Ta sẽ giải thích thuật toán suy dẫn bài toán logarit rời rạc cho các phần tử có cấp là lũy thừa số nguyên tố đến bài toán logarit rời rạc cho các phần tử có cấp nguyên tố. Ý tưởng khá đơn giản: nếu g có cấp qe, thì gqe−1 có cấp q.
Mệnh đề 8.3. ChoGlà một nhóm. Giả sử rằng qlà một số nguyên tố, và giả sử ta biết một thuật toán mất Sq bước để giải bài toán logarit rời rạc gx = h trong G khi g có cấp q. Bây giờ ta có g ∈ G là một phần tử có cấp qe vớie ≥ 1. Khi đó ta có thể giải bài toán logarit rời rạc
gx = h trong O(e.Sq)bước. (8.7)
Nhận xét 8.4. Mệnh đề (6.3) nói rằng ta cần lấy Sq = O(√
q), và Mệnh đề (8.3) nói rằng ta có thể giải bài toán logarit rời rạc (8.7) trongO(e√q) bước. Chú ý rằng nếu ta áp dụng Mệnh đề (6.3) trực tiếp cho bài toán logarit rời rạc (8.7), thời gian chạy sẽ làO(qe/2), chậm hơn rất nhiều nếue ≥ 2.
8 THUẬT TOÁN POHLIG-HELLMAN
Chứng minh. Ý tưởng chính để chứng minh mệnh đề là viết lũy thừa chưa biết x
dưới dạng
x = x0+x1q+· · ·+xe−1qe−1với0 ≤ xi < q, (8.8) và xác định các hệ số x0,x1, . . .. Ta bắt đầu bằng việc quan sát thấy phần tử gqe−1 có cấp q. Khi đó, ta có thể tính được
hqe−1 = (gx)qe−1 lũy thừaqe−1 hai vế của (8.7) = gx0+x1q+···+xe−1qe−1q e−1 từ (8.8) = gx0qe−1.gqex1+x2q+···+xe−1q e−2 = gqe−1x0 dogqe = 1. Do gqe−1 là một phần tử cấpqtrong G, phương trình gqe−1x0 = 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, ta có thể giải bài toán này trongSq bước. Khi đã xong, ta biết một lũy thừax0 với tính chất
gx0qe−1 = hqe−1 trong G.
Tính toán tương tự, ta lấy lũy thừaqe−2 hai vế của (8.7), suy ra
hqe−2 = (gx)qe−2 = gx0+x1q+···+xe−1qe−1q e−2 = gx0qe−2.gx1qe−1.gqex2+x3q+···+xe−1q e−3 = gx0qe−2.gx1qe−1.
Để ý rằng ta đã xác định được giá trị củax0 và do đó phần tửgqe−1 có cấpqtrong G. Để tìm x1, ta giải bài toán logarit rời rạc
gqe−1x1 = h.g−x0qe−2
với đại lượng chưa biết là x1. Áp dụng thuật toán đã cho một lần nữa, ta có thể giải bài toán trên trong Sq bước. Khi đó, trong O(2Sq) bước, ta đã xác định các giá trị của x0 vàx1 thỏa mãn
8 THUẬT TOÁN POHLIG-HELLMAN
Tương tự, ta tìm được x2 bằng cách giải bài toán logarit rời rạc
gqe−1x2 = h.g−x0−x1qqe−3
, . . . .
Tổng quát, sau khi đã xác định đượcx0, . . . ,xi−1, khi đó giá trị củaxi thu được bằng cách giải
gqe−1xi = h.g−x0−x1q−···−xi−1qi−1qe
−i−1
trong G.
Mỗi bước này là một bài toán logarit rời rạc với cơ số có cấp q, do đó mỗi bài toán được giải trong Sq bước. Do đó sau O(eSq) bước, ta thu được lũy thừa x = x0+
x1q+· · ·+xe−1qe−1 thỏa mãn gx = h, do đó giải được bài toán logarit rời rạc ban đầu.
Ví dụ 8.5. Ta đưa ra một ví dụ để làm rõ thuật toán đã được mô tả và chứng minh của Mệnh đề (8.3). Ta giải
5448x = 6909 trong F11251∗ . (8.9) Số nguyên tố p = 11251 có tính chất là p−1chia hết cho54, và dễ dàng kiểm tra lại rằng 5448 có cấp là54 trong F11251. Bước đầu tiên ta giải
544853x0 = 690953,
rút gọn về 11089x0 = 11089. Dễ dàng giải được nghiệm x0 = 1, do đó giá trị ban đầu của x là 1.
Bước tiếp theo, ta giải
544853x1 = (6909.5448−x0)52 = (6909.5448−1)52,
rút gọn về11089x1 = 3742. Chú ý rằng ta chỉ cần kiểm tra các giá trị nằm giữa 1 và 4, mặc dù nếu qlớn, ta có thể sử dụng một thuật toán nhanh hơn như trong Mệnh đề (6.3) để giải bài toán logarit rời rạc. Trong hai trường hợp, nghiệm của nó là x1 = 2, và do đó giá trị của x làx = 11 = 1+2.5.
Tiếp tục, ta giải
544853x2 = (6909.5448−x0−x1.5)5 = (6909.5448−11)5,
suy ra11089x2 = 1. Do đó x2 = 0, suy ra giá trị củax vẫn là 11. Bước cuối cùng, ta giải
8 THUẬT TOÁN POHLIG-HELLMAN
Suy ra ta cần giải11089x3 = 6320, và nghiệm là x3 = 4. Do đó, đáp án cuối cùng của ta là
x = 511 = 1+2.5+4.53.
Kiểm tra lại, ta tính được
5448511 = 6909 trong F11251.
Thuật toán Pohlig-Hellman để giải bài toán logarit rời rạc sử dụng Định lý thặng dư Trung Hoa để kết hợp các nghiệm có cấp lũy thừa của số nguyên tố. Ví dụ sau đây mô tả thuật toán Pohlig-Hellman đầy đủ.
Ví dụ 8.6. Xét bài toán logarit rời rạc
23x = 9689 trong F11251.
Cơ số 23 là một phần tử nguyên thủy trong F11251, nghĩa là nó có cấp 11250. Do
11250 = 2.32.54 là tích của các số nguyên tố nhỏ, thuật toán Pohlig-Hellman sẽ hoạt động tốt. Khi đó ta đặt
p = 11251, g = 23, h = 9689, N = p−1 = 2.32.54.
Bước đầu tiên ta giải ba bài toán logarit rời rạc được ghi ở bảng dưới đây
q e g(p−1)/qe h(p−1)qe Giảig(p−1)/qex = h(p−1)/qe
2 1 11250 11250 1
3 2 5029 10724 4
5 4 3448 6909 511
Để ý rằng bài toán đầu tiên là tầm thường, trong khi bài toán thứ ba là bài toán ta đã giải ở ví dụ trên. Trong mọi trường hợp, các bài toán đơn lẻ trong bước này của thuật toán có thể được giải như trong phần chứng minh của Mệnh đề (8.3)
Bước tiếp theo là sử dụng Định lý thặng dư Trung Hoa để giải hệ phương trình đồng dư
x ≡ 1(mod 2), x ≡ 4(mod 32), x ≡ 511(mod 54).
Nghiệm nhỏ nhất là x = 4261. Kiểm tra lại đáp án bằng cách tính
8 THUẬT TOÁN POHLIG-HELLMAN
KẾT LUẬN
Trong báo cáo này, tôi đã tìm hiểu được những điều sau:
• Bài toán logarit rời rạc
• Hệ mã hóa ElGamal
• Thuật toán bước nhỏ - bước lớn của Shank và thời gian chạy
• Định lý thặng dư Trung Hoa
• Thuật toán Pohlig - Hellman
• Hoàn thành các bài tập từ 2.3 đến 2.19, bài 2.21, bài 2.23, bài 2.26, 2.28. Những điều chưa làm được
• Nhận xét 5.2 chưa được giải thích
• Các bài tập chưa làm gồm có bài 2.20, 2.22, 2.24, 2.25, 2.27
Qua báo cáo này, tôi đã hiểu thêm về bài toán logarit rời rạc cũng như ứng dụng của nó trong mật mã học và phương thức trao đổi khóa sử dụng bài toán này. Tôi cũng được tìm hiểu về các thuật toán giải bài toán logarit rời rạc một cách hiệu quả.
Tôi xin chân thành cảm ơn lãnh đạo Phân viện đã tạo điều kiện cho tôi được thực tập tại Phân viên.
9 BÀI TẬP