ไทย

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

จาก SHA-0 ถึง SHA-3: มาตรฐานแฮชที่ปลอดภัยของ NIST พัฒนาไปอย่างไร

· พื้นหลัง

sha-256 การเข้ารหัส เบราว์เซอร์-apis

ไทม์ไลน์จาก SHA-0 ถึง SHA-1, SHA-2 ตระกูล และ SHA-3 แสดงวิวัฒนาการสองทศวรรษ
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

SHA-1, SHA-2 และ SHA-3 เป็นสามรุ่นที่มีต้นกำเนิดที่แตกต่างกัน โพสต์นี้ติดตามมาตรฐาน Secure Hash ตั้งแต่ SHA-0 ที่ถูกถอนออกไปจนถึงการแข่งขัน Keccak และอธิบายว่าทำไม SHA-2 ยังคงครองอำนาจ

ตัวเลขหมายถึงอะไร? — ทำไม SHA-256 จึงเป็น SHA-2 แต่ SHA-3 เป็นอย่างอื่นโดยสิ้นเชิง

นักพัฒนาซอฟต์แวร์เห็น SHA-1, SHA-256 และ SHA-3 และถือว่าสิ่งเหล่านี้เป็นความก้าวหน้าเชิงเส้น พวกเขาไม่ได้ ตัวเลขหมายถึงสิ่งที่แตกต่างกันในบริบทที่แตกต่างกัน และการทำความเข้าใจประวัติครอบครัวจะอธิบายว่าทำไม SHA-256 จึงเป็นตัวเลือกที่เหมาะสมสำหรับแอปพลิเคชันใหม่ เหตุใด SHA-1 จึงเป็นรุ่นดั้งเดิมเท่านั้นแม้จะมีการใช้งานอย่างกว้างขวาง และเหตุใด SHA-3 จึงมีการออกแบบที่แยกจากกันมากกว่าการพัฒนา

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

เครื่องมือนี้ครอบคลุม SHA-1 และ SHA-2; ประวัติ SHA-0 โดยละเอียดอยู่นอกหลักฐานที่เก็บข้อมูล

SHA-1 เป็นฟังก์ชันแฮช 160 บิตที่สร้างเอาต์พุตเลขฐานสิบหก 40 อักขระ มีพื้นฐานอยู่บนโครงสร้าง Merkle–Damgård โดยที่ฟังก์ชันการบีบอัดจะประมวลผลบล็อกอินพุตทีละบล็อก โดยเชื่อมโยงสถานะไปข้างหน้า การออกแบบนั้นดูดีเมื่อตีพิมพ์ และไม่มีการโจมตีเชิงปฏิบัติมาหลายปีแล้ว อย่างไรก็ตาม ปี 2005 นำมาซึ่งความก้าวหน้าทางการเข้ารหัส ทีมที่นำโดย Xiaoyun Wang ได้เผยแพร่การโจมตีแบบชนกันบน SHA-1 ซึ่งแสดงให้เห็นว่าการค้นหาข้อความสองข้อความที่แตกต่างกันด้วยแฮชเดียวกันนั้นเป็นไปได้โดยใช้เทคนิคที่มีประสิทธิภาพมากกว่าการใช้กำลังดุร้ายมาก

หลายปีต่อมาใน 2017 ทีมชื่อ SHAttered สาธิตการชนกันในทางปฏิบัติครั้งแรก โดยใช้กลุ่ม GPU เพื่อค้นหาไฟล์ PDF สองไฟล์ที่แตกต่างกันซึ่งมีแฮช SHA-1 เดียวกัน ใน 2020 เอกสารติดตามผลแสดงให้เห็นว่าการชนกันของคำนำหน้าที่เลือก ซึ่งเป็นรูปแบบที่อันตรายกว่านั้นมีราคาไม่แพง SHA-1 ไม่ใช่แค่อ่อนแออีกต่อไป มันพัง การตอบสนองต่อการแบ่ง SHA-1 คือการแนะนำ SHA-2 ตระกูลที่ประกอบด้วยสี่ฟังก์ชัน: SHA-224, SHA-256, SHA-384 และ SHA-512

SHA-2 — ครอบครัวต้นทศวรรษ 2000 (224, 256, 384, 512 และต่อมาก็ถูกตัดทอน 512/224 และ 512/256) สร้างขึ้นจากการก่อสร้างเดียวกัน

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

