ไทย

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

SHA-1 อธิบายการชนกัน: อะไรยังปลอดภัยและอะไรที่ต้องย้าย

· เหตุใดจึงสำคัญ

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

เอกสาร PDF สองฉบับที่แตกต่างกันไหลเข้าสู่แฮชไดเจสต์เดียวกัน ซึ่งแสดงถึงการโจมตีแบบชนกัน
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

เครื่องสแกนแจ้งว่า SHA-1 เสีย — แต่เสียเพราะอะไร คำถามที่ตัดสินความเร่งด่วนของการโยกย้าย

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

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

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

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

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

การสาธิต 2017 — สองไฟล์ที่แตกต่างกันซึ่งมี SHA-1 เหมือนกัน ซึ่งอธิบายในเชิงคุณภาพ และงานคำนำหน้าที่เลือกไว้ซึ่งตามมา

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

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

โดยที่ SHA-1 ไม่สามารถยอมรับได้ — ลายเซ็น ใบรับรอง และทุกสิ่งที่ผู้โจมตีสามารถมีอิทธิพลต่อทั้งสองฝ่าย

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

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

โดยที่ความเสี่ยงน้อยกว่า — การระบุเนื้อหาในการตั้งค่าที่ไม่เป็นศัตรู และการเปลี่ยนผ่านแบบเป็นขั้นตอนของ Git เป็น SHA-256

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

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

หลักฐานที่เก็บข้อมูลสนับสนุนการเลิกใช้งาน SHA-1 ไม่ใช่การตีพิมพ์ NIST ที่ยังไม่ได้อ่านหรือวันที่เลิกใช้

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

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

ตัวอย่างการทำงาน — รายการตรวจสอบการย้ายข้อมูลที่ใช้กับหน้ายืนยันการดาวน์โหลดแบบเดิม

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

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

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

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

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