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 mảnh giả mạo trong lược đồ Shamir dư thừa

    Xét lược đồ chia sẻ bí mật Shamir ngưỡng (k,n)(k, n)(k,n) trên Zp\mathbb{Z}_pZp​ (ppp nguyên tố), nhưng được phát hành dư thừa: có n>kn > kn>k mảnh (x1,y1),…,(xn,yn)(x_1, y_1), \dots, (x_n, y_n)(x1​,y1​),…,(xn​,yn​) thay vì chỉ kkk mảnh. Biết rằng nhiều nhất một trong số các mảnh từ vị trí k+1k+1k+1 đến nnn có thể đã bị giả mạo (giá trị yiy_iyi​ bị sửa sai), còn kkk mảnh đầu tiên luôn đúng.

    Hãy dùng kkk mảnh đầu tiên để nội suy Lagrange, xác định duy nhất đa thức fff bậc k−1k-1k−1 sao cho f(xi)≡yi(modp)f(x_i) \equiv y_i \pmod pf(xi​)≡yi​(modp) với i=1,…,ki=1,\dots,ki=1,…,k. Sau đó kiểm tra từng mảnh còn lại (vị trí k+1k+1k+1 đến nnn) có thỏa f(xi)≡yi(modp)f(x_i) \equiv y_i \pmod pf(xi​)≡yi​(modp) hay không:

    • Nếu tất cả đều thỏa mãn: in ra bí mật S=f(0) mod pS = f(0) \bmod pS=f(0)modp.
    • Nếu có đúng một mảnh không thỏa mãn (ở vị trí mmm, đánh số từ 1 theo thứ tự xuất hiện trong dữ liệu vào): in ra INVALID m.

    Ví dụ: với p=97,k=2,n=4p=97, k=2, n=4p=97,k=2,n=4 và các mảnh (1,63),(2,71),(3,79),(4,87)(1,63), (2,71), (3,79), (4,87)(1,63),(2,71),(3,79),(4,87): từ hai mảnh đầu suy ra f(x)=55+8xf(x) = 55 + 8xf(x)=55+8x; kiểm tra f(3)=79f(3)=79f(3)=79 và f(4)=87f(4)=87f(4)=87 đều khớp, nên bí mật là 555555.

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

      Dòng đầu tiên chứa ba số nguyên p k np\ k\ np k n (ppp là số nguyên tố, 3≤p<1053 \le p < 10^{5}3≤p<105, 2≤k≤n≤152 \le k \le n \le 152≤k≤n≤15). nnn dòng tiếp theo, mỗi dòng chứa hai số nguyên xi yix_i\ y_ixi​ yi​ (1≤xi≤p−11 \le x_i \le p-11≤xi​≤p−1, 0≤yi≤p−10 \le y_i \le p-10≤yi​≤p−1), là mảnh thứ iii (thứ tự xuất hiện chính là chỉ số iii, tính từ 1). Các xix_ixi​ đôi một khác nhau.

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

      Nếu tất cả nnn mảnh nhất quán: in ra một số nguyên duy nhất là bí mật SSS. Nếu có đúng một mảnh (ở vị trí mmm) không khớp với đa thức nội suy từ kkk mảnh đầu: in ra chuỗi INVALID m (cách nhau bởi một khoảng trắng, không có dấu chấm câu).

    Ví dụ:

    Đầu vào:

    97 2 4
    1 63
    2 71
    3 79
    4 87
    

    Đầu ra:

    55
    

    Đầu vào:

    10007 3 5
    1 335
    2 367
    3 417
    4 485
    5 571
    

    Đầu ra:

    321
    

    Đang tải editor...