Skip to content

2FA là gì? Và những mã 30 giây ấy thực sự hoạt động ra sao?

Cẩm nang đầy đủ, viết bằng tiếng người thường: xác thực hai yếu tố là gì, phần mật mã học đứng sau mã TOTP 6 chữ số, nên bật yếu tố nào cho tài khoản nào, và làm sao không bao giờ bị khóa ngoài tài khoản.

Vì sao chỉ có mật khẩu là không đủ

Mỗi lần đăng nhập cần một mật khẩu, và mật khẩu có ba vấn đề cấu trúc: chúng bị dùng lại ở nhiều nơi, bị đoán ra bởi các tấn công credential stuffing qua các cơ sở dữ liệu bị rò rỉ, và bị lừa lấy từ người dùng. Xác thực hai yếu tố (2FA) chấp nhận một sự thật đơn giản — con người là mắt xích yếu nhất — và bổ sung một thứ thứ hai, độc lập, mà kẻ tấn công cũng phải sở hữu. Với 2FA, mật khẩu bị lộ đứng một mình không còn đủ để vào tài khoản của bạn.

Hầu hết dịch vụ lớn hiện nay hoặc đã cung cấp hoặc yêu cầu 2FA: GitHub áp dụng bắt buộc từ 2023, các sàn tiền điện tử (Binance, Coinbase, Kraken) thúc mỗi khi thị trường lao dốc, còn Microsoft, Google và Apple đã đưa nó vào bảo mật tài khoản như chế độ mặc định.

Ba loại yếu tố xác thực

Các yếu tố xác thực thuộc ba nhóm:

  • Thứ bạn biết — mật khẩu, mã PIN. Dễ triển khai và dễ bị lừa lấy.
  • Thứ bạn có — một trình xác thực sinh mã, khóa bảo mật phần cứng hoặc passkey, điện thoại nhận SMS. 2FA sống ở nhóm này.
  • Thứ bạn là — vân tay, nhận diện khuôn mặt. Thuận tiện, nhưng được đăng ký ngay trên thiết bị chứ không phải yếu tố chủ lực khi xác thực từ xa.

Một bước kiểm tra hai yếu tố đúng nghĩa phải kết hợp kỹ thuật từ hai nhóm khác nhau. Mật khẩu cộng màn hình mở khóa bằng hình trên điện thoại không phải 2FA; mật khẩu cộng mã xác thực xoay vòng thì là.

TOTP hoạt động thế nào, từng bước

  1. Đăng ký. Khi bật 2FA cho một dịch vụ, nó sinh ra một khóa bí mật ngẫu nhiên và chia sẻ với bạn một lần duy nhất — vẽ thành mã QR hoặc hiển thị dưới dạng khóa thiết lập Base32. Nhìn từ góc bảo mật, đúng khoảnh khắc đó mang toàn bộ rủi ro, đó là lý do bạn chỉ nên bao giờ thị khóa ở nơi bạn tin tưởng.
  2. Thời gian trôi. Thời gian hiện tại được cắt thành các “bước” 30 giây:step = floor(unixTime / 30). Con số 30 chẳng có gì đặc biệt; RFC 6238 cho phép dịch vụ chấp nhận 15, 30 hoặc 60 giây.
  3. HMAC. Trình xác thực của bạn tính một mã băm HMAC (SHA-1 cho phần lớn dịch vụ, đôi khi SHA-256/512) trên giá trị bước, với khóa bí mật làm chìa. HMAC là cấu trúc một chiều: nhìn thấy kết quả không cho biết điều gì về khóa bí mật.
  4. Rút chữ số. Bốn byte trong đầu ra HMAC được chọn bởi nibble cuối, bit cao nhất được xóa, và kết quả lấy modulo 10n thành mã của bạn — thường là n = 6, thỉnh thoảng 7 hoặc 8.
  5. Cửa sổ xác minh. Máy chủ tính lại cùng giá trị cho bước hiện tại và bước trước đó (để chịu được lệch đồng hồ nhỏ). Bằng chứng khớp sẽ được chấp nhận đăng nhập.

Toàn bộ trên chạy trong vài micro giây, hoàn toàn ngay trên thiết bị. Đó là lý do công cụ phía client như 2FA COUNTER làm được trọn công việc ở máy bạn — tải trang, ngắt mạng, và mã vẫn nhảy ra đều đặn mỗi 30 giây, mãi mãi.

Khóa bí mật và mã QR

