ฟังก์ชัน Cryptography Hash

ฟังก์ชันแฮชมีประโยชน์อย่างยิ่งและปรากฏในแอปพลิเคชันการรักษาความปลอดภัยข้อมูลเกือบทั้งหมด

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

ค่าที่ส่งกลับโดยฟังก์ชันแฮชจะถูกเรียก message digest หรือเพียงแค่ hash values. ภาพต่อไปนี้แสดงฟังก์ชันแฮช -

คุณสมบัติของฟังก์ชันแฮช

คุณสมบัติทั่วไปของฟังก์ชันแฮชคือ -

  • Fixed Length Output (Hash Value)

    • ฟังก์ชันแฮชจะปกปิดข้อมูลที่มีความยาวโดยพลการเป็นความยาวคงที่ กระบวนการนี้มักเรียกว่าhashing the data.

    • โดยทั่วไปแฮชจะมีขนาดเล็กกว่าข้อมูลอินพุตมากดังนั้นจึงมีการเรียกฟังก์ชันแฮชในบางครั้ง compression functions.

    • เนื่องจากแฮชเป็นตัวแทนของข้อมูลขนาดใหญ่ที่เล็กกว่าจึงเรียกอีกอย่างว่าไฟล์ digest.

    • ฟังก์ชันแฮชที่มีเอาต์พุต n บิตเรียกว่าไฟล์ n-bit hash function. ฟังก์ชันแฮชยอดนิยมสร้างค่าระหว่าง 160 ถึง 512 บิต

  • Efficiency of Operation

    • โดยทั่วไปสำหรับฟังก์ชันแฮช h ใด ๆ ที่มีอินพุต x การคำนวณ h (x) เป็นการดำเนินการที่รวดเร็ว

    • ฟังก์ชันแฮชในการคำนวณนั้นเร็วกว่าการเข้ารหัสแบบสมมาตรมาก

คุณสมบัติของฟังก์ชันแฮช

เพื่อให้เป็นเครื่องมือเข้ารหัสที่มีประสิทธิภาพฟังก์ชันแฮชจึงต้องการคุณสมบัติดังต่อไปนี้ -

  • Pre-Image Resistance

    • คุณสมบัตินี้หมายความว่าควรคำนวณย้อนกลับฟังก์ชันแฮชได้ยาก

    • กล่าวอีกนัยหนึ่งคือถ้าฟังก์ชันแฮช h สร้างค่าแฮช z ก็น่าจะเป็นกระบวนการที่ยากในการหาค่าอินพุต x ที่แฮชเป็น z

    • คุณสมบัตินี้ป้องกันผู้โจมตีที่มีเพียงค่าแฮชและพยายามค้นหาอินพุต

  • Second Pre-Image Resistance

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

    • กล่าวอีกนัยหนึ่งถ้าฟังก์ชันแฮช h สำหรับอินพุต x สร้างค่าแฮช h (x) ก็น่าจะยากที่จะหาค่าอินพุตอื่น ๆ y เช่นนั้น h (y) = h (x)

    • คุณสมบัติของฟังก์ชันแฮชนี้ป้องกันผู้โจมตีที่มีค่าอินพุตและแฮชและต้องการแทนที่ค่าที่แตกต่างกันเป็นค่าที่ถูกต้องแทนค่าอินพุตดั้งเดิม

  • Collision Resistance

    • คุณสมบัตินี้หมายความว่ามันยากที่จะหาอินพุตที่แตกต่างกันสองอินพุตที่มีความยาวใด ๆ ที่ส่งผลให้แฮชเดียวกัน คุณสมบัตินี้เรียกอีกอย่างว่าฟังก์ชันแฮชแบบไม่มีการชนกัน

    • กล่าวอีกนัยหนึ่งสำหรับฟังก์ชันแฮช h มันยากที่จะหาอินพุต x และ y ที่แตกต่างกันสองรายการดังนั้น h (x) = h (y)

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

    • คุณสมบัตินี้ทำให้ผู้โจมตีค้นหาค่าอินพุตสองค่าที่มีแฮชเดียวกันได้ยากมาก

    • นอกจากนี้หากฟังก์ชันแฮชทนต่อการชนกัน then it is second pre-image resistant.

การออกแบบอัลกอริทึมการแฮช

หัวใจสำคัญของการแฮชคือฟังก์ชันทางคณิตศาสตร์ที่ทำงานบนบล็อกข้อมูลขนาดคงที่สองบล็อกเพื่อสร้างรหัสแฮช ฟังก์ชันแฮชนี้เป็นส่วนหนึ่งของอัลกอริทึมการแฮช

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

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

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

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

เอฟเฟกต์ Avalanche ส่งผลให้ค่าแฮชที่แตกต่างกันอย่างมีนัยสำคัญสำหรับสองข้อความที่แตกต่างกันโดยข้อมูลแม้แต่บิตเดียว

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

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

ฟังก์ชันแฮชยอดนิยม

ให้เราดูสั้น ๆ ฟังก์ชั่นแฮชยอดนิยม

ไดเจสต์ข้อความ (MD)

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

  • ตระกูล MD ประกอบด้วยฟังก์ชันแฮช MD2, MD4, MD5 และ MD6 มันถูกนำมาใช้เป็นมาตรฐานอินเทอร์เน็ต RFC 1321 มันเป็นฟังก์ชันแฮช 128 บิต

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

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

ฟังก์ชัน Secure Hash (SHA)

