อัลกอริทึม HASH คืออะไรความปลอดภัยการใช้งานและการทำงาน

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

แฮชใช้ทำอะไร?

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

อัลกอริทึม HASH

ในการตรวจสอบว่าเราได้ป้อนรหัสผ่านที่จัดเก็บไว้ในฐานข้อมูลอย่างถูกต้อง (แฮชของคีย์ถูกเก็บไว้) สิ่งที่ทำได้คือการใช้อัลกอริทึมแฮชกับรหัสผ่านที่ป้อนและเปรียบเทียบกับรหัสที่เก็บไว้หากเป็น เหมือนกันคีย์ถูกต้องถ้าแตกต่างกันคีย์ผิด ขั้นตอนนี้ใช้ในทุกระบบปฏิบัติการเว็บไซต์ที่มีการตรวจสอบผู้ใช้ / รหัสผ่าน ฯลฯ

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

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

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

ตอนนี้เรารู้ทุกอย่างเกี่ยวกับฟังก์ชันแฮชแล้วมาดูกันว่าฟังก์ชันใดถูกใช้มากที่สุดในปัจจุบัน

SHA2

ในช่วงเริ่มต้นอัลกอริทึม SHA (Secure Hash Algorithm หรือ Secure Hash Algorithm) ถูกสร้างขึ้นโดย NSA และ NIST โดยมีจุดประสงค์เพื่อสร้างแฮชหรือรหัสเฉพาะตามมาตรฐาน ในปี 1993 โปรโตคอล SHA แรกถือกำเนิดขึ้นหรือเรียกอีกอย่างว่า SHA-0 แต่แทบจะไม่ได้ใช้และไม่มีผลกระทบมากนัก สองสามปีต่อมา SHA-1 รุ่นปรับปรุงที่แข็งแกร่งและปลอดภัยยิ่งขึ้นได้รับการเผยแพร่และใช้เป็นเวลาหลายปีในการลงนามใบรับรองดิจิทัล SSL / TLS สำหรับเว็บไซต์นับล้าน ไม่กี่ปีต่อมา SHA-2 ถูกสร้างขึ้นซึ่งมีสี่ตัวแปรขึ้นอยู่กับจำนวนบิตเอาต์พุต SHA2-224, SHA2-256, SHA2-384 และ SHA2-512 . ในปัจจุบันเพื่อความปลอดภัย SHA1 ไม่ได้ใช้อีกต่อไป แต่ขอแนะนำอย่างยิ่งให้ใช้ SHA2 หรือ SHA3 (ภายในตระกูล SHA)

SHA2 ทำงานอย่างไร

อัลกอริธึมการแฮชทำงานในทิศทางเดียวเท่านั้นเราสามารถสร้างแฮชของเนื้อหาใด ๆ หรือลายนิ้วมือ แต่ด้วยแฮชหรือลายนิ้วมือจะไม่มีวิธีสร้างเนื้อหาเริ่มต้น วิธีเดียวที่จะทำได้คือการใช้พจนานุกรมหรือกำลังเดรัจฉานดังนั้นเราอาจใช้เวลาหลายพันปี (ในปัจจุบัน) ในการรับข้อมูลเบื้องต้น

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

ลักษณะของ SHA2 ประเภทต่างๆ

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

SHA-256

มีขนาดเอาต์พุต 256 บิตขนาดสถานะภายใน 256 บิตขนาดบล็อก 512 บิตขนาดข้อความสูงสุดที่สามารถจัดการได้คือ 2 64 - 1 ความยาวของคำคือ 32 บิตและจำนวนรอบที่ใช้คือ 64 เช่นเดียวกับการดำเนินการที่ใช้กับแฮชคือ + และหรือหรือ xor, shr และ rot ความยาวของแฮชจะเท่ากันเสมอไม่ว่าเนื้อหาที่คุณใช้สร้างแฮชจะมีขนาดใหญ่แค่ไหน: ไม่ว่าจะเป็นเพียงตัวอักษรเดียวหรือภาพ ISO ขนาด 4GB ผลลัพธ์จะเป็นลำดับของตัวอักษรและตัวเลข 40 ตัวเสมอ

SHA2-384

