it-swarm-vi.com

Độ dài mật khẩu tối đa là bao lâu?

Độ dài mật khẩu tối thiểu được đề xuất là khoảng 8 ký tự, vậy có độ dài tối đa tiêu chuẩn/khuyến nghị nào của mật khẩu không?

60
Mohamed

Bruce Schneier có một vài bài viết thú vị về chính sách mật khẩu.

Mật khẩu trong thế giới thực - bao gồm độ dài mật khẩu, độ phức tạp và mật khẩu phổ biến.

Lời khuyên về mật khẩ - một số việc và không nên bao gồm:

  • NÊN sử dụng trình quản lý mật khẩu
  • NÊN thay đổi mật khẩu thường xuyên. Tôi thay đổi của tôi cứ sau sáu tháng ...
  • Đừng sử dụng lại mật khẩu cũ.
  • KHÔNG sử dụng mật khẩu bao gồm các từ trong từ điển, ngày sinh nhật, tên gia đình và thú cưng, địa chỉ hoặc bất kỳ thông tin cá nhân nào khác.
  • KHÔNG truy cập các tài khoản được bảo vệ bằng mật khẩu qua các mạng Wi-Fi mở - hoặc bất kỳ mạng nào khác mà bạn không tin tưởng - trừ khi trang web được bảo mật thông qua https.

và nhiều thứ khác nữa

Thay đổi mật khẩ - một cuộc thảo luận chi tiết về tần suất bạn nên thay đổi dựa trên môi trường sử dụng và mối đe dọa.

15
Alexandru Luchian

Câu trả lời cho câu hỏi này, giống như rất nhiều câu hỏi trong Bảo mật là "nó phụ thuộc".

Có một số yếu tố cần xem xét khi xem xét độ dài mật khẩu. Đầu tiên là một số điều mà một mật khẩu dài được thiết kế để bảo vệ chống lại, thường là một cuộc tấn công đoán mật khẩu (trực tuyến hoặc ngoại tuyến).

Để đoán mật khẩu trực tuyến, nếu bạn có chính sách khóa tương đối khó chịu (ví dụ: 3 lần thử sai và sau đó khóa không xác định) thì các cuộc tấn công vào một tài khoản sẽ khó có thể thành công trừ khi kẻ tấn công có ý tưởng tốt về mật khẩu là gì sắp sửa.

Nếu bạn đang tìm cách chống lại các cuộc tấn công vào một lượng lớn người dùng có cùng chính sách khóa, nơi kẻ tấn công có thể tìm ra tên người dùng (ví dụ: diễn đàn web), thì yếu tố quan trọng nhất có lẽ là mật khẩu được sử dụng không phải là bất kỳ những người thực sự phổ biến.

Bên cạnh đó, một điều cần chú ý ở phía khóa tài khoản, đó là các chính sách tích cực ở đây cho các ứng dụng trực tuyến có thể thực hiện một cuộc tấn công từ chối dịch vụ khá dễ dàng, mà không cần thêm biện pháp đối phó.

Nếu có nguy cơ vũ lực ngoại tuyến thì cường độ mật khẩu trở nên quan trọng hơn. vấn đề ở đây là sức mạnh xử lý được cải thiện và phương pháp tấn công khiến đây trở thành mục tiêu di chuyển về mặt sức mạnh. Thực tế tôi muốn nói rằng bạn đang xem hơn 10 ký tự và thực thi mạnh mẽ rằng mật khẩu không có trong danh sách từ điển phổ biến (như @andy nói cụm mật khẩu là một lựa chọn tốt ở đây).

Một yếu tố khác cần xem xét ở đây là cơ sở người dùng của bạn và cách ứng dụng được sử dụng. Trong một số trường hợp, tôi muốn nói rằng các yêu cầu mật khẩu rất mạnh thực sự có thể dẫn đến một ứng dụng kém an toàn hơn. Nếu bạn có một ứng dụng có người dùng ở cùng một nơi (ví dụ: rất nhiều ứng dụng của công ty) và bạn thực hiện chính sách mật khẩu rất "mạnh" (cả về độ dài mật khẩu và yêu cầu xoay vòng) thì có khả năng người dùng sẽ bắt đầu viết mật khẩu của họ, có thể đánh bại một trong những mục tiêu bảo mật cho ứng dụng đó ngay từ đầu.

