ความยาวสูงสุดของรหัสผ่านบนระบบ unix / linux คือเท่าไร


27

ความยาวสูงสุดที่อนุญาตได้ของรหัสผ่านบนระบบ unix / linux คือเท่าไหร่?


20
หากคำตอบคือ 42 มันควรจะเป็น
tvanfosson

คำถามที่ดีกว่าอาจเป็นอะไรที่ฉันคาดหวังว่าคนที่จะพิมพ์อย่างมีเหตุผล? หากขีด จำกัด คือ 40 และคุณเกินนั้นคุณกำลังทำอะไรผิด
msw

คำตอบ:


39

หากระบบของคุณใช้แฮชการเข้ารหัสเพื่อจัดเก็บรหัสผ่านเช่น MD5, SHA1 และอื่น ๆ จะไม่มีการจำกัดความยาวของรหัสผ่านเนื่องจากสามารถสร้างแฮชเหล่านี้ได้ด้วยข้อมูลจำนวนเท่าใดก็ได้ สามารถสร้างแฮช MD5 หรือ SHA1 สำหรับฮาร์ดไดรฟ์ทั้งหมดได้และนี่เป็นเรื่องปกติสำหรับวัตถุประสงค์ทางนิติวิทยาศาสตร์เพราะถ้าแม้แต่หนึ่งบิตที่เปลี่ยนไปเล็กน้อยดังนั้นคุณจึงมีแฮชที่แตกต่างกันมากดังนั้นคุณจึงสามารถตรวจสอบข้อมูลได้ ซึ่งหมายความว่าคุณสามารถใช้อัลกอริทึมแบบเดียวกันนี้เพื่อทดสอบว่าข้อมูลได้รับการแก้ไขหรือไม่ Linux (อย่างน้อยปัจจุบัน Linux) ใช้ฟังก์ชันแฮชเดียวกันเหล่านี้ มันจะขอรหัสผ่านจากคุณและจากนั้นจะสร้างแฮชการเข้ารหัสลับของรหัสผ่านที่คุณให้และดูว่าแฮชนี้ตรงกับรหัสผ่านที่เก็บไว้หรือไม่

