Chơng 5
Các hệ mật khoá công khai khác
Trong chơng này ta sẽ xem xét một số hệ mật khoá công khai khác. Hệ
mật Elgamal dựa trên bài toán logarithm rời rạc là bài toán đợc dùng nhiều
trong nhiều thủ tục mật mã. Bởi vậy ta sẽ dành nhiều thời gian để thảo luận về
bài toán quan trọng này. ở các phần sau sẽ xem xét sơ lợc một số hệ mật khoá
công khai quan trọng khác bao gồm các hệ thoóng loại Elgamal dựa trên các
trờng hữu hạn và các đờng cong elliptic, hệ mật xếp ba lô Merkle-Helman và
hệ mật McElice.
5.1. Hệ mật Elgamal và các logarithm rời rạc.
Hệ mật Elgamal đợc xây dựng trên bài toán logảithm rời rạc . Chúng ta
sẽ bắt đầu băng việc mô tả bài toán bài khi thiết lập môi trờng hữu hạn Z
p
, p là
số nguyên tố ( hình 5.1) ( Nhớ lại rằng nhóm nhân Z
p
*
là nhóm cyclic và phần
tử sinh của Z
p
*
đợc gọi là phần tử nguyên thuỷ).
Bài toán logarithm rời rạc trong Zp là đối tợng trong nhiều công trình
nghiên cứu và đợc xem là bài toán khó nếu p đợc chọn cẩn thận. Cụ thể không
có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây
khó khăn cho các phơng pháp tấn công đã biết p phải có ít nhất 150 chữ số và
(p-1) phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm
rời rạc trong xây dợng hệ mật là khó tìm đợc các logarithm rời rạc ,song bài
toán ngợc lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán "bình ph-
ơng và nhân". Nói cách khác , luỹ thừa theo modulo p là hàm một chiều với
các số nguyên tố p thích hợp.
Elgamal đã phát triển một hệ mật khoá công khai dựa trên bài toán
logarithm rời rạc. Hệ thống này đợc trình bày trên hình 5.2.
Hệ mật này là một hệ không tất định vì bản mã phụ thuộc vào cả bản rõ
x lẫn giá trị ngẫu nhiên k do Alice chọn. Bởi vậy, sẽ có nhiều bản mã đợc mã
từ cùng bản rõ.
Hình 2.6 Bài toán logarithm rời rạc trong Zp
Hình 2.7 Hệ mật khoá công khai Elgamal trong Zp
*
Sau đây sẽ nmô tả sơ lợc cách làm việc của hệ mật Elgamal .Bản rõ x đ-
ợc "che dấu" bằng cách nhân nó với
k
để tạo y
2 .
Giá trị
k
cũng đợc gửi đi
nh một phần của bản mã. Bob -ngời biết số mũ bí mật a có thể tính đợc
k
từ
k
. Sau đó anh ta sẽ "tháo mặt nạ" bằng cách chia y
2
cho
k
để thu đợc x.
Ví dụ 5.1
Đặc trơng của bài toán: I = (p,,) trong đó p là số nguyên tố,
Zp là phần tử nguyên thuỷ , Zp
*
Mục tiêu:Hãy tìm một số nguyên duy nhất a, 0 a p-2 sao
cho:
a
(mod p)
Ta sẽ xác định số nguyên a bằng log
Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là
khó giải. Cho Zp
*
là phần tử nguyên thuỷ.Giả sử P = Zp
*
,
C = Zp
*
ì Zp
*
. Ta định nghĩa:
K = {(p, ,a,):
a
(mod p)}
Các giá trị p, , đợc công khai, còn a giữ kín
Với K = (p, ,a,) và một số ngẫu nhiên bí mật k Zp-1, ta xác định:
e
k
(x,k) = (y
1
,y
2
)
trong đó
y
1
=
k
mod p
y
2
= x
k
mod p
với y
1
,y
2
Zp
*
ta xác định:
d
k
(y
1
,y
2
) = y
2
(y
1
a
)
-1
mod p
Cho p = 2579, = 2, a = 765. Khi đó
= 2
765
mod 2579 = 949
Bây giờ ta giả sử Alice muốn gửi thông báo x = 1299 tới Bob. Giả sử số ngẫu
nhiên k mà cô chọn là k = 853. Sau đó cô ta tính
y
1
= 2
853
mod 2579
= 435
y2 = 1299 ì 949853 mod 2579
= 2396
Khi đó Bob thu đợc bản mã y = (435,2396), anh ta tính
x = 2396 ì (435
765
)
-1
mod 2579
= 1299
Đó chính là bản rõ mà Alice đã mã hoá.
5.1.1. Các thuật toán cho bài toán logarithm rời rạc.
Trong phần này ta xem rằng p là số nguyên tố, là phần tử nguyên thuỷ
theo modulo p. Ta thấy rằng p và là các số cố định. Khi đó bài toán
logarithm rời rạc có thể đợc phát biểu dới dạng sau: tìm một số mũ a duy
nhất, 0 a p-2 sao cho
a
(mod p), với Z
p
*
cho trớc.
Rõ ràng là bài toán logarithm rời rạc (DL) có thể giải bằng một phép
tìm kiếm vét cạn với thời gian cỡ O(p) và không gian cỡ O(1) ( bỏ qua các
thừa số logarithm). Bằng cách tính toán tất cả các giá trị
a
có thể và sắp xếp
các cặp có thứ tự (a,
a
mod p) có lu ý đến các tạo độ thứ hai của chúng, ta có
thể giải bài toán DL với thời gian cỡ O(1) bằng O(p) phép tính toán trớc và
O(p) bộ nhớ ( vẫn bỏ qua các thừa số logarithm). Thuật toán không tầm thờng
đầu tiên mà chúng ta sẽ mô tả là thuật toán tối u hoá thời gian - bộ nhớ của
Shanks.
Thuật toán Shanks
Hình 5.3. Thuật toán Shanks cho bài toán DL.
1. Tính
mj
mod p, 0 j m-1
2. Sắp xếp m cặp thứ tự ( j,
mj
mod p) có lu ý tới các tạo độ thứ hai
của các cặp này, ta sẽ thu đợc một danh sách L
1
3. Tính
-i
mod p, 0 i m-1
4. Sắp xếp m cặp thứ tự (i,
-i
mod p) có lu ý tới các toạ độ thứ hai của
các cặp đợc sắp này, ta sẽ thu đợc một danh sách L
2
5. Tìm một cặp (j,y) L
1
và một cặp (i,y) L
2
( tức là một cặp có tạo độ
thứ hai nh nhau).
6. Xác định log
= mj + i mod (p-1)
7.
- Nếu cần, các bớc 1 và 2 có thể tính toán trớc ( tuy nhiên, điều này không
ảnh hởng tới thời gian chạy tiệm cận)
- Tiếp theo cần để ý là nếu (j,y) L
1
và (i,y) L
2
thì
mj
= y =
-i
Bởi vậy
mj+i
=
nh mong muốn. Ngợc lại, đối với bất kì ta có thể viết
log
= mj+i
trong đó 0 j,i m-1. Vì thế phép tìm kiếm ở bớc 5 chắc chắn thành công.
Có thể áp dụng thuật toán này chạy với thời gian O(m) và với bộ nhớ cỡ
O(m) ( bỏ qua các thừa số logarithm). Chú ý là bớc 5 có thể thực hiện một
cách ( đồng thời ) qua từng danh sách L
1
và L
2
.
Sau đây là một ví dụ nhỏ để minh hoạ.
Ví dụ 5.2.
Giả sử p = 809 và ta phải tìm log
3
525. Ta có = 3, = 525 và m =
808 = 29. Khi đó:
29
mod 809 = 99
Trớc tiên tính các cặp đợc sắp (j,99
j
mod 809) với 0 j28. Ta nhận đợc
danh sách sau:
(0,1) (1,99) (2,93) (3,308) (4,559)
(5,329) (6,211) (7,664) (8,207) (9,268)
(10,644) (11,654) (12,26) (13,147) (14,800)
(15,727) (16,781) (17,464) (18,314) (19,275)
(20,582) (21,496) (22,564) (23,15) (24,676)
(25,586) (26,575) (27,295) (28,81)
Danh sách này sẽ đợc sắp xếp để tạo L
1
.
Danh sách thứ hai chứa các cặp đợc sắp (i,525ì(3
i
)
-1
mod 809), với 0 i
28. Danh sách này gồm:
(0,525) (1,175) (2,328) (3,379) (4,396)
(5,132) (6,44) (7,554) (8,724) (9,511)
(10,440) (11,686) (12,768) (13,256) (14,,355)
(15,388) (16,399) (17,133) (18,314) (19,644)
(20,754) (21,496) (22,564) (23,15) (24,676)
(25,356) (26,658) (27,489) (28,163)
Sau khi sắp xếp danh sách này, ta có L
2
.
Bây giờ nếu xử lý đồng thời qua cả hai danh sách, ta sẽ tìm đợc ( 10,644)
trong L
1
và (19,644) trong L
2
. Bây giờ ta có thể tính
log
3
525 = 29ì10+19
= 309
Có thể kiểm tra thấy rằng quả thực 3
309
525 (mod 809).
Thuật toán Pohlig - Hellman.
Thuật toán tiếp theo mà ta nghiên cứu là thuật toán Pohlig - Hellman. Giả sử
p
i
là số nguyên tố đặc biệt. Giá trị a = log
đợc xác định một cách duy nhất
theo modulo p-1. Trớc hết nhận xét rằng, nếu có thể tính a mod p
i
c
i
với mỗi i, 1
i k, thì có thể tính a mod (p-1) theo định lý phần d China. Để thực hiện
diều đó ta giả sử rằng q là số nguyên tố.
p-1 0 (mod q
c
)
Ta sẽ chỉ ra cách tính giá trị
x = a mod q
c
0 x q
c
-1. Ta có thể biểu diễn x theo cơ số q nh sau:
trong đó 0 a
i
q-1 với 0 i c-1. Cũng có thể biểu diễn nh sau:
a = x + q
c
s
với s là một số nguyên nào đó.
Bớc đầu tiên của thuật toán tính a
0
. Kết quả chính ở đây là:
(p-1)/q
(p-1)a0/q
(mod p)
Để thấy rõ điều đó cần chú ý rằng:
Điều này đủ để cho thấy:
Kết quả này đúng khi và chỉ khi:
Tuy nhiên
p-1 0 (mod q
c+1
)
Đó chính là điều cần chứng minh.
Do đó ta sẽ bắt đầu bằng việc tính
(p-1)/q
mod p. Nếu
(p-1)/q
1 (mod p)
thì a
0
=0. Ngợc lại chúng ta sẽ tính liên tiếp các giá trị:
=
(p-1)/q
mod p,
2
mod p,. . .,
cho tới
i
(p-1)/q
(mod p).
với một giá trị i nào đó. Khi điều này xảy ra ta có a
0
=i.
Bây giờ nếu c = 1 thì ta đã thực hiện xong. Ngợc lại, nếu c > 1 thì phải
tiếp tục xác định a
1
. Để làm điều đó ta phải xác định
1
=
-a
o
và kí hiệu
x
1
= log
1
mod q
c
Dễ dàng thấy rằng
Vì thế dẫn đến
Nh vậy ta sẽ tính
1
(p-1)/
q
2
mod p và rồi tìm i sao cho
Khi đó a
1
= i.
Nếu c =2 thì công việc kết thúc; nếu không, phải lặp lại công việc này
c-2 lần nữa để tìm a
2
,. . .,a
c-1
.
Hình 5.4 là mô tả giải mã của thuật toán Pohlig - Hellman. Trong thuật
toán này, là phần tử nguyên thuỷ theo modulo p, q là số nguyên tố .
p-1 0 (mod q
c
)
và
p-1 0 (mod q
c+1
)
Thuật toán tính các giá trị a
0
, . . ., a
c-1
trong đó
log mod qc
Hình 5.4. Thuật toán Pohlig - Hellman để tính log
mod q
c
.
1. Tính =
(p-1)/q
mod p với 0 i q-1
2. Đặt j = 0 và
j
=
3. While j c-1 do
4. Tính =
j
(p-1)/
q
j+1
mod p
5. Tìm i sao cho =
i
6. a
j
= i
7.
j+1
=
j
-a
j
q
j
mod p
8. j = j +1
Chúng ta minh hoạ thuật toán Pohlig - Hellman (P - H) qua một ví dụ nhỏ.
Ví dụ 5.3
Giả sử p=29; khi đó
n = p-1 = 28 = 2
2
.7
1
Giả sử = 2 và = 18. Ta phải xác định a = log
2
18. Trớc tiên tính a mod 4 rồi
tính a mod 7.
Ta sẽ bắt đầu bằng việc đặt q = 2, c = 2. Trớc hết
0
= 1
và
1
=
28/2
mod 29
= 2
14
mod 29
= 28
Tiếp theo
=
28/2
mod 29
= 18
14
mod 29
= 28
Vì a
0
= 1. Tiếp theo ta tính:
1
=
0
-1
mod 29
= 9
và
1
28/4
mod 29 = 9
7
mod 29
= 28
Vì
1
28 mod 29
Ta có a
1
= 1. Bởi vậy a 3 ( mod 4).
Tiếp theo đặt q = 7 và c = 1, ta có
28/7
mod 29 = 18
4
mod 29
= 25
và
1
=
28/7
mod 29
= 2
4
mod 29
= 16.
Sau đó tính:
2
= 24
3
= 7
4
= 25
Bởi vậy a
0
= 4 và a 4 ( mod 7)
Cuối cùng giải hệ phơng trình
a 3 ( mod 4)
a 4 ( mod 7)
bằng định lý phần d China, ta nhận đợc a 11( mod 28). Điều này có nghĩa là
đã tính đợc log
2
18 trong Z
29
là 11.
Phơng pháp tính toán chỉ số.
Phơng pháp tính chỉ số khá giống với nhiều thuật toán phân tích thừa số
tốt nhất. Trong phần này sẽ xét tóm tắt về phơng pháp. Phơng pháp này chỉ
dùng một cơ sở nhân tử là tập B chứa các số nguyên tố nhỏ. Giả sử B = {p
1
,p
2
,.
. ., p
B
}. Bớc đầu tiên ( bớc tiền xử lý) là tìm các logarithm của B số nguyên tố
trong cơ sở nhân tử. Bớc thứ hai là tính các logarithm rời rạc của phần tử
bằng cách dùng các hiểu biết về các log của các phần tử trong cơ sở.
Trong quá trình tiền xử lý, ta sẽ xây dựng C = B +10 đồng d thức theo
modulo p nh sau:
x
j
p
1
a
1j
p2
a
2j
. . . p
B
a
Bj
(mod p)
1 j C. Cần để ý rằng, các đồng d này có thể viết tơng đơng nh sau:
x
j
a
1j
log
p
1
+ . . . + a
Bj
log
p
B
(mod p-1)
1 j C. C đồng d thức đợc cho theo B giá trị log
p
i
(1 i B) cha biết. Ta
hy vọng rằng, có một nghiệm duy nhất theo modulo p-1. Nếu đúng nh vậy thì
có thể tính các logarithm của các phần tử theo cơ sở nhân tử.
Làm thế nào để tạo các đồng d thức có dạng mong muốn?. Một phơng
pháp sơ đẳng là chọn một số ngẫu nhiên x, tính
x
mod p và xác định xem liệu
x
mod p có tất cả các thừa số của nó trong B hay không. (Ví dụ bằng cách
chia thử).
Bây giờ giả sử rằng đã thực hiện xong bớc tiên tính toán, ta sẽ tính giá
trị mong muốn log
bằng thuật toán xác suất kiểu Las Vegas. Chọn một số
ngẫu nhiên s ( 1 s p-2) và tính :
=
s
mod p
Bây giờ thử phân tích theo cơ sở B. Nếu làm đợc điều này thì ta tính đợc
đồng d thức dạng:
s
= p
1
c
1
p
2
c
2
. . . p
B
c
B
(mod p)
Điều đó tơng đơng với
log
+ s c
1
log
p
1
+ . . . + c
B
log
p
B
( mod p-1)
Vì mọi giá trị đều đả biết trừ giá trị log
nên có thể dễ dàng tìm đợc log
.
Sau đây là một ví dụ minh hoạ 2 bớc của thuật toán.
Ví dụ 5.4.
Giả sử p =10007 và = 5 là một phần tử nguyên thuỷ đợc dùnglàm cơ
sở của các logarithm theo modulo p. Giả sử lấy B = {2, 3, 5, 7} làm cơ sở.
Hiển nhiên là log
5
5 = 1 nên chỉ có 3 giá trị log của các phần tử trong cơ sở cần
phải xác định. Để làm ví dụ, chọn một vài số mũ "may mắn" sau: 4063, 5136
và 985.
Với x = 4063, ta tính
5
4063
mod 10007 = 2ì3ì7
ứng với đồng d thức
log
5
2 + log
5
3 + log
5
7 4063 ( mod 10006).
Tơng tự, vì
5
5136
mod 10007 = 54 = 2ì3
3
và 5
9865
mod 10007 = 189 = 3
3
ì7
ta tìm đợc hai đồng d thức nữa:
log
5
2 + 3log
5
3 5136 ( mod 10006)
3log
5
3 + log
5
7 9865 ( mod 10006)
0 nếu
(p-1)/2
1( mod p)
L
1
()=
1 trong các trường hợp còn lại
Bây giờ ta có 3 đồng d thức theo 3 giá trị log cha biết. Giải các phơng
trình đồng d này, ta có log
5
2 = 6578, log
5
3 = 6190, log
5
7 = 1301.
Bây giờ giả sử ta cần tìm log
5
9451, ta chọn số mũ "ngẫu nhiên" s=7736
và tính:
9451ì5
7736
mod 10007 = 8400
Vì 8400 = 2
4
3
1
5
2
7
1
các thừa số trong B nên ta nhận đợc:
log
5
9451 = 4log
5
2 + log
5
3 + log
5
5 + log
5
7 - s mod 10006
= 4ì6578 + 6190 + 2ì1 + 1310 - 7736 mod 10006
= 6057.
Kiểm tra lại ta thấy rằng 5
6057
9451 ( mod 10007).
Đã có nhiều nghiên cứu phân tích mò mẫm nhiều kiểu thuật toán khác
nhau. Với giả thiết hợp lý, Thời gian chạy tiệm cận của giai đoạn tiền tính toán
này cỡ
và thời gian để tính một giá trị logarithm rời rạc riêng là khoảng
Hình 5.5. Bít thứ i của logarithm rời rạc.
Bản chất của bài toán: I = (p, , , i) trong đó p là số nguyên tố ,
Z
p
*
là phần tử nguyên thuỷ, Z
p
*
và i là một số nguyên sao cho 1
i log
2
(p-1).
Mục tiêu:Tính L
i
() là bít thấp nhất thứ i của log
. (với và p cho
trớc)
5.1.2. Độ bảo mật tng bít của các logarithm rời rạc.
Bây giờ ta xem xét vấn đề về thông tin bộ phận của các logarithm rời
rạc và thử xem việc tính các bít riêng của các logarithm rời rạc là khó hay dễ.
Cụ thể , xét bài toán trình bày trên hình 5.5. Bài toán này đợc gọi là bài toán về
bít thứ i.
0 nếu
(p-1)/2
1( mod p)
L
1
()=
1 trong các trường hợp còn lại