Mục này khảo sát tính an toàn của thuật toán mã hoá RSA. Đối với trƣờng hợp khoá ngẫu nhiên và thông điệp ngẫu nhiên, sự tồn tại của một CPA hiệu quả chống lại hệ mật RSA có nghĩa là giả thuyết RSA phải thất bại.
Định nghĩa 1: Hệ mật RSA là an toàn "all-or-nothing" chống lại CPA nếu và chỉ nếu giả thuyết RSA vững chắc.
Ở đây, ý nghĩa của "all-or-nothing" đã đƣợc giải thích ở phần 2.1 và CPA đã đƣợc nhắc đến ở mục 1.4
Đầu tiên chúng ta hãy tìm hiểu an toàn kiểu "all-or-nothing". Từ "all" ở đây có nghĩa là phải tìm toàn bộ khối bản rõ trong trƣờng hợp thông thƣờng: thông điệp có kích thƣớc của modulo. Trong các ứng dụng thực tế, một bản rõ cụ thể chứa vài thông tin phụ không bí mật. Hệ mật RSA không che giấu vài thông tin phụ về một bản rõ. Ví dụ, nếu một bản rõ đƣợc biết nhƣ là một con số bé hơn 1.000.000 (ví dụ một cuộc đấu giá bí mật hoặc là số tiền lƣơng), sau đó đƣợc cho một bản mã, một kẻ tấn công có thể tìm ra bản
rõ trong quá trình mã hoá trial-and-error.
Thông thƣờng, cho một bản rõ m (< N), với một xác suất đáng kể, chỉ cần m lần thử để xác định m nếu bộ nhớ đáp ứng đƣợc kích thƣớc m. Tính chất nhân của hàm RSA nhƣ sau: e e e m m m m1 2) 1 2 ( c1c2(mod N)
Phân tích bản rõ thành thừa số có đƣợc các bản mã tƣơng ứng. Thƣờng một bài toán phân tích thừa số của bản mã RSA là khó do tính chất biến đổi hỗn hợp của hàm mã hoá sẽ là cách chung nhất làm cho một bản mã có kích thƣớc của modulo đó. Tuy nhiên tính chất luỹ thừa cho thấy rằng nếu một bản rõ dễ dàng phân tích thành thừa số thì bản mã cũng dễ dàng nhƣ thế. Tính lỏng lẻo của sự phân tích thành thừa số nguyên tố dẫn đến một cuộc tấn công gặp ở giữa.[4]
Tấn công gặp ở giữa và tấn công tích cực vào hệ mã RSA Điều kiện:
Đặt c = me (mod N) mà Malice biết m < 2l. Với một xác suất đáng kể, m là một tích số thoả mãn
m =m1m2 với m1, m2< 22
l
(1)
Tính chất luỹ thừa của hàm RSA sinh ra c = e
m1. e
m2 (mod N) (2)
MALICE thực hiện nhƣ sau
1. Xây dựng bộ dữ liệu đƣợc sắp xếp {1e, 2e, 3e....(22
l
)e} (mod N) 2. Tìm kiếm trong bộ dữ liệu đƣợc sắp xếp để tìm e
i c e j (mod N) ( cho i =1, 2, ....22 l ) ) (3)
Từ (1), (2), một tấn công vào ở giữa, điều kiện ở (3) sẽ chỉ ra trƣớc 22
l
bƣớc tính toán e
i (mod N). Nhƣ vậy thì Malice biết bản rõ i, j và anh ta khôi phục lại m = i.j.
Hãy làm một phép đo chi phí của Malice. Không gian lƣu trữ cho cơ sở dữ liệu là 2 2
l
.log N bit. Chi phí thời gian: tạo các phân tử trong cơ sở dữ liệu chi phí
OB(22 l .log3N), sắp xếp dữ liệu mất OB( 2 l .22 l
), cuối cùng, tìm kiếm trong danh sách
đƣợc sắp xếp để tìm e j (mod N) chi phí OB(22 l ( 2 l
+log3N)), công thức cuối cùng bao gồm cả thời gian cho việc tìm kiếm nhị phân là hàm mũ của modulo. Vậy tổng thời gian phải trả có độ phức tạp là OB(22l1
.(
2
l
+log3N)). Nếu chi phí cho không gian lƣu
trữ là 22
l
.log N bit, thì chi phí thời gian ít hơn chi phí về lƣu trữ là 2l. Kiểu tấn công này có độ phức tạp thời gian giảm đi căn bậc hai lần.
Ví dụ 1 Một ví dụ về tấn công trong thực tế.
Bây giờ chúng ta hãy nghĩ đến một tình huống sử dụng một khoá RSA 1024 bit để mã hoá một khoá DES dài 56 bit. Đối với một khoá DES ngẫu nhiên, việc khôi phục khoá có thể thực hiện với một xác suất đáng kể (để phân tích khoá DES thành hai số nguyên 28 bit), sử dụng không gian lƣu trữ 228.1024 = 238 bit =32 gigabit và tính toán đồng dƣ thức luỹ thừa 229. Chi phí không gian lƣu trữ và thời gian có thể đáp ứng đƣợc bởi máy tính cá nhân có cấu hình tốt, trong khi tìm kiếm khóa DES trực tiếp từ quá trình mã hoá yêu cầu tính toán đồng dƣ thức luỹ thừa 256 có thể không thực hiện đƣợc thậm chí sử dụng một thiết bị tốt.
Bây giờ chúng ta biết rằng chúng ta không nên sử dụng hệ mật RSA để mã hoá một khoá hoặc mật khẩu ngắn hơn 264bit. Điều gì xảy ra nếu trong một ứng dụng chúng ta phải thực hiện mã hoá RSA cho các số nguyên bé, thậm chí là một thông điệp dài bằng
một bit. Nhƣ vậy chúng ta nên sử dụng các phƣơng pháp mã hoá.đƣợc giới thiệu ở chƣơng 3.