ตระกูล SHA ประกอบด้วยอัลกอริธึม SHA สี่แบบ SHA-0, SHA-1, SHA-2 และ SHA-3 แม้ว่าจะมาจากครอบครัวเดียวกัน แต่ก็มีโครงสร้างที่แตกต่างกัน

  • เวอร์ชันดั้งเดิมคือ SHA-0 ซึ่งเป็นฟังก์ชันแฮช 160 บิตซึ่งเผยแพร่โดย National Institute of Standards and Technology (NIST) ในปี 1993 มีจุดอ่อนเล็กน้อยและไม่เป็นที่นิยมมากนัก ต่อมาในปี 1995 SHA-1 ได้รับการออกแบบมาเพื่อแก้ไขจุดอ่อนของ SHA-0 ที่ถูกกล่าวหา

  • SHA-1 เป็นฟังก์ชันแฮช SHA ที่มีอยู่อย่างแพร่หลายมากที่สุด มีการใช้งานในแอพพลิเคชั่นและโปรโตคอลที่ใช้กันอย่างแพร่หลายรวมถึงการรักษาความปลอดภัย Secure Socket Layer (SSL)

  • ในปี 2548 มีการค้นพบวิธีการในการเปิดเผยการชนกันของ SHA-1 ภายในกรอบเวลาที่ใช้งานได้จริงทำให้การจ้างงาน SHA-1 เป็นหนี้สงสัยจะสูญในระยะยาว

  • ตระกูล SHA-2 มีตัวแปร SHA เพิ่มเติมอีกสี่แบบ ได้แก่ SHA-224, SHA-256, SHA-384 และ SHA-512 ขึ้นอยู่กับจำนวนบิตในค่าแฮช ยังไม่มีรายงานการโจมตีที่ประสบความสำเร็จในฟังก์ชันแฮช SHA-2

  • แม้ว่า SHA-2 จะเป็นฟังก์ชันแฮชที่แข็งแกร่ง แม้ว่าจะแตกต่างกันอย่างมีนัยสำคัญ แต่การออกแบบพื้นฐานยังคงเป็นไปตามการออกแบบของ SHA-1 ดังนั้น NIST จึงเรียกร้องให้มีการออกแบบฟังก์ชันแฮชที่มีการแข่งขันใหม่

  • ในเดือนตุลาคม 2555 NIST ได้เลือกอัลกอริทึม Keccak เป็นมาตรฐาน SHA-3 ใหม่ Keccak มีประโยชน์มากมายเช่นประสิทธิภาพที่มีประสิทธิภาพและความต้านทานที่ดีสำหรับการโจมตี

RIPEMD

RIPEMD เป็นคำย่อของ RACE Integrity Primitives Evaluation Message Digest ฟังก์ชันแฮชชุดนี้ออกแบบโดยชุมชนการวิจัยแบบเปิดและโดยทั่วไปรู้จักกันในชื่อฟังก์ชันแฮชของยุโรป

  • ชุดประกอบด้วย RIPEMD, RIPEMD-128 และ RIPEMD-160 นอกจากนี้ยังมีอัลกอริทึมรุ่น 256 และ 320 บิต

  • RIPEMD ดั้งเดิม (128 บิต) ขึ้นอยู่กับหลักการออกแบบที่ใช้ใน MD4 และพบว่ามีความปลอดภัยที่น่าสงสัย RIPEMD เวอร์ชัน 128 บิตมาแทนการแก้ไขด่วนเพื่อเอาชนะช่องโหว่บน RIPEMD ดั้งเดิม

  • RIPEMD-160 เป็นเวอร์ชันที่ได้รับการปรับปรุงและเป็นเวอร์ชันที่ใช้กันอย่างแพร่หลายในตระกูล เวอร์ชัน 256 และ 320 บิตช่วยลดโอกาสในการชนกันโดยไม่ได้ตั้งใจ แต่ไม่มีระดับความปลอดภัยที่สูงกว่าเมื่อเทียบกับ RIPEMD-128 และ RIPEMD-160 ตามลำดับ

วังวน

นี่คือฟังก์ชันแฮช 512 บิต

  • ได้มาจาก Advanced Encryption Standard (AES) เวอร์ชันแก้ไข หนึ่งในผู้ออกแบบคือ Vincent Rijmen ผู้ร่วมสร้าง AES

  • วังวนสามรุ่นได้รับการเผยแพร่; ได้แก่ WHIRLPOOL-0, WHIRLPOOL-T และ WHIRLPOOL

การใช้ฟังก์ชันแฮช

มีสองแอปพลิเคชันโดยตรงของฟังก์ชันแฮชโดยอาศัยคุณสมบัติการเข้ารหัส

ที่เก็บรหัสผ่าน

ฟังก์ชันแฮชช่วยป้องกันการจัดเก็บรหัสผ่าน

  • แทนที่จะเก็บรหัสผ่านอย่างชัดเจนกระบวนการล็อกออนส่วนใหญ่จะเก็บค่าแฮชของรหัสผ่านไว้ในไฟล์

  • ไฟล์รหัสผ่านประกอบด้วยตารางคู่ซึ่งอยู่ในรูปแบบ (รหัสผู้ใช้, h (P))

  • ขั้นตอนการเข้าสู่ระบบแสดงอยู่ในภาพประกอบต่อไปนี้ -

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

การตรวจสอบความสมบูรณ์ของข้อมูล

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

กระบวนการแสดงอยู่ในภาพประกอบต่อไปนี้ -

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