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 (Common Modulus Attack)

    Một hệ thống RSA cẩu thả dùng chung một môđun nnn cho hai người dùng khác nhau, chỉ khác số mũ công khai: người A có khoá (n,e1)(n, e_1)(n,e1​), người B có khoá (n,e2)(n, e_2)(n,e2​), với gcd⁡(e1,e2)=1\gcd(e_1, e_2) = 1gcd(e1​,e2​)=1.

    Cùng một bản rõ mmm (0<m<n0 < m < n0<m<n, gcd⁡(m,n)=1\gcd(m, n) = 1gcd(m,n)=1) được mã hoá gửi cho cả hai:

    c1=me1 mod n,c2=me2 mod nc_1 = m^{e_1} \bmod n, \qquad c_2 = m^{e_2} \bmod nc1​=me1​modn,c2​=me2​modn

    Vì gcd⁡(e1,e2)=1\gcd(e_1, e_2) = 1gcd(e1​,e2​)=1, dùng thuật toán Euclid mở rộng ta tìm được u,v∈Zu, v \in \mathbb{Z}u,v∈Z sao cho

    u⋅e1+v⋅e2=1u \cdot e_1 + v \cdot e_2 = 1u⋅e1​+v⋅e2​=1

    Khi đó, không cần biết khoá riêng, kẻ tấn công vẫn khôi phục được mmm nhờ:

    c1u⋅c2v≡mue1+ve2≡m1≡m(modn)c_1^{u} \cdot c_2^{v} \equiv m^{u e_1 + v e_2} \equiv m^{1} \equiv m \pmod nc1u​⋅c2v​≡mue1​+ve2​≡m1≡m(modn)

    (nếu uuu hoặc vvv âm, thay ciuc_i^{u}ciu​ bằng (ci−1 mod n)−u(c_i^{-1} \bmod n)^{-u}(ci−1​modn)−u, với ci−1c_i^{-1}ci−1​ là nghịch đảo modulo nnn).

    Bản rõ mmm, khi biểu diễn thành chuỗi byte lớn-đứng-trước (big-endian) với độ dài tối thiểu (tức số byte =⌈(soˆˊ bit của m)/8⌉= \lceil (\text{số bit của } m) / 8 \rceil=⌈(soˆˊ bit của m)/8⌉), chính là một chuỗi văn bản UTF-8 hợp lệ.

    Yêu cầu: Cho n,e1,c1,e2,c2n, e_1, c_1, e_2, c_2n,e1​,c1​,e2​,c2​, hãy khôi phục lại bản rõ mmm và in ra dưới dạng chuỗi văn bản gốc.

    Ví dụ: với bộ số cho trước mô tả ở trên (xem input mẫu), bản rõ khôi phục được là văn bản "CTF{RSA}".

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

      5 dòng, mỗi dòng một số nguyên: nnn, e1e_1e1​, c1c_1c1​, e2e_2e2​, c2c_2c2​ (đều là số nguyên không âm, có thể rất lớn).

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

      Một dòng duy nhất: chuỗi văn bản (UTF-8) là bản rõ mmm đã giải mã được (không có ký tự thừa ở đầu/cuối).

    Ví dụ:

    Đầu vào:

    827970649725430329095702574338281295552278247495092534130659
    17
    214095739840806742009749525892021437779494717238500813713704
    19
    754356386446996293965479538913939851148957641131119545535756
    

    Đầu ra:

    CTF{RSA}
    

    Đầu vào:

    1067059259328029885238977161901727036121423937328744614206640917
    3
    274625
    5
    1160290625
    

    Đầu ra:

    A
    

    Đang tải editor...