Mật khẩu ngẫu nhiên bao gồm chữ cái, chữ số và ký hiệu thông qua hàm crypto.getRandomValues.
Trình tạo mã TOTP/HOTP
Công cụ này được hiển thị bằng tiếng Anh; trang này giải thích về công cụ đó bằng ngôn ngữ của bạn.
Sử dụng Trình tạo mã TOTP/HOTP
Chức năng của nó là gì?
Tính toán mật khẩu dùng một lần dựa trên thời gian (TOTP) hoặc dựa trên bộ đếm (HOTP) cho một khóa bí mật Base32, theo cách mà các ứng dụng xác thực thực hiện, và kiểm tra xem mã đó có khớp hay không. Tính năng này hữu ích để kiểm tra cấu hình xác thực hai yếu tố (2FA) của bạn.
Ứng dụng này hoạt động hoàn toàn trên trình duyệt của bạn: mọi thông tin bạn nhập vào đều không được tải lên.
Cách sử dụng Trình tạo mã TOTP/HOTP
- Nhập mật khẩu. Dán mã bí mật Base32 của tài khoản thử nghiệm của bạn vào ô “Mã bí mật (Base32)”, hoặc nhấn “Ngẫu nhiên” để tạo một mã bí mật mới gồm 32 ký tự.
- Điều chỉnh cài đặt ứng dụng của bạn. Chọn loại mã (TOTP dựa trên thời gian hoặc HOTP dựa trên bộ đếm), thuật toán và số chữ số. Hầu hết các ứng dụng xác thực đều sử dụng TOTP, HMAC-SHA-1 và 6 chữ số.
- Hiển thị mã. Đối với TOTP, nhấn “Start TOTP”: mã sẽ hiển thị kèm theo đồng hồ đếm ngược và được tính lại mỗi giây. Đối với HOTP, hãy thiết lập bộ đếm và nhấn “Show HOTP code”; nhấn “Next” để chuyển sang bộ đếm tiếp theo.
- Kiểm tra mã. Nhập mã từ ứng dụng hoặc máy chủ của bạn vào ô “Xác minh mã” và nhấn “Xác minh”. Kết quả sẽ cho biết mã đó có khớp hay không và thuộc bước thời gian hoặc bộ đếm nào.
- Dừng lại và dọn dẹp. Nhấn nút “Dừng” khi bạn hoàn tất; mã cuối cùng sẽ vẫn hiển thị trên màn hình. Hãy tự xóa nội dung trong ô bí mật.
Ví dụ
Mật khẩu thử nghiệm theo RFC 6238
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ412568Đây là khóa thử nghiệm 12345678901234567890 theo tiêu chuẩn RFC 6238 đã được công bố, được mã hóa dưới dạng Base32. Trang này hiển thị mã sáu chữ số hiện tại và số giây còn lại cho đến khi có mã tiếp theo, giống như mã mà ứng dụng xác thực hiển thị cho khóa bí mật này; khi chuyển sang chế độ HOTP với bộ đếm bắt đầu từ 0, nó hiển thị 755224, đây là giá trị thử nghiệm đầu tiên theo RFC 4226.
Nó kiểm tra những gì
| Tín hiệu | Ý nghĩa của điều đó là gì |
|---|---|
| Mã nguồn | HMAC của bước thời gian (TOTP) hoặc bộ đếm (HOTP), được cắt ngắn còn 6 hoặc 8 chữ số theo quy định trong RFC 4226 và RFC 6238. Nó chỉ khớp với ứng dụng khi loại, thuật toán và số chữ số đều giống nhau. |
| Tần suất làm mới tính bằng Ns · bước thời gian N | Số giây còn lại trong khoảng thời gian 30 giây hiện tại và số bước, được lấy từ đồng hồ trên thiết bị của bạn. Nếu đồng hồ bị lệch, hệ thống sẽ hiển thị mã trước đó hoặc mã tiếp theo. |
| Đếm ngược N · nhấn Tiếp theo | Trong chế độ HOTP, mã đó thuộc về bộ đếm đó. Mỗi mã chỉ được sử dụng một lần; sau đó, các máy chủ sẽ chờ bộ đếm tiếp theo. |
| Không phải Base32: ... | Mật khẩu chứa các ký tự ngoài phạm vi A–Z và 2–7, chẳng hạn như 0, 1, 8 hoặc 9. Các khoảng trắng, dấu gạch ngang và dấu = sẽ bị bỏ qua, và hệ thống chấp nhận các chữ cái viết thường. |
| bí mật chỉ có N bit | Khóa bí mật này ngắn hơn mức 128 bit (26 ký tự Base32) mà RFC 4226 yêu cầu. Các mã vẫn được hiển thị, nhưng khóa bí mật như vậy dễ bị đoán hơn. |
| Hợp lệ: khớp với ... | Kiểm tra xem đã tìm thấy mã cho bước thời gian hiện tại hay bộ đếm HOTP trong trường hay chưa. |
| Áp dụng cho bước trước hoặc bước tiếp theo | Mã này thuộc về một bước kéo dài 30 giây trước hoặc sau thời điểm hiện tại (được hiển thị bằng màu hổ phách). Thông thường, giữa hai thiết bị này có một sự chênh lệch nhỏ về thời gian. |
| Không tìm thấy kết quả phù hợp | Cả các bước thời gian đã kiểm tra lẫn các bộ đếm đều không khớp. Hãy kiểm tra giá trị bí mật, đồng hồ, thuật toán và số chữ số. |
Các ví dụ khác
Khóa thử nghiệm RFC 4226, HOTP
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQVới loại mã HOTP, HMAC-SHA-1, 6 chữ số và bộ đếm là 0, mã là 755224; khi chọn “Tiếp theo”, kết quả cho bộ đếm là 1 là 287082, đây là các giá trị kiểm tra được công bố trong RFC 4226.
Xác minh mã ở ô tiếp theo
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQTrong chế độ HOTP với bộ đếm là 0, khi nhập 287082 vào mục “Xác minh mã”, kết quả hiển thị là: “Hợp lệ cho bộ đếm 1”, tức là cao hơn 1 đơn vị so với giá trị hiện tại của bộ đếm.
Không phải là khóa bí mật Base32
0189LỖI với thông báo “Không phải Base32: ‘0’, ‘1’, ‘8’, ‘9’”, vì Base32 chỉ sử dụng các chữ cái từ A đến Z và các chữ số từ 2 đến 7.
Câu hỏi thường gặp
Chính xác thì nó tính toán điều gì?
Mã TOTP được tạo dựa trên thời gian hiện tại theo từng khoảng 30 giây (RFC 6238) hoặc mã HOTP dựa trên bộ đếm do người dùng thiết lập (RFC 4226), sử dụng HMAC-SHA-1, SHA-256 hoặc SHA-512 và có 6 hoặc 8 chữ số; hầu hết các ứng dụng xác thực đều sử dụng SHA-1 và 6 chữ số. Hệ thống sẽ kiểm tra mã dựa trên khoảng thời gian hiện tại và một khoảng thời gian trước hoặc sau đó, hoặc bộ đếm HOTP và 9 giá trị tiếp theo; nếu mã chứa ký tự nằm ngoài phạm vi A-Z và 2-7, hệ thống sẽ từ chối và hiển thị thông báo.
Mã TOTP có giúp bảo vệ tôi khỏi các cuộc tấn công lừa đảo không?
Không hẳn. Các bộ công cụ lừa đảo kiểu “kẻ tấn công ở giữa” (Adversary-in-the-middle) sẽ truyền mã bạn nhập vào cho trang web thật ngay khi bạn gõ, do đó mã này sẽ bị ghi lại cùng với mật khẩu; trong khi đó, các khóa truy cập (passkeys) và khóa bảo mật FIDO2 lại chống lại được điều này vì chúng được liên kết trực tiếp với tên miền thật.
Bí mật đó có được gửi đi hay lưu trữ ở đâu không?
Không. Các mã được tính toán ngay trong trình duyệt của bạn bằng Web Crypto API và khóa bí mật không bao giờ được tải lên hay lưu lại. TOTP phụ thuộc vào đồng hồ hệ thống của thiết bị, do đó nếu đồng hồ bị lệch giờ thì sẽ tạo ra các mã khác nhau.
Làm thế nào để tôi có thể đối chiếu các mã này với các RFC?
Sử dụng khóa thử nghiệm 12345678901234567890, dưới dạng Base32 là GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. Trong chế độ HOTP, bộ đếm 0 cho kết quả là 755224 và bộ đếm 1 cho kết quả là 287082 (RFC 4226). RFC 6238 liệt kê giá trị 94287082 cho 8 chữ số tại thời điểm 59 giây sau ngày 1 tháng 1 năm 1970 theo giờ UTC; chế độ TOTP luôn sử dụng thời gian hiện tại.
Sự khác biệt giữa TOTP và HOTP là gì?
HOTP (RFC 4226) đếm số lần sử dụng: mỗi mã thuộc về một bộ đếm tăng dần từng đơn vị. TOTP (RFC 6238) là HOTP với bộ đếm được đặt theo khoảng thời gian 30 giây hiện tại, do đó mã sẽ thay đổi theo thời gian.
Tại sao ứng dụng của tôi lại hiển thị một mã khác?
Hãy kiểm tra đồng hồ trước, vì chỉ cần chênh lệch 30 giây là mã sẽ thay đổi. Sau đó, kiểm tra xem mật khẩu có lỗi chính tả không và tài khoản đó sử dụng SHA-256, SHA-512, 8 chữ số hay bộ đếm thay vì thời gian, rồi thiết lập các tùy chọn tương tự tại đây.
Tôi có nên dán mã xác thực hai yếu tố (2FA) thực sự vào đây không?
Hãy tránh làm điều đó. Mật khẩu bí mật vẫn được lưu trữ trong trình duyệt của bạn, nhưng bất kỳ ai nhìn thấy hoặc sao chép được nó đều có thể tạo ra các mã xác thực của bạn cho đến khi bạn thiết lập lại xác thực hai yếu tố (2FA) cho tài khoản đó. Để chuyển 2FA sang điện thoại mới, hãy sử dụng tùy chọn chuyển đổi hoặc thiết lập lại của chính tài khoản đó.