2010-02-01 30 views
19

Nhiều năm trước nó từng là trường hợp mật khẩu Unix bị giới hạn trong 8 ký tự, hoặc nếu bạn tạo mật khẩu dài hơn 8 ký tự thì sẽ không có bất kỳ sự khác biệt nào.Các mật khẩu trên các hệ thống Unix/Linux hiện đại có giới hạn đến 8 ký tự không?

Đó có phải là trường hợp trên hầu hết các hệ thống Unix/Linux hiện đại không?

Nếu có, khi nào mật khẩu càng dài càng khả dụng trên hầu hết các hệ thống?

Có cách nào dễ dàng để biết liệu một hệ thống cụ thể có hỗ trợ mật khẩu dài hơn không và nếu có, thì mức tối đa hiệu dụng (nếu có) là bao nhiêu?

Tôi đã thực hiện một số tìm kiếm trên web về chủ đề này và không thể tìm thấy bất kỳ thứ gì dứt khoát; phần lớn những gì xuất hiện là từ đầu những năm 2000 khi tôi nghĩ giới hạn 8 ký tự vẫn còn phổ biến (hoặc đủ phổ biến để đảm bảo gắn bó với giới hạn đó).

Trả lời

12

Trong glibc2 (bất kỳ bản phân phối Linux hiện đại) chức năng mã hóa mật khẩu có thể sử dụng MD5/SHA-xxx (kích động bởi một tiền tố muối ma thuật) mà sau đó đối xử như đáng kể tất cả các nhân vật đầu vào (xem man 3 crypt). Đối với một thử nghiệm đơn giản trên hệ thống của bạn, bạn có thể thử một cái gì đó như:

#!/bin/perl -w 
my $oldsalt = '@@'; 
my $md5salt = '[email protected]@$'; 
print crypt("12345678", $oldsalt) . "\n"; 
print crypt("123456789", $oldsalt) . "\n"; 
print crypt("12345678", $md5salt) . "\n"; 
print crypt("12345678extend-this-as-long-as-you-like-0", $md5salt) . "\n"; 
print crypt("12345678extend-this-as-long-as-you-like-1", $md5salt) . "\n"; 

(mà trên hệ thống của tôi cho)

@@nDzfhV1wWVg 
@@nDzfhV1wWVg 
[email protected]@$PrkF53HP.ZP4NXNyBr/kF. 
[email protected]@$4fnlt5pOxTblqQm3M1HK10 
[email protected]@$D3J3hluAY8pf2.AssyXzn0 

* biến ix khác hỗ trợ tương tự - ví dụ crypt(3) since at least Solaris 10. Tuy nhiên, đó là tiện ích mở rộng không chuẩn - POSIX does not define it.

+1

Hàm băm md5 sử dụng '$ 1 $' là ** 22 ** tuổi. Nó được sử dụng để mặc định cho băm 'bóng' trong một thời gian khá dài nhưng bây giờ không an toàn. Không ai nghiêm túc sử dụng nó trong năm 2010. Mật mã cũ được sử dụng des, và không phải tất cả các nhân vật đều có ý nghĩa. Nó không thực sự bị hỏng ~ 1995, với một mật khẩu tốt. –

+0

@AnttiHaapala Chắc chắn là! Đây chỉ là ví dụ đơn giản nhất - manpage (liên kết) cho crypt cung cấp các giá trị khác cho thuật toán, chẳng hạn như $ 5 $ cho SHA-256 và $ 6 $ cho SHA-512. – jmb

1

Bạn sẽ tìm thấy điều này article quan tâm. Có một cái gì đó gọi là PAM (Password Authentication Module) chạy mật khẩu của bạn thông qua một loạt các mô-đun (được cấu hình trong /etc/pam.d/passwd hoặc /etc/pam.conf) để xác định xem mật khẩu có hợp lệ hay không.

4

Không dành cho Linux. Chỉ có 8 nếu bạn tắt MD5 Hashing.

http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

Bạn có thể quản lý các chính sách thực thi lâu hơn và mật khẩu phức tạp hơn là tốt.

Chiều dài đầy đủ sẽ được thảo luận ở đây:

http://www.ratliff.net/blog/2007/09/20/password-length/

+1

Hiện Linux vẫn sử dụng MD5? Tôi hỏi vì nó được coi là bị hỏng. –

