Điều kiện mật khẩu mạnh theo policy 2026 | Độ dài, ký tự, không tái sử dụng
Điều kiện mật khẩu mạnh = độ dài + ngẫu nhiên + không tái sử dụng, rồi mới đến “đủ loại ký tự”. Policy kiểu 8 ký tự + bắt A-a-0-! đẩy user tạo Shop2024! — trông hợp lệ, thực tế yếu. Sinh chuỗi dài bằng Password Generator (local), lưu manager, bật 2FA. Product: min length cao + denylist + không bắt đổi định kỳ vô nghĩa.
Form đăng ký báo đỏ: “Phải có chữ hoa, số và ký hiệu”. User đổi matkhau thành Matkhau1! — form xanh, attacker cười. Ở Việt Nam, sinh viên, freelancer và team product đều gặp cùng một pattern: điều kiện mật khẩu trên UI không khớp với điều kiện mật khẩu thật sự chống tấn công.
Bài này tập trung điều kiện / policy mật khẩu mạnh — cho người đặt rule (PM, tech lead) và người tuân thủ (dev, sinh viên) — không phải checklist onboard freelance riêng.
Bài viết này giúp bạn
- Hiểu 3 trụ điều kiện mật khẩu mạnh (length, randomness, uniqueness)
- So sánh policy “complexity myth” vs policy hiện đại (gần NIST)
- Biết số liệu thực tế: vì sao 16 ký tự thắng 8 ký tự có
!@# - Viết checklist validate cho product (frontend + server)
- Dùng generator local đúng cách rồi lưu password manager
Điều kiện mật khẩu mạnh là gì?
Mật khẩu mạnh là chuỗi mà attacker khó đoán và khó brute-force trong ngân sách thời gian thực tế, và không mở khóa thêm tài khoản khác khi một dịch vụ bị lộ.
Ba điều kiện cốt lõi:
- Độ dài — không gian tìm kiếm tăng theo số ký tự
- Ngẫu nhiên / không dự đoán được — tránh từ điển, năm, tên công ty, keyboard walk (
qwerty) - Unique — mỗi dịch vụ một mật khẩu (chống credential stuffing)
Bộ ký tự (hoa, thường, số, ký hiệu) là điều kiện phụ khi length đã đủ — hữu ích để mở rộng alphabet, nguy hiểm khi thay thế cho length.
Bảng: yếu tố quyết định độ mạnh
| Yếu tố | Mức ưu tiên | Gợi ý thực tế |
|---|---|---|
| Độ dài | Cao nhất | ≥12 tối thiểu; ≥16 account quan trọng (email, bank, Git, cloud) |
| Ngẫu nhiên | Cao | Generator CSPRNG hoặc diceware; không tự nghĩ 'sáng tạo' |
| Không tái sử dụng | Cao | Một breach ≠ mất cả hệ sinh thái tài khoản |
| Bộ ký tự | Trung bình | Bật khi form/policy yêu cầu; đừng đánh đổi bằng cách rút ngắn |
| 2FA | Bổ sung bắt buộc | Mật khẩu mạnh + 2FA; không thay thế lẫn nhau hoàn toàn |
Ví dụ so sánh nhanh
| Mật khẩu | Đủ rule UI? | Thực tế |
|---|---|---|
Shop2024! | Có (hoa, số, !) | Ngắn, từ + năm — list/dictionary nhanh |
admin@123 | Có | Trong top password phổ biến toàn cầu |
correct-horse-battery-staple (nếu từ random) | Có thể “thiếu ký hiệu” | Dài — thường mạnh hơn chuỗi 8 ký tự có ! |
xK9#mP2vLq8nR4wT (16 random) | Có | Phù hợp account máy / lưu manager |
Policy xấu vs policy tốt
Policy “complexity myth” (hay gặp trên form cũ)
- Min 8 ký tự
- Bắt buộc 1 hoa, 1 thường, 1 số, 1 ký hiệu
- Cấm khoảng trắng
- Bắt đổi mỗi 60–90 ngày
- Không kiểm tra denylist
Hậu quả: User biến thể có hệ thống (TenCty@2024 → @2025). Helpdesk đầy ticket “quên mật khẩu”. Attacker không cần brute-force hết không gian 95^8 nếu đoán theo pattern.
Policy gần thực tiễn hiện đại
- Min length cao (12–15+; 16 cho privileged)
- Cho phép mọi ký tự in được, kể cả khoảng trắng (passphrase)
- Denylist mật khẩu phổ biến / đã lộ (API kiểu Pwned Passwords)
- Không bắt đổi định kỳ nếu không có tín hiệu lộ
- Khuyến khích / bắt 2FA cho role admin
- Rate limit + lockout thông minh phía server
Product SaaS và portal nội bộ ở VN vẫn hay copy policy 2015 — đây là chỗ sửa được ngay trong sprint mà không cần mua tool đắt.
Làm mật khẩu mạnh thế nào (cá nhân)
Bước 1 — Sinh, đừng tự nghĩ
Não người kém ở entropy. Dùng:
- Password manager (Bitwarden, 1Password, built-in browser…) sinh + lưu
- Hoặc Password Generator trên trình duyệt: chọn độ dài (thường 16–24), bật chữ hoa/thường/số/ký hiệu theo policy đích, tạo một hoặc nhiều chuỗi, copy → dán manager
Tool Kawa chạy local, có chỉ báo yếu/trung bình/mạnh theo cấu hình — không thay thế manager, chỉ là bước sinh nhanh khi manager chưa mở.
Bước 2 — Unique từng nơi
Email chính, ngân hàng, Git host, cloud panel — không trùng. Credential stuffing quét tổ hợp email+password từ breach cũ trên hàng nghìn site.
Bước 3 — 2FA và recovery
TOTP hoặc security key. In recovery code, cất offline. SMS 2FA tốt hơn không có, kém hơn TOTP/hardware.
Bước 4 — Không phân phối qua chat
Zalo/Slack/email lưu search được. Dùng share có hạn của manager hoặc kênh one-time. (Chi tiết kênh onboard khách là chủ đề khác — ở đây chỉ là điều kiện: chuỗi mạnh vẫn chết nếu dán public channel.)
Điều kiện phía product (validate)
Frontend regex chỉ là UX. Attacker bỏ qua UI.
Checklist server:
- Kiểm tra độ dài sau normalize (cẩn thận Unicode)
- So khớp denylist / breach corpus
- Từ chối mật khẩu = username, email local-part, tên công ty
- Hash bằng thuật toán phù hợp (Argon2id / bcrypt cost đủ) — không lưu plain, không tự invent hash
- Rate limit login và reset
- Log sự kiện đổi mật khẩu / 2FA off
Ví dụ rule mô tả cho ticket (không phải code production sẵn)
min_length: 12
privileged_min_length: 16
require_classes: optional # hoặc 3/4 class nếu compliance cũ bắt
deny_common: true
deny_equal_username: true
max_age_days: null # chỉ rotate khi incident
mfa_required_roles: [admin, billing]
Tránh thông báo lỗi kiểu “thiếu ký hiệu” khi mật khẩu 20 ký tự random đã đủ mạnh — hãy nói rõ thiếu độ dài hoặc nằm trong danh sách mật khẩu phổ biến.
Case study: portal nội bộ bắt A-a-0-! + max 10 ký tự
Team outsourcing nhận spec khách: mật khẩu tối đa 10 vì “DB legacy VARCHAR(10)”. Policy UI bắt đủ class. Kết quả: toàn bộ staff dùng biến thể tên dự án + năm + !. Sau phishing một account → lateral movement vì tái sử dụng trên VPN.
Hướng xử lý: mở cột lưu hash dài (không lưu plain 10 ký tự); min 12–16; bỏ max ngắn; thêm denylist; bắt TOTP admin. Generator 16 ký tự + manager trở thành SOP onboarding.
Case study: sinh viên và tài khoản trường / GitHub
Nhiều sinh viên VN dùng một mật khẩu cho portal trường, Gmail và GitHub. Breach forum học tập → stuffing GitHub. Điều kiện “mạnh” ở đây không phải thêm #, mà là tách unique + 2FA GitHub trước khi public repo.
Checklist tự kiểm tra (bookmark)
Cá nhân
- Account quan trọng ≥16 ký tự ngẫu nhiên hoặc passphrase đủ dài
- Không tái sử dụng
- Đang nằm trong password manager
- 2FA bật; recovery code offline
- Không lưu screenshot mật khẩu trên Drive/Zalo
Product / policy
- Min length phản ánh threat model, không copy 8 ký tự
- Có denylist / breach check
- Không bắt rotate định kỳ vô điều kiện
- Validate server-side
- MFA cho privileged roles
Cách dùng Password Generator Kawa đúng điều kiện
- Mở Tạo mật khẩu
- Đặt độ dài theo policy đích (ví dụ 16 hoặc 24)
- Bật/tắt chữ hoa, thường, số, ký hiệu cho khớp form (một số bank chặn vài ký hiệu — thử rồi điều chỉnh)
- Tạo → xem chỉ báo độ mạnh → copy
- Dán vào manager / form đổi mật khẩu → xóa clipboard nếu môi trường dùng shared PC
Không gửi output lên “generator website” lạ nếu không rõ họ có log không. Ưu tiên local hoặc manager uy tín.
FAQ trong ngữ cảnh policy
Ký hiệu có bắt buộc không? Chỉ khi hệ đích bắt. Ưu tiên length.
Bao nhiêu ký tự là đủ? 12 sàn cho account thường; 16+ cho email/Git/cloud/admin.
Passphrase có qua được policy “phải có số” không? Thêm số/ký hiệu vào cụm từ random, hoặc dùng random string cho site khó tính.
Generator có thay 2FA không? Không.
Liên kết liên quan
- Password Generator
- Danh sách công cụ
- Hash SHA-256 (kiểm tra digest — không dùng hash tự chế làm lưu mật khẩu)
Ghi nhớ một dòng: điều kiện mạnh thật sự là dài + lạ + không trùng; mọi rule UI khác chỉ là lớp phụ — đừng để lớp phụ biến user thành tác giả của Shop2024!.