Chuỗi Base32 không phải định dạng trung gian nào đó — nó chính là các byte thô của khóa bí mật, mã hóa bằng một bộ chữ thân thiện với bàn phím (A–Z cộng 2–7, cố ý loại bỏ 0/1 vì dễ nhầm, và an toàn trên mọi bàn phím). Khi một nền tảng đưa ra lựa chọn “không thể quét?”, chuỗi bạn nhận được chứa đúng dữ liệu riêng tư mà mã QR mã hóa. Lưu dạng nào cũng được; ý nghĩa là như nhau:

otpauth://totp/GitHub:you%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub
otpauth://totp/Binance:me?secret=JBSWY3DPEHPK3PXP&digits=6&period=30&algorithm=SHA1
otpauth://hotp/Steam:sda?secret=...&counter=5   ← biến thể dựa trên bộ đếm (HOTP)

Một trình tạo hiện đại tôn trọng mọi tham số: số chữ số, chu kỳ, thuật toán băm và bộ đếm HOTP — vì một dịch vụ yêu cầu SHA-256 sẽ vẫn từ chối mã tạo bằng mặc định SHA-1. Một khóa Base32 trơn mặc định là 6 chữ số, 30 giây, SHA-1 — cấu hình mà phần lớn dịch vụ dùng.

TOTP vs. SMS vs. khóa phần cứng

  • Mã SMS đi ngang qua mạng viễn thông. Tấn công SIM swap cho phép kẻ tấn công chiếm đoạt số điện thoại và nhận mọi mã. SMS đã bị loại khỏi chuẩn xác thực của Mỹ (NIST SP 800-63B).
  • TOTP không truyền đi một thứ gì — mã được tính ngay tại máy và hết hạn sau 30 giây. Miễn phí, dựa trên chuẩn, được hỗ trợ ở khắp nơi. Điểm yếu duy nhất: mã có thể bị lừa trong cửa sổ hiệu lực của nó.
  • Khóa bảo mật và passkey (WebAuthn/FIDO2) gắn chặt bằng mật mã với đúng tên miền, nên trang giả mạo tự động thất bại. Lựa chọn mạnh nhất; nhưng ít được hỗ trợ hơn và tốn tiền mua khóa.

Bậc thang thực dụng: chỉ dùng SMS khi buộc phải vậy, dùng TOTP làm mặc định, và dùng khóa phần cứng hoặc passkey cho những tài khoản quan trọng nhất.

Đào sâu các lựa chọn này: TOTP vs. passkey — yếu tố nào nên đặt ở đâu, tấn công SIM swap đánh bại mã SMS thế nào, và đồng bộ đám mây trong ứng dụng ảnh hưởng thế nào tới khóa bí mật của bạn.

Điều 2FA không giải quyết được

Hai yếu tố giải quyết đúng một thứ: mật khẩu bị đánh cắp. Nó không chặn được đánh cắp cookie phiên (mã độc đang chạy sẵn trên máy của bạn), tiện ích trình duyệt với quyền hạn quá rộng, email khôi phục mà bạn đã mất quyền kiểm soát, hay kỹ thuật xã hội khi kẻ tấn công dồn bạn đọc to một mã còn hạn trong cửa sổ 30 giây của nó. Hãy giữ trình duyệt luôn cập nhật, dọn tiện ích trong các mạnh, và coi bất kỳ lời cầu khẩn nào yêu cầu đưa mã như một cờ đỏ chính như nó vốn là.

Cách không bao giờ bị khóa ngoài

  1. Lưu các mã sao lưu. Mọi dịch vụ đều in một bộ mã khôi phục dùng một lần khi bạn bật 2FA. Hãy in ra hoặc lưu ở dạng mã hóa và ngoại tuyến.
  2. Giữ khóa, không chỉ giữ công cụ. Khóa Base32 nằm trong két trình quản lý mật khẩu cho phép bạn tạo lại mã bằng bất kỳ trình xác thực nào — ứng dụng trên điện thoại, hoặc trình tạo trong браузer — trên bất kỳ thiết bị nào bạn thật sự có trong ngày hôm đó.
  3. Đăng ký hai thiết bị, không chỉ một. Đặt khóa trên hai thiết bị đáng tin cùng lúc là an toàn. TOTP là quyết định: cùng khóa, cùng mã.
  4. Để ý đồng hồ của bạn. Nếu mã thường xuyên bị từ chối, hãy sửa đồng bộ thời gian trên thiết bị trước — đó là nguyên nhân phổ biến nhất của lỗi “mã không hợp lệ”, và không công cụ nào có thể né được nó.

Hỏi đáp

2FA là gì?

