4. Tổng quan luận văn
1.4 an toàn của RSA
Cho đến nay vẫn chƣa có một hệ thống thám mã nào có thể tấn công vào hệ mật mã RSA. Tính mật của RSA chủ yếu dựa vào việc bảo vệ khoá riêng d và giữ bí mật các số nguyên tố p và q. Tính an toàn của RSA chính là độ phức tạp của bài toán phân tích một số thành các thừa số nguyên tố. Với ngƣời thám mã có thể tấn công vào hệ mã RSA theo các hình thức.
(i) Vét cạn: Không gian khoá của RSA là rất lớn vì vậy tấn công theo hƣớng này là không thể thực hiện đƣợc.
(ii) Dùng toán học để tìm cách phân tích modulo n thành các thừa số nguyên tố.
Hệ RSA chỉ có khả năng bảo mật khi p, q là các số nguyên tố lớn (khoảng hơn 100 chữ số thập phân) và nhƣ vậy thì n có khoảng hơn 200 chữ số thập
phân. Để phân tích một số nguyên cỡ lớn nhƣ thế với các thuật toán nhanh nhất hiện nay cùng với hệ thống máy tính hiện đại nhất cũng mất hàng tỷ năm.
Sau khi tìm ra hệ mật mã, R.L.Rivest, A.Shamir, and L.M.Adleman đã viết một bài báo dƣới dạng một thông báo khoa học của MIT, trong đó có lời thách thức bạn đọc bẻ khoá một mẫu tin nhỏ đƣợc mã hoá với: n=11438162575788867669235779976146612010218296721242362562561842 9357069352457338978305971235639587050589890751475992900268795435 41 và e = 9007.
Mẫu tin: “first solver wins one hundred dollars” xuất hiện trong dạng mã hoá (với a = 01, b = 02, c = 03,…) chỉ đƣợc giải mã vào ngày 26/04/1994 bằng việc sử dụng 1600 workstations, mainframes và supercomputers tấn công trong 8 tháng liên tục để phân tích số nêu trên ra thừa số nguyên tố. Thực tế đó cho ta thấy RSA là an toàn, vì không mấy khi có thể huy động một lực lƣợng nhƣ thế vào chỉ để giải mã một mẫu tin [10].
Do tính đơn giản trong thiết kế nên RSA đƣợc ứng dụng rộng rãi và dùng nhiều nhất trong số các thuật toán với khoá công khai. Và cũng chính vì thế nó đã trải qua nhiều thử thách, xem xét, kiểm chứng của cộng đồng về độ an toàn của nó. Tuy nhiên khi dùng RSA thì tốc độ mã hóa khá chậm, vì thế để mã hoá khối dữ liệu lớn là không khả thi. Ngƣời ta đã tìm ra ứng dụng quan trọng độc đáo khác của RSA hơn là dùng nó để mã hóa: