Bài toán logarit rời rạc khó như thế nào?

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 48)

Cho một nhóm G và hai phần tử g, h ∈ G, bài toán logarit rời rạc yêu cầu tìm số mũ x sao cho gx = h. Làm thế nào chúng ta có thể định lượng độ khó? Một cách tự nhiên để đo độ khó là số gần đúng các phép toán cần thiết cho một người hoặc một máy tính để giải quyết bài toán. Ví dụ, giả sử rằng chúng ta có thể đếm quá trình tính toán gx như một phép toán đơn lẻ. Sau đó, một cách tiếp cận thử và sai để giải quyết các bài toán logarit rời rạc sẽ được tính toán gx với mỗix= 1,2,3,· · · và so sánh các giá trị với h. Nếu g có cấp n, thì thuật toán có thể tìm ra giải pháp nhiều nhất trong

n phép toán, tuy nhiên nếu n lớn, như n > 280 thì thuật toán đó không phải là một thuật toán thực tế với tính toán lũy thừa quá lớn.

Trong thực tế, trừ khi người ta phải xây dựng một máy với mục đích đặc biệt, quá trình tính toángx không thể được tính bằng một phép toán cơ bản nhất. Sử dụng

phương pháp lũy thừa nhanh mô tả trong phần 1.3.2, phải mất một bội của log2(x) phép nhân môđun để tínhgx.Giả sử rằngn vàx làksố bit, nghĩa là, chúng là khoảng 2k. Thì các phương pháp thử và sai thực sự đòi hỏi khoảng k·2k phép nhân. Và nếu chúng ta làm việc trong nhómF∗p và nếu chúng ta sử dụng phép cộng môđun như phép toán cơ bản, thì phép nhân môđun của hai k −bit số mất (khoảng) k2 phép toán cơ bản, vì vậy bây giờ giải quyết DLP bằng cách thử và sai mất một bội nhỏ của k2·2k phép toán cơ bản.

Chúng ta đang không chính xác khi chúng ta nói về bội của 2k hoặc k·2k hoặc

k2·2k.Điều này là tính toán không khả thi, các số lớn chẳng hạn như 3·2k và 10·2k và 100·2k.

Định nghĩa 2.5.1. (Kí hiệu theo cấp). Cho f(x)và g(x) là hàm số của cácx lấy giá trị dương. Ta nói rằng "f là vô cùng lớn O của g " và ta viết

f(x) =O(g(x)) nếu có hằng số dương cvà C sao cho

f(x)≤cg(x)với mọi x≥C

Mệnh đề tiếp theo mang đến một phương pháp mà đôi khi có thể được sử dụng để chứng minh rằngf(x) =O(g(x)). Mệnh đề 2.5.2. Nếu giới hạn limx→∞ f(x) g(x) tồn tại (và là hữu hạn) thì f(x) = O(g(x)).

Chứng minh. Cho L là giới hạn. Bằng định nghĩa giới hạn, với > 0 bất kỳ có một hằng sốC sao cho f(x) g(x) −L < với mọix > C. Đặc biệt, = 1, chúng ta thấy rằng L−1< f(x) g(x) < L+ 1 với mọix > C1. Do đó, theo định nghĩa, f(x) = O(g(x)) với c=L−1 và C =C1

Ví dụ 2.5.3. Ta có 2x3−3x2+ 7 =O(x3,) vì limx→∞ 2x3−3x2+ 7 x3 = 2. Tương tự, ta có x2=O(2x), vì limx→∞x 2 2x = 0.

Vì limx→∞x 2 2x = limx→∞(x 2 )0 (2x)0 = limx→∞2x2ln 2x = limx→∞ (2x) 0 (2xln 2)0 = limx→∞2x(ln 2)2 2 = 0

Tuy nhiên, lưu ý rằng chúng ta có thể có f(x) = O(g(x)), thậm chí nếu giới hạn của

f(x)

g(x) không tồn tại. Ví dụ, giới hạn

limx→∞(x+ 2) cos 2(x)

x

không tồn tại, nhưng

(x+ 2) cos2(x) =O(x),vì (x+ 2) cos2(x)≤x+ 2≤2x với mọix≥2.

Giả sử chúng ta cần giải quyết một số bài toán, mà các đầu vào của bài toán là một số có thể thay đổi kích thước. Ví dụ, khi xem xét bài toán về số nguyên, mà đầu vào là một sốN và đầu ra là một thừa số nguyên tố củaN. Chúng ta muốn biết phải mất bao lâu để giải quyết bài toán về kích thước của đầu vào. Thông thường, một trong những biện pháp để biết kích thước của đầu vào là biết số lượng các bit.

