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] Xác thực đường dẫn xác thực Merkle

    Trong các sơ đồ chữ ký hậu lượng tử dựa trên hàm băm như XMSS/SPHINCS+, để chứng minh một lá thuộc cây Merkle mà không cần gửi toàn bộ cây, người ký gửi kèm đường dẫn xác thực (authentication path) — dãy các nút anh em (sibling) từ lá lên gốc.

    Cho giá trị lá ℓ\ellℓ, một dãy kkk cặp (dirj,sibj)(\text{dir}_j, \text{sib}_j)(dirj​,sibj​) theo thứ tự từ lá lên gốc, và một gốc được công bố RRR. Đặt cur=SHA256(ℓ)cur = \text{SHA256}(\ell)cur=SHA256(ℓ). Với mỗi cặp theo thứ tự j=1,…,kj = 1, \dots, kj=1,…,k:

    • Nếu dirj=\text{dir}_j = dirj​= L (nút anh em là con trái): cur←SHA256(hex(sibj) ∥ hex(cur))cur \leftarrow \text{SHA256}(\text{hex}(\text{sib}_j) \,\Vert\, \text{hex}(cur))cur←SHA256(hex(sibj​)∥hex(cur))
    • Nếu dirj=\text{dir}_j = dirj​= R (nút anh em là con phải): cur←SHA256(hex(cur) ∥ hex(sibj))cur \leftarrow \text{SHA256}(\text{hex}(cur) \,\Vert\, \text{hex}(\text{sib}_j))cur←SHA256(hex(cur)∥hex(sibj​))

    Sau khi xử lý hết kkk cặp, so sánh curcurcur với RRR: nếu bằng nhau in MATCH (lá thực sự thuộc cây có gốc RRR), ngược lại in MISMATCH.

    Có TTT trường hợp kiểm tra độc lập; với mỗi trường hợp in ra một dòng kết quả.

    Ví dụ

    Input:

    1
    L0
    2
    R dffe8596427fc50e8f64654a609af134d45552f18bbecef90b31135a9e7acaa0
    R 4eeebd7c6fdb7a3f5340e0f678822a5bac4960de3ab4b2129f2eea7d458bf8d1
    e2f0294810f8b6dfa366d7711616479fb32bea7133e5f75db677b9f0b3461225
    

    Output:

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

      Dòng đầu tiên chứa số nguyên TTT (T≥0T \ge 0T≥0). Với mỗi trường hợp: một dòng chứa chuỗi lá ℓ\ellℓ (không chứa khoảng trắng); một dòng chứa số nguyên kkk (k≥0k \ge 0k≥0); kkk dòng tiếp theo mỗi dòng gồm ký tự L hoặc R và chuỗi hex sibj\text{sib}_jsibj​, cách nhau bởi dấu cách; cuối cùng một dòng chứa chuỗi hex RRR (gốc được công bố).

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

      In ra TTT dòng, mỗi dòng là MATCH hoặc MISMATCH cho trường hợp tương ứng.

    Ví dụ:

    Đầu vào:

    0
    

    Đầu ra:

    
    

    Đầu vào:

    4
    L0
    2
    R dffe8596427fc50e8f64654a609af134d45552f18bbecef90b31135a9e7acaa0
    R 4eeebd7c6fdb7a3f5340e0f678822a5bac4960de3ab4b2129f2eea7d458bf8d1
    e2f0294810f8b6dfa366d7711616479fb32bea7133e5f75db677b9f0b3461225
    L2
    2
    R 842983de8fb1d277a3fad5c8295c7a14317c458718a10c5a35b23e7f992a5c80
    L 42fa4ce4c677b69a53d1f775d18a960d6c84a9ccded2f37421771a4779425d15
    e2f0294810f8b6dfa366d7711616479fb32bea7133e5f75db677b9f0b3461225
    L1
    2
    L 929172fae51e7c4fedc288349b430c1ca2ee1b35f6a9493f3ca7c83b44786791
    R 4eeebd7c6fdb7a3f5340e0f678822a5bac4960de3ab4b2129f2eea7d458bf8d1
    deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
    SOLO
    0
    d4008456cd59ffd7cd7dbe30651823fec911d6c21821d1a53b9d0663a7a4c6e7
    

    Đầu ra:

    MATCH
    MATCH
    MISMATCH
    MATCH
    

    Đang tải editor...