Tạo passphrase ngẫu nhiên kiểu Diceware, dễ nhớ mà vẫn đo được độ mạnh
Passphrase generator này ghép nhiều từ được chọn ngẫu nhiên thành một cụm mật khẩu, ví dụ dạng glandular-charbroil-cilantro-gotten-richly-provolone. Mỗi từ được bốc từ danh sách 7.776 từ của EFF (hoặc danh sách âm tiết tiếng Việt không dấu) bằng bộ sinh số ngẫu nhiên mật mã của trình duyệt, nên độ mạnh tính được chính xác bằng số bit entropy thay vì cảm tính. Kết quả tạo ngay trên máy bạn, không gửi đi đâu và không lưu lại.
Tính năng nổi bật
- Chọn từ bằng crypto.getRandomValues kết hợp rejection sampling, loại bỏ hoàn toàn độ lệch do phép chia lấy dư
- Danh sách EFF Large Wordlist đầy đủ 7.776 từ tiếng Anh, mỗi từ đóng góp khoảng 12,92 bit entropy
- Danh sách 870 âm tiết tiếng Việt không dấu tự tổng hợp, mỗi âm tiết khoảng 9,76 bit, gõ được trên mọi bàn phím
- Tùy chỉnh số từ, dấu phân cách (gạch ngang, dấu cách, dấu chấm, gạch dưới, chữ số ngẫu nhiên hoặc không phân cách) và kiểu viết hoa
- Thêm chữ số hoặc ký hiệu ngẫu nhiên để đáp ứng quy định mật khẩu của website, có tính phần entropy cộng thêm
- Bảng phân tích entropy từng thành phần và thời gian dò trung bình theo ba kịch bản tấn công có ghi rõ giả định
- Tạo hàng loạt tới 50 cụm từ một lần, sao chép từng cụm hoặc cả danh sách
- Hiện mã xúc xắc của từng từ và ô tra từ theo kết quả tung xúc xắc thật cho người muốn làm Diceware thủ công
Vì sao cụm từ ngẫu nhiên thường tốt hơn mật khẩu ký tự lộn xộn
Mật khẩu kiểu Tp@2024! trông phức tạp nhưng thực chất theo đúng khuôn mà người dùng hay nghĩ ra: một từ quen, viết hoa chữ đầu, thay chữ bằng ký hiệu, thêm năm sinh hoặc năm hiện tại. Công cụ dò mật khẩu đều thử các khuôn này trước tiên nên độ mạnh thật thấp hơn nhiều so với vẻ ngoài. Ngược lại, chuỗi 16 ký tự ngẫu nhiên thật thì mạnh nhưng gần như không thể nhớ. Passphrase nằm ở giữa: sáu từ tiếng Anh bốc ngẫu nhiên từ danh sách 7.776 từ cho khoảng 77,5 bit entropy, ngang một mật khẩu 12 ký tự ngẫu nhiên gồm đủ chữ hoa, chữ thường, số và ký hiệu, nhưng lại dễ hình dung thành một câu chuyện để nhớ. Điểm mấu chốt là độ mạnh đến từ việc máy chọn ngẫu nhiên, không phải từ việc bạn tự chọn từ, nên con số entropy trên công cụ này là con số tính được bằng toán học chứ không phải đoán.
Lợi ích khi sử dụng
- Có mật khẩu chính đủ mạnh mà vẫn nhớ được, phù hợp mật khẩu chủ của trình quản lý mật khẩu hoặc mật khẩu đăng nhập máy tính
- Biết chính xác độ mạnh bằng con số bit thay vì dựa vào thanh màu xanh đỏ mơ hồ
- Không phải tin vào máy chủ nào vì toàn bộ việc tạo diễn ra trong trình duyệt
- Dễ đọc cho người khác qua điện thoại hơn chuỗi ký tự lộn xộn, ít nhầm lẫn giữa chữ l, số 1 và chữ I
- Tạo nhiều phương án một lúc để chọn cụm dễ nhớ nhất mà không làm giảm độ mạnh
Cách tạo passphrase bằng công cụ
- 1Chọn danh sách từ: EFF tiếng Anh nếu bạn quen gõ tiếng Anh, hoặc âm tiết tiếng Việt không dấu nếu muốn cụm từ đọc lên thấy quen tai hơn.
- 2Đặt số từ. Với danh sách EFF nên dùng từ 6 từ trở lên cho mật khẩu quan trọng; với âm tiết tiếng Việt nên dùng từ 8 âm tiết để đạt độ mạnh tương đương.
- 3Chọn dấu phân cách và kiểu viết hoa. Nếu website bắt buộc có số hoặc ký hiệu, bật thêm chữ số hoặc ký hiệu ngẫu nhiên.
- 4Xem số bit entropy và bảng thời gian dò trung bình ở khung bên phải để biết cấu hình hiện tại mạnh đến đâu.
- 5Bấm Tạo cụm từ mới, chọn một cụm trong danh sách mà bạn thấy dễ nhớ nhất, sao chép và lưu ngay vào trình quản lý mật khẩu.
- 6Nếu muốn tự kiểm soát hoàn toàn nguồn ngẫu nhiên, tung 5 viên xúc xắc cho mỗi từ và nhập mã vào khung tra từ theo xúc xắc.
Entropy của passphrase được tính như thế nào
Nếu mỗi từ được chọn ngẫu nhiên đều từ một danh sách có N phần tử, mỗi từ đóng góp log2(N) bit. Danh sách EFF có 7.776 từ, tức log2(7.776) ≈ 12,92 bit mỗi từ, nên sáu từ cho khoảng 77,55 bit, bảy từ khoảng 90,5 bit. Danh sách âm tiết tiếng Việt không dấu trên công cụ có 870 phần tử, log2(870) ≈ 9,76 bit mỗi âm tiết, nên tám âm tiết cho khoảng 78,12 bit. Các tùy chọn thêm vào cũng được cộng đúng phần của chúng: một chữ số ngẫu nhiên gắn vào một từ ngẫu nhiên trong sáu từ cộng thêm log2(10) + log2(6) ≈ 5,9 bit; chọn ngẫu nhiên một từ để viết hoa cộng log2(6) ≈ 2,58 bit; dùng chữ số ngẫu nhiên làm dấu phân cách cộng log2(10) ≈ 3,32 bit cho mỗi chỗ nối. Riêng việc viết hoa toàn bộ hoặc viết hoa chữ đầu mọi từ không cộng bit nào, vì kẻ tấn công chỉ cần thử thêm đúng một biến thể.
Giả định đằng sau bảng thời gian dò mật khẩu
Bảng thời gian trên công cụ dùng giả định bất lợi nhất cho bạn: kẻ tấn công biết bạn dùng đúng công cụ này, biết danh sách từ, số từ và mọi tùy chọn, chỉ không biết các lựa chọn ngẫu nhiên. Thời gian trung bình để dò trúng được tính bằng một nửa không gian khả năng, tức 2 mũ (số bit trừ 1), chia cho tốc độ thử. Ba tốc độ được dùng làm mốc: 100 lượt mỗi giây cho kiểu dò trực tiếp qua form đăng nhập không bị khóa, 10.000 lượt mỗi giây khi cơ sở dữ liệu bị lộ nhưng mật khẩu được băm bằng thuật toán chậm như bcrypt hay Argon2, và 10 tỷ lượt mỗi giây khi mật khẩu chỉ được băm bằng MD5 hoặc SHA-1 trần trên dàn GPU. Với sáu từ EFF (77,55 bit), thời gian trung bình ở mốc 10 tỷ lượt mỗi giây vào khoảng 350 nghìn năm; với bốn từ (51,7 bit) chỉ còn khoảng 2,1 ngày. Các mốc này là con số tròn để so sánh, không phải số đo của một hệ thống cụ thể.
Nên dùng bao nhiêu từ
Không có con số đúng cho mọi trường hợp, nhưng có thể suy luận từ bảng thời gian dò. Tài khoản website có giới hạn số lần đăng nhập sai và dùng hàm băm tốt thì bốn đến năm từ EFF đã khó bị dò trực tuyến. Mật khẩu có thể bị tấn công ngoại tuyến, tức kẻ tấn công lấy được bản băm hoặc tệp mã hóa rồi dò trên máy của họ, như mật khẩu chủ của trình quản lý mật khẩu, mật khẩu mã hóa ổ đĩa, ví tiền điện tử hay tệp nén có mật khẩu, thì nên dùng từ sáu từ EFF trở lên, hoặc tám âm tiết tiếng Việt trở lên. Thêm một từ luôn hiệu quả hơn thêm ký hiệu: một từ EFF cộng gần 13 bit, trong khi một ký hiệu gắn vào một từ chỉ cộng khoảng 5 đến 6 bit và khó nhớ hơn nhiều.
Vì sao phải dùng crypto.getRandomValues và rejection sampling
Math.random trong JavaScript không được thiết kế cho mục đích bảo mật, trạng thái bên trong của nó có thể bị suy ra từ vài giá trị đầu ra. Công cụ này dùng crypto.getRandomValues, bộ sinh số ngẫu nhiên mật mã do trình duyệt lấy từ hệ điều hành. Tuy vậy, lấy một số 32 bit rồi chia lấy dư cho 7.776 vẫn gây lệch nhẹ: 2 mũ 32 không chia hết cho 7.776, nên vài từ đầu danh sách có xác suất cao hơn một chút. Công cụ xử lý bằng rejection sampling: chỉ chấp nhận số nhỏ hơn bội số lớn nhất của 7.776 không vượt quá 2 mũ 32, số nào lớn hơn thì bỏ và bốc lại. Nhờ đó mọi từ có xác suất đúng bằng nhau. Chúng tôi đã kiểm tra thống kê bằng phép thử khi bình phương trên hàng trăm nghìn lần bốc, phân bố nằm trong ngưỡng của phân bố đều.
Danh sách âm tiết tiếng Việt không dấu được xây dựng ra sao
Danh sách tiếng Việt trên công cụ do chúng tôi tự tổng hợp: lấy các âm tiết thật xuất hiện trong văn bản tiếng Việt, bỏ dấu thanh, dấu mũ và chuyển đ thành d, chỉ giữ những âm tiết đúng cấu trúc âm đầu và vần của tiếng Việt, rồi gộp các âm tiết trở nên trùng nhau sau khi bỏ dấu. Ví dụ ma, má, mà, mả, mã, mạ đều chỉ còn một phần tử ma. Việc gộp này quan trọng cho phép tính entropy: nếu giữ cả sáu biến thể có dấu nhưng lại gõ không dấu, danh sách sẽ bị đếm thừa và con số bit hiển thị sẽ cao hơn thực tế. Kết quả là 870 âm tiết không trùng nhau, mỗi âm tiết khoảng 9,76 bit. Vì ít bit hơn một từ EFF, bạn cần nhiều âm tiết hơn, bù lại các âm tiết ngắn và quen mặt với người Việt.
Diceware thủ công bằng xúc xắc thật
Diceware là phương pháp tạo passphrase bằng xúc xắc sáu mặt: mỗi từ cần tung 5 lần, 5 chữ số thu được (mỗi số từ 1 đến 6) tạo thành một mã từ 11111 đến 66666, đúng 7.776 khả năng ứng với 7.776 từ trong danh sách EFF. Cách này không phụ thuộc vào bất kỳ phần mềm nào nên phù hợp khi tạo mật khẩu cực kỳ quan trọng. Trên công cụ, bạn có thể bật hiện mã xúc xắc để hiểu cách từ được ánh xạ, hoặc nhập mã từ xúc xắc thật vào khung tra từ. Nếu muốn giữ bí mật tuyệt đối khỏi cả trình duyệt, hãy in danh sách từ của EFF ra giấy và tra bằng tay.
Giới hạn của công cụ và những điều entropy không đo được
Entropy chỉ đúng khi cụm từ thật sự được máy chọn ngẫu nhiên. Nếu bạn bấm tạo nhiều lần rồi chỉ giữ cụm có từ mình thích, hoặc tự sửa từ cho dễ nhớ, độ mạnh thực tế giảm đi một chút; chọn một trong vài cụm của cùng một lượt tạo thì ảnh hưởng không đáng kể. Khi chọn không phân cách, một số cách ghép từ khác nhau có thể cho ra cùng một chuỗi nên entropy thật có thể thấp hơn con số hiển thị. Passphrase mạnh đến đâu cũng không cứu được nếu bạn dùng lại nó cho nhiều website, gõ nó vào trang giả mạo hoặc máy bị cài phần mềm ghi phím. Một số website giới hạn độ dài mật khẩu hoặc cấm dấu cách, khi đó hãy chọn dấu phân cách khác hoặc giảm số từ và bật xác thực hai lớp để bù.
Ghi nhận nguồn danh sách từ
Danh sách từ tiếng Anh là EFF Large Wordlist do Electronic Frontier Foundation công bố năm 2016 tại eff.org/dice, cấp phép Creative Commons Attribution 3.0. Công cụ giữ nguyên toàn bộ 7.776 từ theo thứ tự gốc để mã xúc xắc khớp với bản in của EFF. Danh sách được thiết kế gồm các từ dễ gõ, dễ đánh vần, tránh từ thô tục và từ quá giống nhau. Danh sách âm tiết tiếng Việt không dấu là phần do Tấn Phát Digital tự xây dựng như mô tả ở trên.
Câu hỏi thường gặp (FAQ)
Passphrase khác mật khẩu thông thường ở điểm nào?
Passphrase là mật khẩu gồm nhiều từ ghép lại, thường dài 25 đến 50 ký tự nhưng dễ nhớ vì mỗi phần là một từ có thật. Độ mạnh của nó đến từ số lượng từ và việc các từ được chọn ngẫu nhiên, không phải từ ký tự đặc biệt.
Sáu từ EFF mạnh tương đương mật khẩu bao nhiêu ký tự?
Sáu từ EFF cho khoảng 77,55 bit. Một ký tự ngẫu nhiên từ 94 ký tự in được trên bàn phím cho khoảng 6,55 bit, nên 77,55 bit tương đương khoảng 12 ký tự hoàn toàn ngẫu nhiên.
Công cụ có lưu hay gửi passphrase của tôi đi đâu không?
Không. Việc chọn từ diễn ra hoàn toàn trong trình duyệt bằng crypto.getRandomValues, không có yêu cầu mạng nào mang cụm từ đi và công cụ không ghi gì vào bộ nhớ trình duyệt. Tải lại trang là các cụm từ biến mất.
Tôi có thể tự sửa vài từ cho dễ nhớ không?
Nên hạn chế. Từ do bạn tự chọn dễ đoán hơn từ do máy chọn, nên mỗi lần sửa là một phần entropy bị mất. Nếu thấy cụm từ khó nhớ, hãy bấm tạo lại và chọn cụm khác trong cùng lượt thay vì sửa tay.
Vì sao viết hoa toàn bộ không làm cụm từ mạnh hơn?
Vì kẻ tấn công biết quy tắc và chỉ cần thử thêm một biến thể viết hoa. Chỉ những lựa chọn ngẫu nhiên mới cộng entropy, ví dụ chọn ngẫu nhiên một trong sáu từ để viết hoa cộng khoảng 2,58 bit.
Nên chọn danh sách tiếng Anh hay tiếng Việt không dấu?
Cả hai đều an toàn nếu đủ số từ. Danh sách EFF cho nhiều bit hơn mỗi từ nên cần ít từ hơn. Âm tiết tiếng Việt ngắn, quen mặt và dễ gõ với người không quen tiếng Anh, nhưng cần khoảng tám âm tiết để đạt mức tương đương sáu từ EFF.
Tại sao dùng âm tiết không dấu mà không dùng tiếng Việt có dấu?
Nhiều website, thiết bị và bàn phím không nhập được hoặc chuẩn hóa khác nhau với ký tự có dấu, dễ dẫn đến tình trạng đúng mật khẩu mà vẫn không đăng nhập được. Âm tiết không dấu gõ được ở mọi nơi và số bit được tính đúng sau khi gộp các âm tiết trùng nhau.
Rejection sampling là gì và có cần quan tâm không?
Đó là kỹ thuật bỏ những số ngẫu nhiên rơi vào phần dư để mọi từ có xác suất bằng nhau. Người dùng không cần làm gì, nhưng đây là chi tiết phân biệt một công cụ tạo passphrase đúng chuẩn với công cụ dùng phép chia lấy dư đơn giản.
Passphrase có phù hợp làm mật khẩu Wi-Fi không?
Phù hợp. WPA2 và WPA3 chấp nhận mật khẩu từ 8 đến 63 ký tự và cho phép dấu cách. Cụm năm hoặc sáu từ vừa đủ mạnh vừa dễ đọc cho khách, chỉ cần kiểm tra độ dài không vượt 63 ký tự.
Thời gian dò trên bảng có phải là thời gian thật hacker cần không?
Không phải. Đó là ước lượng toán học với ba tốc độ thử làm mốc và giả định kẻ tấn công biết cách bạn tạo mật khẩu. Tốc độ thực tế phụ thuộc thuật toán băm của dịch vụ, phần cứng của kẻ tấn công và việc dịch vụ có khóa tài khoản khi nhập sai nhiều lần hay không.
Tôi nên dùng passphrase cho tất cả tài khoản không?
Cách thực tế là dùng một passphrase mạnh làm mật khẩu chủ cho trình quản lý mật khẩu, còn các tài khoản khác để trình quản lý tạo mật khẩu ngẫu nhiên riêng. Không nên dùng một passphrase cho nhiều website, vì một nơi bị lộ là các nơi khác cũng nguy hiểm.
Mã xúc xắc bên cạnh mỗi cụm từ dùng để làm gì?
Mã xúc xắc cho biết từ đó nằm ở vị trí nào trong danh sách EFF theo cách đánh số của phương pháp Diceware. Nó giúp bạn đối chiếu với bản in của EFF, hoặc hiểu cách làm để tự tạo passphrase bằng xúc xắc thật mà không cần máy tính.
Website không cho nhập mật khẩu dài thì làm sao?
Hãy giảm số từ, chọn dấu phân cách ngắn hoặc chọn danh sách âm tiết tiếng Việt vốn ngắn hơn, đồng thời bật xác thực hai lớp cho tài khoản đó. Số bit hiển thị trên công cụ luôn cập nhật theo cấu hình để bạn biết mình đang chấp nhận mức độ mạnh nào.
Từ khóa liên quan
- passphrase generator
- tạo passphrase
- tạo mật khẩu dạng cụm từ
- diceware generator
- diceware tiếng việt
- eff wordlist
- eff large wordlist
- mật khẩu dễ nhớ mà mạnh
- tạo mật khẩu ngẫu nhiên an toàn
- tính entropy passphrase
- passphrase bao nhiêu từ là đủ
- mật khẩu chủ trình quản lý mật khẩu
- correct horse battery staple
- random passphrase online
- tạo mật khẩu wifi dễ nhớ
- thời gian bẻ khóa mật khẩu
- mật khẩu nhiều từ
- crypto getrandomvalues passphrase
- tạo cụm từ bí mật
- xkcd password generator