Thuật toán vét cạn tìm phuơng án đúng bằng cách lựa chọn lần lưc từng phương án trong tập hợp tất cả các phương án của bài toán để tìm r phương án tối ưu. Trong nhiều bài toán[r]
(1)C h n g 3
M Ậ T M Ã K H Ó A C Ô N G K H A I
3.1 Giói thiệu chung
Trong mơ hình mật mã nghiên cứu cho đen (mật mã khóa bí mật), Alice Bob thoả thuận chọn cách bí mật khoá k Từ k người ta suy qui tắc mã hoá ek qui tắc giải mã dk.Trong hệ mật này, thấy dk trùng với ek, dễ dàng rút từ ek (ví dụ phép giải mã DES nói chung đồng với phép mã hoá, khác lược đồ khoá thỉ đào ngược) Các hệ mật loại gọi hệ mật khố bí mật (hoặc riêng, đối xứng), việc tiết lộ ek làm cho hệ thống khơng an tồn
Một đặc điểm hệ mật khố bí mật chỗ u cầu thoả thuận khoá Alice Bob sử dụng kênh an toàn, trước mã bất ki truyền.Trong thực tế thực điều khó
Ý tưởng nằm sau hệ mật khố cơng khai chỗ người ta tìm hệ mật khơng thể tính tốn để xác định dk biết ek Nếu thỉ qui tắc mã ek cho cơng khai cách cơng bố thư mục (vì có thuật ngữ hệ mật khố cơng khai) Ưu điểm cùa hệ mật khố cơng khai à chỗ Alice (hoặc ngirịi khác hất kỳ) CĨ thể gửi thơng báo mã tới Bob (mà không cần liên lạc trước khố bí mật) cách dùng qui tắc mã hố cơng khai eic- Bob người giải mã cách sử dụng qui tắc giải mã bí mật dk
Ta hình dung sau: Alice đặt vật vào hộp sắt sau khố với khoá bấm Bob để lại Bob người mờ hộp vi có chìa
(2)X thoả mãn y=ek(x) Nghiệm X ià giải mã y Như độ an tồn hệ mật khố cơng khai độ an tồn tính tốn
Hàm mã hố cơng khai ẽk Bob phải dễ dàng tính toán Chúng ta ch ú ý rằn g v i ệ c tín h h àm n g ợ c , n g h ĩa v i ệ c g iả i m ã, phái k h ó đ ố i v i người ngồi Bob Tính chất dễ tính tốn khó đảo ngược thương gọi tính chất chiều (tựa bán dẫn) Chúng ta mong muốn ek hàm chiều
Các hàm chiều đóng vai trò trung tâm mật mã, chúng quan trọng việc thiết lập hệ mật khố cơng khai nội dung khác Đáng tiếc là, có nhiều hàm người ta tin hàm chiều, chưa có hàm chứng minh hàm chiều
Nếu ta định thiết lập hệ mật khố cơng khai việc tìm hàm chiều chưa đù Bob muốn giải mã thơng báo nhận cách có hiệu Như Bob cần có cửa sập (trap door), chứa thơng tin bí mật cho phép dễ dàng đảo ngược ek Nghĩa Bob giải mã hiệu có tri thức bí mật đặc biệt k Do ta nói rằng: f(x) hàm chiều cửa sập hàm chiều, trở nên dễ đào nguợc có tri thức cửa sập xác định Nói chung, có cách để tìm cửa sập hàm chiều
Sau dãy ví dụ hàm đưực coi hàm mội chiều Giả sử n tích hai số nguyên tố lớn p q, giả sử b số nguyên dương Khi ta xác định ánh xạ f : Zn -> Zn f (x ) = x b m od n (với b n chọn thích hợp hàm mã RSA, sau ta nói nhiều nó)
(3)- Hệ mật RSA:
Độ bảo mật hệ RSA dựa độ khó việc phân tích thừa số nguyên lớn
- Hệ mật Rabin:
Độ bảo mật hệ Rabin dựa độ khó việc phân tích thừa số nguyên lớn
- Hệ mật ElGamal:
Hệ mật ElGamal dựa tính khó giải tốn logarit rịi rạc trường hữu hạn
- Hệ mật đường cong Elliptic:
Các hệ mật biến tướng hệ mật khác (chẳng hạn hệ mật ElGamal), chúng làm việc đường cong Elliptic trường hữu hạn Hệ mật đảm bảo độ mật với số khoá nhỏ hệ mật khoá công khai khác
- Hệ mật xếp ba lô Merkle - Hellman:
Hệ hệ liên quan dựa tính khó giải tốn tổng tập (bài toán toán NP đầy đủ - lớp lớn tốn khơng có giải thuật biết thời gian đa thức) Tuy nhiên tất hệ mật xếp ba lô khác bị chứng tỏ khơng an tồn (ngoại trừ hệ mật Chor-Rivest)
- Hệ mậtMcEliece:
Hệ dựa lý thuyết mã đại số cịn coi an tồn Hệ mật McEliece dựa toán giải mã cho mã tuyến tính (cũng tốn NP đầy đủ)
- Hệ mật Chor-Rivest:
(4)3.2 Hệ m ật RSA
Bài toán phân tích thừa số
Bài tốn phân tích số nguyên n >1 thành thừa số nguyên tố xem tốn khó thường sử dụng lý thuyết mật mã Biết số n hợp số việc phân tích n thành thừa số có nghĩa, thường để giải tốn phân tích n thành thưa số, ta thử trước n có hợp số hay khơng; tốn phân tích n thành thừa số dẫn tốn tìm ước so n, biết ước số d cùa n tiến trình phân tích n tiếp tục thực cách phân tích d nịd
Bài tốn phân tích thành thừa số, hay tốn tìm ước số số nguyên cho trước, nghiên cứu nhiều, chưa có thuật tốn hiệu để giải trường hợp tổng quát mà người ta có xu hướng giải tốn theo trường hợp đặc biệt số cần phải phân tích, chẳng hạn n có ước số ngun tố p với p - B-mịn với cận B > đó, n số Blum, tức số có dạng tích hai số nguyên tố lớn (n = p.q)
Ta xét trường hợp thứ với (p - 1) - thuật toán Pollard sau: Một số nguyên n gọi B-mịn tất uớc số ngun tố < B Ý chứa (p - 1) - thuật toán Pollard sau: Giả sừ 11 B -m ịn Kí liiệu Q bội chung bó tất lũy thừa cùa số nguyên tố < B mà thân chúng < n Nếu q' < n /lnq < ln/7,
ln/ỉ tức / <
ln q Ta có:
(Ị_JC J số nguyên bé lớn x)
[lnn/lngj e = n ?
q<B
(5)1 mod p Vì vậy, lấy d = gcd(aQ - ,n) p|d Neu d = n coi thuật tốn khơng cho ta điều mong muốn, nhiên điều khơng xảy n có hai thừa số nguyên tố khác Từ lập luận ta có:
(p — l)-thuật tốn Pollard phân tích thành thừa số:
VÀO: hợp số n lũy thừa số nguyên tố RA: thừa số không tầm thường n
1 Chọn cận cho độ mịn B
2 Chọn ngẫu nhiên số nguyên a, < a < n - 1, tính d = gcd(a, n) Nếu d > thỉ cho kết (d)
3 Với số nguyên tố q < B thực hiện: ln n 3.1 Tính / =
ln q 3.2 Tính a mod n Tính d = gcd(a - 1, n)
5 Nếu < d < n cho kết (d) Nếu ngược lại thuật tốn coi nhu khơng có kết
Ví dụ 3.1 Dùng thuật toán cho số n = 19048567 Ta chọn B = 19, a = tính gcd (3, n) = Chuyến sang thực bước ta đuợc bảng sau (mỗi hàng ứng với giá trị q):
Bảng 3.1 Kết tính bước thuật (ốn Pollard
Q L A
2 24 2293244
3 15 13555889
5 10 16937223
(6)11 9685355
13 13271154
17 11406961
19 554506
Sau ta tính d = gcd (554506 - 1, 19048567) = 5281 Vậy ta thừa số p = 5281, thừa số q = n/p = 3607 Cả hai thừa số số nguyên tố
Chú ý p - = 25.3.5.11, có tất ước số nguyên tố < 19, chắn thuật tốn kết thúc có kết Thuật tốn kết thúc khơng có kết độ mịn B chọn bé để không thùa số nguyên tố p n mà p - chứa ước số nguyên tố < B Như vậy, xem (p-l)-thuật tốn Pollard phân tích n thành thừa số ngun tố có hiệu số nguyên n B-mịn, người ta tính thời gian cần để thực thuật tốn cỡ o (#ln/í/ln#) phép nhân theo môdulo
Bây ta xét trường hợp số nguyên Blum, tức số có dạng n = p.q, tích hai số nguyên tố lớn Trước hết ta ý ta biết hai số nguyên khác X , V cho x2= y2 mod n ta dễ tìm thừa số n Thực vậy, tò x2= y2 mod n ta có X2 - y2 = (x - y) (x + y) chia hết cho n, n không ước số X + y X - y nên gcd(x - y, n) phải ước số n, tức p q
Ta biết n = p.q số Blum phương trình đồng dư x2= a2 mod n
có nghiệm , hai nghiệm tầm thường X = a X = -a Hai nghiệm
không tầm thường khác ± b, chúng nghiệm cùa hai hệ phương trình đồng dư bậc sau đây:
ỊX = a m o d p í x — a m ° d p
(7)Bằng lập luận ta thấy n số Blum, a số nguyên tố với n ta biết nghiệm không tầm thường phuơng trình X = a2 mod n, tức biết X í ± a cho x 2= a2 m od n thỉ gcd(x-a, n) ước số n Những điều cho số phương pháp tìm ước số nguyên tố số nguyên dạng Blum; ý chung phương pháp dẫn việc tim nghiệm khơng tầm thường phương trinh dạng X = a2 mod n, chẳng hạn phương trình X mod n
Một trường hợp lý thú lý thuyết mật mã ta biết hai số a, b nghịch đảo theo mod <ị)(n) (nhung khơng biết ộ(n)) tìm phân tích thành thừa số n Bài toán đặt cụ thể là: Biết n có dạng Blum, biết a b cho ab = mod <|)(n) Hãy tìm ước số nguyên tố n, hay tỉm nghiệm khơng tầm thường phương trình x2= mod n Ta giả thiết ab - = 2s.r với r số lẻ Ta phát triển thuật toán xác suất kiểu Las Vegas sau: Ta chọn số
ngẫu nhiên V (1 < V < n - 1) N ếu may mắn V bội số p hay q, thỉ ta đuợc ước số cùa n gcd(v, n) N ếu V nguyên tố với n, thỉ ta
tính bình phương liên tiếp kể từ vr, vr, v2r, v4r, vỉ r = lmodrt với t số t đạt vỉ có 2s.r = mod ộ(n) nên có v i r = mod n Như vậy, ta tim
' 2m r ' Ắ
một sô X = V sao cho X = mod n Tât nhiên có X Ỷ mod n Nêu
cũng có X Ỷ -1 m odn X nghiệm khơng tầm th n g x 2= m od n,
từ ta tìm ước số n Nếu khơng thỉ thuật tốn coi thất bại, cho ta kết khơng đúng. Người ta ước lượng xác suất cho kết k h ô n g đ ú n g với lần thử với số V < 1/2, ta
th iế t k ế th u ậ t to n v i m s ố n g ẫ u n h iê n V i, v m, th ì s ẽ c ó th ể đ ạt đư ợ c
xác suất cho kết khơng < l/2 m! 3.2.1 Thuật tốn mã hóa, giải mã RSA
(8)Cho p = c = z n ; K={(n,p,q,a,b) : ab=l mod O(n)}
Với k=(n,p,q,a,b), quy tắc mã hóa giải mã hệ mật RSA xác định sau:
ek(x)=xb mod n
và dk(y)=yamod n (x,yeZ n)
3.2.2 Kiểm tra qui tắc giải mã
Do ab=l mod <t>(n), 0(n )= (p -l)(q -l)= O(p) O(q) nên
a b = l+ tO (n ),vớ i t số nguyên khác Chú ý 0< X <n.
(*) Giả sử (x ,n )= l, ta có
ya mod n = (xb)a mod n = x 1+tll)<n) mod n = x[x°(n)mod n] mod n = x l mod n (v ì (x,n) =1 nên x<I>(n> mod n= l) = X ( x<n )
(**) Nếu (x,n) = d > d=p d=q d=n
Nếu d=n X = đương nhiên y = Do yamod n = = X.
Giả sử d=p 0< X <n nên x= p Ta có: yamod n = xabmod n = pabmod n Ký hiệu
u = pabmodn; Thế thì,
u +kn = pab, 0< u <n, hay u+kpq = pab Do
u = p(pab_1-k:q) = p (p t<I>(n)-kq)
v ế phải chia hết cho p nên vế trái phải chia hết cho p, nghĩa u phải chia hết cho p Nhung 0< u <n nên u=0 u=p Nếu u=0 pab_1 chia hết cho q Suy p chia hết cho q Vô lý p,q hai số nguyên tố khác Thế u=p=x, tức yamod n = X.
(9)Giả sử Bob chọn p = 101 q = 113 Thế thỉ n= 11413 <D(n)= 100 * 112= 11200=26.52.7
Bob chọn b cho (0(n),b)= l Giả sử b=3533 Dùng thuật toán ơclit mờ rộng tìm b '1=6597 mod 11200 Vỉ số mũ bí mật cúa Bob a=6597
Bob cơng bố n =11413 b =3533 thư mục khoá công khai.Bây giả sử Alice muốn gửi rõ 9726 cho Bob Cơ tính:
97263533 mod 11413=5761 gửi mã 5761 kênh
Khi Bob nhận mã 5761, anh dùng số mũ bí mật cùa để giải
5 76 6597 mod 11413=9726
Do ab=l mod 3>(n), <t>(n)= (p-l)(q-l)= O(p) <J)(q) nên ab=l+t 3>(n),với t s ố nguyên khác Chú ý rằng 0< X <n
(*) Giả sử (x ,n )= l, ta có
ya mod n s (xb)a mod n s x 1+t®(n) mod n = x Ị x ^ m o d n] mod n —X mod n (v ì (x,n) =1 nên x®(n) mod n= l) =x ( x<n )
3.2.3 Độ an toàn hệ RSA
Độ an toàn hệ RSA dựa hy vọng hàm mã hố ek(x)=xb mod n chiều, tị đối phương khơng thể tính tốn để giải ban mã Cái cửa sập cho phép Bob giải mã kiến thức phân tích n=p.q Vỉ Bob biết p q nên tính (n)= (p-l)(q-l) sau tính số mũ giải mã a nhờ thuật toán ơclit mở rộng
Muốn biết p q thi Oscar phải phân tích n, tốn phân tích số khó Oscar khơng phân tích n Cho đến nay, người ta thấy tốn phân tích số khó đốn việc phá vỡ hệ RSA tương đương với việc phân tích số đáng tế c
(10)chua chứng minh điều Một cách tổng quát, chưa có phương pháp phá hệ RSA Nghĩa hệ RSA coi an toàn
3.2.4 Thực RSA
Việc thiết lập hệ RSA Bob tiến hành theo bước sau : 1/ Sinh hai số nguyên tố lớn p q
2/ Tính n=p.q <t>(n)=(p-1 )(q-1)
3/ Chọn ngẫu nhiên b (0 < b <í>(n)) cho (b, 0(n))= 4/ Tính a=b'*mod O(n) nhờ thuật toán clit mở rộng
5/ Công bố n b thư mục khố cơng khai Như phân tích trên, muốn cho hệ RSA an tồn n=p.q phải lớn để khơng thể phân tích mặt tính tốn
3.2.5 Vẩn đề điểm bất động RSA
Giả sử cặp khóa cơng khai (e,n)=(17,35) Giả sử thơng báo có giá trị
Ta có 17 = m od .
Như mã hóa thơng báo thơng báo ban đầu Nói cách khác với khóa mã 17 thơng tin khơng che dấu Rõ ràng phái tránh tình trạng định lý sau cho ta tính số tin che dấu đirợc vái m ột lira chon cho trước (e.n)
Định lý 3.1
Nếu thông báo mã bàng hệ mật RSA với cặp khóa cơng khai (e,n) với n=p.q số thông báo không thê che dấu bang:
N = (1 + U C L N ( e - l , p - l)X l + U C L N ( d - l , q - »
Chửng minh:
Một thông báo che dấu M e = M m o d n Ta có: M e - M m o d p v M e = M m o d q
(11)M e = m o d p M e = m od p M e = m od q M e = m od q
Chú ý phương trinh đồng dư M e_1 = O m od p chi có
nghiệm tương tự với q ta có kết định lý
Ví dụ 3.3 n = 35
Giả sử e = ta có (1+ ƯCLN(2,4))(1+UCLN(2,6))=9
Các thơng báo khơng thể che dấu thông báo sau: {0,1,6,14,15,20,21,29,34}
Giả sử e = 17 ta có (1+ UCLN(6,4))(1+UCLN(16,6))=15 Các thơng báo che dấu 15 thông báo sau:
{0,1,6,7,8,13,14,15,20,21,22,27,28,29,34}
Giả sử p = 2p’ +1 q = 2q’ +1 p ’ q’ số nguyên tố Khi đó:
U C L N ( e — ,2 p ') = 1; p’
Nếu U C L N (e -l,2 p ') p ’ Ư C L N (e -l,2 q ') q' số thơng báo khơng thể che dấu nhiều
Nếu U C L N (e -l,2 p ')= p' thi số thông báo che dấu tối thiểu 2(p'+l) Tuy nhiên xác suất để xảy điều nhỏ
(bằng 1/p’)
3.3 Hệ mật Rabin
3.3.1 Tạo khóa
Tóm lược: Mỗi đầu tạo khố cơng khai khố bí mật tương úng theo bước sau:
(1) Tạo số nguyên tố lớn, ngẫu nhiên phân biệt p q có kích thước xấp xi
(12)(3) Khố cơng khai n, khố bí mật cặp số (p, q) 3.3.2 M ã hóa giải mã hệ mật Rabin
M ã hoá: B phải thực bước sau: (1) Nhận khố cơng khai A: n
(2) Biểu thị tin dạng số nguyên m nằm dải Ị o , n - 1].
(3) Tính c = m m od n (4) Gửi mã c cho A
Giải ttiã.Để khôi phục rõ m từ c, A phải thực bước sau:
Tìm bậc hai c m od n m i, m2, m3 Iti4.
(1) Thông báo cho người gửi giá trị mi, m2, m3 m4 Bằng cách A định m giá trị
3.3.3 Ví dụ Tạo khố
A chọn số nguyên tố p = 277 q = 331 A tính n = p q = 91687 Khố cơng khai A 91687 Khố bí mật A cặp số (p = 277, q = 331)
M ã hoá
Giả sử bit cuối tin gốc lặp lại trước thực mã hoá Việc thêm vào độ thừa nhằm giúp cho bên giải mã nhận biết mã
Để mã hoá tin 10 bit m = 1001111001, B lặp lại bit cuối Fn để có tin 16 bit sau: m = 1001111001111001, biểu
diễn thập phân tư n g ứ n g m = 40596
Sau B tính c = m2 modn = 40 962 mod91687 = 62111 gửi c cho A Giải m ã
(13)m, =69654, m2 = 22033, m, = 40596, m4 =51118 Biểu diễn nhị phân tương ứng số là:
m, =10001000000010110 , m2 =101011000010001
m3 = 1001111001111001 , m4 = 1100011110101110
Vì có m3 có độ thừa cần thiết nên A giải mã c m3 khôi phục lại tin gốc m = 1001111001
3.3.4 Đánh giá hiệu quả
Thuật toán mã hoá Rabin thuật tốn cực nhanh vỉ cần thực phép bình phương modulo đơn giản Trong đó, chẳng hạn với thuật tốn RSA có e = phải cần tới phép nhân modulo phép bỉnh phương modulo Thuật tốn giải mã Rabin có chậm thuật toán mã hoá, nhiên mặt tốc độ cung tương đương với thuật tốn giải mã RSA
3.4 Hệ m ật Elgamal 3.4.1 Bài toán logarit rời rạc Định nghĩa 3.1.
Cho G nhóm cylic hữu hạn bậc n, a phần tử sinh cùa G, p là phần tư thuộc G Lôgarit rời rạc /3 theo số a ký hiệu là
lo g /? , là số nguyên X, < x < n -l, thỏa mãn p = ữ x. Ví dụ 3.4
Cho p=101, Z ỉ01 nhóm cyclic có bậc n=100, a =2 phần tử sinh nhóm Z{01, ta có 288 = 92 (mod 101) =>log2 92 = 88 Z{0J
Bỗ đề 3.1.
Cho a phần từ sinh cùa nhóm cyclic G bậc n, p , ỵ e G t s một số nguyên, ta có:
(14)3.4.1.1 Bài tốn lơgarit rời rạc tổng qt (GDLP)
Bài tốn lơgarit rời rạc tổng qt (Generalized discrete logarithm problem - GDLP). cho G nhóm cyclic hữu hạn bậc n, a phần tử sinh
của G, phần tử P e g , tìm số nguyên X, < X < n-1, cho a x = p. Độ khó tốn lơgarit rời rạc tổng quái (GDLP) độc lập với phần tử sinh
Chừng minh:
Cho a y phần tử sinh nhóm cyclic G bậc n, peG 'x = loga p
Đặt: y = logy p =>ax = p = Yy = ( a z y
z = l o g a Y
ị X = z y m o d n
Vậy ta có: ị Ịog^ p _ p ) oga y ) - i m odn
Điều có nghĩa thuật tốn dùng để tính
lơgarit theo số a dùng để tính lơgarit theo số Y bất kỳ,
với y phần tử sinh G
3.4.1.2 Bài tốn lơgarit rời rạc (DLP)
Bài tốn lơgarit rời rạc {Discrete logarithm problem -DLP). cho p số nguyên tố, ữ phần tử sinh nhóm Zp, phần tử /? E Zp, tim số nguyên X, < X < p-2, cho a x = p (m o d p)
Ví dụ 3.5 Xét Z jg , phần tử sinh g = Ta có bảng sau:
X 10 11 12 13 14 15 16 17 18
logỉX 18 13 16 14 17 12 15 11 10
Từ bảng ta có: 213s3 m o d l9
(15)phải tích số ngun tố nhỏ Nói chung tốn logarit rời rại truờng hữu hạn GF(p) có độ phức tạp lớn so với G F (2m )
3.4.1.3 Một số thuật toán giài toán logarit rời rạc Thuât toán vét can
Vét cạn thuật tốn giải tốn tìm phương án tron khơng gian n phương án
Thuật tốn vét cạn tìm phuơng án cách lựa chọn lần lưc phương án tập hợp tất phương án tốn để tìm r phương án tối ưu
Trong nhiều tốn, khơng gian phương án lớn Do vậ) áp dụng thuật tốn vét cạn khơng đảm bảo thời gian nh kỹ thuật
Thuât toán bước lớn bước nhị Tính log* /? = ? Zp
- Tính m=[Vn], với n cấp X, X là phần tử sinh - Tính bảng giá trị (ý, X J) với j=
- Tính bảng giá trị với i=
- Tính b ả n g g iá trị XJ c h o đ ế n kh i thỏa m ã n X J = /? x ~ m i Khi log* p = im + j
Ví dụ 3.6 Tìm log31 45 =? Z'61. 0(61)=6O =>m=[V60]=8
j 3Vm od61
1 1
Ta có
(16)p x m i = ' m o d 61
i
4 12‘m od61 45 52 14 46 36 60
Ta thấy i = j = 317 m od 61 = ' m od 61 = 46 Vậy log31 45 = 8.3 + = 26
Thuât toán p - pollard
Nhóm G chia thành nhóm có kích thước gần dựa vào số tính chất dễ kiểm tra Định nghĩa dãy phần tử nhóm
X0,X1,X2, bời x 0= l và:
7 ? j f „ i f x l e S l de/
x ,+l = / ( * , ) - • x f , i f x, g S 2
a/+1
bi+ỉ =
a.x„ i f xl e S ì
Với i>0 Dùng dãy phần tử nhóm để định nghĩa dãy khác s ố nguyên a o , a i , a bo,bi,b2 thỏa mãn X, = a a ' p b'
Với a 0 = ố0 = thi:
a h ự Xi e Si
2 a, mod n, i f Xị G s 2 a, +1, if Xị e s 3 bị + 1, i f Xị G S ị 2 bt mod n, i f X, e s 2
bị, i f X, G S-Ị
Thuật tốn tìm chu kỳ Floyd sử dụng để tỉm phần tử nhóm Xi và x 2j cho Xj=X2i Khi đó0La‘p b' = a a2'Ị3b2'
(17)Nếu bi ^ b2i(m o d n) (truờng hợp bị = b2i(.m od) xảy với xác
suất nhỏ), phương trình giải hiệu để xác định lo g a /?.
T huật toán
INPUT: phần tử sinh a nhóm tuần hồn G có bận n nguyên tố, phần từ PeG
OUTPUT: logarith rời rạc X = \oga p Set xo<— 1, ao<- 0, bo<—0
For i=l,2,
Dùng đại lượng xi_1, a i_1,ò Ể_1và x 2l_2, a 2t - 2l b2i- 2fà
tính trước để tính đại lượng Xi.CLi.b^à x 2i,a 2i,b 2i theo công thúc
N ế u X ị = *2/thì làm: Set r<- b,-b2, mod n
Nếu r=0 thi dừng thuật toán Output(‘fail’)
N gược lại, tính X = r _1( a 2j — a ^ m o d n v àtrả v ề (x).
Ví dụ 3.7 (Tính logarith nhóm z383 ), phần tử a =2
là phần tử sinh cùa nhóm G z383 có bậc n=191 Già sử p =
228 Phân nhóm phần tử G thành nhóm theo q'iy tắc X e Si X=1 (mod 3), X € s x=0(m od 3) X e S3 x=2(mod 3)
Bảng sau chi giá trị Xị, dị, bi, x 2t, a 2i, b2itại cuối vịng lặp.
Cuối tính:
r = ị14 - b28 m od 191 — 125, r _1 = 125-1 m od 191 =
136, r -1 ( a 28 — a 14) m o d 191 = 110 Cho nên log2 228 = 110 Bàng 3.2 Giải lơgarit rời rạc thuật tốn p-pollard.
i Xi dí bi *2 i a 2i ^2 i
1 228 279
2 279 184
3 92 14
(18)5 205 304
6 14 121 18
7 28 144 12 38
8 256 235 48 152
9 152 72 48 154
10 304 14 96 118
11 372 256 97 119
12 121 18 304 98 120
13 12 19 121 51
14 144 12 38 144 10 104
Thiiât toán Pohlis-Hellman
Giả sử n = p e^ p 6^ pịr phân tích n Nếu x = loga /?thì phương pháp xác định Xị = jcmod p f 1 ,1 < i < / sau sử dụng thuật tốn Gauss tìm X mod n. Mỗi số nguyên Xị xác định c c h tín h tư n g c h ữ s ố c ù a n ó Iq,1\,■■ ; l e _ 1 tr o n g b iể u d iễ n c ù a Xi th e o c s ố p ,: Xị = l + l lp ẵ + + lei_ ì p f ‘ - ì , o z l j < p , - \ , < j < e ắ - \
Thuật toán
INPUT:phần tử sinh a nhóm tuần hồn G có bậc n phần tử p e G
OUTPUT: logarithm rơi rạc x=logaỊi
Tìm phân tích n: « = p ị x P2 ■■ p e/ , với Ẽi>
For i =1 to n Set q<-p,, e<-ej Set Y<- and 1-1<—0 tính ã <- a n ' q
(tính lị) For j= to e-1
(19)Compute lj <- log ã p
Set Xj<- 10 + liq + + le.iqe'1
Dùng thuật tốn Gauss tìm số nguyên X, 0 < X < n — lsa o chc X = Xị (mod pet' ), < / < r
Retum(x)
Ví dụ 3.8 Tính logarith z251 Giả sử p=251 Phần từ a=71
phần từ sinh z251 bậc n=250 Lấy p=210 Thế X=log7i210
tính nhu sau:
Phân tích n 250=2.53
(a) tính X1=X mod
c ó ã = a n/2 mod p = v àP = p n ỉ l mod p = 250 • Vỉvậy Xi=log25o250=l
(b ) tín h x 2= X m o d 53= 10+1i5+1252
tính ã = a nl5 mod p - 20
tính Ỵ=1 p = (/3ỵ nx»d p = 149 Dùng phép vét cạn tính lo=log2o 149=2
tính Y = Y- ữ 2m o d p = 21
và p = (yỡ/_1) w/25 mod /> = 113
Dùng phương pháp vét cạn tính lx = log20 113 = tính y = y a* 5m o d p — 115
v àp = m odp = 149 Dùng phương pháp vét cạn tính l2 = log20 49 = 2cho nên *2 = + 4.5 + 52 = 72
(20)Nhận xét Thuật toán phân tích số bước cần phải tìm ước số nhị trước; bậc n khơng số ngun mịn thuật tốn khơng hiệu
Thuật tốn tính số
Thuật tốn
INPUT: phẩn tử sinh a nhóm tuần hồn G bậc n, phẩn tử P e G OUTPUT: logarith rời rạc y — loga /?
(Chọn sở nhân tử S) Chọn tập = { p i,p 2, —,Ptì G cho phần đáng kể phần tử G biểu diễn tích phần tử G
(Chinh quan hệ tuyến tính gồm logarith phần từ trong S)
Chọn ngẫu nhiên số nguyên k, < k < n — lv tính a k Cố gắng viết a k tích phần tử S:
t
a k = Y \ p Ci i , C ị > 7=1
Nếu thành công, lấy logarith vế để quan hệ tuyến tính
t
k = X c , logư p, (mod n) /=1
Lặp lại nhận t+c quan hệ tuyến tính với c số n g u y ê n d n g n h ỏ (v í dụ c = ) s a o c h o h ệ p h n g trình đ ợ c c h o b i t+c quan hệ có lời giải với xác suất cao
Tim logarith phần tử s
Giải hệ t+c phương trình tuyến tính theo modulo n (với t ân số) thu bước để nhận giá trị loga P i , l < i < t
Tính y