Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Tấn công môđun chung RSA (Common Modulus Attack)

    Hai người dùng dùng chung một môđun RSA nnn nhưng có số mũ công khai khác nhau e1,e2e_1, e_2e1​,e2​ với gcd⁡(e1,e2)=1\gcd(e_1, e_2) = 1gcd(e1​,e2​)=1. Cùng một bản rõ mmm được gửi mã hóa tới cả hai: c1=me1 mod nc_1 = m^{e_1} \bmod nc1​=me1​modn, c2=me2 mod nc_2 = m^{e_2} \bmod nc2​=me2​modn.

    Kẻ tấn công biết n,e1,c1,e2,c2n, e_1, c_1, e_2, c_2n,e1​,c1​,e2​,c2​ (không biết khóa bí mật) có thể khôi phục mmm: dùng thuật toán Euclid mở rộng tìm cặp số nguyên a,ba, ba,b sao cho

    a⋅e1+b⋅e2=1,a \cdot e_1 + b \cdot e_2 = 1,a⋅e1​+b⋅e2​=1,

    khi đó m=c1a⋅c2b mod nm = c_1^{a} \cdot c_2^{b} \bmod nm=c1a​⋅c2b​modn. Vì gcd⁡(e1,e2)=1\gcd(e_1,e_2)=1gcd(e1​,e2​)=1 nên chắc chắn tìm được đúng một cặp (a,b)(a,b)(a,b) như vậy (theo thuật toán Euclid mở rộng chuẩn); nếu aaa hoặc bbb âm, dùng nghịch đảo modulo của c1c_1c1​ hoặc c2c_2c2​ theo nnn để tính lũy thừa âm.

    Cho n,e1,c1,e2,c2n, e_1, c_1, e_2, c_2n,e1​,c1​,e2​,c2​ (đảm bảo gcd⁡(e1,e2)=1\gcd(e_1, e_2) = 1gcd(e1​,e2​)=1 và gcd⁡(m,n)=1\gcd(m, n) = 1gcd(m,n)=1), hãy khôi phục mmm.

    Ví dụ: n=3233,e1=17,c1=2790,e2=23,c2=1320n=3233, e_1=17, c_1=2790, e_2=23, c_2=1320n=3233,e1​=17,c1​=2790,e2​=23,c2​=1320 thì m=65m = 65m=65.

    • Định dạng đầu vào:

      Một dòng gồm 5 số nguyên n e1 c1 e2 c2n\ e_1\ c_1\ e_2\ c_2n e1​ c1​ e2​ c2​ cách nhau bởi khoảng trắng (2≤n<10252 \le n < 10^{25}2≤n<1025, 1≤e1,e2<n1 \le e_1, e_2 < n1≤e1​,e2​<n, gcd⁡(e1,e2)=1\gcd(e_1,e_2)=1gcd(e1​,e2​)=1, 0≤c1,c2<n0 \le c_1, c_2 < n0≤c1​,c2​<n).

    • Định dạng đầu ra:

      In ra duy nhất số nguyên mmm (0≤m<n0 \le m < n0≤m<n).

    Ví dụ:

    Đầu vào:

    3233 17 2790 23 1320

    Đầu ra:

    65
    

    Đầu vào:

    3233 17 1 23 1

    Đầu ra:

    1
    

    Đang tải editor...