Tạo mã TOTP & Thiết lập 2FA

Dán một secret base32 để xem mã 2FA trực tiếp cùng bộ đếm ngược, hoặc tạo một secret mới kèm mã QR để quét vào ứng dụng xác thực. Mọi thứ chạy cục bộ — secret của bạn không bao giờ rời khỏi thiết bị.

File không bao giờ rời khỏi thiết bị của bạn

Lấy mã

Thiết lập secret mới

Công cụ này làm gì

Công cụ này làm việc với secret TOTP (Time-based One-Time Password) — cơ chế đứng sau hầu hết các ứng dụng xác thực. Dán một secret base32 có sẵn để xem mã 6 chữ số trực tiếp kèm bộ đếm ngược, hoặc tạo một secret hoàn toàn mới kèm URI otpauth:// và mã QR sẵn sàng để quét bằng Google Authenticator, Authy hay bất kỳ ứng dụng tương thích nào.

Mọi thứ diễn ra ngay trên thiết bị của bạn. Dù bạn đang kiểm tra một mã hay tạo mới một secret, không có gì được upload — bản chất của TOTP là cả hai phía đều có thể độc lập sinh ra mã trùng khớp mà không cần một vòng gửi-nhận qua mạng, và công cụ này hoạt động theo đúng nguyên tắc đó.

TOTP / Xác thực hai yếu tố là gì

TOTP thêm một lớp xác nhận danh tính thứ hai bên cạnh mật khẩu: một thứ bạn "có" (một secret lưu trong ứng dụng xác thực) thay vì một thứ bạn "biết". Cả thiết bị của bạn lẫn dịch vụ bạn đang đăng nhập đều nắm giữ cùng một secret; mỗi bên độc lập kết hợp nó với thời gian hiện tại để tạo ra một mã 6 chữ số trùng khớp, nên chỉ có mật khẩu bị lộ thôi là chưa đủ để đăng nhập được.

Mẹo: Mã thay đổi vì thời gian là một trong hai thành phần đầu vào — điều này có nghĩa đồng hồ thiết bị của bạn cần đủ chính xác. Nếu mã không bao giờ khớp dù bạn gõ cẩn thận thế nào, hãy kiểm tra xem đồng hồ hệ thống có đang đồng bộ hay không trước khi nghĩ rằng secret bị sai.

Lấy một mã trực tiếp

Dán một secret base32 vào ô nhập, công cụ sẽ hiển thị ngay mã 6 chữ số hiện tại kèm bộ đếm ngược tới lần làm mới kế tiếp. Tính năng này hữu ích khi bạn muốn xác nhận một secret còn hoạt động, khôi phục quyền truy cập khi chỉ có secret gốc mà không còn mã QR ban đầu, hoặc đơn giản là kiểm tra một mã mà không cần lấy điện thoại ra.

Thiết lập một secret mới

Điền nhãn tài khoản và tên nhà phát hành, rồi tạo một secret mới hoàn toàn ngẫu nhiên. Bạn sẽ nhận về ba thứ: secret base32 gốc (để nhập thủ công), toàn bộ URI otpauth://, và một mã QR mã hóa URI đó — quét nó bằng luồng "thêm tài khoản" trong ứng dụng xác thực của bạn và mọi thứ được thiết lập ngay lập tức, hiển thị cùng chuỗi mã xoay vòng mà công cụ đang hiển thị.

otpauth://totp/Issuer:account@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Issuer&algorithm=SHA1&digits=6&period=30

Thuật toán, số chữ số và chu kỳ

SHA1 là giá trị mặc định gần như phổ biến cho TOTP và là thứ mà hầu hết ứng dụng xác thực mong đợi — hãy giữ nguyên trừ khi một dịch vụ cụ thể yêu cầu khác. SHA256 và SHA512 cũng có sẵn cho các dịch vụ đặc biệt yêu cầu chúng. Sáu chữ số và chu kỳ 30 giây khớp với chuẩn RFC 6238 và là giá trị mà hầu hết ứng dụng xác thực mặc định giả định, nên chỉ thay đổi khi dịch vụ bạn đang thiết lập ghi rõ giá trị khác.

Secret của bạn không bao giờ rời khỏi thiết bị