Một nguồn tốt của rất nhiều thông tin về điều này là một cuốn sách có tên Xác thực: Từ mật khẩu đến Khóa công khai

20
Rory McCune

Câu trả lời tốt cho đến nay, nhưng tôi muốn đề xuất một khả năng khác: vượt qua cụm từ . Như riêng của StackOverflow của Jeff Atwood gợi ý, nếu bạn không bị cấm bởi các giới hạn kỹ thuật, bạn có thể xem xét cho phép và đề xuất các cụm từ vượt qua. Bạn có thể thực thi chúng, nhưng điều đó có thể khiến một số người dùng xa lánh trên hầu hết các trang web. Do chiều dài của chúng, chúng có thể khó bẻ khóa hơn đáng kể và chúng cũng có thể dễ nhớ hơn một mật khẩu như "A1lUrB @ se!" hoặc những thứ như thế.

19
Andy

Nếu bạn định băm mật khẩu, tại sao lại đặt giới hạn trên?

Không giống như bạn cần lo lắng về việc đạt giới hạn char tối đa trên các trường văn bản, dựa trên web hoặc cách khác. Vì vậy, bạn có thể hình dung chỉ cần đặt tối đa vài trăm ký tự chỉ để giới hạn một số điều kiện biên của bất kỳ trường văn bản nào bạn đang sử dụng.

Tất nhiên, nếu bạn đang nói về việc tạo mật khẩu mà bạn sẽ cố gắng sử dụng trên nhiều trang web, thì đừng bận tâm; không ai ngoài đó có vẻ đồng ý về nó. Thậm chí tệ hơn, tôi đã tìm thấy các trang web có giới hạn char tối đa khác nhau trên các trường đầu vào khác nhau, vì vậy để đăng nhập, trước tiên bạn phải nhập sai trước khi đưa ra một trường khác xảy ra để cho phép nhiều ký tự hơn. Tất nhiên, nếu mọi trang web chỉ để nó là khả năng mong đợi tối thiểu của một trường văn bản điển hình mà không cố gắng giới hạn một cách giả tạo, thì sẽ có khoảng 2k ký tự được cho phép và bạn hoàn toàn không phải lo lắng về điều này.

Đã chỉnh sửa để thêm: một cái gì đó được đề cập khi đi qua ở đây khiến tôi tạm dừng:

bạn phải mở rộng quy mô băm thành những gì có sẵn và hợp lý trên máy chủ hoặc thiết bị của bạn. Ví dụ: chúng tôi đã có một lỗi từ chối dịch vụ nhỏ trong Nghị luận nơi chúng tôi cho phép mọi người nhập tối đa 20.000 mật khẩu ký tự trong biểu mẫu đăng nhập

Do đó, có thể đáng để đặt giới hạn hợp lý cho cả cài đặt và thử mật khẩu nếu bạn băm mọi thứ theo cách có nghĩa là tốn kém về mặt tính toán nhất có thể. Một vài trăm ký tự vẫn có thể khiến mọi thứ không phát nổ quá nhiều, trong khi vẫn còn nhiều hơn một người dùng có thể thử.

16
Doug Kavendek

Không nên có độ dài mật khẩu tối đa - nếu người dùng chấp nhận sử dụng mật khẩu rất dài, thì anh ta nên khen ngợi, không bị chặn.

Phần mềm là như vậy, một số hệ thống sẽ thực thi giới hạn về kích thước mật khẩu, chủ yếu là do vấn đề GUI, lập trình kém hoặc khả năng tương thích ngược với các hệ thống cũ hơn nhiều. Chẳng hạn, các hệ thống Unix cũ đã sử dụng quy trình băm mật khẩu chỉ sử dụng tám ký tự đầu tiên và hoàn toàn bỏ qua tất cả các ký tự khác. Tương tự, các hệ thống Windows cũ có giới hạn bên trong là 14 ký tự. Do đó, tốt nhất là nếu mật khẩu, khi bị cắt thành 14 ký tự đầu tiên, vẫn còn "mạnh".

Tuy nhiên, giới hạn duy nhất về kích thước mật khẩu tối đa phải là sự kiên nhẫn của người dùng. Không có điểm nào trong việc thực thi bất cứ điều gì ở đây.

