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 thách thức - phản hồi HMAC có khoá tài khoản

    Hệ thống xác thực thách thức - phản hồi (challenge-response) dùng HMAC-SHA256 hoạt động như sau: với khoá bí mật KKK (hex) và một chuỗi thách thức ccc (chuỗi ASCII không chứa khoảng trắng) do máy chủ gửi cho client, phản hồi đúng là

    r=HMAC-SHA256(K,c)r = \text{HMAC-SHA256}(K, c)r=HMAC-SHA256(K,c)

    biểu diễn dưới dạng chuỗi hex (không phân biệt hoa/thường khi so sánh).

    Máy chủ theo dõi số lần phản hồi sai liên tiếp (bộ đếm lỗi): mỗi lần client phản hồi sai, bộ đếm tăng thêm 1; mỗi lần phản hồi đúng, bộ đếm được đặt lại về 0. Ngay khi bộ đếm đạt tới 3, tài khoản bị khoá vĩnh viễn — từ thời điểm đó trở đi, mọi lượt thử tiếp theo đều bị từ chối ngay lập tức (không kiểm tra phản hồi nữa), bất kể phản hồi gửi lên đúng hay sai.

    Cho khoá KKK và danh sách mmm lượt thử theo đúng thứ tự thời gian (mỗi lượt gồm một thách thức cic_ici​ và phản hồi rir_iri​ mà client gửi lên), hãy in ra kết quả của từng lượt:

    • OK nếu phản hồi đúng và tài khoản chưa bị khoá tại thời điểm đó.
    • FAIL nếu phản hồi sai và tài khoản chưa bị khoá tại thời điểm đó (kể cả nếu lượt sai này chính là lượt khiến tài khoản bị khoá).
    • LOCKED nếu tài khoản đã bị khoá từ trước lượt thử này.
    • Định dạng đầu vào:

      Gồm 2+m dòng:

      • Dòng 1: chuỗi hex của khoá bí mật KKK.
      • Dòng 2: số nguyên mmm (0≤m≤10000 \le m \le 10000≤m≤1000) — số lượt thử.
      • mmm dòng tiếp theo, mỗi dòng gồm hai giá trị cách nhau một khoảng trắng: c_i r_i — thách thức (chuỗi không chứa khoảng trắng) và phản hồi hex mà client gửi.
    • Định dạng đầu ra:

      mmm dòng, mỗi dòng là kết quả (OK, FAIL hoặc LOCKED) của lượt thử tương ứng theo đúng thứ tự. Nếu m=0m=0m=0 thì không in gì.

    Ví dụ:

    Đầu vào:

    deadbeef
    4
    ch1 0000000000000000000000000000000000000000000000000000000000000000
    ch2 0000000000000000000000000000000000000000000000000000000000000000
    ch3 41024a3a3b8c65b34db48a44b6c1dc36bf5b260c15a058c9c11076b2c4d45bdf
    ch4 0000000000000000000000000000000000000000000000000000000000000000
    

    Đầu ra:

    FAIL
    FAIL
    OK
    FAIL
    

    Đầu vào:

    deadbeef
    3
    ch1 df9f74efb8205b3fb33cca761b820397e96eedeac1884457047142f9c53e698a
    ch2 ec3eff3dc6291b6a4380bb295f1c4fbfed110cca887c0da6fe878538684bba54
    ch3 41024a3a3b8c65b34db48a44b6c1dc36bf5b260c15a058c9c11076b2c4d45bdf
    

    Đầu ra:

    OK
    OK
    OK
    

    Đang tải editor...