Cho khoá công khai RSA (n,e) và bản mã c=memodn (với gcd(m,n)=1, 0<m<n). Ánh xạ mã hoá
E(x)=xemodn
là một song ánh (permutation) trên tập các số nguyên từ 1 đến n−1 nguyên tố cùng nhau với n (vì e nguyên tố cùng nhau với λ(n) — hàm Carmichael của n). Vì tập này hữu hạn, lặp lại E nhiều lần từ bất kỳ điểm nào rồi cũng quay vòng trở lại điểm xuất phát.
Tấn công chu trình: không cần biết p,q hay khoá riêng d, kẻ tấn công chỉ cần lặp:
x0=c,x1=E(x0),x2=E(x1), …
cho đến khi gặp lại xt=x0=c lần đầu tiên (với t≥1 nhỏ nhất thoả điều kiện này). Khi đó giá trị ngay trước đó, xt−1, chính là bản rõ:
xt−1=m
Lý do: vì E song ánh và xt−1emodn=xt=c=memodn, nên xt−1 phải bằng m (nghiệm căn bậc e duy nhất của c trong tập song ánh).
Với các bộ khoá trong đề bài, chu trình luôn đủ ngắn (tối đa vài nghìn bước) để chạy được trong thời gian giới hạn.
Yêu cầu: Cho (n,e,c), hãy tìm bản rõ m bằng tấn công chu trình (không được phân tích thừa số n).
Ví dụ: Với (n,e,c)=(915749, 5, 839994), kết quả là m=863390.
Một dòng gồm 3 số nguyên cách nhau bởi khoảng trắng: n e c.
Một dòng duy nhất: số nguyên m là bản rõ khôi phục được.
Ví dụ:
Đầu vào:
915749 5 839994
Đầu ra:
863390
Đầu vào:
10153579 5 2210790
Đầu ra:
5222650
Đang tải editor...