VII-P-4
PHÂN TÍCH MODULUS N CỦA HỆ MÃ RSA TRONG TRƢỜNG HỢP KHÓA YẾU
Nguyễn Đức Thân1, Ngô Xuân Huy2, Trần Đình Long3
1
2
Khoa Công nghệ Thông tin, Trường ĐH KHTN, ĐHQG-HCM
Khoa Công nghệ Thông tin, Trường ĐH KHTN, ĐHQG-HCM
3
Trường ĐH Khoa học Huế
TÓM TẮT
Hệ mã RSA được sử dụng rất phổ biến trong thương mại điện tử, các ứng dụng mã hóa và bảo
vệ thông tin. Do tính phổ biến của nó, hệ mã RSA phải đối mặt với nhiều nguy cơ tấn công, trong đó
có tấn công trên khóa yếu. Trong bài báo này, chúng tôi khảo sát phân tích modulus N với trường hợp
khóa cá nhân yếu, cụ thể với trường hợp d N
1/4
. Kết quả nhận được cũng đặt ra một câu hỏi mở
về điều kiện để phân tích được modulus N từ cặp khóa công khai ( N , e) .
Từ khóa: RSA Cryptosystem, attack RSA, lattice based cryptography.
MỞ ĐẦU
Hệ mã công khai được sử dụng khá phổ biến hiện nay là hệ mã RSA, được tạo ra bởi Rivest, Shamir, và
Adleman [11] vào năm 1978. Chúng được ứng dụng rộng rãi và mạnh mẽ trên internet như bảo mật, chứng thực
cho các hệ thống thư điện tử, thẻ tín dụng. Tính bảo mật của hệ mã RSA được dựa trên độ khó của bài toán phân
tích thừa số nguyên tố.
N là tích của hai số nguyên tố lớn p và q , số mũ công khai e
ed 1 mod ( N )
và số mũ bí mật d . Các số mũ e và d liên hệ với nhau bởi
với ( N ) ( p 1)(q 1)
p
q
được gọi là phi hàm Euler. Trong một hệ thống RSA thông thường,
và xấp xỉ với nhau về chiều dài bit và
Hệ thống RSA được mô tả bởi modulus
e N .
MC
Thuật toán mã hóa và giải mã được cho bởi công thức lần lượt là
d
C Me mod N
,
mod N . Trong thực tế nảy sinh một số vấn đề là làm sao để giảm thời gian thực thi việc giải mã,
hay là làm sao để giảm thời gian thực thi việc mã hóa [2][5]. Một trong số những phương pháp dùng để giảm
thời gian thực thi việc giải mã đó là sử dụng số mũ bí mật
d
nhỏ.
Thật không may, trong năm 1990, Wiener[9] đã chỉ ra rằng với d N
mật
d dựa vào số cặp khóa công khai
dN
0.292
e, N
1/ 4
thì có thể tìm lại được số mũ bí
. Tiếp đến năm 1999, Boneh và Durfee[4] đã chứng tỏ rằng, với
thì RSA không còn an toàn được giới thiệu lần đầu tiên bởi Coppersmith tại Eurocrypt'96[6]. Các
thuật toán thu gọn dàn như thuật toán Gauss hay LLL có thể áp dụng vào việc tìm lại số mũ bí mật
số trường hợp số mũ bí mật
d trong một
d nhỏ.
N dựa trên thuật toán thu gọn Gauss trên
dàn hai chiều để tìm ra khóa riêng d nhỏ, sau đó dựa vào d tìm được để phân tích N . Thêm vào đó muốn
1/4
p và
khẳng định việc tồn tại hệ số 1 sao cho với mọi d N thì khóa bí mật d và hai số nguyên tố
q luôn được phục hồi từ cặp khóa công khai ( N , e) bằng cách sử dụng tấn công trên dàn hai chiều. Cụ thể với
1
4
N
42 2
thì khóa cá nhân d luôn được phục hồi từ cặp khóa ( N , e) công khai.
Trong bài báo này chúng tôi sẽ trình bày cách phân tích modulus
THU GỌN DÀN HAI CHIỀU
Trong [1], Phong Q. Nguyen chỉ ra cách tìm số mũ bí mật d dựa trên bài toán tìm vectơ ngắn nhất của dàn
hai chiều dùng thuật toán Gauss để thu gọn cơ sở. Và chỉ ra lý do đoán được trong dàn hai chiều với trường hợp
d N 1/4 . Tuy nhiên phiên bản tấn công bằng dàn này chỉ là mẹo giải.Giả sử p, q là hai số nguyên tố có cùng
chiều dài tính bằng bit. Từ ed 1 mod ( N ) tồn tại số nguyên
ISBN: 978-604-82-1375-6
k
sao cho ed 1 k ( N ) .
101
Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Xét dàn hai chiều
được sinh bởi hai vectơ b1 (e,
L
N ) và b2 ( N , 0) thì L chứa vectơ
2
2
t d b1 k b2 (ed kN , d N ) . Chuẩn của‖ t‖ (ed kN ) (d N ) d N , trong khi
đó
vol( L) N 3/4 . Vectơ t có thể là vectơ ngắn nhất nếu d N vol( L) N 3/4 nghĩa là d N 1/4 .
Sử dụng thuật toán Gauss (Thuật toán 1) với hai vectơ b1 và b 2 nói trên. Sau khi thuật toán dừng sẽ cho ra hai
vectơ
b1* và b*2 . Chú ý rằng vectơ b1* là vectơ ngắn nhất trong dàn. Thuật toán Gauss sẽ dừng cỡ
‖ b1‖
log1 2
2
*
3 lần lặp[7], với 2 là vectơ cực tiểu liên tiếp thứ hai của L . Nếu b1 t thì coi như ta
đã đoán thành công và tính ra số mũ bí mật
d
dựa vào vectơ b1 .
Thuật toán 1: Thu gọn dàn
Đầu vào: Cơ sở (b1, b 2 )
(b1* , b2* )
Đầu ra: Cơ sở thu gọn
Repeat
If‖
b2‖ ‖ b1‖ then
Swap b1 and b 2
End if
b , b
m 1 22
‖ b1‖
b2 b2 m b1
Until‖
b2‖ ‖ b1‖
Thuật toán 1. Thuật toán thu gọn dàn hai chiều.
Bổ đề 1Cho N pq với
p, q là hai số nguyên tố thỏa p q 2 p thì
2
N p N q 2 N.
2
Chứng minh.
Giả sử p q 2 p nên ta có pq q 2 2 pq hay N q 2 2 N . Nên có
Từ N pq nên ta có q
Suy ra
N
và do
p
N q 2 N nên
L R là một dàn được sinh bởi hai vectơ độc lập tuyến tính b1 , b2 R 2 . Sử dụng
thuật toán thu gọn dàn Gauss cho hai vectơ b1 , b 2 của dàn
b0
N
2 N.
p
2
N p N (2). Từ (1) và (2) suy ra điều cần chứng minh ■
2
Mệnh đề 1 Cho
và
N
N q 2 N (1).
thỏa mãn‖
L
thu được hai vectơ
b1* , b*2 . Nếu vectơ b L
b‖ ‖ b*2‖ thì b sb1* với s Z .
Chứng minh
Từ
bL
có
b sb1* rb*2 với s, r Z . Giả sử có điều ngược lại r 0 , ta xét ba trường hợp sau:
Trƣờng hợp 1: | s | 1 và | r | 1 . Với trường hợp này ta có
ISBN: 978-604-82-1375-6
102
‖ b‖ 2 =‖ sb1* rb*2‖ 2 =‖ b1* b 2‖ 2 =‖ b1*‖ 2 +‖ b*2‖ 2 2b1* , b*2
1 b1* , b*2
=‖ b ‖ 2‖ b ‖
* 2
2 ‖ b1‖
*
2
2
*
1
2
| b1* , b*2 | 1
cho
‖ b1*‖ 2
2
Vì
nên
1 b1* , b*2
0.
2 ‖ b1*‖ 2
Do
đó
1 b1* , b*2
‖ b‖ ‖ b ‖ 2‖ b ‖
‖ b*2‖ 2 .
* 2
2 ‖ b1‖
2
*
1
2
*
1
2
Trƣờng hợp 2: s 1 hoặc r 1 . Nếu | s || r | thì‖
b‖ 2 s 2‖ b1* b*2‖ 2 s 2‖ b*2‖ 2 ‖ b*2‖ 2 .
Nếu | s || r | thì
‖ b‖ 2 s 2‖ b1*‖ 2 r 2‖ b*2‖ 2 2sr b1* , b*2
s 2‖ b1*‖ 2 r 2‖ b*2‖ 2 2 | sr | . | b1* , b*2 |
=‖ b*2‖ 2 s 2‖ b1*‖ 2 (r 2 1)‖ b*2‖ 2 2 | sr | . | b1* , b*2 |
‖ b*2‖ 2 s 2‖ b1*‖ 2 ( r 2 1)‖ b*2‖ 2 | sr | .‖ b1*‖ 2
‖ b*2‖ 2 s 2‖ b1*‖ 2 (r 2 1)‖ b1*‖ 2 | sr | .‖ b1*‖ 2 (Do ‖ b 2‖ ‖ b1‖ )
‖ b*2‖ 2 ( s 2 r 2 | sr | 1)‖ b1*‖ 2
‖ b*2‖ 2 (| s | | r |) 2 | sr | 1‖ b1*‖ 2
‖ b*2‖ 2 (Do (| s | | r |) 2 1 0)
Trƣờng hợp 3: s 0 . Với trường hợp này có‖
Cả ba trường hợp xét ở trên đều đi đến‖
b‖ ‖ rb*2‖ ‖ b*2‖ do r 0 .
b‖ ‖ b*2‖ , nên dẫn đến mâu thuẫn. Vì vậy r 0 hoặc b sb1* .■
TẤN CÔNG RSA TRÊN DÀN HAI CHIỀU
p
Với hai số nguyên tố
và
ước lượng k và ed kn như sau:
q
thỏa điều kiện p q 2 p thì từ Bổ đề 1 có
p q ( 2 1) N ta
Mệnh đề 2 Cho N pq là tích của hai số nguyên tố
các
số
nguyên
dương
thỏa
mãn
p và q thỏa điều kiện p q 2 p . d và e là
1 e, d ( N ) và
ed 1 k ( N ) thì
k d và
| ed kN | ( 2 1)d N .
Chứng minh
Từ e ( N ) có 1 k ( N ) ed d ( N ) . Do đó k d
1
d .
(N )
Từ ed 1 k (n) k ( p 1)(q 1) có ed 1 k (n 1 p q) .
ISBN: 978-604-82-1375-6
103
Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
p q ( 2 1) N có
Do
| ed kN || k ( p q 1) 1|| k ( p q) | ( 2 1)k N ( 2 1)d N ■
N ), b2 ( N ,0) và dàn L R được sinh bởi hai vectơ b1 , b 2 . Thì
Xét hai vectơ b1 (e,
t d b1 k b2 (ed kN , d N ) là vectơ ngắn nhất của dàn L . Sử dụng thuật toán thu gọn dàn
L
Gauss cho cơ sở b1 , b 2 của dàn
và
thu được cơ sở thu gọn
b1* , b*2 . Mệnh đề dưới đây ước lượng chuẩn của t
b*2 .
Mệnh đề 3. Cho N , e là hai số nguyên thỏa điều kiện như Chú ý 1và
R 2 được sinh bởi
*
*
hai vectơ b1 (e, N ) , b 2 ( N , 0) , và t d b1 k b2 (ed kN , d N ) . Hai vectơ b1 , b 2 là kết
L
là dàn trong
quả sau khi chạy thuật toán Gauss cho cơ sở b1 , b 2 của L , thì
‖ t‖ 4 2 2 d N ,
3
‖ b*2‖ N 4 .
Chứng minh
Từ Mệnh đề 2 có
‖ t‖ (ed kn)2 (d n )2
Có det(L )
e
det
N
(
2 1)d N
2
(d n ) 2 4 2 2 d N
N
*
*
N N do det(L ) ‖ b1‖ .‖ b2‖ (Bất đẳng thức Hadamard) nêncó
0
3
được N N ‖ b1‖ .‖ b2‖ ‖ b2‖ . Vì vậy
*
*
Mệnh đề 4.Nếu
*
2
N 4 ‖ b*2‖ ■
b L thỏa mãn t sb, s Z
thì
s 1 .
Chứng minh
Để ý thấy rằng gcd(d , k ) 1 do ed 1 k ( p 1)(q 1) .
Giả sử b a b1 b b2 (ae bN , a N ) với a, b Z .
Từ
t sb
có
ed kN
d N
s(ae bN )
.
sa N
ed kN sae sbN (3) và d sa (4). Thay d từ đẳng thức (4) vào đẳng thức (3) được
esa kN sae sbN hay k sb (5). Từ đẳng thức (4) và (5) với s là ước chung của d và k .
Thật vậy,
Kết hợp với điều kiện gcd( d , k ) 1 có
Mệnh đề 5.Nếu
d
1
42 2
4
N
thì
s 1 . Điều phải chứng minh.■
t là vectơ ngắn nhất của dàn L .
Chứng minh
Theo Mệnh đề 2 và Mệnh đề 3 có
ISBN: 978-604-82-1375-6
104
‖ t‖ (ed kN ) 2 (d N ) 2
1
2
42
42 2 d N
42
4
2
N N 4 N 3 ‖ b*2‖
Từ Mệnh đề (2) với
t sb1* và Mệnh đề 4 với s 1 suy ra t b1* là vectơ ngắn nhất của dàn L .■
Phân tích modulus
N
từ khóa riêng
Sau khi tìm được khóa riêng
d
d đã biết
bằng thuật toán Gauss, ta sử dụng phương pháp tìm căn nguyên thủy của
1 (mod n ) . Để tìm căn nguyên thủy của 1 (mod n) , ta tiếp hành cách bước sau :
Chọn a Z * ngẫu nhiên
Định nghĩa dãy b0 , b1 ,, bs với
bi a 2 t mod n , 0 i s
i
Mỗi số trong dãy là căn bậc hai của số trước đó ( mod n )
Số cuối cùng trong dãy là
bs aed 1 mod n
Từ ed 1 mod (n) , theo định lý Euler ta có bs 1 mod n
2
2
Giả sử b 1 mod n thì n | (b 1) (b 1)(b 1) . Nếu b 1
mod n thì n không là ước
b 1 cũng như của b 1 . Do đó, một phân tích của n chia hết b 1 và một phân tích khác chia hết b 1 .
Vì vậy, p gcd b 1, n là một phân tích không tầm thường của n . Suy ra, phân tích còn lại là
q n / p . Thuật toán 2 mô tả các tính hai số nguyên tố p, q từ bộ ba ( N , e, d ) . Xác suất mà
của
b 1
mod n
với một số nguyên ngẫu nhiên được chọn a Z * ít nhất là 0.5. Vì vậy, số lần lặp mong
đợi không vượt quá 2 [10].
Thuật toán 2: Phân tích
N từ e, d cho trƣớc
Đầu vào: N , e, d
Đầu ra:
p, q
s 0, t ed 1
While (t chẵn) {s++; t/=2; }
do {
Chọn a Z * ngẫu nhiên
mod n
2
While( b 1 mod n )
b at
b b2
mod n
}while( b 1
mod n )
p gcd(b 1, n)
q n/ p
Thuật toán 2. Thuật toán phân tích số nguyên N từ d cho trước
Ví dụ
ISBN: 978-604-82-1375-6
105
Báo cáo toàn văn Kỷ yếu hội nghị khoa học lần IX Trường Đại học Khoa học Tự nhiên, ĐHQG-HCM
Chọn cặp khóa công khai (e, N ) sao cho
d
1
42 2
N 1/4 0.38 N 1/4 để đảm bảo luôn tìm được
khóa riêng d . Giả sử chọn (e, N ) (2903147714092854259 , 65220299112830 41003) .
Sử dụng thuật toán Gauss với dàn hai chiều có cơ sở b1 (e,
riêng
N ) và b2 ( N , 0) , tìm được khóa
d 811 .
d , sử dụng thuật toán phân tích số nguyên N
( p, q) lần lượt là 2562355507 và 2545325929 .
Sau khi tìm được
được cặp
, với đầu vào gồm bộ ba ( N , e, d ) ta tìm
KẾT LUẬN
Trong bài báo này, chúng tôi đã chứng minh chặt chẽ về lý thuyết việc tồn tại hệ số 1 sao cho với mọi
d N 1/4 thì khóa bí mật d luôn được phục hồi từ cặp khóa công khai (e, N ) . Sau đó tìm được hai số nguyên
tố
p, q từ khóa riêng d đã được phục hồi. Cụ thể với d N 1/4 khi
được bộ ba (d , p, q) chính xác từ
1
42 2
0.38
thì luôn tìm lại
t ed kN , d N bằng thuật toán Gauss. Đến đây xuất hiện một câu hỏi
mở cho vấn đề đang nghiên cứu: điều kiện cần và đủ để có thể phân tích được số modulus
khai ( N , e) bằng tấn công dàn dùng thuật toán Gauss trên dàn hai chiều?
N
từ cặp khóa công
TÀI LIỆU THAM KHẢO
[1]. Nguyen, Phong Q. , Public-key cryptanalysis. Recent Trends in Cryptography. Contemporary
Mathematics 477 (2008).
[2]. Sun, Hung-Min, and Cheng-Ta Yang. RSA with balanced short exponents and its application to entity
authentication. Public Key Cryptography-PKC 2005 (2005): 199-215.
[3]. Boneh, Dan, Ron Rivest, Adi Shamir, and Len Adleman. Twenty years of attacks on the RSA
cryptosystem. Notices of the AMS 46, no. 2 (1999): 203-213.
[4]. Boneh, Dan, and Glenn Durfee. Cryptanalysis of RSA with private key d less than N 0.292. In Advances
in Cryptology—EUROCRYPT’99, pp. 1-11. Springer Berlin/Heidelberg, 1999.
[5]. Sun, Hung-Min, Wu-Chuan Yang, and Chi-Sung Laih. On the design of RSA with short secret exponent.
Advances in Cryptology-ASIACRYPT’99 (1999): 150-164.
[6]. Coppersmith, Don. Finding a small root of a bivariate integer equation; factoring with high bits known. In
Advances in Cryptology—EUROCRYPT’96, pp. 178-189. Springer Berlin/Heidelberg, 1996.
[7]. Schnorr, C. P. Gittertheorie und Kryptographie. Ausarbreitung, Johann-Wolfgang-Goethe-Universit at,
Frankfurt/Main (1994).
[8]. Vallée, Brigitte. Gauss' algorithm revisited. Journal of Algorithms 12, no. 4 (1991): 556-572.
[9]. Wiener, Michael J. Cryptanalysis of short RSA secret exponents. Information Theory, IEEE Transactions
on 36, no. 3 (1990): 553-558.
[10]. Kranakis, Evangelos. Primality and Cryptography. Yale University, Department of Computer Science,
1985.
[11]. Rivest, Ronald L., Adi Shamir, and Len Adleman. A method for obtaining digital signatures and publickey cryptosystems. Communications of the ACM 21, no. 2 (1978): 120-126.
ISBN: 978-604-82-1375-6
106
... 1, n ph n tích không tầm thường n Suy ra, ph n tích lại q n / p Thuật to n mô tả tính hai số nguy n tố p, q từ ba ( N , e, d ) Xác suất mà b 1 mod n với số nguy n ngẫu nhi n ch n. .. hay N q N N n có Từ N pq n n ta có q Suy N p N q N n n L R d n sinh hai vectơ độc lập tuy n tính b1 , b2 R Sử dụng thuật to n thu g n d n Gauss cho hai vectơ b1 , b d n b0 N. .. Mệnh đề với s 1 suy t b1* vectơ ng n d n L ■ Ph n tích modulus N từ khóa riêng Sau tìm khóa riêng d d biết thuật to n Gauss, ta sử dụng phương pháp tìm nguy n thủy (mod n ) Để tìm nguyên