มีข้อเสียเล็กน้อยในการใช้แฮชเหล่านี้ซึ่งแฮชมีขนาดที่ จำกัด ตัวอย่างเช่นแฮช MD5 คือ 128 บิต ซึ่งหมายความว่าแฮช MD5 มี2^128หรือ340,282,366,920,938,463,463,374,607,431,768,211,456เป็นไปได้เท่านั้น ขณะนี้เป็นจำนวนมากหมายความว่าคุณสามารถมีสิ่งที่พวกเขาเรียกว่าการชนกันของแฮชที่คุณมีสองรายการที่แตกต่างกันหรือกุญแจที่ผลิตแฮชเดียวกัน ในทางทฤษฎีที่มีขนาดใหญ่ขนาดที่สำคัญน่าจะเป็นการลดลงของการปะทะกันและอีกต่อไปมันควรจะใช้เวลาในการบังคับเดรัจฉานรหัสผ่าน แต่ที่เป็นอย่างเคร่งครัดประเมินเอนโทรปีและระยะเวลาที่CANใช้ แต่ยังมีโอกาสที่รายการแรกที่พวกเขาลองสามารถเป็นรายการที่ตรงกับแม้ว่าจะเป็นการชนกันของแฮช โดยทั่วไปแล้วคุณจะปลอดภัยกว่าการใช้แฮชที่มีขนาดคีย์ที่ใหญ่กว่าเพราะสมมติว่านี่คือ MD5 โอกาสของรหัสผ่านแรกที่ตรงกับการจับคู่ที่340,282,366,920,938,463,463,374,607,431,768,211,456เป็นไปได้นั้นไม่น่าเป็นไปได้อย่างยิ่ง นอกจากนี้ยังรับรหัสผ่านที่ดีเพราะจำนวนมากของแครกเกอร์จะพยายามและรายการใช้คำรายชื่อและการกลายพันธุ์ของรายการเหล่านี้ (เช่นถ้าคำว่า "ปลา" แล้วพวกเขาก็จะพยายามfish1234, fish!@#$ฯลฯ ) ก่อนที่พวกเขาพึ่งพาเดรัจฉานบังคับรหัสผ่าน

วิธีที่คุณสามารถบอกได้ว่าระบบของคุณใช้การเข้ารหัสลับแฮชเพื่อจัดเก็บรหัสผ่านหรือไม่คือดู/etc/shadowไฟล์ (สมมติว่าคุณมีสิทธิ์เข้าถึงรูต) user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reservedทุกเส้นเป็นรูปแบบเช่น ฟิลด์รหัสผ่านอาจเริ่มต้นด้วย$num$(เช่นแฮช md5 ในฟิลด์รหัสผ่านดูเหมือน$1$01234567$b5lh2mHyD2PdJjFfALlEz1ว่าจะขึ้นต้นด้วย$1$) หากเริ่มต้นด้วยสิ่งนี้แสดงว่าระบบของคุณกำลังใช้แฮชการเข้ารหัสลับ $id$salt$hashรูปแบบของข้อมูลรหัสผ่านในระบบที่ทันสมัยทั้งหมด ID ระบุประเภทแฮชเข้ารหัสที่คุณใช้ เกลือเป็นสตริงที่สร้างแบบสุ่มที่เชื่อมต่อกับคีย์ (รหัสผ่านข้อความธรรมดา) เพื่อป้องกันตารางที่คำนวณไว้ล่วงหน้าของแฮชที่ทราบล่วงหน้า แฮชคือแฮชการเข้ารหัสที่สร้างจากเกลือและคีย์ / รหัสผ่าน หากฟิลด์รหัสผ่านของคุณเริ่มต้นด้วย$num$ ถ้าเช่นนั้นคุณกำลังใช้แฮชการเข้ารหัสลับ

ดังนั้นคุณรู้ว่าตัวเลขหมายความว่า:

  • $1$ หมายความว่าคุณกำลังใช้ MD5
  • $2$หรือ$2a$หมายความว่าคุณใช้ปักเป้า
  • $5$ หมายความว่าคุณกำลังใช้ SHA-256
  • $6$ หมายความว่าคุณกำลังใช้ SHA-512

SHA-512 เป็นแฮชที่ดีที่สุดที่จะใช้กับข้อเสนอ glibc ฉันไม่ทราบว่าปักเป้าแข็งแรงแค่ไหน แต่มันไม่ได้เป็นส่วนหนึ่งของ glibc และมีให้เฉพาะในการแจกแจงบางอย่างที่เพิ่มเข้ามา SHA-512 สร้างคีย์ 512 บิตหรือ 2 ^ 512 ชุดค่าผสมที่เป็นไปได้ก่อนที่จะเกิดการชนกันและด้วยรหัสผ่านที่ซับซ้อนเพียงพอจะใช้เวลากลุ่มคอมพิวเตอร์นานมากในการค้นหารหัสผ่านจริงหรือการชนในแฮช .

นอกจากนี้หากคุณมีแฮชซึ่งไม่ได้ขึ้นต้นด้วย$num$คุณกำลังใช้ DES และจำกัดความยาวของอักขระไว้ที่ 8 ตัว ฉันเชื่อว่าระบบเก่าที่ใช้ DES หรืออย่างน้อยก็บางพวกเขาจะใช้รหัสผ่านขนาดใดก็ได้ แต่ใช้อักขระ 8 ตัวแรกเท่านั้น ซึ่งหมายความว่าหากคุณตั้งรหัสผ่านให้กับmybigbigappleใครบางคนใช้รหัสผ่านmybigbigcityพวกเขาจะได้รับอนุญาตให้ใช้เพราะ DES จะใช้mybigbigและอะไรก็ตามหลังจากนั้นจะถูกยกเลิก

คุณรู้ไหมว่า Ubuntu ตั้งแต่ 8.04 ซึ่งวางจำหน่ายในเดือนเมษายน 2008 ใช้ MD5 hashes อูบุนตูตั้งแต่ 8.10 ซึ่งวางจำหน่ายในเดือนตุลาคม 2551 และทุกรุ่นตั้งแต่นั้นใช้แฮช SHA-512 ฉันไม่รู้ว่ามาก่อนเดือนเมษายน 2008 แต่ฉันเชื่อว่าเป็นเวลาหลายปีถ้าไม่มากขึ้นการกระจายทั้งหมดส่วนใหญ่ใช้แฮช

ปัจจุบัน 12.04 และ 14.04 LTS (รุ่นสนับสนุนระยะยาว) ของ Ubuntu ปรากฏว่าใช้ SHA-512 ตามค่าเริ่มต้นตามที่สามารถเห็นได้ด้วยการ$6$ผนวกกับแฮชในไฟล์ / etc / shadow

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

ตอนนี้ความยาวของคีย์หรือรหัสผ่านที่อนุญาตสำหรับอัลกอริทึมการแฮชไม่ได้เป็นเพียงสิ่งเดียวในการกำหนดรหัสผ่านขนาดที่คุณได้รับอนุญาต รายการที่น่าสนใจอื่น ๆ คือวิธีที่โปรแกรมถูกเขียนและโปรแกรมความยาวที่ตัวเองจะสนับสนุน โปรแกรม passwd ที่ทันสมัยและcrypt(3)ฟังก์ชั่นส่วนใหญ่ใน Linux ฝังศพใต้ถุนโบสถ์เป็นเวลานาน (ตั้งแต่ใช้อย่างน้อย MD5 และอาจก่อนหน้านั้น) ได้อนุญาตให้พอยน์เตอร์พอยน์เตอร์สำหรับคีย์จริง นี่หมายความว่าการ จำกัด เพียงระยะเวลาของคีย์ที่จะยอมรับนั้นขึ้นอยู่กับจำนวนแรมที่โปรแกรมมีให้ แต่ในทุกโอกาสนี่อาจจะไกลกว่านั้นอีกต่อไปแล้วรหัสผ่านใด ๆ ที่บุคคลใดจะจำได้ (ล้านตัวอักษร?)

นี่ควรตอบคำถามของคุณว่าจะใช้รหัสผ่านนานเท่าใด หวังว่าฉันช่วย

อ้างอิง:


7
"ความยาวสูงสุดของคำตอบ SU คืออะไร" ฮ่า ๆ คำตอบที่ดี!
James Mertz

1
ควรสังเกตว่าอัลกอริทึม crypt () เลิกใช้มานานกว่าทศวรรษแล้ว ไม่ว่ารหัสผ่าน crypt () จะยาวแค่ไหน แต่จะถูกตัดเหลือ 8 ตัวอักษร เมื่อรวมกับพื้นที่คีย์ขนาดเล็กมากของเกลือ 12 บิต crypt () ได้รับการแสดงผลที่ไม่ปลอดภัยอย่างสมบูรณ์ นี่คือบทความเกี่ยวกับการเปิดเผยรหัสผ่านของ Gawker 1 ล้านคนเนื่องจากการใช้ crypt () ย้อนกลับไปในปี 2010: https://www.lightbluetouchpaperpaper.org/2010/12/15/the-gawker-hack- รหัสผ่านหายไปเป็นอย่างไร /
cremefraiche

8

มันขึ้นอยู่กับโมดูลการตรวจสอบที่ใช้ ในระบบ Linux ที่ทันสมัยไม่มีการจำกัดความยาวสูงสุดของรหัสผ่าน ระบบที่ล้าสมัยบางระบบอาจมีข้อ จำกัด ที่กำหนดโดยระบบจัดเก็บรหัสผ่าน - ค่าสูงสุดที่นิยมคือ 8, 40 และ 255


3

ขึ้นอยู่กับวิธีการเก็บรหัสผ่าน MD5, SHA1, BlowFish ฯลฯ ฉันคิดว่าไม่มีการ จำกัด รหัสผ่านที่กำหนดโดยวิธีการจัดเก็บเอง

การใช้งานที่เก่ากว่าอาจมีขีด จำกัด ที่อาจเป็น 8 หรือ 255 ตัวอักษร

ดูเหมือนจะเป็นคำถามที่เหมาะสมกว่าสำหรับwww.serverfault.com :)


5
นี่คือคอมพิวเตอร์ทั่วไปที่เกี่ยวข้องไม่จำเป็นเฉพาะกับเซิร์ฟเวอร์ แต่!
Darth Android

0

คำสั่ง passwd เกี่ยวข้องกับคำสั่ง mcrypt สำหรับการเข้ารหัส ตามซอร์สโค้ดของ mcrypt ขนาดสูงสุดของ stdin ถูก จำกัด ไว้ที่ 512 ตัวอักษร (ciphers) - แต่เมื่อสองปีก่อน .... - (ฉันจะอัปเดตคำตอบนี้ในชั่วโมงถัดไป) ... ใช่ ... ในซอร์สโค้ด 2.6.8 ของ mcrypt ในไดเรกทอรี src, มีไฟล์ getpass.c - ที่จุดเริ่มต้นคุณเห็นค่า 512 ตั้งเป็นค่าถ่านแบบคงที่ (ฉันชอบที่จะปั๊มได้ถึง 1.4 GB ... ):

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.