ไทย

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · SHA เครื่องคำนวณแฮช

การชนกัน ภาพพรีอิมเมจ และภาพพรีอิมเมจที่สอง: เป้าหมายการรักษาความปลอดภัยของแฮชทั้งสาม

· พื้นหลัง

sha-256 การเข้ารหัส ความปลอดภัย

แผนภาพสามแผนภาพแสดงความต้านทานของพรีอิมเมจ ความต้านทานของพรีอิมเมจที่สอง และความต้านทานการชนกัน
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

การใช้งานของฉันได้รับผลกระทบหรือไม่? — คำถามที่ที่ปรึกษาไม่ค่อยตอบโดยตรง

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

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

การต้านทานพรีอิมเมจ — ด้วยแฮช คุณจะไม่พบอินพุตที่สร้างมันขึ้นมา

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

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

การต้านทานพรีอิมเมจที่สอง — เมื่อป้อนข้อมูล คุณจะไม่พบอินพุตอื่นที่มีแฮชเดียวกัน

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

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

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

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

ลายเซ็นดิจิทัลจำเป็นต้องมีการต้านทานการชนกันในรูปแบบที่แข็งแกร่ง เมื่อผู้ลงนามสร้างลายเซ็นสำหรับแฮชของเอกสาร และผู้ตรวจสอบตรวจสอบลายเซ็นในภายหลัง ทั้งสองจะต้องตรวจสอบแฮชเดียวกัน หากการชนกันเป็นเรื่องง่าย ผู้โจมตีสามารถปลอมแปลงลายเซ็นสำหรับเอกสารอื่นได้โดยการค้นหาการชนกันกับเอกสารที่เซ็นชื่อ นี่คือการโจมตีที่กระตุ้นให้เกิดการอัพเกรดจาก SHA-1 เป็น SHA-256 ในใบรับรอง ใบรับรองที่ลงนามโดย CA และใบรับรองปลอมแปลงที่มีลายเซ็นเดียวกันจะผ่านการตรวจสอบหากแฮชขัดแย้งกัน

การต้านทานการชนแตกต่างจากเป้าหมายเบื้องต้น ไม่มีตัวเลขวันเกิดปรากฏโดยไม่มีที่มา

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

การยืนยันการดาวน์โหลดใช้การตรวจสอบเพื่อยืนยันว่าไฟล์ที่ดึงมาจากอินเทอร์เน็ตไม่เสียหาย โดยทั่วไปเช็คซัมจะเผยแพร่ควบคู่ไปกับไฟล์จากแหล่งที่เชื่อถือได้ ผู้โจมตีที่แก้ไขไฟล์ที่ดาวน์โหลดไม่สามารถอัปเดตเช็คซัมได้หากไม่มีการเข้าถึงแหล่งที่เชื่อถือได้ กรณีการใช้งานนี้จำเป็นต้องมีการต่อต้านพรีอิมเมจครั้งที่สอง: เนื่องจากไฟล์ต้นฉบับและเช็คซัมของไฟล์นั้น ผู้โจมตีไม่ควรสามารถสร้างไฟล์อื่นที่มีเช็คซัมเดียวกันได้ SHA-1 วินาที ความต้านทานของพรีอิมเมจยังคงแข็งแกร่งแม้จะเกิดการชนกันก็ตาม

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

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

รหัสผ่านต้องมีฟังก์ชัน Salted ที่ช้า หน่วยความจำยาก และต่อผู้ใช้ เช่น Argon2id, scrypt หรือ bcrypt เกลือต่อผู้ใช้ที่ไม่ซ้ำกันทำให้รหัสผ่านที่เหมือนกันสร้างบันทึกที่เก็บไว้ที่แตกต่างกัน ในขณะที่หน่วยความจำและเวลาที่กำหนดค่าของฟังก์ชันรหัสผ่านทำให้ผู้สมัครแต่ละคนมีราคาแพงขึ้นโดยเจตนา พารามิเตอร์ที่แน่นอนจำเป็นต้องมีการเปรียบเทียบประสิทธิภาพในท้องถิ่นและไม่ได้กำหนดไว้ที่นี่ เครื่องคำนวณแฮช ToolAcre SHA ไม่ได้ทำการแฮชรหัสผ่าน และเอกสารคำแนะนำจะอธิบายว่าทำไม SHA-256 จึงไม่เหมาะสมกับกรณีการใช้งานนี้

ตัวอย่างการทำงาน - การใช้การแมปกับ SHA-1 ในพื้นที่เก็บข้อมูล Git เทียบกับ SHA-1 ในใบรับรอง

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

สมาชิกโครงการ Git ได้เผยแพร่แผนงานเพื่อย้ายไปยัง SHA-256 แต่มีความเร่งด่วนปานกลาง เนื่องจากการโจมตีเชิงปฏิบัติต้องใช้ทั้งเทคนิคการชนกันและการประนีประนอมของเซิร์ฟเวอร์ สำหรับนักพัฒนาที่ถามว่า "ความปลอดภัยของพื้นที่เก็บข้อมูล Git ของฉันขึ้นอยู่กับการต้านทานการชนกันของ SHA-1 หรือไม่" คำตอบคือใช่ แต่ความเสี่ยงในทางปฏิบัติยังต่ำเมื่อเทียบกับภัยคุกคามความปลอดภัยอื่นๆ เครื่องคำนวณแฮช ToolAcre SHA มีทั้ง SHA-1 และ SHA-256 โดยมีป้ายกำกับอย่างเหมาะสม เพื่อให้นักพัฒนาสามารถคำนวณอย่างใดอย่างหนึ่งและเข้าใจความแตกต่างได้

Takeaway: ตั้งชื่อคุณสมบัติก่อนที่คุณจะตื่นตระหนก - เครื่องคำนวณแฮช ToolAcre SHA ช่วยให้คุณเห็นความยาวสรุปที่กำหนดขอบเขตของอัลกอริทึมแต่ละตัว

สำหรับระบบใดๆ ที่ใช้ SHA-1 การตัดสินใจอัปเกรดจะขึ้นอยู่กับว่ากรณีการใช้งานนั้นต้องการคุณสมบัติเฉพาะที่เสียหายหรือไม่ หากกรณีการใช้งานเป็นลายเซ็นดิจิทัลหรือการขจัดข้อมูลซ้ำซ้อนจากผู้โจมตีที่ใช้งานอยู่ จำเป็นต้องมีการต้านทานการชน และ SHA-1 ใช้งานไม่ได้ ดังนั้นให้อัปเกรดเป็น SHA-256 ทันที หากกรณีการใช้งานเป็นที่เก็บข้อมูลหรือเช็คซัมที่ระบุถึงเนื้อหา จำเป็นต้องมีการต่อต้านพรีอิมเมจที่สอง และ SHA-1 ยังคงปลอดภัยสำหรับจุดประสงค์นั้น แม้ว่า SHA-256 จะดีกว่าสำหรับการพิสูจน์อักษรในอนาคต

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