Định nghĩa 1. (Bài toán giải quyết trong thời gian đa thức).Giả sử có một hằng sốA≥0, độc lập với kích thước của đầu vào, như vậy nếu kích thước đầu vào là O(k) bit , thì phải mấtO(kA) bước để giải quyết bài toán. Sau đó, các bài toán có thể được giải quyết trong thời gian đa thức. Nếu chúng ta có thể lấy A= 1, thì bài toán có thể được giải quyết trong thời gian tuyến tính, và nếu chúng ta có thể lấy A = 2, thì bài toán có khả năng được giải quyết trong thời gian bậc hai. Các thuật toán thời gian đa thức được coi là các thuật toán nhanh.

Định nghĩa 2. (Bài toán giải quyết trong thời gian mũ). nếu có một hằng số

c >0 sao cho với đầu vào có kích cỡO(k) bit, thì có một thuật toán có thể giải quyết các bài toán trên trong O(eck) bước, và khả năng giải quyết trong thời gian mũ. Các thuật toán hàm số mũ theo thời gian được coi là thuật toán chậm.

Trung gian giữa các thuật toán thời gian đa thức và các thuật toán hàm số mũ theo thời gian là thuật toán số mũ dưới thời gian. Chúng có các tính chất mỗi > 0, họ giải quyết các bài toán trong O(eck)bước. Ký hiệu này có nghĩa là các hằng số c

và C xuất hiện ở trong định nghĩa các kí hiệu theo cấp phụ thuộc vào .

Như một quy luật chung trong lý thuyết mật mã, bài toán có thể giải quyết trong thời gian đa thức được coi là dễ dàng và bài toán giải quyết trong thời gian mũ được xem là khó, với số mũ dưới thời gian đang nằm đâu đó ở giữa. Tùy thuộc vào hằng số vô cùng lớn Ovà kích thước của đầu vào, một bài toán theo cấp số nhân có thể được dễ dàng hơn một bài toán đa thức. Chúng ta minh họa cho các khái niệm trên bởi các yêu cầu của bài toán logarit rời rạc trong các nhóm khác nhau.

Ví dụ 2.5.4. Chúng ta bắt đầu với bài toán logarit rời rạc gốcgx =h trong G=F∗p.

Nếu p là số nguyên tố được chọn giữa 2k và 2k+1, thì g, h và p chủ yếu là k bit, vì vậy bài toán có thể được giải quyết trong O(k)−bit. (Chú ý rằng O(k) là giống như

O(log2p).)

Nếu chúng ta giải quyết các bài toán DLP sử dụng phương pháp thử và sai đã được đề cập trước đó, thì phải mấtO(p)bước để giải quyết bài toán. Vì O(p) =O(2k), thuật toán này cần mất thời gian theo cấp số nhân.

Tuy nhiên, có những cách nhanh hơn để giải quyết các bài toán DLP trong F∗p, một trong các cách đó là rất nhanh nhưng chỉ thực hiện với một vài số nguyên tố, trong khi những cách khác ít nhanh, nhưng lại thực hiện cho tất cả các số nguyên tố. Ví dụ, các thuật toán Pohlig-Hellman được mô tả trong phần 2.8 cho thấy rằng nếu thừa số p−1 phân tích thành tích các số nguyên tố nhỏ, thì bài toán DLP là khá dễ dàng. Đối với số nguyên tố tùy ý, các thuật toán được mô tả trong phần 2.6 giải quyết được bài toán DLP trong O(√

plogp) bước, nhanh hơn nhiều so với O(p), nhưng vẫn theo cấp số nhân.

Ví dụ 2.5.5. Tiếp theo chúng ta xem xét các bài toán DLP trong nhóm G=Fp, với phép toán nhóm là phép cộng. Các bài toán DLP trong nhóm này cần tìmxthỏa mãn

x·g ≡h (mod p),

với g và h là các phần tử của Z/pZ. Như đã mô tả trong phần 1.2, chúng ta có thể giải quyết quan hệ đồng dư này bằng cách sử dụng thuật toán Euclid mở rộng để tính

g−1 (mod p)và tính x≡g−1·h (mod p).Điều này mất O(logp) bước, vì vậy có một thuật toán tuyến tính thời gian để giải quyết bài toán DLP trong nhóm Fp. Đây là một thuật toán rất nhanh, vì vậy các bài toán DLP với phép cộng không phải là một ứng cử viên tốt cho việc sử dụng như là một hàm một chiều trong mật mã.

Các bài toán logarit rời rạc trong nhóm khác nhau có thể hiển thị mức độ khó khăn khác nhau cho thuật toán của họ. Do đó, bài toán DLP trong Fp với phép cộng có một thuật toán tuyến tính thời gian, trong khi các thuật toán chung được biết đến tốt nhất để giải quyết các bài toán DLP trongF∗p với phép nhân là số mũ dưới. 2.6. Thuật toán gặp gỡ cho bài toán DLP