อัลกอริทึมนี้มีความแตกต่างกันในแง่ของลักษณะ แต่การทำงานเหมือนกัน มีขนาดเอาต์พุต 384 บิตขนาดสถานะภายใน 512 บิตขนาดบล็อก 1024 บิตขนาดข้อความสูงสุดที่สามารถจัดการได้คือ 2 128 - 1 ความยาวของคำคือ 64 บิตและจำนวนรอบที่ใช้คือ 80 เช่นเดียวกับการดำเนินการที่ใช้กับแฮชคือ + และหรือ xor, shr และ rot อัลกอริทึมนี้เป็นเวอร์ชันที่ปลอดภัยกว่า SHA2-256 เนื่องจากมีการใช้งานหลายรอบมากขึ้นและยังสามารถประยุกต์ใช้กับข้อมูลที่กว้างขวางมากขึ้นได้อีกด้วย อัลกอริทึมการแฮชนี้มักใช้เพื่อตรวจสอบความสมบูรณ์ของข้อความและความถูกต้องในเครือข่ายส่วนตัวเสมือน แง่ลบคือค่อนข้างช้ากว่า SHA2-256 แต่ในบางสถานการณ์อาจเป็นตัวเลือกที่ดีมากในการใช้สิ่งนี้

SHA2-512

เช่นเดียวกับใน SHA2 ทั้งหมดการดำเนินการจะเหมือนกันโดยเปลี่ยนเพียงลักษณะเดียว มีขนาดเอาต์พุต 512 บิต คุณสมบัติอื่น ๆ ทั้งหมดเหมือนกับ SHA2-384 ขนาดสถานะภายใน 512 บิตขนาดบล็อก 1024 บิต 2 128 - 1 สำหรับขนาดสูงสุดของข้อความความยาวคำ 64 บิตและ 80 คือจำนวนรอบที่ใช้กับข้อความนั้น อัลกอริทึมนี้ยังใช้การดำเนินการเดียวกันในแต่ละรอบ +, และ, หรือ, xor, shr และ rot

SHA2-224

เราไม่ได้แสดงความคิดเห็นเกี่ยวกับอัลกอริทึมนี้เป็นหลักเนื่องจากพี่ชายของมัน (SHA2-256) ถูกใช้มากกว่ามากเนื่องจากความแตกต่างในการคำนวณระหว่างทั้งสองนั้นไร้สาระและ SHA2-256 นั้นมีมาตรฐานมากกว่ามาก เราพูดถึงเรื่องนี้เนื่องจากอย่างน้อยจนถึงขณะนี้ยังไม่พบการชนกันของอัลกอริทึมนี้ทำให้เป็นตัวเลือกที่ปลอดภัยและใช้งานได้

ในตารางต่อไปนี้เราจะสามารถตรวจสอบความแตกต่างระหว่างอัลกอริทึมทั้งหมดตามลักษณะของมันได้ดีขึ้นมาก

คุณจะเห็นว่า MD5, SHA-0 และ SHA-1 ก่อนหน้านี้อัลกอริธึมแฮชจะปรากฏในตารางเราได้ปล่อยมันออกไปเพราะแม้ว่าจะถูกใช้มานานแล้ว พบการชนกันแล้วและไม่ปลอดภัยที่จะใช้อีกต่อไป ดังนั้นใน SHA2 ในทุกรูปแบบและปัจจุบันใช้ SHA3

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

SHA-3

SHA3 ​​เป็นอัลกอริธึมการแฮชตระกูล SHA ใหม่ล่าสุดซึ่งเผยแพร่โดย NISH ในปี 2015 แต่ยังไม่มีการใช้กันอย่างแพร่หลาย แม้ว่าจะเป็นส่วนหนึ่งของตระกูลเดียวกัน แต่โครงสร้างภายในก็แตกต่างกันมาก อัลกอริทึมการแฮชใหม่นี้ใช้ “ โครงสร้างฟองน้ำ .” การสร้างฟองน้ำนี้ขึ้นอยู่กับฟังก์ชันสุ่มหรือการเปลี่ยนแปลงแบบสุ่มของข้อมูลช่วยให้สามารถป้อนข้อมูลจำนวนเท่าใดก็ได้และสร้างข้อมูลจำนวนเท่าใดก็ได้นอกจากนี้ฟังก์ชันนี้ยังสุ่มหลอกตามรายการก่อนหน้าทั้งหมด สิ่งนี้ช่วยให้ SHA-3 มีความยืดหยุ่นสูงโดยมีวัตถุประสงค์เพื่อแทนที่ SHA2 ใน TLS ทั่วไปหรือ VPN โปรโตคอลที่ใช้อัลกอริทึมการแฮชนี้เพื่อตรวจสอบความสมบูรณ์ของข้อมูลและความถูกต้องของข้อมูลเดียวกัน

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

การทำงานและลักษณะ

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

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

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

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

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

อัลกอริทึมยอดนิยมสำหรับการป้องกันรหัสผ่าน ได้แก่ :

  1. อาร์กอน 2 (KDF)
  2. การเข้ารหัส (KDF)
  3. เข้ารหัส
  4. PBKDF2 (เคดีเอฟ)