2FA (xác thực hai yếu tố) nghĩa là chứng minh bản thân bằng hai loại bằng chứng khác nhau: thứ bạn biết (mật khẩu) cộng với thứ bạn có (mã đổi mới mỗi 30 giây, khóa bảo mật hoặc điện thoại). Mật khẩu một mình có thể bị lộ hoặc bị đoán ra; có thêm yếu tố thứ hai, mật khẩu đã bị lộ sẽ mất tác dụng nếu đứng một mình.

Vì sao 2FA quan trọng đến vậy?

Vì mật khẩu cứ thất bại đều đặn. Hàng tỷ mật khẩu thật đã bị công khai qua các vụ rò rỉ dữ liệu, và kẻ tấn công dùng chúng để đăng nhập tài khoản của người khác (credential stuffing) suốt ngày đêm. Theo Microsoft, 2FA chặn trên 99,9% các cuộc tấn công tự động nhằm chiếm đoạt tài khoản — nó bảo vệ email, ngân hàng, mạng xã hội, game và tài khoản tiền điện tử của bạn trước đúng những mối đe dọa có thật ngoài kia.

2FA dùng để làm gì?

Nó bảo vệ mọi đăng nhập mà kẻ khác muốn đoạt: email và tài khoản đám mây (Google, Microsoft, Apple), ngân hàng và tài chính, sàn tiền điện tử (Binance, Coinbase, Kraken), nền tảng lập trình (GitHub, AWS), game (Steam, Discord, Twitch), mạng xã hội (X, Instagram). Nơi làm việc cũng dùng nó cho VPN, email và bảng điều khiển quản trị. Bất cứ đâu một dịch vụ có tùy chọn “ứng dụng xác thực”, 2FA chính là công cụ phù hợp.

2FA hoạt động thế nào?

Sau khi bạn nhập mật khẩu, dịch vụ yêu cầu thêm một bằng chứng thứ hai. Với phương pháp phổ biến nhất (TOTP), trình xác thực của bạn tạo ra một mã 6 chữ số mới từ “khóa bí mật dùng chung + thời gian hiện tại” (chuẩn RFC 6238), trong khi máy chủ tính toán y hệt và so kết quả. Mã xoay vòng mỗi 30 giây và không bao giờ dùng lại được, nên kẻ tấn công chỉ có mật khẩu của bạn vẫn không vào được.

Mã TOTP được tạo ra thế nào?

Website cấp cho bạn một khóa bí mật (thường dưới dạng mã QR hoặc chuỗi Base32). Trình xác thực tính HMAC (SHA-1, đôi khi SHA-256 hoặc SHA-512) trên cửa sổ thời gian 30 giây hiện tại với khóa đó, rồi đọc ra 6 chữ số từ kết quả. Website chạy phép tính y hệt và so sánh. Không cần kết nối mạng vì hai bên đã chia sẻ khóa từ trước.

Làm sao để có 2FA?

Bạn lấy 2FA ngay trong tài khoản muốn bảo vệ: mở mục cài đặt, tìm “Bảo mật” hoặc “Đăng nhập & bảo mật”, rồi tìm “Xác thực hai yếu tố” hoặc “Xác minh hai bước”. Chọn tùy chọn ứng dụng xác thực, quét mã QR (hoặc hiển thị khóa thiết lập), và nhập mã đang hiển thị trong trình xác thực để xác nhận. Bài hướng dẫn từng bước về cách lấy mã không cần điện thoại nằm tại /vi/how-to-get-2fa-code/.

Làm sao bật 2FA?

Bốn bước: 1) Mở cài đặt tài khoản hoặc cài đặt bảo mật của dịch vụ và chọn “Xác thực hai yếu tố”. 2) Chọn “Dùng ứng dụng xác thực” (tránh SMS nếu có thể). 3) Quét mã QR bằng trình xác thực — hoặc bấm “không thể quét?” và lưu khóa thiết lập. 4) Nhập mã trực tiếp để hoàn tất, sau đó tải xuống hoặc in các mã sao lưu/khôi phục màn hình hiển thị. Chúng tôi có hướng dẫn riêng cho Google, GitHub, Discord, Binance và nhiều dịch vụ khác tại /guides/.

2FA mạnh cỡ nào?

Tùy vào yếu tố thứ hai bạn dùng. Mã SMS yếu nhất — tấn công SIM swap có thể chiếm đoạt số điện thoại và nhận mọi mã. Mã của trình xác thực TOTP (kiểu đổi mỗi 30 giây) mạnh về mặt tính toán: kẻ tấn công ngoại tuyến không thể suy ra, và mã trực tiếp hết hạn trong vài giây. Khóa bảo mật phần cứng và passkey mạnh nhất, vì chúng chống lừa đảo và gắn chặt bằng mật mã với website thật.