8
Thomas Pornin

Tối thiểu phổ biến hiện nay là 12 ký tự, chỉ đủ lớn để ngăn chặn sự bẻ khóa vũ phu của một tổ chức được tài trợ hợp lý trong một khoảng thời gian hợp lý.

Càng xa tối đa; Dưới đây là một vài suy nghĩ: mật khẩu dài hơn vài trăm byte gần như chắc chắn là độc hại (ví dụ: nỗ lực tiêm SQL). Cũng lưu ý rằng nếu bạn đang băm mật khẩu của mình (và nếu bạn không, bạn cần bắt đầu lại), thì mật khẩu dài hơn so với đầu ra băm của bạn không thêm bất kỳ entropy nào. Lưu ý rằng "dài hơn" Tôi có nghĩa là cùng một số bit trong không gian khóa của bạn, không phải cùng độ dài ký tự. Vì vậy, trong khi cho phép mật khẩu dài hơn độ dài băm nên được phép như một điểm thuận tiện, sẽ không có ý nghĩa gì từ quan điểm toán học đối với một thứ như vậy bắt buộc .

Yêu cầu trường hợp hỗn hợp tăng gấp đôi kích thước của bảng chữ cái của bạn, mang lại lợi nhuận phức tạp lớn và có lẽ nên được yêu cầu. Yêu cầu các ký tự số tăng thêm 20% cho bảng chữ cái của bạn, điều này không phải là vấn đề lớn và yêu cầu các ký hiệu có thể tăng thêm 16% đến 40% trên đó (tùy thuộc vào ký hiệu bạn đếm), và một lần nữa, không phải một sự trở lại đáng kể, nhưng chắc chắn không nên không được phép.

3
tylerl

Cá nhân tôi sẽ sử dụng trình tạo mật khẩu (như lastpass.com hoặc 1password) để tạo và sử dụng mật khẩu tối thiểu 8 ký tự và tối đa 32 ký tự (vì không phải tất cả các trang web đều hỗ trợ mật khẩu dài hơn 10 hoặc 15) và sử dụng một mật khẩu chính để xác thực. (Điều này một lần nữa phụ thuộc vào sự tin tưởng của bạn trên các trang web như lastpass.com) hoặc tiện ích 1password được mã hóa phía máy khách cho Mac và Windows).

Không nên sử dụng một bộ mật khẩu cho tất cả các trang web. Diễn đàn đặc biệt gửi email cho tôi mật khẩu bằng văn bản đơn giản. Một số trang web có tính năng gửi mật khẩu đơn giản trong trường hợp bạn sử dụng tính năng "Quên mật khẩu".

Thông thường, các hạn chế được thiết lập tại máy chủ (đối với các trang web). Chúng ta cần đổ lỗi cho các máy chủ mà chúng ta sử dụng để không đặt ra các hạn chế về mật khẩu người dùng.

Tóm lại, sử dụng mật khẩu khác nhau mỗi lần. Trong trường hợp bạn có nhiều hơn 10-15 mật khẩu cần nhớ, đã đến lúc bắt đầu sử dụng trình quản lý mật khẩu "an toàn". (Đối với bản ghi, trình quản lý mật khẩu firefox hoàn toàn không an toàn)

2
Sairam

16 ký tự.

Điều này cung cấp cho bạn 96 bit theo Wikipedia , vượt xa mọi thứ có thể bẻ khóa theo bài viết đó.

Cá nhân tôi sử dụng chương trình mật khẩu cho điện thoại di động của mình, kết hợp với tính năng Mật khẩu chủ của Firefox. Mật khẩu chủ của tôi có hơn 25 ký tự và được dựa trên Dice Ware, điều này làm cho nó khá dễ nhớ. Hầu như tất cả mật khẩu của tôi được tạo lại ngẫu nhiên, vì dù sao Firefox cũng nhớ chúng cho tôi.

2
Roger C S Wernersson

Tôi đang ở một khách hàng nơi nhân viên an ninh mất trí. Ông muốn sử dụng mọi chính sách phức tạp mật khẩu duy nhất có thể. (Novell eDirectory có rất nhiều vấn đề phức tạp về mật khẩu và anh ấy muốn sử dụng một plugin bổ sung để thêm vào!)