ความแตกต่างที่สำคัญระหว่าง KDF และฟังก์ชันการแฮชรหัสผ่านคือความยาวของ KDF นั้นเป็นไปตามอำเภอใจและแฮชรหัสผ่านทั่วไปเช่น MD5, SHA-1, SHA2-256, SHA2-512 จะมีเอาต์พุตที่มีความยาวคงที่

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

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

bcrypt, sha256crypt, sha512crypt และ PBKDF2

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

โปรดทราบว่าสำหรับ bcrypt หมายความว่าสำหรับการแฮชรหัสผ่านปัจจัย 13 จะให้ค่าใช้จ่ายประมาณ 0.5 วินาทีในการเข้ารหัสรหัสผ่านในขณะที่ปัจจัย 16 จะมีค่าใช้จ่ายประมาณ 5 วินาทีในการสร้างรหัสผ่านแบบคีย์ สำหรับ sha256crypt, sha512crypt และ PBKDF2 นั้นดูเหมือนจะมีการทำซ้ำประมาณ 640,000 และ 5,120,000 ครั้งตามลำดับ

Scrypt

เมื่อเราคิดที่จะย้ายไปที่ scrypt นั่นเป็นเพราะสิ่งต่างๆเริ่มยากขึ้นเล็กน้อย ด้วย bcrypt, sha256crypt, sha512crypt และ PBKDF2 ต้นทุนของเราคือ ซีพียู โหลดแฟกเตอร์ยิ่งกำลังประมวลผลสูงประสิทธิภาพของอัลกอริทึมก็จะยิ่งสูงขึ้น ส่วนที่ไม่ดีก็คือพวกเขายังคงตกเป็นเหยื่อของ FPGA และ ASIC เฉพาะอัลกอริทึม เพื่อต่อสู้กับปัญหานี้สามารถรวมค่าหน่วยความจำได้ ด้วย scrypt เราจะมีต้นทุนทั้ง CPU และ แรม.

ในตารางต่อไปนี้คุณสามารถดูการเปรียบเทียบกับมูลค่าต้นทุนที่แตกต่างกัน

การทดสอบเหล่านี้ดำเนินการกับ CPU Quad-Core โปรเซสเซอร์ตัวเดียวมีความพยายามที่จะ จำกัด ค่า« p »ไว้ที่ 1, 2 และ 4 การใช้ RAM ก็ถูก จำกัด ด้วยดังนั้นจึงไม่ต้องขัดจังหวะส่วนที่เหลือ การดำเนินการอย่างต่อเนื่องที่กำลังดำเนินการ ดังนั้นต้นทุน“ r” จึงถูก จำกัด ไว้ที่ 4, 8 และ 16 คูณด้วย 128 ไบต์ (512 ไบต์ 1024 ไบต์และ 2048 ไบต์)

อาร์กอน 2

Argon2 มีสองเวอร์ชันที่แตกต่างกัน: Argon2d และ Argon2i; ครั้งแรกขึ้นอยู่กับข้อมูล (d) และที่สองไม่ขึ้นอยู่กับข้อมูล (i) อดีตควรจะทนต่อ GPU การแตกร้าวในขณะที่ส่วนหลังควรจะทนต่อการโจมตีของช่องทางด้านข้าง กล่าวอีกนัยหนึ่ง Argon2d เหมาะสำหรับการแฮชรหัสผ่าน ในขณะที่ Argon2i เหมาะสำหรับการสร้างคีย์เข้ารหัส .

Argon2 มีต้นทุน CPU และราคา RAM ซึ่งทั้งสองอย่างจะได้รับการจัดการแยกกัน ค่าใช้จ่ายของ CPU ได้รับการจัดการผ่านการทำซ้ำมาตรฐานเช่นเดียวกับ bcrypt หรือ PBKDF2 และต้นทุน RAM จะจัดการโดยการเพิ่มหน่วยความจำโดยเฉพาะ เมื่อการทดสอบด้วยอัลกอริทึมนี้เริ่มขึ้นพบว่าเพียงแค่จัดการกับการวนซ้ำก็ดูเหมือน bcrypt แต่ในทางกลับกันเวลาทั้งหมดที่ใช้ในการคำนวณแฮชอาจได้รับผลกระทบจากการจัดการกับหน่วยความจำ เมื่อรวมทั้งสองอย่างเข้าด้วยกันพบว่าการทำซ้ำจะส่งผลต่อต้นทุน CPU มากกว่าต้นทุน RAM แต่ทั้งสองมีเวลาในการคำนวณที่สำคัญดังที่เห็นได้ในตารางด้านล่าง เช่นเดียวกับ scrypt ยังมีต้นทุนแบบขนานซึ่งกำหนดจำนวนเธรดที่คุณต้องการแก้ไขปัญหา:

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

สรุป

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

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

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