ความยาวสูงสุดที่อนุญาตได้ของรหัสผ่านบนระบบ unix / linux คือเท่าไหร่?
ความยาวสูงสุดที่อนุญาตได้ของรหัสผ่านบนระบบ unix / linux คือเท่าไหร่?
คำตอบ:
หากระบบของคุณใช้แฮชการเข้ารหัสเพื่อจัดเก็บรหัสผ่านเช่น 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-512SHA-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 และอาจก่อนหน้านั้น) ได้อนุญาตให้พอยน์เตอร์พอยน์เตอร์สำหรับคีย์จริง นี่หมายความว่าการ จำกัด เพียงระยะเวลาของคีย์ที่จะยอมรับนั้นขึ้นอยู่กับจำนวนแรมที่โปรแกรมมีให้ แต่ในทุกโอกาสนี่อาจจะไกลกว่านั้นอีกต่อไปแล้วรหัสผ่านใด ๆ ที่บุคคลใดจะจำได้ (ล้านตัวอักษร?)
นี่ควรตอบคำถามของคุณว่าจะใช้รหัสผ่านนานเท่าใด หวังว่าฉันช่วย
อ้างอิง:
มันขึ้นอยู่กับโมดูลการตรวจสอบที่ใช้ ในระบบ Linux ที่ทันสมัยไม่มีการจำกัดความยาวสูงสุดของรหัสผ่าน ระบบที่ล้าสมัยบางระบบอาจมีข้อ จำกัด ที่กำหนดโดยระบบจัดเก็บรหัสผ่าน - ค่าสูงสุดที่นิยมคือ 8, 40 และ 255
ขึ้นอยู่กับวิธีการเก็บรหัสผ่าน MD5, SHA1, BlowFish ฯลฯ ฉันคิดว่าไม่มีการ จำกัด รหัสผ่านที่กำหนดโดยวิธีการจัดเก็บเอง
การใช้งานที่เก่ากว่าอาจมีขีด จำกัด ที่อาจเป็น 8 หรือ 255 ตัวอักษร
ดูเหมือนจะเป็นคำถามที่เหมาะสมกว่าสำหรับwww.serverfault.com :)
คำสั่ง passwd เกี่ยวข้องกับคำสั่ง mcrypt สำหรับการเข้ารหัส ตามซอร์สโค้ดของ mcrypt ขนาดสูงสุดของ stdin ถูก จำกัด ไว้ที่ 512 ตัวอักษร (ciphers) - แต่เมื่อสองปีก่อน .... - (ฉันจะอัปเดตคำตอบนี้ในชั่วโมงถัดไป) ... ใช่ ... ในซอร์สโค้ด 2.6.8 ของ mcrypt ในไดเรกทอรี src, มีไฟล์ getpass.c - ที่จุดเริ่มต้นคุณเห็นค่า 512 ตั้งเป็นค่าถ่านแบบคงที่ (ฉันชอบที่จะปั๊มได้ถึง 1.4 GB ... ):