Đến mức không thể nào tạo được mật khẩu có thể nhớ được. Tôi đã mong đợi quần chúng không được tìm thấy anh ta, và tar và lông anh ta sau khi nó được thực hiện.

Nói cách khác, bạn có thể đưa nó đi quá xa.

1
geoffc

Khuyên bảo

Năm 2019, tính ngẫu nhiên cần thiết cho mật khẩu/cụm mật khẩu an toàn là:

  • 12 ký tự được tạo ngẫu nhiên với chữ thường, chữ hoa và chữ số; hoặc là
  • 6 từ được tạo ngẫu nhiên. (Làm không tự mình chọn từ! Điều đó tạo ra các mẫu.)

Không thể nhớ hai mươi trong số đó, vì vậy chỉ ghi nhớ một vài thứ quan trọng mà bạn sử dụng thường xuyên. Ví dụ: bạn có thể ghi nhớ tài khoản cho tài khoản email của mình và tài khoản cho người quản lý mật khẩu của bạn. Đối với mọi thứ khác, lưu trữ mật khẩu trong một trình quản lý mật khẩu.

Có liên quan: Người dùng trung bình có thực sự cần người quản lý mật khẩu không?
[.___.] Câu trả lời được bình chọn hàng đầu là "có" rõ ràng.

Có liên quan: Trình quản lý mật khẩu an toàn đến mức nào?
[.__.] Từ câu trả lời hàng đầu, bởi pyj28 (nhấn mạnh của tôi):

đối với hầu hết mọi người, những rủi ro này đều có thể chấp nhận được và tôi sẽ đề xuất rằng cách tiếp cận sử dụng trình quản lý mật khẩu [cho] hầu hết mật khẩu của bạn tốt hơn so với sử dụng cùng một mật khẩu ở mọi nơi - có vẻ là sự thay thế chính. Nhưng tôi sẽ không lưu trữ mọi mật khẩu trong đó; nỗ lực để ghi nhớ những người quan trọng nhất của bạn, như ngân hàng trực tuyến.

Các trình quản lý mật khẩu thường được đề cập là KeePass (X), 1Password và LastPass. Cái trong trình duyệt của bạn phụ thuộc vào: khi bạn sử dụng Firefox với mật khẩu chính, điều đó gần như tương đương với việc sử dụng mật khẩu chuyên dụng. Nếu trình duyệt của bạn không yêu cầu mật khẩu trước khi bạn có thể truy cập mật khẩu, thì nó không an toàn lắm (nhưng các chi tiết phụ thuộc vào việc triển khai chính xác, đó là toàn bộ chủ đề).

Nhà phát triển

Khi bạn xây dựng một ứng dụng, đây là một số cân nhắc hữu ích:

Làm cách nào để băm mật khẩu an toàn?
[.__.] Tóm tắt: sử dụng Scrypt hoặc Argon2, chậm nhất có thể. Nếu những thứ đó không có sẵn, Bcrypt hoặc PBKDF2 là những lựa chọn thay thế được chấp nhận. Thêm cả muốihạt tiê .

Tôi có nên có độ dài mật khẩu tối đa không?
[.__.] Tóm tắt: chỉ chống lại các cuộc tấn công DoS, vì vậy một vài kilobyte hoặc hơn.

Thực hiện băm mật khẩu phía máy khách
[.__.] Tiết lộ đầy đủ: Tôi liên kết với câu trả lời của riêng mình vì tôi nghĩ đó là câu trả lời đầy đủ nhất. Hãy chắc chắn cũng đọc ý kiến ​​của người khác.

Chi tiết

Bạn có thể tự hỏi "tại sao mã PIN của tôi chỉ có 4 chữ số? Thế là đủ để giữ an toàn cho tài khoản ngân hàng của tôi!" Có một câu hỏi dành riêng cho việc này , nhưng tóm tắt là hai điều: bạn cần thẻ ngân hàng để truy cập (yếu tố xác thực thứ hai) và chip khóa bạn sau 3 lần thử.

Các trang web nhẹ nhàng hơn nhiều, vì vậy kẻ tấn công có thể thực hiện nhiều nỗ lực hơn. Hơn nữa, các trang web dự kiến ​​sẽ bị hack sớm hay muộn, sau đó kẻ tấn công có thể bẻ khóa mật khẩu băm của bạn một cách hiệu quả.

