Hash/Mật mã

TOTP Generator/Verifier

Mật khẩu dùng một lần dựa trên thời gian (TOTP, RFC 6238) — tạo mã hiện tại từ một secret và xác minh mã đã nhập với dung sai lệch đồng hồ.

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

Bài viết về công cụ này: TOTP: mã dùng một lần trong ứng dụng xác thực hoạt động như thế nào

Câu hỏi thường gặp

Vì sao mã được tạo hết hạn nhanh vậy?

Mã TOTP dựa trên thời gian — mặc định xoay vòng mỗi 30 giây, được tính từ thời gian Unix hiện tại và bí mật chung. Cửa sổ ngắn này giới hạn thời gian một mã bị rò rỉ vẫn còn hữu ích.

Điều gì xảy ra nếu đồng hồ thiết bị của tôi không đồng bộ?

TOTP dựa vào việc cả hai bên đồng ý gần đúng về thời gian hiện tại. Hầu hết ứng dụng xác thực và máy chủ cho phép một mức sai lệch đồng hồ nhỏ (thường một bước thời gian), nhưng sai lệch lớn hơn sẽ khiến mã hợp lệ bị từ chối.

Khóa bí mật của tôi có được gửi đi đâu khi tạo mã ở đây không?

Không. Mã TOTP được tính toán hoàn toàn trong trình duyệt của bạn — khóa bí mật không bao giờ rời khỏi thiết bị của bạn.

TOTP có bảo vệ chống lừa đảo (phishing) không?

Không hoàn toàn. Nếu nạn nhân nhập mật khẩu và mã TOTP hiện tại trên trang giả mạo, kẻ tấn công có thể lập tức sử dụng cả hai giá trị trên trang thật trong khi mã vẫn còn hiệu lực. Chỉ có khóa bảo mật phần cứng theo chuẩn FIDO2/WebAuthn mới chống được kiểu tấn công thời gian thực này.

Vì sao máy chủ chấp nhận cả khoảng thời gian trước đó chứ không chỉ khoảng hiện tại?

Điều này bù trừ cho độ trễ mạng nhỏ giữa lúc mã được tạo trên điện thoại và lúc máy chủ nhận và kiểm tra nó. Nếu không có khoảng dung sai này, các mã hợp lệ đôi khi sẽ bị từ chối chỉ vì độ trễ vài giây thông thường.

Bài viết: Hash/Mật mã

Hash Generator: MD5, SHA-1 và SHA-256 khác nhau ở điểm nào

Vì sao MD5 vẫn được dùng để kiểm tra tính toàn vẹn của tệp, nhưng không dùng cho mật khẩu.

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Vì sao checksum trùng khớp xác nhận tính toàn vẹn của một tệp, nhưng không xác nhận ai đã tạo ra nó.

HMAC: hash có khóa khác gì so với hash thông thường

Vì sao SHA-256 thông thường không bảo vệ khỏi việc giả mạo tin nhắn, nhưng HMAC thì có.

Bcrypt: vì sao mật khẩu được băm chậm chứ không nhanh

Vì sao SHA-256 nhanh là lựa chọn tồi cho mật khẩu, còn bcrypt chậm mới là lựa chọn đúng.

UUID: cách tạo ra định danh gần như không bao giờ trùng lặp

Vì sao UUID v4 có thể được tạo độc lập trên hàng triệu máy mà không có nguy cơ trùng lặp.

Trình tạo mật khẩu: điều gì thực sự làm cho mật khẩu mạnh

Vì sao mật khẩu dài gồm các từ trong từ điển mạnh hơn mật khẩu ngắn có ký hiệu và số.

AES: mã hóa đối xứng hoạt động như thế nào

Vì sao cùng một khóa vừa mã hóa vừa giải mã dữ liệu trong AES, và điều này khác gì với mã hóa bất đối xứng.

Argon2: vì sao thuật toán này giành chiến thắng cuộc thi băm mật khẩu

Argon2 phòng thủ trước các cuộc tấn công bằng GPU tốt hơn các thuật toán băm mật khẩu cũ như thế nào.

Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

Vì sao scrypt cố ý đòi hỏi nhiều bộ nhớ để gây khó khăn cho việc dò trên thiết bị ASIC.

PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất

Vì sao số lần lặp khuyến nghị của PBKDF2 tăng lên mỗi năm.

X.509: bên trong một chứng chỉ SSL có gì

Trình duyệt kiểm tra chính xác điều gì trong chứng chỉ của một trang web trước khi hiển thị ổ khóa xanh.

PGP: mã hóa bằng khóa công khai và khóa riêng hoạt động như thế nào

Vì sao có thể chia sẻ tự do khóa công khai PGP, nhưng không bao giờ chia sẻ khóa riêng.