Cả việc tạo secret mới lẫn tính mã trực tiếp từ một secret có sẵn đều chạy hoàn toàn bên trong một module WebAssembly trong trình duyệt của bạn. Không có tài khoản, không có vòng gửi-nhận qua server, và không có lưu trữ nào — thời gian được lấy từ chính đồng hồ thiết bị của bạn, và secret chỉ tồn tại trong bộ nhớ của trang này trong thời gian tab còn mở.

Nếu bạn cần giải mã hoặc xác minh một JWT, xem Giải mã & Xác minh JWT. Nếu bạn cần một cặp khóa công khai/riêng tư mới để ký hoặc dùng cho SSH, xem Tạo cặp khóa — cả hai đều xử lý ngay trên thiết bị giống như công cụ này.

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

Secret của tôi có bị upload lên đâu không?
Không. Mọi mã đều được tính ngay trên trình duyệt bằng WebAssembly. Dù bạn dán một secret có sẵn hay tạo một secret mới, nó không bao giờ được gửi qua mạng — đóng tab là secret biến mất, vì ngay từ đầu đã không có server nào tham gia.
Mã QR dùng để làm gì?
Mã QR mã hóa cùng một URI otpauth:// dưới dạng hình ảnh có thể quét được, đây là cách nhanh nhất để nạp secret vào ứng dụng xác thực trên điện thoại. Mở Google Authenticator, Authy hoặc ứng dụng tương tự, chọn thêm tài khoản bằng cách quét mã QR, rồi hướng camera vào — ứng dụng sẽ sinh ra cùng chuỗi mã xoay vòng mà công cụ này hiển thị.
Tại sao mã của tôi khác với mã trong ứng dụng xác thực?
Nguyên nhân phổ biến nhất là lệch đồng hồ — mã TOTP được tính dựa trên thời gian hiện tại, nên nếu đồng hồ máy tính hoặc điện thoại của bạn bị lệch, mã sẽ không khớp cho tới khi đồng bộ lại. Các nguyên nhân phổ biến khác là secret không khớp (kiểm tra xem đã copy đủ toàn bộ chuỗi base32 chưa), hoặc thuật toán, số chữ số hay chu kỳ khác nhau giữa công cụ và ứng dụng đang tạo mã.
TOTP có giống với mã dùng một lần mà ngân hàng nhắn tin cho tôi không?
Không, đây là hai cơ chế khác nhau. TOTP (công cụ này) sinh mã từ một secret đã lưu sẵn trên thiết bị của bạn — không cần một vòng gửi-nhận qua mạng để có mã mới, và không có gì được gửi cho bạn mỗi lần. Mã OTP qua SMS là một hệ thống riêng, trong đó mã được sinh ở phía server rồi gửi tới số điện thoại của bạn qua tin nhắn văn bản, và có những điểm yếu đã được biết đến rộng rãi như tấn công đánh tráo SIM.
Secret base32 chính xác là gì?
Đó là khóa dùng chung mà cả ứng dụng xác thực của bạn lẫn dịch vụ bạn đang đăng nhập dùng để độc lập sinh ra cùng một chuỗi mã, được mã hóa dạng base32 (chữ cái và chữ số, không cần ký tự đệm) để dễ gõ hoặc đọc lên. Ai có secret này cũng có thể tạo mã hợp lệ cho tài khoản đó, đó là lý do nó chỉ được hiển thị một lần lúc thiết lập và cần được giữ bí mật, giống như bạn giữ một mật khẩu.
Tại sao lại là 30 giây và 6 chữ số?
Đây là giá trị mặc định gần như phổ biến được định nghĩa trong chuẩn TOTP (RFC 6238): một mã 6 chữ số mới sau mỗi 30 giây, tính từ secret và thời gian hiện tại. Đây là một sự cân bằng hợp lý — đủ dài để bạn có thời gian gõ mã trước khi hết hạn, đủ ngắn để một mã bị lộ trở nên vô dụng chỉ trong nửa phút. Một số dịch vụ dùng số chữ số hoặc chu kỳ khác, đó là lý do công cụ này cho phép bạn tùy chỉnh cả hai.
Công cụ này có lưu hay ghi nhớ secret của tôi không?
Không. Công cụ này không dùng local storage, cookie hay tài khoản nào cả — tải lại trang hoặc đóng tab là secret biến mất hoàn toàn khỏi bộ nhớ. Nếu bạn đang thiết lập một tài khoản mới, hãy lưu secret hoặc mã QR ở nơi an toàn (như trình quản lý mật khẩu) trước khi rời khỏi trang, vì công cụ sẽ không còn giữ nó ở lần mở tiếp theo.