Score:1

ถ้าฉันป้อนรหัสผ่านที่ไม่ถูกต้องแต่ไปชนกับรหัสผ่านเมื่อถูกแฮช รหัสผ่านจะให้ฉันเข้าไปไหม

ธง cz

สมมติว่าไม่มีการใช้เกลือหรือพริกไทยและรหัสผ่านถูกแฮชธรรมดา การป้อนรหัสผ่านที่ไม่ถูกต้องซึ่งเพิ่งแฮชเหมือนกันจะให้ฉันเข้าไปไหม ฉันรู้ว่าการใช้เทคนิคการใส่เกลือ/พริกไทยอย่างหนึ่งคือ นอกเหนือจากการทำให้เดรัจฉานใช้เวลานานขึ้นแล้ว ยังป้องกันไม่ให้แฮชหนึ่งแฮชประนีประนอมกับผู้ใช้ทั้งหมดที่ใช้พาสเดียวกันแต่มันทำงานอย่างไรในการป้องกันการชนกันของรหัสผ่านที่ใช้แทนกันได้? กล่าวอีกนัยหนึ่ง เทคนิคเหล่านี้เป็นสาเหตุของการผ่านที่ไม่ถูกต้องจะไม่ให้คุณเข้าหรือใช้งานไม่ได้หรือไม่?

kelalaka avatar
in flag
มันไม่ใช่การชนกันจริงๆ คุณพบภาพล่วงหน้าอีกอันสำหรับแฮชของรหัสผ่านปัจจุบัน ซึ่งแตกต่างจากปัจจุบัน
user2357 avatar
us flag
ปกติไดเจสต์จะยาวกว่ารหัสผ่านที่อนุญาต ซึ่งหมายความว่าคุณมีแนวโน้มที่จะกดรหัสผ่านที่ถูกต้องมากกว่าที่จะมีภาพล่วงหน้าที่สอง
Score:4
ธง si

ใช่ เป็นไปได้ แต่ (สำหรับฟังก์ชันการแฮชรหัสผ่านที่เหมาะสมครึ่งหนึ่ง) แทบจะเป็นไปไม่ได้เลยที่จะพบการชนกันดังกล่าว

ฟังก์ชันการแฮชรหัสผ่านเป็นฟังก์ชันแฮชการเข้ารหัสที่มีคุณสมบัติพิเศษบางอย่าง

ฟังก์ชันแฮชแบบเข้ารหัสมีอินพุตเดียว และทนต่อการชนกัน พรีอิมเมจ และพรีอิมเมจที่สอง

ความต้านทานการชนกันหมายความว่าเป็นไปไม่ได้เลยที่จะหาอินพุตที่แตกต่างกัน 2 รายการซึ่งส่งผลให้มีเอาต์พุตเดียวกัน เช่น. เป็นไปไม่ได้ที่จะหาคู่ของข้อความ $ม \neq ม'$ ดังนั้น $H(m)=H(m')$.

ความต้านทานของ Preimage หมายความว่าเป็นไปไม่ได้ที่จะค้นหาอินพุตใดๆ ที่แฮชไปยังเอาต์พุตที่กำหนดไว้ล่วงหน้า เช่น. ให้ผลลัพธ์ใด ๆ $y$, เป็นการยากที่จะค้นหาข้อความ $m$ ดังนั้น $H(ม)=y$.

Second-preimage resistance หมายความว่าเป็นไปไม่ได้ที่จะหาอินพุตที่สองที่มีเอาต์พุตเดียวกันกับอินพุตที่ระบุ เช่น. ได้รับข้อความ $m$เป็นไปไม่ได้ที่จะค้นหาข้อความอื่น $m' \neq ม$ ดังนั้น $H(m)=H(m')$.

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

ฟังก์ชันการแฮชรหัสผ่านยังคงเป็นไปตามคุณสมบัติทั้งหมดของฟังก์ชันแฮชการเข้ารหัส ดังนั้นจึงเป็นไปไม่ได้ที่จะค้นหาภาพก่อนหน้าที่สองของรหัสผ่านที่กำหนด หรือแม้กระทั่งค้นหารหัสผ่านสองรายการที่มีแฮชเดียวกัน

kelalaka avatar
in flag
การชนกันไม่เกี่ยวข้องกับการแฮชรหัสผ่าน OP ค่อนข้างจะค้นหาภาพล่วงหน้าอื่นสำหรับรหัสผ่าน
cn flag
Btw PBKDF2-HMAC-SHA256 ไม่เป็นไปตามเกณฑ์ "เหมาะสมครึ่งหนึ่ง" ของคุณ แต่เนื่องจากการชนกันและแม้กระทั่งภาพก่อนหน้าที่สองนั้นไม่เกี่ยวข้อง นั่นจึงไม่ใช่เรื่องใหญ่
Score:1
ธง kz

มันจะให้คุณเข้า? ฉันสงสัยว่าใช่ ในฐานะนักพัฒนาซอฟต์แวร์ ฉันค่อนข้างแน่ใจว่าสิ่งนี้ไม่เคยเกิดขึ้น ดังนั้นสถานการณ์จึงยังไม่ผ่านการทดสอบ ดังนั้นจึงไม่เป็นที่รู้จัก (ในฐานะนักพัฒนาซอฟต์แวร์ คุณสามารถแก้ไขฟังก์ชันแฮชเพื่อให้แฮชอะไรก็ได้ที่มีสตริง "smith" เป็นเลข 0 และดูว่าเกิดอะไรขึ้น )

