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 chữ ký Lamport một lần

    Tiếp nối ý tưởng chữ ký Lamport: để ký thông điệp có bản băm là chuỗi bit m1m2…mnm_1 m_2 \dots m_nm1​m2​…mn​ (mi∈{0,1}m_i \in \{0,1\}mi​∈{0,1}), người ký tiết lộ ski,misk_{i,m_i}ski,mi​​ cho mỗi vị trí iii (tức lộ nửa khoá bí mật tương ứng với giá trị bit thực tế của thông điệp, giữ bí mật nửa còn lại). Chữ ký là dãy nnn chuỗi σ1,…,σn\sigma_1, \dots, \sigma_nσ1​,…,σn​.

    Người xác thực có khoá công khai (pki,0,pki,1)i=1n(pk_{i,0}, pk_{i,1})_{i=1}^n(pki,0​,pki,1​)i=1n​ (với pki,b=SHA256(ski,b)pk_{i,b} = \text{SHA256}(sk_{i,b})pki,b​=SHA256(ski,b​)) và biết trước chuỗi bit thông điệp. Chữ ký hợp lệ khi và chỉ khi với mọi iii: SHA256(σi)=pki,mi\text{SHA256}(\sigma_i) = pk_{i, m_i}SHA256(σi​)=pki,mi​​.

    Cho khoá công khai, chuỗi bit thông điệp và chữ ký, hãy xác định chữ ký có hợp lệ hay không.

    Ví dụ

    Input:

    1
    0
    65ed28e30a4315cf7a4c2ed441fbce32dd375844660572eb06725d2d1dfa4c89 f8ddd97541a41777b2561694bf24c1ce374e6ed9a195e0003b0a2121dca1c3e7
    only0
    

    Output:

    VALID
    

    (Vì SHA256(only0) trùng với pk1,0pk_{1,0}pk1,0​, đúng với bit thông điệp là 0.)

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

      Dòng đầu tiên chứa số nguyên nnn (n≥0n \ge 0n≥0) — độ dài (bit) của bản băm thông điệp. Dòng thứ hai chứa chuỗi bit thông điệp gồm nnn ký tự 0/1 (nếu n=0n = 0n=0 thì dòng này rỗng). nnn dòng tiếp theo, dòng thứ iii chứa hai chuỗi hex pki,0pk_{i,0}pki,0​ và pki,1pk_{i,1}pki,1​ cách nhau bởi dấu cách. nnn dòng cuối, dòng thứ iii chứa chuỗi σi\sigma_iσi​ (không chứa khoảng trắng) — phần chữ ký được tiết lộ tại vị trí iii.

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

      In ra đúng một dòng: VALID nếu chữ ký hợp lệ với mọi vị trí, ngược lại in INVALID (kể cả trường hợp n=0n = 0n=0, quy ước là VALID).

    Ví dụ:

    Đầu vào:

    2
    11
    9d355a3a8f267dee81cab05d2eb3111ca37d6f0c96f550b8803ac22a5a10a473 85478e978a441311de4d07f0b93b9ca1761fb5bfc4f7697d6a90bb529fbaa48d
    daf31fbfc61e13e57b1492d28c8e05bc72798a0c17000310c6b9d113b6e025a7 99ae59705a7898c8c9b30b1ad4be3566212e3121c0ca5a1224f04f61fbaa72b2
    aa1
    wrongsecret
    

    Đầu ra:

    INVALID
    

    Đầu vào:

    3
    010
    d34beeb70cddcc1f973ab468a4f7467557065a2fc1b9c118e728035b25d38af0 568db421693629b25e9eb5597365e4e862638d29dcc0bb03f4085ebf2d5afd6b
    c9f9b435ea28e08508a8cde57592bc1c430a6eafc4fdcdd0c981d4e58201046e ec59dfc2f1a7cc0d5086701d438f37bc7ac0775b9fa9811cd2f50df710f91211
    71887144a16bdf3185604be1dabb427fe611eaa17b7c02d2d023a5bff2233752 62760e02e295d95c44a38f61cd70b829b4db0a8041d930c735ed5daec64689ae
    s10
    s21
    s30
    

    Đầu ra:

    VALID
    

    Đang tải editor...