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] Giả mạo chữ ký RSA nhờ tính nhân tính

    Lược đồ chữ ký RSA "textbook" (ký s=md mod ns = m^d \bmod ns=mdmodn, xác minh se mod n=ms^e \bmod n = msemodn=m) có một điểm yếu nghiêm trọng: tính nhân tính (multiplicativity). Nếu s1s_1s1​ là chữ ký hợp lệ của bản tin m1m_1m1​ và s2s_2s2​ là chữ ký hợp lệ của bản tin m2m_2m2​ (cùng một khóa bí mật ddd không được tiết lộ), thì:

    (s1⋅s2 mod n)e mod n=(m1⋅m2) mod n(s_1 \cdot s_2 \bmod n)^e \bmod n = (m_1 \cdot m_2) \bmod n(s1​⋅s2​modn)emodn=(m1​⋅m2​)modn

    Nói cách khác, s1⋅s2 mod ns_1 \cdot s_2 \bmod ns1​⋅s2​modn là chữ ký hợp lệ của bản tin mt=m1⋅m2 mod nm_t = m_1 \cdot m_2 \bmod nmt​=m1​⋅m2​modn — kẻ tấn công giả mạo được chữ ký cho một bản tin mới mà không cần biết khóa bí mật.

    Cho khóa công khai (n,e)(n, e)(n,e) và hai cặp (bản tin, chữ ký hợp lệ) (m1,s1)(m_1, s_1)(m1​,s1​), (m2,s2)(m_2, s_2)(m2​,s2​) dưới cùng khóa bí mật ddd, hãy tính bản tin đích mt=m1⋅m2 mod nm_t = m_1 \cdot m_2 \bmod nmt​=m1​⋅m2​modn và chữ ký giả mạo tương ứng st=s1⋅s2 mod ns_t = s_1 \cdot s_2 \bmod nst​=s1​⋅s2​modn.

    Ví dụ: n=3233,e=17,m1=65,s1=588,m2=10,s2=969n=3233, e=17, m_1=65, s_1=588, m_2=10, s_2=969n=3233,e=17,m1​=65,s1​=588,m2​=10,s2​=969. Ta có mt=650m_t = 650mt​=650, st=764s_t = 764st​=764.

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

      Một dòng gồm 6 số nguyên n e m1 s1 m2 s2n\ e\ m_1\ s_1\ m_2\ s_2n e m1​ s1​ m2​ s2​ cách nhau bởi khoảng trắng (2≤n<10252 \le n < 10^{25}2≤n<1025, 1≤e<n1 \le e < n1≤e<n, 0≤m1,s1,m2,s2<n0 \le m_1, s_1, m_2, s_2 < n0≤m1​,s1​,m2​,s2​<n).

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

      In ra hai số nguyên mtm_tmt​ và sts_tst​ cách nhau bởi một khoảng trắng.

    Ví dụ:

    Đầu vào:

    3233 17 0 0 123 2746

    Đầu ra:

    0 0
    

    Đầu vào:

    3233 17 65 588 10 969

    Đầu ra:

    650 764
    

    Đang tải editor...