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 quảng bá Håstad với e = 3

    Một người gửi dùng số mũ công khai nhỏ e=3e = 3e=3 (để mã hoá nhanh) và gửi cùng một bản rõ mmm cho ba người nhận khác nhau, mỗi người có một môđun RSA riêng n1,n2,n3n_1, n_2, n_3n1​,n2​,n3​ (đôi một nguyên tố cùng nhau, tức gcd⁡(ni,nj)=1\gcd(n_i, n_j) = 1gcd(ni​,nj​)=1 với i≠ji \ne ji=j), nhưng dùng chung e=3e = 3e=3:

    c1=m3 mod n1,c2=m3 mod n2,c3=m3 mod n3c_1 = m^3 \bmod n_1, \qquad c_2 = m^3 \bmod n_2, \qquad c_3 = m^3 \bmod n_3c1​=m3modn1​,c2​=m3modn2​,c3​=m3modn3​

    với 0<m<min⁡(n1,n2,n3)0 < m < \min(n_1, n_2, n_3)0<m<min(n1​,n2​,n3​).

    Tấn công quảng bá Håstad: Kẻ nghe lén thu được cả ba (ni,ci)(n_i, c_i)(ni​,ci​) nhưng không biết khoá riêng nào. Áp dụng Định lý phần dư Trung Hoa (CRT) cho hệ:

    x≡c1(modn1),x≡c2(modn2),x≡c3(modn3)x \equiv c_1 \pmod{n_1}, \qquad x \equiv c_2 \pmod{n_2}, \qquad x \equiv c_3 \pmod{n_3}x≡c1​(modn1​),x≡c2​(modn2​),x≡c3​(modn3​)

    ta tìm được nghiệm duy nhất xxx với 0≤x<N=n1n2n30 \le x < N = n_1 n_2 n_30≤x<N=n1​n2​n3​. Vì m<min⁡(ni)m < \min(n_i)m<min(ni​) nên m3<min⁡(ni)3≤Nm^3 < \min(n_i)^3 \le Nm3<min(ni​)3≤N, suy ra

    x=m3(modN)  vaˋ đoˆˋng thời  x=m3 (đẳng thức treˆn soˆˊ nguyeˆn, khoˆng chỉ modulo)x = m^3 \pmod N \ \text{ và đồng thời } \ x = m^3 \text{ (đẳng thức trên số nguyên, không chỉ modulo)}x=m3(modN)  vaˋ đoˆˋng thời  x=m3 (đẳng thức treˆn soˆˊ nguyeˆn, khoˆng chỉ modulo)

    Do đó chỉ cần khai căn bậc ba đúng (chính xác tuyệt đối trên số nguyên) của xxx là ra mmm — hoàn toàn không cần phá khoá riêng của bất kỳ ai. (Lưu ý: không dùng x ** (1/3) vì sai số dấu phẩy động với số lớn; cần cài đặt thuật toán khai căn bậc ba nguyên, ví dụ bằng tìm kiếm nhị phân.)

    mmm, biểu diễn thành chuỗi byte lớn-đứng-trước với độ dài tối thiểu, là một chuỗi văn bản UTF-8.

    Yêu cầu: Cho ba cặp (n1,c1),(n2,c2),(n3,c3)(n_1, c_1), (n_2, c_2), (n_3, c_3)(n1​,c1​),(n2​,c2​),(n3​,c3​), hãy khôi phục và in ra bản rõ mmm dạng văn bản.

    Ví dụ: Với input mẫu, bản rõ khôi phục là "BROADCAST".

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

      3 dòng, mỗi dòng gồm 2 số nguyên cách nhau bởi khoảng trắng: dòng iii là ni cin_i\ c_ini​ ci​ (i=1,2,3i = 1, 2, 3i=1,2,3).

    • Đị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 khôi phục được.

    Ví dụ:

    Đầu vào:

    2617787251503178393194837689501170222193 1099065005977252589927268957019845968590
    2273175121069929087887059178940045661031 1848157494960961691112411806955063927695
    2545853713626371774178911685786656533253 2130349165788502281608452012704925409951
    

    Đầu ra:

    BROADCAST
    

    Đầu vào:

    151258655905290436544509242513087194537 704969
    160571644212235770405873135828024831173 704969
    114104754383386540299373108530343738777 704969
    

    Đầu ra:

    Y
    

    Đang tải editor...