แบบแผนการตั้งชื่อสำหรับ SHA-2 เป็นที่มาของความสับสน ฟังก์ชันนี้เรียกว่า SHA-256, SHA-384 และ SHA-512 และทั้งหมดเป็นส่วนหนึ่งของกลุ่ม SHA-2 เมื่อมีคนพูดว่า SHA-2 พวกเขาหมายถึงปรัชญาการออกแบบและการสร้าง Merkle–Damgård ไม่ใช่อัลกอริธึมเดียว ตัวเลขในชื่อคือความกว้างเอาต์พุตเป็นบิต ไม่ใช่โครงร่างเวอร์ชัน SHA-256 ไม่ใช่การอัปเดตของ SHA-1; เป็นการออกแบบร่วมสมัยโดยใช้กรอบเดียวกันแต่มีคุณสมบัติด้านความปลอดภัยที่ดีกว่า

เอกสารที่เก็บแสดงให้เห็นถึงการชนกัน SHA-1 โดยไม่ต้องสร้างประวัติศาสตร์ทางทฤษฎีที่ไม่มีแหล่งที่มาขึ้นมาใหม่

ภายในโครงสร้าง Merkle–Damgård ที่ SHA-1 และ SHA-2 ใช้ ฟังก์ชันการบีบอัดจะประมวลผลบล็อกอินพุตทีละบล็อก สถานะจะถูกยกไปข้างหน้าจากบล็อกหนึ่งไปยังอีกบล็อกหนึ่ง และสถานะสุดท้ายจะถูกเอาต์พุตเป็นส่วนย่อย ฟังก์ชันการบีบอัด SHA-256 ใช้การดำเนินการ 32-บิต และสถานะ 256-บิต ดังนั้นจึงประมวลผลบล็อก 512-บิต ฟังก์ชันการบีบอัด SHA-512 ใช้การดำเนินการ 64-บิต และสถานะ 512-บิต ดังนั้นจึงประมวลผลบล็อก 1024-บิต ตัวเลือกเหล่านี้ส่งผลต่อประสิทธิภาพและแบนด์วิดท์—SHA-512 มักจะเร็วกว่าเนื่องจาก 64-บิต เลขคณิตนั้นมีอยู่ในฮาร์ดแวร์สมัยใหม่

การตัดสินใจระหว่าง SHA-256 และ SHA-512 สำหรับระบบใหม่มักจะขึ้นอยู่กับการทดสอบประสิทธิภาพและข้อจำกัดด้านพื้นที่มากกว่าความปลอดภัย เนื่องจากทั้งสองระบบยังคงปลอดภัยในช่วงต้นปี 2020 เครื่องคำนวณแฮช ToolAcre SHA ให้ SHA-256, SHA-384 และ SHA-512 และเมื่อผู้อ่านเปรียบเทียบการแยกย่อยแบบเคียงข้างกัน พวกเขาจะมองเห็นความแตกต่างสี่อักขระระหว่าง SHA-256 (64 อักขระฐานสิบหก) และ SHA-512 (128 อักขระฐานสิบหก)

SHA-3 อยู่นอก API ที่รองรับ; ประวัติการแข่งขันไม่ได้ถูกยืนยันจากหลักฐานที่เก็บ

แรงจูงใจในการแทนที่ SHA-1 มีความชัดเจนในช่วงต้นทศวรรษ 2000 ดังนั้น NIST จึงเริ่มกระบวนการคัดเลือก SHA-3 แทนที่จะออกแบบสิ่งทดแทนแยกกัน NIST เปิดการแข่งขันให้กับชุมชนการวิจัยด้านการเข้ารหัส เป้าหมายคือการเลือกฟังก์ชันแฮชที่มีพื้นฐานแตกต่างไปจากโครงสร้าง Merkle–Damgård เพื่อให้ได้ความมั่นใจจากการออกแบบที่หลากหลาย หลายทีมส่งข้อเสนอ และในช่วงหลายปีที่ผ่านมา การแข่งขันได้เลือก Keccak เป็นผู้ชนะ Keccak คือโครงสร้างแบบฟองน้ำ ซึ่งเป็นวิธีที่แตกต่างในการสร้างฟังก์ชันแฮชที่ไม่เคยใช้ในมาตรฐานมาก่อน

