แนวปฏิบัติที่ดีประการหนึ่งเกี่ยวข้องกับการจัดเก็บคีย์ที่เข้ารหัสภายใต้รหัสที่รับรองความถูกต้องแบบสมมาตร เช่น AES-256-GCM โดยมีคีย์ที่ได้มาจากการใช้ Argon2 หรือ scrypt จากข้อความรหัสผ่านที่ผู้ใช้ป้อนและเกลือแบบสุ่มที่เก็บไว้ตามรหัสลับ PBKDF2 เคยเป็นแบบทั่วไปแทนที่จะเป็น Argon2 หรือ scrypt แต่ไม่ถือว่าเป็นแนวทางปฏิบัติที่ดีที่สุดอีกต่อไป
อาร์กอน2 คือความทันสมัยของศิลปะ เข้ารหัส อาจยังคงมีอยู่ทั่วไป ไม่มีวิธีปฏิบัติที่ดีที่สุดที่แน่นอนที่สุด โดยเฉพาะอย่างยิ่ง บางคนชอบบางอย่างที่เป็นมาตรฐานมากกว่าบางอย่างที่ปลอดภัยสูงสุด บางคนใส่พริกไทยทับเกลือ อัปเดต: การรับรองความถูกต้องด้วยสองปัจจัยเพิ่มมากขึ้นเรื่อย ๆ กลายเป็นแนวปฏิบัติที่ดีที่สุด
หากคุณกำหนดวลีรหัสผ่าน/อิงตามรหัสผ่าน ฉันขอแนะนำ Argon2id ด้วยพารามิเตอร์ที่พิจารณาอย่างรอบคอบ: บางอย่างที่ใช้งานได้อย่างสะดวกสบายบนแพลตฟอร์มเป้าหมายทั้งหมด แต่ยังมีอุปสรรคร้ายแรงในการค้นหารหัสผ่านแบบบังคับ
Argon2 เป็นมาตรฐาน NIST หรืออะไร
Argon2 เป็นผู้ชนะของ การแข่งขันแฮชรหัสผ่าน. ที่ไม่ได้จัดโดย NIST Argon2 ไม่ได้รับการอนุมัติจาก NIST แต่อ้างอิงโดย NIST ที่นี่ (ตาม บอลลูนที่ฉันชอบด้วย; แต่ดูเหมือนว่าจะสูญเสียโมเมนตัมไปหลังจากตระหนักว่าข้อได้เปรียบเหนือ Argon2 ยังไม่ชัดเจน):
- Q-B17: Â SP 800-63B มาตรา 5.1.1.2, ผู้ตรวจสอบความลับที่จดจำได้บอกว่าควรใช้การสืบทอดรหัสผ่านหน่วยความจำฮาร์ด PBKDF2 ซึ่งใช้กันอย่างแพร่หลายไม่ใช่ฮาร์ดหน่วยความจำ ตัวอย่างของฟังก์ชันฮาร์ดหน่วยความจำที่ตรงตามข้อกำหนดนี้มีอะไรบ้าง
- A-B17: Â ข้อความแนะนำ แต่ไม่จำเป็น ให้ใช้ฟังก์ชันเมมโมรี่ฮาร์ดสำหรับการรับรหัสผ่าน
  NIST ถือว่าความปลอดภัยของฟังก์ชันแฮช (ทางเดียว) ที่ใช้ในการรับคีย์มีความสำคัญเป็นอันดับแรก ดังนั้นจึงต้องใช้ฟังก์ชันทางเดียวที่ได้รับอนุมัติ (ตรวจสอบอย่างละเอียด) ในการหาค่าคีย์ BALLOON เป็นอัลกอริธึมที่ใช้หน่วยความจำและไทม์ฮาร์ดซึ่งอนุญาตให้ใช้ฟังก์ชันทางเดียวพื้นฐานที่ได้รับอนุมัติ แต่น่าเสียดายที่ยังไม่ได้รับการปรับใช้อย่างกว้างขวางอัลกอริธึมอื่นๆ เช่น ARGON2 เป็นหน่วยความจำและไทม์ฮาร์ด แต่ไม่ได้ใช้ฟังก์ชันทางเดียวพื้นฐานที่ได้รับการวิเคราะห์อย่างละเอียด
  แม้ว่า PBKDF2 จะทำงานแบบ time-hard แต่ไม่ใช่ memory-hard แต่ก็มีการใช้งานอย่างกว้างขวางจนไม่สามารถใช้งานได้จริง (ในขณะนี้) เพื่อแนะนำข้อกำหนดสำหรับฟังก์ชันการสืบทอดคีย์แบบ memory-hard key ดังนั้นเราจึงนำเสนอสิ่งนี้เป็น คำแนะนำ (เช่น âSOULDâ)
  ฟังก์ชันการหาค่าคีย์ถือว่ามีความสำคัญน้อยกว่าฟังก์ชันแบบทางเดียวที่อยู่ภายใต้ฟังก์ชันนี้ ดังนั้นข้อกำหนดเฉพาะจึงน้อยกว่าในส่วนนี้ และไม่ได้ระบุอัลกอริทึมเฉพาะสำหรับการรับค่าคีย์
ดังนั้น NIST จึงไม่ปฏิเสธอดีตเจ้าหน้าที่ คำแนะนำ ของ PBKDF2-HMAC-SHA-1 แม้ว่าจะมีการป้องกันเพียงเล็กน้อยในยุคที่ผู้โจมตีที่มีทุนสนับสนุนสามารถใช้ ASIC หรืออย่างน้อย FPGA หรือ GPU ในการค้นหารหัสผ่าน ไม่ชัดเจนว่าตำแหน่งที่ไม่สามารถป้องกันได้ในทางเทคนิคนี้เป็นอันตราย ซึ่งตรงกันข้ามกับจุดยืนเดิมของ NIST เกี่ยวกับ Dual_EC_DRBGซึ่งมีจุดประสงค์อย่างชัดเจนเพื่อส่งเสริม crypto หน่วยข่าวกรองสหรัฐอาจทำลายได้