Trong phần này, chúng ta mô tả một thuật toán logarit rời rạc của Shanks. Đó là một ví dụ về một vụ va chạm, hoặc một cuộc gặp gỡ, một thuật toán. Thuật toán của Shanks thực hiện trong nhóm bất kỳ , không chỉ F∗p. Shanks đã chứng minh được thuật toán đó thực hiện được trong các nhóm tùy ý, vì vậy chúng ta sẽ nêu và chứng minh điều đó trong trường hợp tổng quát.

Mệnh đề 2.6.1. (Giới hạn nhỏ cho bài toán DLP). Cho G là một nhóm và g ∈G là một phần tử cấp N. (Nhắc lại điều đó nghĩa là gN =e và không có lũy thừa nguyên dương nhỏ hơn của g bằng phần tử đơn vị e.) Khi đó, bài toán logarit rời rạc

gx=h

có thể được giải quyết trongO(N) bước, trong đó mỗi bước bao gồm một phép nhân bởi g.

Chứng minh. Chúng ta chỉ cần tạo một danh sách các giá trịgxvớix= 0,1,2,· · · , N−

1. Lưu ý rằng mỗi giá trị kế tiếp có thể thu được bằng cách nhân giá trị trước đó bởi

g. Nếu một nghiệm cho gx =h tồn tại, thì h sẽ xuất hiện trong danh sách của chúng ta.

Nhận xét 2.6.2. Nếu chúng ta thực hiện trong F∗p, thì để tính gx (mod p) chúng ta cần O((logp)k) phép toán máy tính. Hằng số k và hằng số vô cùng lớn O phụ thuộc vào các máy tính và các thuật toán được sử dụng để nhân môđun. Tổng số các bước để tính, hoặc thời gian chạy làO(N(logp)k). Nói chung, các nhân tử củaO(N(logp)k) là không đáng kể, vì vậy chúng ta chỉ cần thời gian chạy là O(N).

Ý tưởng của thuật toán gặp gỡ là tạo hai danh sách và tìm kiếm một phần tử chung của cả hai danh sách. Đối với các bài toán logarit rời rạc được mô tả trong mệnh đề 2.7.1, thời gian chạy của một thuật toán gặp gỡ ít hơnO(√

N) bước.

Mệnh đề 2.6.3. (Thuật toán Shanks’s Babystep-Gianstep). Cho G là một nhóm và

g là một phần tử có cấp N ≥2.Thuật toán sau đây giải quyết bài toán logarit rời rạc

gx=h trong O(√

N ·logN) bước.

(1) Cho n = 1 +b√Nc, vì vậy đặc biệt, n >√ N.

(2) Tạo hai danh sách,

Danh sách 1:e, g2, g3,· · · , gn,

Danh sách 2:h, h·g−n, h·g−2n, h·g−3n,· · · , h·g−n2.

(3) Tìm phần tử giống nhau trong hai danh sách, hay gi=h·g−jn.

(4) Ta cóx=i+jnlà một nghiệm của gx =h.

Chứng minh. Đầu tiên, khi tạo danh sách 2, chúng ta cần tính u = g−n và sau đó biên dịch danh sách 2, bằng cách tính h, h·u, h·u2, h·u3,· · · , h·un. Nhờ đó chúng ta tạo ra hai danh sách chỉ mất khoảng 2n phép nhân. [15] Thứ hai, giả sử tồn tại phần tử giống nhau trong hai danh sách, chúng ta có thể tìm phần tử chung này trong một bội của log(n) bước sử dụng thuật toán phân loại và các thuật toán tìm kiếm, vì vậy bước (3) mất O(logn) bước. Do đó tổng thời gian chạy cho các thuật toán là

O(nlogn) =O(√

vì vậy nlogn≈√Nlog √ N = 1 2 √ NlogN.

Chúng ta thấy danh sách 1 và 2 luôn luôn có một sự tương ứng. Để thấy điều này, cho

x là nghiệm chưa biết củagx =h và viếtx như là

x=nq+r với 0≤r < n. Chúng ta thấy1≤x < N, vì vậy q= x−r n < N n < n vì n > √ N .

Do đó chúng ta có thể viết lại phương trìnhgx =h như là

gr =h·g−qn với 0≤r < n và 0≤q < n.

Như vậy gr có trong danh sách 1 và h·g−qn có trong danh sách 2, điều đó cho thấy rằng danh sách 1 và 2 có một phần tử chung. k gk h·uk 1 9704 347 2 6181 13357 3 5763 12423 4 1128 13153 5 8431 7928 6 16568 1139 7 14567 6259 8 2987 12013 k gk h·uk 9 15774 16564 10 12918 11741 11 16360 16367 12 13259 7315 13 4125 2549 14 16911 10221 15 4351 16289 16 1612 4062 k gk h·uk 17 10137 10230 18 17264 3957 19 4230 9195 20 9880 13628 21 9963 10126 22 15501 5416 23 6854 13640 24 15680 5276 k gk h·uk 25 4970 12260 26 9183 6578 27 10596 7705 28 2427 1425 29 6902 6594 30 11969 12831 31 6045 4754 32 7583 14567 Bảng 2.2: Babystep-giantstep để tính 9704x≡13896 (mod 17389)

Ví dụ 2.6.4. Chúng tôi minh họa cho phương pháp Babystep-giantstep Shanks bằng cách sử dụng nó để giải quyết các bài toán logarit rời rạc

gx =h trong F∗p với g = 9704, h= 13896, vàp= 17389.

Số9704có cấp 1242trong F∗19389.Đặtn =b√1242c+ 1 = 36và u=g−n = 9704−36= 2494. Bảng trên là danh sách các giá trị của gk và h·uk với k = 1,2, cdots. Từ bảng đó ta tìm được

97047 = 14567 = 13896·249432 trong F17389.

Sử dụng giả thiết2949 = 9704−36, chúng ta tính

13896 = 97047·2494−32 = 97047·(970436)32 = 97041159 trong F17389.

2.7. Định lý thặng dư Trung Hoa

Định lý thặng dư Trung Hoa mô tả các nghiệm cho một hệ thống đồng dư tuyến tính tương ứng. Cho một hệ gồm hai quan hệ đồng dư,

x≡a (mod m) và x≡b (mod n),

với gcd(m, n) = 1, trong trường hợp đó định lý thặng dư Trung Hoa nói rằng có duy nhất một nghiệm môđunmn.

Định lý thặng dư Trung Hoa và những khái quát của định lý đó có rất nhiều ứng dụng trong lý thuyết số và các lĩnh vực khác của toán học. Trong phần 2.8 chúng ta sẽ xem sử dụng định lý đó như thế nào để giải quyết một số trường hợp của bài toán logarit rời rạc. Chúng ta bắt đầu với một ví dụ mà chúng ta giải quyết hai quan hệ đồng dư tương ứng.

Ví dụ 2.7.1. Chúng ta cần tìm một số nguyên x đồng thời thỏa mãn cả hai quan hệ đồng dư

x≡1 (mod 5) và x≡9 (mod 11).

Quan hệ đồng dư đầu tiên cho chúng ta biếtx≡1 (mod 5), vì vậy toàn bộ các nghiệm của quan hệ đồng dư đầu tiên là tập hợp các số nguyên

x= 1 + 5y, y∈Z.

Thay vào quan hệ đồng dư thứ hai, ta có

1 + 5y≡9 (mod 11).

Do đó 5y ≡ 8 (mod 11). Chúng ta có thể tìm y bằng cách nhân cả hai vế bởi nghịch đảo của 5 môđun 11. Phần tử nghịch đảo của 5 môđun 11 tồn tại vì gcd(5,11) = 1 và chúng ta có thể tính bằng cách sử dụng tính chất mô tả trong mệnh đề 1.1.1 Tuy nhiên, trong trường hợp này môđun là một số nhỏ nên chúng ta có thể tìm thấy nghịch đảo của 5 môđun 11bằng cách thử và sai. Do đó 9·5 = 45≡1 (mod 11).

Nhân cả hai vế với 9

y≡9·8≡72≡6 (mod 11).

Cuối cùng, thay thế giá trị này của y vào cho nghiệm

x= 1 + 5·6 = 31 của bài toán ban đầu.

Định lý 2.7.2. (Định lý thặng dư Trung Hoa). Cho m1, m2,· · · , mk là tập các số đôi một nguyên tố cùng nhau. Điều đó có nghĩa là

Cho a1, a2,· · · , ak là số nguyên tùy ý. Khi đó, các hệ nhiều đồng dư tương ứng tùy ý

x≡a1 (mod m1), x≡a2 (mod m2),· · · , x≡ak (mod mk) có một nghiệm x=c. Hơn nữa nếu x=c và x=c0 là đều là nghiệm, thì

c≡c0 (mod m1m2· · ·mk).

Chứng minh. Giả sử có một giá trị của isao cho x=ci là nghiệm củai quan hệ đồng dư tương ứng đầu tiên,

x≡a1 (mod m1), x≡a2 (mod m2),· · · , x≡ai (mod mi).

Ví dụ , nếui= 1, thìc1 =a1. Chúng ta cần tìm một nghiệm thỏa mãn nhiều hơn một quan hệ đồng dư,

x≡a1 (mod m1), x≡a2 (mod m2),· · · , x≡ai+1 (mod mi+1).

Ý tưởng là tìm kiếm một nghiệm có dạng

x=ci+m1m2· · ·miy.

Chú ý rằng giá trị này của x vẫn thỏa mãn tất cả các quan hệ đồng dư ở trên vì vậy

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 48)

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

(77 trang)