แต่มันจะไม่เกิดขึ้น บอกว่ามี $2^{64}$ รหัสผ่านที่เป็นไปได้และ $2^{256}$ แฮชที่เป็นไปได้ หากคุณเดารหัสผ่านและมีแฮชที่ถูกต้อง ความน่าจะเป็นก็คือ $1 - 2^{-192}$ ว่าคุณเดารหัสผ่านที่ถูกต้องจริงๆ

Score:0
ธง in

พูดง่ายๆ คือ อัลกอริทึมการแฮชรหัสผ่าน $pH$ ใช้เวลาเกลือ $เกลือ$ และป้อนรหัสผ่าน $pwd$ และคำนวณ $h' = pH(เกลือ,pwd)$ และตรวจสอบ $h$ ด้วยแฮชของรหัสผ่านที่เก็บไว้ในปัจจุบัน $h$, $h \overset{?}{=} h'$.

การป้อนรหัสผ่านที่ไม่ถูกต้องที่เพิ่งแฮชเหมือนกันจะทำให้ฉันเข้าไปได้หรือไม่

หากคุณป้อนรหัสผ่านโดยพลการ อาจมีการเปลี่ยนแปลงเล็กน้อยเพื่อให้แฮชรหัสผ่านเดียวกันกับเกลือ หากสิ่งนี้เกิดขึ้นแสดงว่าถูกต้องและคุณสามารถเข้าสู่ระบบได้

ฉันจะไม่เรียกมันว่ารหัสผ่านที่ไม่ถูกต้อง แต่เรียกอีกภาพล่วงหน้าสำหรับ $h$. นอกเหนือจากกำลังเดรัจฉาน (และตารางสีรุ้งที่เกลือป้องกันสิ่งนี้) นี่คือการโจมตีที่ผู้โจมตีต้องดำเนินการ การโจมตีนี้เป็นการโจมตีแบบพรีอิมเมจ

  • กำหนดค่าแฮช $h$ ค้นหาและป้อนข้อมูลดังกล่าว $m$ นั่น $h = แฮช (m)$. ค่าใช้จ่ายทั่วไปของการโจมตีนี้คือ $\mathcal{O}(2^n)$ สำหรับ $n$- ฟังก์ชันแฮชบิต (ฟังก์ชันแฮชรหัสผ่านหรือฟังก์ชันแฮชเข้ารหัส)

จุดอ่อนที่สุดในการแคร็กรหัสผ่านคือปัจจัยจากมนุษย์ มนุษย์ มักจะมีรหัสผ่านที่ไม่รัดกุม และปัจจุบันวิธีหนึ่งที่ดีคือ ลูกเต๋า. ใช้ dicewire เพื่อสร้างรหัสผ่านของคุณ หรือดีกว่าใช้ตัวจัดการรหัสผ่านที่พวกเขาสร้างรหัสผ่านแบบสุ่มจริง ๆ และคุณเก็บฐานข้อมูลรหัสผ่านของคุณด้วยรหัสผ่านที่รัดกุมซึ่งสร้างโดย dicewire

แต่มันทำงานอย่างไรในการป้องกันการชนกันของรหัสผ่านที่ใช้แทนกันได้?

คุณไม่สามารถป้องกันได้ มันมีอยู่โดย หลักการของนกพิราบ. แต่อัลกอริธึมการแฮชรหัสผ่านโดยการออกแบบนั้นปลอดภัยแม้คุณจะใช้ MD5 เพียงอย่างเดียว MD5 ยังคงปลอดภัยจากการโจมตีภาพล่วงหน้า คุณจะมีความต้านทานภาพล่วงหน้าประมาณ 128 บิต แน่นอนว่าเราต้องใช้อัลกอริธึมการแฮชสมัยใหม่ เช่น Argon2

กล่าวอีกนัยหนึ่ง เทคนิคเหล่านี้เป็นสาเหตุของการผ่านที่ไม่ถูกต้องจะไม่ให้คุณเข้าหรือใช้งานไม่ได้หรือไม่?

นี่คือวิธีการทำงาน มันจะได้ผลเสมอ โปรดทราบว่าคุณจะมีโอกาสที่จะ $\dfrac{1}{2^{128}}$ สำหรับรหัสผ่านเดียวแบบสุ่มที่ตรงกับแฮชของรหัสผ่านของคุณ ( สมมติว่าเอาต์พุต 128 บิต) หากความน่าจะเป็นของเหตุการณ์คือ $\geq \dfrac{1}{2^{100}}$ เราก็พูดอย่างนั้น มันจะไม่เกิดขึ้น.

แม้ว่าคุณจะกลัวสิ่งนี้ ให้ใช้ระบบตรวจสอบสิทธิ์แบบสองปัจจัย และจริงๆ แล้วควรใช้ระบบนี้ทุกครั้งที่ทำได้


หมายเหตุด้านข้าง: การค้นหาการชนกันนั้นไม่เกี่ยวข้องกับการแฮชรหัสผ่านในแง่ของการโจมตีการชนกัน ซึ่งคุณจะต้องค้นหาอินพุตตามอำเภอใจสองรายการเท่านั้น $a$ และ $ข$ ดังนั้น $hash(a) = hash(b)$. ในการแฮชรหัสผ่าน ผู้โจมตีมีแฮชและพยายามค้นหาแฮชที่สร้างแฮชเดียวกัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา