โฮมเพจ » ทำอย่างไร » SHAttered คืออะไร? SHA-1 การชนปะทะอธิบาย

    SHAttered คืออะไร? SHA-1 การชนปะทะอธิบาย

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

    SHA-1 คืออะไร?

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

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

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

    นั่นเป็นข้อมูลทางเทคนิคมากมาย แต่ต้องพูดง่ายๆ: แฮชไม่เหมือนกับการเข้ารหัสตั้งแต่นั้นเป็นต้นมา มันถูกใช้เพื่อระบุว่าไฟล์มีการเปลี่ยนแปลง.

    เทคโนโลยีนี้มีผลกับฉันอย่างไร?

    สมมติว่าคุณต้องเข้าชมเว็บไซต์เป็นการส่วนตัว ธนาคารของคุณอีเมลของคุณหรือแม้แต่บัญชี Facebook ของคุณ - ทั้งหมดใช้การเข้ารหัสเพื่อรักษาข้อมูลที่คุณส่งให้เป็นส่วนตัว เว็บไซต์ระดับมืออาชีพจะให้การเข้ารหัสโดยได้รับใบรับรองจากหน่วยงานที่เชื่อถือได้ - บุคคลที่สามเชื่อถือได้เพื่อให้แน่ใจว่าการเข้ารหัสอยู่ในระดับความเป็นส่วนตัวระหว่างเว็บไซต์และผู้ใช้และไม่ถูกสอดแนมโดยบุคคลอื่น ความสัมพันธ์นี้กับบุคคลที่สามเรียกว่า ผู้ออกใบรับรอง, หรือ CA, มีความสำคัญเนื่องจากผู้ใช้สามารถสร้างใบรับรอง“ ลงนามด้วยตนเอง” - คุณสามารถทำได้ด้วยตัวเองบนเครื่องที่ใช้ Linux ด้วย Open SSL Symantec และ Digicert เป็น บริษัท CA ที่มีชื่อเสียงสองแห่ง.

    มาทำงานในสถานการณ์สมมติทางทฤษฎี: วิธีการที่ Geek ต้องการเก็บไว้ในเซสชันของผู้ใช้ที่เป็นส่วนตัวด้วยการเข้ารหัสดังนั้นจึงขอร้อง CA อย่างไซแมนเทคด้วย คำขอลงนามใบรับรอง, หรือ ความรับผิดชอบต่อสังคม. พวกเขาสร้าง กุญแจสาธารณะ และ รหัสส่วนตัว สำหรับการเข้ารหัสและถอดรหัสข้อมูลที่ส่งผ่านอินเทอร์เน็ต คำขอ CSR ส่งรหัสสาธารณะให้ไซแมนเทคพร้อมข้อมูลเกี่ยวกับเว็บไซต์ ไซแมนเทคตรวจสอบคีย์กับบันทึกเพื่อตรวจสอบว่าข้อมูลไม่เปลี่ยนแปลงโดยทุกฝ่ายเนื่องจากการเปลี่ยนแปลงเล็กน้อยในข้อมูลทำให้แฮชแตกต่างกันอย่างสิ้นเชิง.

    พับลิกคีย์และใบรับรองดิจิตัลเหล่านั้นถูกลงชื่อโดยฟังก์ชันแฮชเนื่องจากเอาต์พุตของฟังก์ชันเหล่านี้มองเห็นได้ง่าย กุญแจสาธารณะและใบรับรองที่มีแฮชที่ผ่านการตรวจสอบแล้วจากไซแมนเทค (ในตัวอย่างของเรา) หน่วยงานรับรองผู้ใช้ How-To Geek ว่ารหัสนั้นไม่มีการเปลี่ยนแปลงและไม่ได้ส่งจากบุคคลที่เป็นอันตราย.

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

    การชนกันของข้อมูลคืออะไรและเป็นไปได้ในโลกแห่งความเป็นจริง?

    คุณอาจเคยได้ยิน“ ปัญหาวันเกิด” ในวิชาคณิตศาสตร์แม้ว่าคุณอาจไม่รู้ว่ามันถูกเรียกว่าอะไร แนวคิดพื้นฐานคือถ้าคุณรวมกลุ่มคนที่มีขนาดใหญ่พอมีโอกาสสูงมากที่คนสองคนขึ้นไปจะมีวันคล้ายวันเกิด สูงกว่าที่คุณคาดไว้ในความเป็นจริงเพียงพอที่ดูเหมือนเป็นเรื่องบังเอิญแปลก ๆ ในกลุ่มที่มีขนาดเล็กเท่ากับ 23 คนมีโอกาส 50% ที่ทั้งสองจะแบ่งปันวันเกิด.

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

    การค้นหาแฮชที่ตรงกันภายในสองไฟล์เรียกว่า การโจมตีการปะทะกัน. อย่างน้อยหนึ่งการโจมตีการชนขนาดใหญ่เป็นที่ทราบกันว่าเกิดขึ้นแล้วสำหรับ MD5 แฮ แต่เมื่อวันที่ 27 กุมภาพันธ์ 2017 Google ประกาศ SHAttered การปะทะกันครั้งแรกที่สร้างขึ้นสำหรับ SHA-1 Google สามารถสร้างไฟล์ PDF ที่มีแฮช SHA-1 เดียวกับไฟล์ PDF อื่นแม้จะมีเนื้อหาแตกต่างกัน.

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

    ดังนั้นการโจมตีครั้งนี้จึงทำได้ง่ายเพียงใด? SHAttered ขึ้นอยู่กับวิธีการค้นพบโดย Marc Stevens ในปี 2012 ซึ่งต้องการการดำเนินงานมากกว่า 2 ^ 60.3 (9.223 ล้านล้าน) การดำเนินการ SHA-1 มากกว่า 2 ครั้ง อย่างไรก็ตามวิธีนี้ยังคงดำเนินการน้อยกว่า 100,000 เท่าที่จะต้องใช้เพื่อให้ได้ผลลัพธ์เดียวกันโดยใช้กำลังดุร้าย Google พบว่าเมื่อใช้การ์ดกราฟิกระดับ high-end 110 คู่ขนานมันใช้เวลาประมาณหนึ่งปีในการสร้างการชน การเช่าเวลาคำนวณนี้จาก Amazon AWS จะมีค่าใช้จ่ายประมาณ $ 110,000 โปรดทราบว่าเมื่อราคาลดลงสำหรับชิ้นส่วนคอมพิวเตอร์และคุณสามารถใช้พลังงานน้อยลงการโจมตีเช่น SHAttered กลายเป็นเรื่องง่ายที่จะดึงออก.

    $ 110,000 อาจดูเหมือนมาก แต่อยู่ในขอบเขตความสามารถในการจ่ายเงินสำหรับบางองค์กรซึ่งหมายถึงไซเบอร์ซอร์วิลล์ในชีวิตจริงสามารถปลอมแปลงเอกสารลายเซ็นดิจิทัลรบกวนการสำรองข้อมูลและระบบควบคุมเวอร์ชันเช่น Git และ SVN หรือทำให้ Linux ISO.

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

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

    ฉันจะป้องกันตัวเองจากการโจมตี SHA-1 ได้อย่างไร?

    มีไม่มากสำหรับผู้ใช้ทั่วไปที่ต้องทำ หากคุณใช้ checksums เพื่อเปรียบเทียบไฟล์คุณควรใช้ SHA-2 (SHA-256) หรือ SHA-3 มากกว่า SHA-1 หรือ MD5 ในทำนองเดียวกันหากคุณเป็นนักพัฒนาอย่าลืมใช้อัลกอริทึมการแฮชที่ทันสมัยกว่าเช่น SHA-2, SHA-3 หรือ bcrypt หากคุณกังวลว่ามีการใช้ SHAttered เพื่อให้แฮชที่เหมือนกันสองไฟล์ Google ได้เปิดตัวเครื่องมือบนไซต์ SHAttered ที่สามารถตรวจสอบคุณได้.

    เครดิตรูปภาพ: Lego Firefox, Hash มากมาย, โปรดอย่าทำร้ายผู้เขียนเว็บที่ไม่รู้จัก Google.