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] Phát hiện tấn công người đứng giữa trong trao đổi khóa DH

    Alice (khóa bí mật aaa) và Bob (khóa bí mật bbb) thực hiện trao đổi khóa Diffie–Hellman với tham số công khai ppp (số nguyên tố) và ggg. Alice tính A=ga mod pA = g^{a} \bmod pA=gamodp và gửi cho Bob; giả sử giá trị AAA này không bị thay đổi trên đường truyền.

    Về phía Bob, anh gửi giá trị công khai thật của mình cho Alice, nhưng một kẻ tấn công đứng giữa (MITM) đã chặn đường truyền và Alice thực nhận được giá trị BrecvB_{recv}Brecv​ (có thể trùng giá trị thật của Bob nếu không có tấn công, hoặc khác đi nếu bị giả mạo).

    • Alice tính khóa theo giá trị mình nhận được: KA=Brecv a mod pK_A = B_{recv}^{\,a} \bmod pKA​=Brecva​modp
    • Bob tính khóa theo giá trị công khai thật của Alice: KB=Ab mod pK_B = A^{b} \bmod pKB​=Abmodp

    Với mỗi bộ (p,g,a,b,Brecv)(p, g, a, b, B_{recv})(p,g,a,b,Brecv​), hãy tính KAK_AKA​, KBK_BKB​ và cho biết hai bên có thống nhất được khóa chung hay không (tức KA=KBK_A = K_BKA​=KB​ hay không).

    Ví dụ: p=23, g=5, a=6, b=15, Brecv=1p=23,\ g=5,\ a=6,\ b=15,\ B_{recv}=1p=23, g=5, a=6, b=15, Brecv​=1 (giá trị 111 là kết quả kẻ tấn công thay vào). Ta có A=56 mod 23=8A = 5^{6} \bmod 23 = 8A=56mod23=8; KA=16 mod 23=1K_A = 1^{6} \bmod 23 = 1KA​=16mod23=1; KB=815 mod 23=2K_B = 8^{15} \bmod 23 = 2KB​=815mod23=2. Vì KA≠KBK_A \ne K_BKA​=KB​ nên kết quả là MISMATCH.

    • Định dạng đầu vào:
      • Dòng đầu tiên chứa số nguyên TTT (1≤T≤10001 \le T \le 10001≤T≤1000).
      • TTT dòng tiếp theo, mỗi dòng chứa năm số nguyên p g a b Brecvp\ g\ a\ b\ B_{recv}p g a b Brecv​, trong đó ppp là số nguyên tố (2≤p≤1092 \le p \le 10^{9}2≤p≤109), 1≤g≤p−11 \le g \le p-11≤g≤p−1, 0≤a,b≤1090 \le a, b \le 10^{9}0≤a,b≤109, 0≤Brecv≤p−10 \le B_{recv} \le p-10≤Brecv​≤p−1.
    • Định dạng đầu ra:

      In ra TTT dòng, mỗi dòng gồm ba giá trị cách nhau một khoảng trắng: KAK_AKA​, KBK_BKB​ và từ khóa MATCH nếu KA=KBK_A = K_BKA​=KB​, ngược lại MISMATCH.

    Ví dụ:

    Đầu vào:

    1
    23 5 6 15 1
    

    Đầu ra:

    1 2 MISMATCH
    

    Đầu vào:

    1
    23 5 6 15 19
    

    Đầu ra:

    2 2 MATCH
    

    Đang tải editor...