Hầu hết các trang web lưu trữ mật khẩu của bạn với một loại mã hóa một chiều, được gọi là băm. Không có khóa giải mã. Bằng cách áp dụng lại thuật toán băm tương tự, hệ thống có thể so sánh mật khẩu (mà bạn vừa gõ) với mật khẩu được lưu trữ (từ cơ sở dữ liệu) và biết liệu chúng có bằng nhau không. Nhưng chỉ với cơ sở dữ liệu, bạn không thể biết mật khẩu gốc.

Trong quá khứ, phương pháp băm nhanh là phổ biến. Điều này cũng có nghĩa là một kẻ tấn công, người đã có được hàm băm, có thể khiến máy tính của anh ta thực hiện hàng tỷ lần thử mỗi giây trên một máy tính chơi game trung bình. Giả sử mười tỷ lần thử mỗi giây, mật khẩu ngẫu nhiên gồm 11 ký tự được giữ trong khoảng 165 năm. Và đó chỉ là một game thủ, hãy tưởng tượng bạn có quyền truy cập vào dữ liệu của công ty mà một số đối thủ nước ngoài quan tâm: với một sức mạnh tính toán bổ sung, 165 năm đó đột nhiên biến thành một vài tháng bẻ khóa. Và năm tới, sẽ có những CPU mới nhanh hơn với cùng mức giá, giảm sức mạnh một lần nữa. Đó là lý do tại sao mười hai ký tự là mức tối thiểu cho một mật khẩu mạnh: thêm một ký tự thêm mười nghìn năm vào thời gian bẻ khóa (165 năm so với 10 230 năm) và an toàn cho tương lai gần.

Nhân tiện, việc tính toán mật khẩu rất dễ dàng: variations^length / guesses_per_time. Các biến thể là có bao nhiêu phần tử duy nhất và độ dài là số phần tử bạn sử dụng. Vì vậy, nếu bạn chỉ sử dụng các chữ số, có mười biến thể (0 đến 9). Nếu bạn sử dụng các từ trong từ điển, tuy nhiên có nhiều từ trong từ điển. Sau đó, đoán_per_time chỉ là bạn cho rằng kẻ tấn công có thể bẻ khóa nhanh như thế nào. Một giá trị hợp lý là hàng chục tỷ mỗi giây.
Thí dụ: 10^14/10e9/3600 cho bạn thấy cần bao nhiêu giờ để bẻ khóa mã gồm 14 chữ số, khi bạn giả sử 10e9 lần thử mỗi giây (có 3600 giây trong một giờ, 60 * 60).

Một số trang web thông minh và sử dụng thuật toán băm chậm. Chúng tôi không thể biết đó là những gì, bởi vì máy chủ thực hiện băm, vì vậy bạn không thể nhìn thấy nó từ bên ngoài. Nếu đây là trường hợp, thì một lần đoán sẽ mất nhiều thời gian hơn để tính toán (đối với máy chủ, nhưng đối với kẻ tấn công). Trong một trường hợp hợp lý, một kẻ tấn công được tài trợ tốt chỉ có thể thực hiện năm mươi nghìn lần đoán mỗi giây, trong trường hợp đó mật khẩu 9 ký tự là đủ. Nhưng 9 ký tự ngẫu nhiên đã rất khó để ghi nhớ cho nhiều tài khoản khác nhau, đặc biệt nếu bạn không sử dụng tất cả chúng thường xuyên. Do đó, một trình quản lý mật khẩu được yêu cầu phải thực sự có bất kỳ sự bảo mật nào trong mật khẩu.

Nhưng có thực sự cần thiết phải có mật khẩu duy nhất? Tại sao không sử dụng lại mật khẩu mạnh trên một vài trang web khác nhau? Bởi vì các trang web thường xuyên bị xâm phạm. Đây không phải là chuyện thường ngày, nhưng hãy thử nhập địa chỉ email của bạn vào haveibeenpwned.com : nó chắc chắn xảy ra rất nhiều. Đây là cách tài khoản bị hack thường xuyên nhất: sử dụng lại mật khẩu. Thỏa hiệp của người quản lý mật khẩu ít phổ biến hơn nhiều.

0
Luc