CHƯƠNG 3 : TẤN CÔNG RSA VÀ CÁC BIẾN THỂ CỦA RSA
3.1. Tấn công vào RSA
3.1.1.1. Các tấn công khai thác sự sai sót của hệ thống
Đây là các tấn công được biết đến sớm nhất vào RSA.
3.1.1.1.1. Tấn công vào modulus phổ biến
Năm 1983, Simmon đã chỉ ra một sai sót khi cùng một bản rõ được mã hóa với hai khóa công khai khác nhau có cùng modulus N=pq và các mũ công khai nguyên tố cùng nhau. Cho 2 bản mã và 2 khóa công khai, ông chỉ ra rằng, bản rõ có thể dễ dàng tính được. Gọi (e1, N), (e2, N) là 2 khóa công khai, e1 và e2
nguyên tố cùng nhau, ta có thể dễ dàng tính được các số nguyên a1 và a2 để: a1e1 + a2e2 = 1. Cho một bản rõ m bất kỳ, ta có các bản mã: N m c N m c e e mod mod 2 1 2 1
Bản rõ được khôi phục lại bằng cách tính:
N c
ca1 a2 mod 2
1
Vì các tính toán trong ZN nên ta có:
m m m m c ca1 a2 a1e1 a2e2 a1e1 a2e2 2 1
Tấn công này có thể được thực hiện bởi bất kỳ ai có 2 khóa công khai và đã thấy hai bản mã.
Năm 1984, DeLaurentis chỉ ra rằng cách thức dùng modulus N chung hoàn toàn không an toàn. Ông đã chỉ ra: nếu biết một cặp khóa công khai bất kỳ nào cũng đủ để tính giá trị cho khóa bí mật tương ứng với mỗi khóa công khai với cùng một modulus N.
Nguyễn Thị Ngọc Anh – K16 – HTTT1
Định lý 3.1:
Gọi (e, N) là một khóa công khai với khóa bí mật tương ứng là (d, N), và (e1, N) là một khóa công khai khác (e1 ≠ e2). Cho e, d, N và e1, một số mũ bí mật d1 tương ứng với khóa công khai (e1, N) được tính bằng:
) 1 , gcd( 1 mod 1 1 1 1 ed e ed e
d trong thời gian đa thức log (N)
Nhận xét:
Qua định lý này ta thấy, trung tâm xác thực nên cung cấp cho mỗi người sử dụng một (N, e, d) riêng, không nên cung cấp một modulus cho quá một người dùng.
3.1.1.1.2. Håstad’s Broadcats attack
Một lỗ hỏng khác của RSA xảy ra khi các thông điệp bản rõ có quan hệ với nhau được mã hóa với các số mũ công khai bé và các modulus N khác nhau. Tất cả các tấn công vào lỗ hỏng này được gọi là tấn công Håstad’s Broadcats. Có hai loại tấn công phổ biến thuộc loại này là:
- Tấn công khi bản rõ giống nhau. - Tấn công khi bản rõ có quan hệ Phần này tham khảo tài liệu [7]
(1). Tấn công khi bản rõ phổ biến
Một lỗ hỏng của RSA là khi cùng một bản rõ m được mã hóa với các khóa công khai (e, Ni), mỗi khóa có cùng số mũ công khai e và một modulus Ni khác nhau. Tấn công dựa trên lỗ hỏng này được đưa ra đầu tiên bởi Håstad năm 1985.
Định lý 3.2:
Gọi :
- (e, N1), (e, N2), ...., (e, Nt) (t ≥ e): là các khóa công khai của RSA, các modulus nguyên tố cùng nhau từng đôi một.
- N0= min {N1, N2,..., Nt} - N ti Ni
1
Với một bản mã bất kỳ m<N0, cho (e, Ni) và ci= me
mod Ni (i=1,...,t). Bản mã m có thể được tính toán trong thời gian đa thức.
Chứng minh:
Vì các modulus nguyên tố cùng nhau từng đôi một nên sử dụng định lý đồng dư Trung Hoa để tính c ≡ me
vào. Vì m < N0, suy ra me< N1N2...Nt, suy ra c = me. Tính toán e lần gốc của c=me trên các số nguyên thu được bản rõ m.
(2). Tấn công bản rõ có quan hệ
Một lỗ hỏng của RSA là khi ta xem xét các bản rõ có quan hệ được mã hóa với các số mũ công khai nhỏ và các modulus khác nhau. Trong trường hợp này các bản rõ mi = fi(m) ( fi là một đa thức). Ở đây, m chỉ là một phần của mỗi bản rõ và ta coi như là một bản rõ đơn. Các tấn công vào lỗ hỏng này được tổng quát qua định lý của Bleichenbader như sau:
Định lý 3.3:
Cho (e1, N1), ...., (et, Nt) là các khóa công khai với các modulus nguyên tố cùng nhau từng đôi một. N0= min{N1, N2,..., Nt} N= N1N2...Nt ] [ ) ( ],..., [ ) ( 1 x f x Z x Z x f t N t N i : là các đa thức đã biếi.
Một bản rõ bất kỳ m< N0, nếu t max xi eideg(fi(x)) thì có i e
i
i f m N
c ( ) i mod
và (ei, Ni) (i= 1,..., t), bản mã m có thể được tính toán trong thời gian đa thức log(N).