+0

@Steven: IIRC, có, nó vẫn sử dụng MD5 theo mặc định. Tuy nhiên, nó sử dụng một loại muối hợp lý, vì vậy nó có phần an toàn với các cuộc tấn công của bàn cầu vồng, nhưng không an toàn như nó có thể. – rmeador

+1

Thú vị. Tôi mơ hồ nhớ rằng một số biến thể Unix hỗ trợ nhiều thuật toán băm. –

0

Tôi nghĩ khoảng thời gian khi mật khẩu thực tế đã được chuyển từ/etc/passwd để shadow, trên Linux. Tôi đoán khoảng năm 2000, Red Hat 6.x có mật khẩu dài IIRC. Khoảng năm 2000 vẫn còn rất nhiều SUN cũ, và họ đã có giới hạn mật khẩu và tên người dùng.

5

Bạn có hỏi về thuật toán crypt không?

http://linux.die.net/man/3/crypt

"Bằng cách 7 bit thấp nhất của mỗi trong tám ký tự đầu tiên của khóa ..."

"Phiên bản glibc2 của chức năng này có các tính năng bổ sung sau đây. ... Toàn bộ khóa là đáng kể ở đây (thay vì chỉ 8 byte đầu tiên). "

Đây là gợi ý về sự thay đổi này đã xảy ra trong bao lâu.

Glibc 2 HOWTO 
    Eric Green, [email protected] 
    v1.6, 22 June 1998 
12

Mặc dù original DES-based algorithm chỉ sử dụng 8 ký tự đầu tiên của mật khẩu, Linux, Solaris, và các hệ thống mới khác bây giờ hỗ trợ thêm các thuật toán hash mật khẩu khác như MD5 mà không có giới hạn này. Đôi khi nó là cần thiết để tiếp tục sử dụng thuật toán cũ nếu mạng của bạn có chứa các hệ thống cũ hơn và nếu NIS được sử dụng. Bạn có thể nói rằng thuật toán dựa trên DES cũ vẫn đang được sử dụng nếu hệ thống sẽ đăng nhập bạn khi bạn chỉ nhập 8 ký tự đầu tiên của mật khẩu> 8 ký tự.

Vì đây là thuật toán băm, MD5 không có giới hạn nội tại. Tuy nhiên, các giao diện khác nhau thường áp đặt some limit of at least 72 characters.

Mặc dù ban đầu mật khẩu được mã hóa được lưu trữ trong tệp có thể đọc được trên thế giới (/etc/passwd), nó hiện được lưu trữ trong cơ sở dữ liệu bóng riêng biệt (ví dụ: /etc/shadow). Do đó, sức mạnh của thuật toán không còn quan trọng như trước đây nữa. Tuy nhiên, nếu MD5 là không đủ, Blowfish hoặc SHA có thể được sử dụng thay thế trên một số hệ thống. Và Solaris hỗ trợ các mô-đun mã hóa mật khẩu có thể cắm được, cho phép bạn sử dụng any crazy scheme. Tất nhiên nếu bạn đang sử dụng LDAP hoặc một số cơ sở dữ liệu người dùng được chia sẻ khác thì bạn sẽ cần phải chọn một thuật toán được hỗ trợ trên tất cả các hệ thống của bạn.

+0

Thông tin và liên kết tuyệt vời - cảm ơn vì đã trả lời! Có rất nhiều câu trả lời hay nên tôi đã "chấp nhận" câu trả lời để xác định xem có an toàn không khi sử dụng mật khẩu> 8, nhưng tôi đã xếp hạng tất cả các câu trả lời hay bao gồm cả câu trả lời của bạn. Cảm ơn! – Chirael

+0

Không sao cả. BTW nó luôn luôn * an toàn * để sử dụng mật khẩu dài hơn 8 ký tự, nó chỉ là nếu mật khẩu của bạn là stackoverflow nó cũng có thể chấp nhận stackoverload. Việc thêm các ký tự phụ có thể làm cho nó dễ nhớ hơn và sẽ không làm giảm tính bảo mật. Cũng nên nhớ rằng tất cả các thuật toán có thể có xung đột băm và sẽ chấp nhận nhiều hơn một mật khẩu, đặc biệt nếu chúng dài. – mark4o

Các vấn đề liên quan