อัลกอริทึมแฮชที่มีอยู่แข็งแกร่งเพียงพอหรือไม่
ใช่; อันที่จริง อัลกอริธึมแฮชที่มีการเข้ารหัสอย่างปลอดภัย (เช่น SHA-2, SHA-3, Blake2) จะแข็งแกร่งเพียงพอ
เพื่อเน้นสิ่งนี้ ให้ฉันชี้ให้เห็นว่า MD5 นั้นแข็งแกร่งพอ ตอนนี้ MD5 ถือว่าค่อนข้างอ่อนแอ (และที่นี่ไม่มีใครรับรองการใช้งาน); อย่างไรก็ตามแม้จะมีจุดอ่อนที่ทราบแล้ว แต่ก็ยังแข็งแกร่งเพียงพอต่อการโจมตีเฉพาะนี้
MD5 มีเอาต์พุต 128 บิต (ตรงกันข้ามกับฟังก์ชันแฮชการเข้ารหัสที่เราใช้ในทางปฏิบัติ ซึ่งมีเอาต์พุตที่ใหญ่กว่ามาก) นอกจากนี้ยังมีวิธีที่ทราบกันดีในการสร้าง "การชนกัน" นั่นคือคู่ของอินพุตที่แฮช MD5 เป็นค่าเดียวกัน อย่างไรก็ตาม วิธีการเหล่านั้นถือว่าการโจมตีสามารถควบคุมอินพุตทั้งสองได้ ในกรณีนี้ ผู้เผยแพร่ที่ถูกต้องจะสร้างภาพที่ถูกต้อง และผู้โจมตีไม่สามารถแก้ไขสิ่งที่ผู้เผยแพร่ลงนาม ดังนั้นจุดอ่อนของการปะทะกันของ MD5 จึงใช้ไม่ได้ MD5 ไม่มีจุดอ่อนที่รู้จักในการโจมตี 'second preimage' หรือการโจมตี 'multitarget second preimage' (ซึ่งก็คือสิ่งนี้นั่นเอง) ดังนั้นแนวทางเดียวที่ผู้โจมตีมีคือแฮชอินพุตต่าง ๆ จนกว่าเขาจะพบการจับคู่
ตอนนี้เราคิดว่ามี $60,000 \ประมาณ 2^{16}$ ลายเซ็นที่ถูกต้อง หากผู้โจมตีแฮชเดาว่ามีประมาณ $2^{-128+16} = 2^{-112}$ ความน่าจะเป็นของการแฮชไปยังหนึ่งในเป้าหมาย กล่าวอีกนัยหนึ่ง เพื่อให้ได้โอกาสหนึ่งในพันในการค้นหารูปภาพที่แฮชไปยังเป้าหมายใดเป้าหมายหนึ่ง เขาจะต้องแฮชประมาณ $2^{102}$ ภาพ
ตอนนี้เป็นที่คาดกันว่าอุตสาหกรรมการขุด bitcoin ทั่วโลกประเมินเกี่ยวกับ $2^{68}$ แฮชต่อวินาที (จริง ๆ แล้วน้อยกว่าเล็กน้อย); นั่นหมายความว่าหากการโจมตีสามารถทุ่มเทการประมวลผลทั้งหมด [1] เพื่อโจมตีระบบของคุณ พวกเขาจะต้องดำเนินการประมาณ $2^{34}$ วินาที (หรือประมาณ 500 ปี) เพื่อรับโอกาส 1 ในพันนั้น
หากคุณสลับ MD5 ด้วยแฮชเข้ารหัสจริง 500 ปีนั้นจะกลายเป็นกรอบเวลาประเภท 'ความตายอันร้อนระอุของจักรวาล'
[1]: แน่นอน โครงสร้างพื้นฐานการขุด bitcoin ในปัจจุบันถูกสร้างขึ้นโดยใช้ SHA-256 - ฉันจะไม่สนใจรายละเอียดนั้น