Tấn công khi số mũ bí mật nhỏ

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phân tích hệ mật mã RSA và các biến thế của nó (Trang 46 - 49)

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.3. Tấn công khi số mũ bí mật nhỏ

Trong thực tế, khi dùng số mũ bí mật nhỏ sẽ làm tăng tốc độ giải mã, nhưng lại tạo ra các lỗ hổng mà kẻ tấn công có thể thực hiện được. Một tấn công điển hình khi số mũ bí mật nhỏ là tấn công của Wiener.

* Tấn công phân số liên tục của Wiener (Wiener's Cntinued Fraction Attack) [16], [7], [10]

Tấn công đầu tiên trên RSA khi số mũ bí mật nhỏ là tấn công phân số liên tục của Wiener. Chỉ cho khóa công khai (e, N), tấn công phân tích modulus bằng cách sử dụng thông tin lấy được từ một trong các hội tụ trong triển khai phân số liên tục của e/N.

Định lý 3.10:

Gọi N=pq là một modulus RSA, e là số mũ công khai, d là số mũ bí mật tương ứng được xác định bởi λ(N), k là số nguyên thỏa mãn ed= 1 + k λ(N), g=gcd(p-1,q-1), g0= g/gcd(g,k) và k0 = k/gcd(k,g).

Nếu số mũ bí mật thỏa mãn:

0 0 0

0 2

) 1 (

2 sg k

N k

g q p

d pq (*),

thì N có thể được phân tích thành nhân tử trong thời gian đa thức log(N) và g/k.

Chứng minh:

Cho N = qp, ,

) 1 , 1 gcd(

) ) (

1 , 1 ( )

( g

s N q

p q N

p lcm

N

(g = gcd(p-1, q-1)) Do đó, phương trình khóa có thể viết bằng:

), ( 1 ) ( 1 ) ( 1

0

0 N s

g N k

g N k

k ed

Chia cả 2 vế phương trình cho dN và giả định rằng số mũ bí mật d thỏa mãn (*), ta có:

2 0 0

0 0

0 0

0 0

0

) ( 2

1 ) 1

(

1 dg N dg

s k N dg

s k dN dg

k N s e g N

ed k

(vì g0<s và d thỏa mãn (*))

Theo định lý các phân số liên tục(Continued fractions), ta thấy k0/dg0 là một trong các điểm hội tụ trong triển khai phân số liên tục của e/N. Đặt ci=ai/bi là điểm hội tụ thứ i của e/N, ta biết rằng k0/dg0 aj/bj( j). Phương trình khóa có thể viết là: ed=1+(k0/g0) (N).

Mà:

0 0 0

0 0

0

k g a

e b k g k e dg N

j j

Do đó, ta có thể tính được (N) nếu biết được một hội tụ cj đã rút gọn và có thể đoán được g0/k0 . Khi tính được (N), ta có thể biết các thừa số của modulus (vì biết N=pq và (N)=(p-1)(q-1), ta có thể giải được p và q).

Để tìm được hội tụ đã rút gọn và tính được (N), ta làm như sau:

Đầu tiên, với m=0, ta tính các ứng cử viên cho (N) bằng cách lặp lại các hội tụ của e/N và tính ' e/ci m. Với mỗi ứng cử viên cho (N), ta thử tìm các thừa số modulus. Nếu không có ứng cử viên nào đưa ra được (N). Ta lặp lại tiến trình với m=1.

(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no(LUAN.VAN.THAC.SI).Phan.tich.he.mat.ma.RSA.va.cac.bien.the.cua.no

Nguyễn Thị Ngọc Anh – K16 – HTTT1

Theo cách này, ta chắc chắn tính được ứng cử viên cuối cùng:

0 0

' e/cj g /k và do đó tính được thừa số modulus. Mỗi một kiểm tra (thử phân tích modulus với N và một ứng cử viên (N)) có thể thực hiện trong thời gian đa thức log() và ta thử tại hầu hết các ứng cử viên g0/k0 g/k cho mỗi hội tụ (đpcm).

Điều kiện đủ trong định lý (*) không phải là điều kiện thường được dùng kết hợp với tấn công của Wiener. Điều kiện được dùng phổ biến hơn là:

) 1 ( 1 1/4,

c cN

d ,

là điều kiện thu được bằng cách giả định rằng: số mũ công khai có kích thước với kích thước của modulus, các số nguyên tố có kích thước bằng nhau và g0

nhỏ.

- Ví dụ: Cho khóa công khai (e, N)= (58549809, 2447482909). Khai triển liên tục của e/N là:

[0, 41, 1, 4, 23, 78, 1, 6, 8, 1, 1, 1, 4, 3, 2], và một số hội tụ đầu tiên là:

2678111 ,...

64067 383280 ,

, 9169 378431 , 9053 4849 , 116 209 , 5 42 , 1 41 , 1 0

Tiến hành kiểm tra lần lượt các hội tụ, với m=0. Kết quả là: ba hội tụ đầu không cho được các thừa số của N, hội tụ thứ tư, c4=5/209 cho ta một ứng cử viên của (N) là:

2447382016 5

58549809 209

4 '

c e

Giải hệ phương trình:

xy N

y x 1)( 1)

' (

được

40577 60317 y

x là các số nguyên tố Vậy (N)= ', do đó ta tìm được các thừa số của modulus là: p = 60317 và q= 40577. Sử dụng thừa số này, tính λ(N)=611845504, g=4 và khóa bí mật

) 40577 , 60317 , 209 ( ) , ,

(d p q . Ta thấy điều kiện đủ cho tấn công theo định lý được thỏa mãn vì d 209 N/2sg0k0 2425,82

Nhận xét:

Để làm suy yếu tấn công này, ta có thể làm cho các ràng buộc về số mũ bí mật giảm bằng các cách:

(1) Sử dụng các số nguyên tố có kích thước không cân bằng để:

s = p + q - 1 lớn hơn.

(2) Sử dụng các số nguyên tố để:

g = gcd(p-1, q-1) lớn, do đó g0 cũng lớn hơn.

(3) Sử dụng một số mũ công khai e > N để k ≈ ed/N lớn hơn.

Một số mũ công khai lớn hơn N có thể được tạo bằng cách đơn giản là thêm một bội của λ(N) vào số mũ công khai đã có. Trong thực tế, tấn công của Wiener trở nên hoàn toàn không hiệu quả khi e > N3/2.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Phân tích hệ mật mã RSA và các biến thế của nó (Trang 46 - 49)

Tải bản đầy đủ (PDF)

(67 trang)