2FA có an toàn 100% không?

Không có biện pháp bảo mật nào an toàn 100%, và các cẩm nang 2FA trung thực đều thừa nhận điều đó. 2FA vô hiệu hóa mật khẩu bị đánh cắp, nhưng bản thân mã vẫn có thể bị lừa nếu bạn nhập mã còn hạn vào một trang giả trong cửa sổ 30 giây của nó; mã độc đã chạy sẵn trên máy của bạn có thể đánh cắp phiên đăng nhập; còn nếu SMS là yếu tố thứ hai, SIM swap là mối đe dọa có thật. Dù vậy, bật 2FA khiến bạn khó bị tấn công hơn hẳn các tài khoản chỉ dùng mật khẩu.

2FA có bắt buộc không?

Không phải theo luật, nhưng ngày càng nhiều dịch vụ làm nó bắt buộc: GitHub áp dụng với người đóng góp mã từ 2023, nhiều ngân hàng và sàn tiền điện tử bật mặc định, và nơi làm việc thường yêu cầu cho các đăng nhập công việc. Ở những nơi khác, nó là tùy chọn nhưng được khuyến khích mạnh. Trong thực tế, hãy coi 2FA là bắt buộc với những tài khoản giá trị nhất: email trước tiên, vì hộp thư bị chiếm đoạt có thể đặt lại tất cả những gì còn lại.

Vì sao giờ đâu cũng dùng 2FA?

Vì thời kỳ chỉ có mật khẩu đã thất bại. Các vụ rò rỉ hàng loạt công khai hàng tỷ thông tin đăng nhập, các tấn công credential stuffing được tự động hóa và trở nên rẻ mạt, và giờ chính các nền tảng phải gánh chi phí của tài khoản bị chiếm đoạt. Các cơ quan quản lý cũng thúc ép: NIST đã loại SMS khỏi chuẩn xác thực của Mỹ, và luật PSD2 của EU yêu cầu xác thực khách hàng mạnh. Khi vài gã khổng lồ biến 2FA thành chuyện bình thường, mọi dịch vụ khác nối gót là tự nhiên.

TOTP, HOTP và OTP khác nhau thế nào?

OTP đơn giản là “mật khẩu dùng một lần” (one-time password). TOTP (OTP theo thời gian, RFC 6238) tạo mã từ thời gian hiện tại, nên mã đổi mỗi 30 giây. HOTP (RFC 4226) dựa trên bộ đếm: mỗi mã dùng một lần rồi bộ đếm tăng lên. Gần như mọi dịch vụ kiểu “ứng dụng xác thực” — Google, Microsoft, Discord, GitHub — đều dùng TOTP.

Vì sao TOTP tốt hơn SMS 2FA?

Mã SMS đi qua mạng viễn thông, nơi nó có thể bị đánh chặn hay đánh cắp bằng tấn công SIM swap — và đôi khi SMS đơn giản là không tới. Mã TOTP được tính ngay trên thiết bị của bạn, không bao giờ gửi đi đâu, và hết hạn trong vài giây. Các cơ quan bảo mật, trong đó có NIST, đã không còn khuyến nghị SMS làm phương thức xác thực.

Mã TOTP có thể bị đánh cắp bởi trang lừa đảo không?

Có — nếu bạn nhập một mã còn hạn vào trang lừa đảo trong cửa sổ 30 giây của nó, kẻ tấn công có được một lần đăng nhập hợp lệ. Đó là lý do các yếu tố chống lừa đảo (khóa bảo mật phần cứng và passkey, vốn gắn chặt bằng mật mã với đúng tên miền thật) là lựa chọn mạnh nhất ở những dịch vụ có hỗ trợ. TOTP đánh bại SMS và mật khẩu, chứ không đánh bại khóa phần cứng.

Nên giữ khóa bí mật 2FA ở đâu?

Trong két mã hóa của một trình quản lý mật khẩu, như bản gốc của bạn. Như vậy bạn có thể tạo lại mã trên bất kỳ thiết bị đáng tin cậy nào — kể cả trong trình duyệt bằng công cụ như 2facounter.com — khi điện thoại không dùng được. Đồng thời hãy lưu các mã khôi phục (recovery code) mà mọi dịch vụ đều in ra khi bạn bật 2FA; đó mới là “túi khí” thật sự của bạn.

Giờ thì dùng thử

Dán khóa bí mật vào trình tạo và xem mã 2FA trực tiếp xuất hiện — chạy được cả khi không có mạng, không cần tài khoản, không có gì được gửi tới máy chủ.

Mở trình tạo