Score:1

ความเร็วของฟังก์ชันแฮชเป็นข้อเสียเมื่อจัดเก็บรหัสผ่านที่แฮชในฐานข้อมูลหรือไม่?

ธง cn

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

Swashbuckler avatar
mc flag
เป็นเพราะยิ่งคุณแฮชรหัสผ่านได้เร็วเท่าไหร่ การบังคับรหัสผ่านที่แฮชก่อนหน้านี้ก็ง่ายขึ้นเท่านั้น คุณไม่ต้องการให้เร็ว คุณต้องการให้ช้าเพื่อให้ผู้โจมตีมีงานต้องทำมากขึ้นและต้องลงทุนมากขึ้น (เวลา ความพยายาม เงิน) ในการค้นหารหัสผ่าน
Baldovín Cadena Mejía avatar
cn flag
ขอบคุณมากครับ @Swashbucklerดังนั้นยิ่งกระบวนการช้าลงเท่าใด ผู้โจมตีก็จะยิ่งใช้เวลามากขึ้นในการบังคับรหัสผ่านที่แฮช ตอนนี้ฉันเข้าใจแล้ว ขอบคุณ !
jp flag
ฐานข้อมูลรหัสผ่านรั่วไหล/ถูกขโมย และคุณต้องการทำให้ผู้ที่ขโมยฐานข้อมูลของคุณกู้คืนรหัสผ่านได้ยากที่สุดเท่าที่จะเป็นไปได้ [บล็อกโพสต์นี้](https://medium.com/@cmcorrales3/password-hashes-how-they-work-how-theyre-hacked-and-how-to-maximize-security-e04b15ed98d) เป็นบทนำที่ค่อนข้างดี ; อ่าน [คำถาม & คำตอบความปลอดภัยนี้ SE](https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords), [อันนี้ที่นี่ใน crypto.SE](https:// crypto.stackexchange.com/questions/72918) และ [วิกิพีเดีย](https://en.wikipedia.org/wiki/Key_stretching)
kr flag
@GordonDavisson: แปลงความคิดเห็นของคุณเป็นคำตอบ สามารถเป็นประโยชน์กับผู้อื่นได้ สามารถลบความคิดเห็นได้และคำตอบที่ดีของคุณในความคิดเห็นจะหายไป
kr flag
@Swashbuckler: ฉันขอแนะนำให้คุณแปลงความคิดเห็นของคุณเป็นคำตอบด้วย สามารถลบความคิดเห็นได้ แต่คำตอบจะยังคงอยู่และสามารถช่วยเหลือผู้อื่นได้
Score:1
ธง cn

ความเร็วสามารถเป็นข้อได้เปรียบด้วยเหตุผลหนึ่งข้อและเป็นข้อเสียสำหรับอีกเหตุผลหนึ่ง

เมื่อพูดถึงการรักษาความปลอดภัยด้วยรหัสผ่าน ความต้องการ CPU/หน่วยความจำต่ำของแฮชเข้ารหัสทำให้เกิดข้อเสีย กล่าวคือหากบันทึกหรือฐานข้อมูลถูกเปิดเผยหรือถูกแฮ็ก ผู้โจมตีมีงานเพียงเล็กน้อยที่ต้องทำเพื่อบังคับแฮชเหล่านั้นให้เป็นข้อความธรรมดา รหัสผ่าน.

เนื่องจากรหัสผ่านมักสั้นและมีเอนโทรปีน้อยกว่าการรักษาความปลอดภัยแบบพรีอิมเมจของฟังก์ชันแฮช หากรหัสผ่านมีขนาดใหญ่และสุ่ม ให้พูดตัวอักษรและตัวเลขแบบสุ่ม 32 ตัว จากนั้นใช้ฟังก์ชันแฮชซ้ำอย่างรวดเร็วเพียงครั้งเดียวก็เพียงพอแล้ว

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

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

PBKDF2 เป็นแฮชรหัสผ่านที่พบได้บ่อยมาก และแกนหลักใช้ HMAC เป็นประจำ ดังนั้น PBKDF2-HMAC-SHA256 จำนวน 40,000 รอบ อาจใช้เวลานานกว่าการทำซ้ำแฮชครั้งเดียวประมาณ 80,000 เท่า หากก่อนหน้านี้เซิร์ฟเวอร์สามารถทำแฮชซ้ำได้ 4 พันล้านครั้งต่อวินาที ตอนนี้เซิร์ฟเวอร์อาจทำ PBKDF2 ได้เพียง 50,000 แฮชก่อนที่จะทำให้ CPU อิ่มตัวอย่างสมบูรณ์ หากคุณต้องการจัดสรรทรัพยากรไม่เกิน 10% สำหรับการตรวจสอบรหัสผ่าน จะต้องมีการควบคุมปริมาณการเข้าสู่ระบบที่ 5,000 ครั้งต่อวินาที... ซึ่งอาจฟังดูมาก แต่คุณคิดว่าจะมีกี่คนที่เข้าสู่ระบบบางอย่างเช่น Gmail Lastpass หรือ Salesforce ในเวลาประมาณ 9.00 น. ของวันจันทร์?

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

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

โพสต์คำตอบ

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