Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

BÀI TOÁN LOGARIT RỜI RẠC VÀ CÁC

THUẬT TOÁN

Phạm Hoàng Minh

Viện Khoa học - Công nghệ Mật mã

Ngày 12 tháng 5 năm 2020


Bài toán logarit rời rạc

Mục lục

1 Bài toán logarit rời rạc


Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

2 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Thuật toán Euclid mở rộng

Định lý (Thuật toán Euclid mở rộng)

Cho a và b là các số nguyên dương. Khi đó phương trình

au + bv = UCLN(a, b)

có ít nhất một nghiệm nguyên u và v .


Nếu (u0 , v0 ) là một nghiệm bất kỳ, thì khi đó mọi nghiệm đều có
dạng
b.k a.k
u = u0 + và v = v0 − với k ∈ Z.
UCLN(a, b) UCLN(a, b)

3 / 33
Các định lý khác

Định lý (Định lý nhỏ Fermat)

Cho p là một số nguyên tố và a là một số nguyên bất kỳ. Khi đó


(
p−1 1 (mod p) nếu p - a,
a =
0 (mod p) nếu p|a.

Định lý (Định lý nghiệm nguyên thủy)

Cho p là một số nguyên tố. Khi đó, tồn tại một phần tử g ∈ F∗p
mà các lũy thừa của nó là các phần tử của F∗p , nghĩa là

F∗p = {1, g , g 2 , . . . , g p−2 }.

Các phần tử với tính chất này được gọi là các nghiệm nguyên
thủy của F∗p hoặc các phần tử sinh của F∗p . Chúng đều là các
phần tử trong F∗p và có cấp p − 1.
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Bài toán logarit rời rạc

Định nghĩa
- Cho p là một số nguyên tố.
- Cho g là một nghiệm nguyên thủy của Fp , h là một phần tử khác
không của Fp .
- Bài toán logarit rời rạc là bài toán tìm một lũy thừa x sao cho

gx ≡ h (mod p).

Số x được gọi là logarit rời rạc của h cơ số g và được ký hiệu là


logg (h).

5 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Bài toán logarit rời rạc


Nếu tồn tại một nghiệm của bài toán logarit rời rạc thì sẽ tồn
tại vô số do
g x+k(p−1) = g x .(g p−1 )k ≡ h.1k ≡ h(mod p).
Khi đó, ánh xạ logarit được định nghĩa tốt
Z
logg : F∗p → .
(p − 1)Z
Ánh xạ logarit cũng có các tính chất
logg (ab) = logg (a) + logg (b)
logg (an ) = n logg (a)
với mọi a, b ∈ F∗p .
6 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Bài toán logarit rời rạc


Về mặt tổng quát, bài toán logarit rời rạc có thể phát biểu với
g ∈ F∗p bất kỳ

Định nghĩa
Cho G là một nhóm và phép toán nhóm được ký hiệu bởi ký hiệu
?.
Bài toán logarit rời rạc cho nhóm G được xác định, với mỗi hai
phần tử g và h cho trước trong G , ta tìm một số nguyên x thỏa
mãn
g ? g ? ··· ? g = h
| {z }
x lần

nếu phần tử x tồn tại.


7 / 33
Trao đổi khóa Diffie-Hellman

Thiết lập tham số công khai


Chọn một số nguyên tố p , một phần tử g trong F∗p có cấp lớn
Tính toán bí mật
Alice Bob
Chọn số bí mật a Chọn số bí mật b
và tính A = g a (modp) và tính B = g b (modp)
Trao đổi công khai các giá trị
A B
Alice −→ Bob và Bob −→ Alice
Bước tính toán bí mật tiếp theo
Alice Bob
Tính B a (mod p) Tính Ab (mod p)
Giá trị bí mật chung là
Ab ≡ B a ≡ g ab (mod p).
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Bài toán Diffie-Hellman


Một kẻ tấn công là Eve muốn tính được g ab .
Việc giải bài toán logarit rời rạc là một cách để tìm g ab .
Một bài toán khả năng dễ giải hơn bài toán Diffie-Hellman
Định nghĩa
Cho p là một số nguyên tố và g là một số nguyên. Bài toán
Diffie-Hellman là bài toán tính giá trị của g ab (mod p) khi biết các
giá trị g a (mod p) và g b (mod p).

Bài toán vừa nêu trên không khó hơn bài toán logarit rời rạc.
Tuy nhiên, không biết được nếu giải được bài toán
Diffie-Hellman thì có giải được bài toán logarit rời rạc hay
không.
9 / 33
Hệ mã hóa công khai ElGamal
Thiết lập tham số công khai
Chọn một số nguyên tố p , một phần tử g trong F∗p có cấp lớn
Alice Bob
Thiết lập khóa
Chọn khóa bí mật 1 ≤ a ≤ p − 1
Tính A = g a (mod p).
Công bố khóa công khai A.
Mã hóa
Chọn bản rõ m và khóa tức thời k
Sử dụng khóa công khai A để
tính c1 = g k (mod p)
và c2 = m.Ak (mod p).
Gửi bản mã (c1 , c2 ) cho Alice.
Giải mã
Tính (c12 )−1 .c2 (mod p)
Giá trị này bằng với m.
Mệnh đề
Cố định một số nguyên tố p và một phần tử g được sử dụng trong
mã hóa ElGamal. Giả sử rằng Eve có thể truy cập vào một oracle
giải mã được một bản mã của hệ mã hóa ElGamal. Khi đó, cô ấy
có thể dùng oracle đó để giải bài toán Diffie-Hellman.

Chứng minh.
Trong bài toán Diffie-Hellman, Eve được cho các giá trị

A ≡ g a (mod p) và B ≡ g b (mod p),

và cần tính giá trị của g ab (mod p).


Giả sử Eve có thể tham vấn một oracle ElGamal, Eve có thể
gửi cho oracle một số nguyên tố p, một phần tử cơ sở g , một
khóa công khai A, một bản mã hóa (c1 , c2 ). Khi đó, oracle sẽ
trả lại đại lượng
(c1a )−1 .c2 (mod p).
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Chọn c1 = B = g b và c2 = 1 thì oracle sẽ trả lại giá trị


h i−1
(c1a )−1 .c2 = (g b )a .1 = (g ab )−1 (mod p),

lấy nghịch đảo modulo p để thu được g ab (mod p).


Chọn một giá trị bất kì của c2 , khóa công khai A và bản mã
(B, c2 ). Khi đó, oracle sẽ trả lại bản thông điệp gốc m

m ≡ (c1a )−1 .c2 ≡ (B a )−1 .c2 ≡ (g ab )−1 .c2 (mod p).

Sau khi biết giá trị của m, ta tính

g ab ≡ c2 .m−1 (mod p)

để tìm giá trị của g ab (mod p).


12 / 33
Định nghĩa nhóm
Định nghĩa
Cho G là một tập hợp và . : G × G → G là một phép toán hai
ngôi trên G thỏa mãn các tính chất
Kết hợp. Với mọi a, b, c ∈ G ta có

(a.b).c = a.(b.c).

Phần tử trung hòa. Tồn tại phần tử e sao cho

a.e = e.a = a với mọi a ∈ G .

Phần tử nghịch đảo. Với mọi a ∈ G , tồn tại phần tử b ∈ G


sao cho
a.b = b.a = e.
Phần tử b được ký hiệu là a−1 , được gọi là phần tử nghịch
đảo của A trong G .
Khi đó, (G , .) được gọi là một nhóm.
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Định nghĩa
Cho G là một nhóm và a ∈ G . Giả sử tồn tại một số nguyên
dương d sao cho ad = e. Số d nhỏ nhất được gọi là cấp của a.
Nếu không tồn tại d, thì a được gọi là có cấp vô hạn.

Mệnh đề
Cho G là một nhóm hữu hạn. Khi đó mọi phần tử của G có cấp
hữu hạn. Hơn nữa, nếu a ∈ G có cấp d và ak = e thì d | k.

Mệnh đề
Cho G là một nhóm hữu hạn với |G | = n và a ∈ G với cấp của a là
d. Khi đó d | n.
14 / 33
Bài toán logarit rời rạc khó đến đâu?

Định nghĩa
Cho f (x) và g (x) là các hàm của x nhận giá trị dương. Ta nói
rằng "f là O- lớn của g " và viết f (x) = O(g (x)) nếu tồn tại số
dương c và C sao cho

f (x) ≤ c.g (x) với mọi x ≥ C .

Cụ thể, ta viết f (x) = O(1) nếu f (x) bị chặn với mọi x ≥ C .

Mệnh đề dưới đây cho ta các chứng minh f (x) = O(g (x)).

Mệnh đề
Nếu giới hạn
f (x)
lim
x→∞ g (x)

tồn tại và hữu hạn, khi đó f (x) = O(g (x)).


Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Thời gian chạy


Định nghĩa
Bài toán được gọi là giải được trong thời gian đa thức nếu đầu vào
có độ dài O(k) bit và một thuật toán cần O(k A ) bước để giải bài
toán, với hằng số A ≥ 0 độc lập với cỡ đầu vào.
Với A = 1, bài toán giải được trong thời gian tuyến tính, và nếu ta
lấy A = 2, khi đó bài toán là giải được trong thời gian toàn
phương.
Nếu tồn tại một hằng số c > 0 sao cho đầu vào có cỡ O(k) bit, và
một thuật toán giải bài toán trong O(e ck ) bước, khi đó bài toán
được gọi là giải được trong thời gian lũy thừa.
Với mọi ε > 0, thuật toán giải bài toán trong Oε (e εk ) bước thì đây
được gọi là thời gian chạy tựa lũy thừa.
16 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Ví dụ

Ví dụ 1. Xét bài toán logarit rời rạc trong G = F∗p . Chọn p sao cho
2k < p < 2k+1 . Khi đó bài toán được phát biểu trong O(k)- bit.
Sử dụng phương pháp vét cạn thì sẽ mất O(p) = O(2k ) bước để
giải bài toán. Do đó bài toán này giải trong thời gian lũy thừa.
Ví dụ 2. Xét bài toán logarit rời rạc trong G = Fp . Khi đó ta tìm
nghiệm x của bài toán

x.g ≡ h (mod p)

Bài toán này giải được trong O(log p) bước bằng cách sử dụng
thuật toán Euclid mở rộng.

17 / 33
Cận cho bài toán logarit rời rạc

Mệnh đề (Cận tầm thường cho bài toán logarit rời rạc)
Cho G là một nhóm và g ∈ G là một phần tử cấp n. Khi đó, bài
toán logarit rời rạc

gx = h (1)

có thể được giải trong O(n) bước, vói mỗi bước là phép nhân với g .

Chứng minh.
Ta lập một danh sách các giá trị của g x với
x = 0, 1, 2, . . . , n − 1.
Mỗi giá trị liên tiếp thu được bằng cách nhân phần tử trước
với g .
Nếu tồn tại một nghiệm cho g x = h, h sẽ xuất hiện trong
danh sách trên.
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Thuật toán va chạm

Mệnh đề (Thuật toán Bước nhỏ-Bước lớn của Shank)


Cho G là một nhóm và g ∈ G là một phần tử có cấp N ≥ 2. Khi
thuật toán sau giải bài toán logarit rời rạc g x = h trong
đó √
O( N. log N) bước.
√ √
(1) Cho n = 1 + b Nc, do đó n > N.
(2) Tạo hai danh sách
(i) Danh sách 1: e, g , . . . , g n ,
2
(ii) Danh sách 2: h, hg −n , . . . , hg −n .
(3) Tìm một phần tử xuất hiện trong cả hai danh sách, giả sử là
g i = h.g −jn .
(4) Khi đó x = i + jn là một nghiệm của bài toán g x = h.
19 / 33
Chứng minh
Chứng minh.

Tạo ra Danh sách 2, bắt đầu bằng việc tính đại lượng u = g −n
và lập Danh sách 2 bằng cách tính h, hu, hu 2 , . . . , hu n . Tạo
nên hai danh sách mất xấp xỉ 2n phép nhân.
Giả sử tồn tại phần tử trùng nhau ở cả 2 danh sách, ta có thể
tìm một cặp trùng nhau trong một bội của log(n) bằng cách
sử dụng cách sắp xếp thông thường và thuật toán tìm kiếm,
do đó Bước (3) mất O(log n) bước.
Tổng thời gian chạy
√ của thuật toán là
O(n log n) = O( N log N). Với bước cuối cùng này ta sử
dụng n ≈ N, do đó
√ √ 1√
n log n ≈ N log N= N log N.
2
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Giả sử x là nghiệm chưa biết của g x = h và viết x dưới dạng

x = nq + r với 0 ≤ r < n.

Ta biết rằng 1 ≤ x < N, do đó


x −r N √
q= < <n do n > N.
n n

Do đó, ta có thể viết lại bài toán g x = h thành

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

Do g r nằm trong Danh sách 1 và h.g −qn nằm trong Danh


sách 2, do đó 2 danh sách trên có phần tử trùng nhau.
21 / 33
Định lý thặng dư Trung Hoa

Định lý (Định lý thặng dư Trung Hoa)


Cho m1 , . . . , mk là họ các số nguyên đôi một nguyên tố cùng nhau.
Điều này nghĩa là

UCLN(mi , mj ) = 1 với mọi i 6= j.

Cho a1 , . . . , ak là các số nguyên bất kỳ. Khi đó hệ các phương


trình đồng dư

x ≡ a1 (mod m1 ), x ≡ a2 (mod m2 ), . . . , x ≡ ak (mod mk ). (2)

có nghiệm x = c. Hơn nữa, nếu x = c và x = c 0 đều là nghiệm,


khi đó

c ≡ c 0 (mod m1 m2 · · · mk ). (3)
Ví dụ
Giải hệ phương trình đồng dư
x ≡ 2 (mod 3), x ≡ 3 (mod 7), x ≡ 4 (mod 16). (4)

Định lý thặng dư Trung Hoa chỉ ra tồn tại duy nhất một nghiệm
modulo 336, do 336 = 3.7.16. Tìm nghiệm dưới dạng x = 2 + 3y
và thay vào phương trình đồng dư thứ 2
y ≡ 5 (mod 7).
Khi đó, x = 17 là một nghiệm của phương trình đồng dư (4).
Nghiệm tổng quát cho hai phương trình đầu là x = 21z + 17. Thay
vào phương trình thứ ba suy ra
z ≡ 3.13 ≡ 39 ≡ 7 (mod 16).
Ta thu được nghiệm
x = 17 + 21.7 = 164.
Nghiệm khác thu được bằng cách cộng hoặc trừ một số lần bội
của 336 với nghiệm trên.
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Tìm căn bậc hai modulo p

Mệnh đề

Cho p là một số nguyên tố thỏa mãn p ≡ 3 (mod 4).


Cho a là một số nguyên sao cho x 2 ≡ a (mod p) có nghiệm, nghĩa
là a có một căn bậc hai modulo p. Khi đó
p+1
b≡a 4 (mod p)

là một nghiệm thỏa mãn b 2 ≡ a (mod p).

24 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Chứng minh.
Cho g là một phần tử nguyên thủy modulo p. Khi đó a là một lũy
thừa của g , và việc a có căn bậc hai modulo p nghĩa là a là một
lũy thừa chẵn của g , do đó a ≡ g 2k (mod p). Khi đó, ta tính
p+1
b2 ≡ a 2 (mod p) theo định nghĩa của b,
p+1
2k
≡ (g ) 2 (mod p) do a ≡ g 2k (mod p),
≡ g (p+1)k (mod p)
≡ g 2k+(p−1)k (mod p)
≡ a.(g p−1 k
) (mod p) do a ≡ g 2k (mod p),
≡a (mod p) do g p−1 ≡ 1 (mod p).
25 / 33
Thuật toán Pohlig-Hellman

Định lý (Thuật toán Pohlig-Hellman)

Cho G là một nhóm, và bài toán logarit rời rạc trong G vói mọi
phần tử có cấp là một lũy thừa của một số nguyên tố. Nếu g ∈ G
có cấp q e , giả sử rằng ta có thể giải g x = h trong O(Sqe ) bước.
Cho g ∈ G là một phần tử cấp N, và N phân tích được thành tích
của các lũy thừa các số nguyên tố N = q1e1 · q2e2 · · · qtet . Khi đó bài
toánPlogarit rời rạc gx = h có thể được giải trong
t ei
O i=1 Sqi + log N bước bằng cách sử dụng thủ tục sau:
ei ei
(1) Với mỗi 1 ≤ i ≤ t, ta đặt gi = g N/qi và hi = hN/qi . Sử dụng
thuật toán đã cho để giải bài toán logarit rời rạc giy = hi . Cho
y = yi là một nghiệm của phương trình trên
(2) Sử dụng Định lý thặng dư Trung Hoa để giải hệ phương trình
đồng dư

x ≡ y1 (mod q1e1 ), x ≡ y2 (mod q2e2 ), . . . , x ≡ yt (mod qtet ).


(5)
Chứng minh
P
Bước (1) mất O( Sqei ) bước, Bước (2) mất O(log N) bước.
i
Cho x là một nghiệm của hệ phương trình đồng dư (5). Khi đó

x = yi + qiei zi với zi nào đó. (6)

Khi đó ta có thể tính


ei ei e
zi N/qi i
(g x )N/qi = (g yi +qi ) , theo (6)
e
N/qi i
= (g )yi .g Nzi
ei
= (g N/qi )yi do g N là phần tử đơn vị,
= giyi theo định nghĩa của gi ,
= hi
ei ei
= hN/qi = g logg (h).N/qi theo định nghĩa của hi .
Chứng minh
Ta có thể viết
N N
ei .x ≡ ei . logg (h) (mod N), i = 1, t (7)
qi qi
Tiếp theo

N N N
, , . . . , et
q1e1 q2e2 qt
không có thừa số chung, nghĩa là ước chung lớn nhất của chúng là
1. Áp dụng liên tiếp định lý Euclid, khi đó ta có thể tìm được các
số nguyên c1 , c2 , . . . , ct sao cho
N N
e1 .c1 + · · · + et .ct = 1. (8)
q1 qt
Nhân cả hai vế của (7) bởi ci và lấy tổng trên i = 1, 2, . . . , t. Ta
suy ra
N N N N
.c1 .x + · · · + et .ct .x = e1 .c1 . logg (h) + · · · + et .ct . logg (h)
q1e1 qt q1 qt
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Từ đó suy ra
t t
X N X N
.c
ei i .x ≡ .ci . logg (h) (mod N),
qi qiei
i=1 i=1

và khi đó (8) cho ta biết rằng

x = logg (h) (mod N).

Đẳng thức này chứng minh rằng x thỏa mãn g x ≡ h.

29 / 33
Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Mệnh đề

Cho G là một nhóm. Giả sử rằng q là 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
g x = 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 q e với e ≥ 1. Khi đó ta có thể giải bài toán logarit rời rạc

gx = h trong O(e.Sq ) bước. (9)

30 / 33
Chứng minh.
Viết x dưới dạng

x = x0 + x1 q + · · · + xe−1 q e−1 với 0 ≤ xi < q. (10)


e−1
Ta có phần tử g q có cấp q. Khi đó
e−1 e−1
hq = (g x )q lấy lũy thừa q e−1 hai vế
  e−1
e−1 q
= g x0 +x1 q+···+xe−1 q từ (10)
e−1 e x1 +x2 q+···+xe−1 q e−2
= g x0 q . g q
 e−1 x0 e
= gq do g q = 1.

Ta biết một lũy thừa x0 với tính chất


e−1 e−1
g x0 q = hq trong G .

Lấy lũy thừa q e−2 ta có


Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Chứng minh.

e−2 e−2
hq = (g x )q
  e−2
e−1 q
= g x0 +x1 q+···+xe−1 q
e−2 e−1 e x2 +x3 q+···+xe−1 q e−3
= g x0 q .g x1 q . g q
e−2 e−1
= g x0 q .g x1 q .

Ta cần giải bài toán logarit rời rạc


 e−1 x1 qe−2
gq = h.g −x0

Vậy sau O(2Sq ) bước ta xác định được x0 , x1 . 32 / 33


Một số định lý cơ bản trong Lý thuyết số
Bài toán logarit rời rạc
Trao đổi khóa Diffie-Hellman
Hệ mã hóa công khai ElGamal
Bài toán logarit rời rạc Tổng quan về Lý thuyết nhóm
Bài toán logarit rời rạc khó đến đâu?
Thuật toán va chạm cho bài toán logarit rời rạc
Định lý thặng dư Trung Hoa
Thuật toán Pohlig-Hellman

Chứng minh.
Tìm x2 bằng cách giải
 e−1 x2 qe−3
gq = h.g −x0 −x1 q .

Áp dụng liên tiếp thuật toán, ta xác định được x0 , . . . , xi−1 . Suy ra
ta tính được xi
 e−1
xi   e−i−1
i−1 q
gq = h.g −x0 −x1 q−···−xi−1 q trong G .

Mỗi bước giải xi tốn Sq bước, do đó mất O(eSq ) bước. Vậy ta đã


giải được bài toán logarit rời rạc.
33 / 33

You might also like