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] Cam kết dựa trên băm – Kiểm tra mở cam kết

    Cam kết dựa trên hàm băm (hash commitment)

    Người cam kết công bố c=SHA256(m ∥ r)c = \text{SHA256}(m \,\|\, r)c=SHA256(m∥r) (giá trị m|r), giữ kín mmm và số ngẫu nhiên rrr. Khi mở, họ tiết lộ (m,r)(m, r)(m,r); ai cũng kiểm được:

    c=?SHA256(m ∥ r)c \stackrel{?}{=} \text{SHA256}(m \,\|\, r)c=?SHA256(m∥r)

    Tính binding (không đổi được mmm) đến từ khả năng kháng va chạm; tính hiding đến từ rrr ngẫu nhiên.

    Ví dụ

    Với m=hello, r=42, cam kết đúng thì in VALID.

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

      Dòng 1: thông điệp m. Dòng 2: nonce r. Dòng 3: cam kết c (hex 64 ký tự).

    • Ràng buộc đầu vào:

      m, r là chuỗi không chứa xuống dòng; c là hex thường.

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

      VALID nếu c=SHA256(m∥r)c = \text{SHA256}(m\|r)c=SHA256(m∥r), ngược lại INVALID.

    Ví dụ:

    Đầu vào:

    hello
    42
    2ed2ad1ea7db459777b4f1f6c98fa662739b543f231b6cd41386022dfafe020c

    Đầu ra:

    VALID

    Giải thích:

    SHA256 của `hello|42` khớp cam kết đã cho nên kết quả là `VALID`.

    Đang tải editor...