SHA-3 คือมาตรฐาน NIST ของ Keccak ซึ่งสรุปใน 2015 ต่างจาก SHA-2 ซึ่งเป็นกลุ่มอัลกอริธึม SHA-3 มักถูกเรียกว่าอัลกอริธึมเดียว ถึงแม้ว่าจะมีความกว้างหลายระดับก็ตาม SHA-3 ยังไม่มีการใช้งานอย่างกว้างขวาง ซึ่งถือว่าน่าทึ่งเมื่อพิจารณาว่าเป็นมาตรฐานมาเกือบทศวรรษ เหตุผลก็คือ SHA-2 ไม่เสียหาย ไม่มีเหตุผลด้านความปลอดภัยเร่งด่วนในการอัพเกรดจาก SHA-2 เป็น SHA-3 Web Crypto ของเบราว์เซอร์ API ใช้ SHA-1 และ SHA-2 แต่ไม่ใช่ SHA-3 ซึ่งเป็นสาเหตุที่ ToolAcre SHA เครื่องคำนวณแฮชไม่มี SHA-3

SHA-2 ยังคงเป็นค่าเริ่มต้นของเครื่องมือ บทความนี้หลีกเลี่ยงการกล่าวอ้างด้านความปลอดภัยสากลที่ไม่ได้รับการสนับสนุน

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

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

สิ่งนี้ไม่ครอบคลุมถึง - ข้อมูลภายในของ Keccak ซึ่งสมควรได้รับตำแหน่งของตนเอง

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

สำหรับการใช้งานจริงในปี 2020 SHA-256 คือคำตอบของคำถาม "ฉันควรใช้แฮชใด" สำหรับการตรวจสอบความสมบูรณ์ การระบุที่อยู่เนื้อหา และการพิมพ์ลายนิ้วมือ SHA-256 คือมาตรฐาน สำหรับระบบที่ต้องการการแยกย่อยที่กว้างขึ้น โดยปกติ SHA-512 จะเร็วกว่าบนฮาร์ดแวร์ 64-บิต SHA-384 พบบ่อยที่สุดในข้อกำหนดเฉพาะของชุดรหัส TLS SHA-1 มีไว้สำหรับการยืนยันแบบเดิมเท่านั้น เครื่องคำนวณแฮช ToolAcre SHA มีอัลกอริธึม Web Crypto ทั้งสี่รายการ เพื่อให้นักพัฒนาสามารถเห็นผลลัพธ์ของพวกเขาได้

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

การทำความเข้าใจประวัติความเป็นมาของ SHA ให้ความกระจ่างว่าเหตุใดตัวเลขและชื่อจึงหมายถึงสิ่งที่พวกเขาทำ และเหตุใดตัวเลือกที่ทำในปี 1990 และ 2000 จึงยังคงเป็นตัวกำหนดว่าแอปพลิเคชันใหม่ๆ จะทำอะไรในปัจจุบัน SHA-0 ถูกถอนออกอย่างเงียบๆ, SHA-1 ถูกโจมตีโดยการโจมตีจริง, SHA-2 ยังคงปลอดภัย และ SHA-3 คือการออกแบบทางเลือกที่เลือกไว้สำหรับความแข็งแกร่งในอนาคต รหัสใหม่ควรใช้ SHA-256 สำหรับการแฮชทั่วไป ระบบเดิมยังคงใช้ SHA-1 และการทำงานร่วมกันกับระบบเหล่านั้นได้จำเป็นต้องมีความสามารถในการคำนวณแฮช SHA-1

เครื่องคำนวณแฮช ToolAcre SHA รวบรวมมุมมองนี้: โดยเสนอ SHA-256 เป็นค่าเริ่มต้น SHA-512 เป็นตัวเลือกที่กว้างขึ้น SHA-384 สำหรับข้อกำหนดเฉพาะ และ SHA-1 ติดป้ายกำกับว่าเป็นแบบดั้งเดิม สิ่งนี้ทำให้นักพัฒนามีเครื่องมือที่แม่นยำและการติดป้ายกำกับที่แม่นยำ การใช้งาน Web Crypto ของเบราว์เซอร์มีอัลกอริธึมเหล่านี้ และ ToolAcre ใช้การใช้งานนั้นโดยตรง แทนที่จะจัดส่งโค้ดที่กำหนดเอง ตัวเลือกนี้สะท้อนให้เห็นถึงวิวัฒนาการด้านการเข้ารหัสมานานหลายทศวรรษและสถานะการปฏิบัติในปัจจุบัน