Professional Documents
Culture Documents
Slide
Slide
THUẬT TOÁN
Mục lục
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
au + bv = UCLN(a, b)
3 / 33
Các định lý khác
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à
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
Đị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).
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
Đị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
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ị
g ab ≡ c2 .m−1 (mod p)
(a.b).c = a.(b.c).
Đị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
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)
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
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
x = nq + r với 0 ≤ r < n.
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
Mệnh đề
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
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ư
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
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 đề
30 / 33
Chứng minh.
Viết x dưới dạng
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 .
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 .