ให้เป็นไปตาม กระดาษ HKDFการใช้เกลือมีจุดประสงค์สองประการ: การแยกโดเมนและการสกัดแบบสุ่ม
คำถามนี้เกี่ยวกับความจำเป็นของเกลือเพื่อจุดประสงค์ในการสกัดแบบสุ่มเท่านั้น
เดอะ กระดาษ HKDF รัฐ:
ก ค่าเกลือ (เช่น คีย์สุ่มแต่ไม่ลับ) ...
เป็นสิ่งสำคัญในการรับตัวแยกทั่วไปและ KDF ที่สามารถแยกการสุ่มจากแหล่งที่มาโดยพลการโดยมีค่าสูงเพียงพอ
เอนโทรปี.
เดอะ การสกัดแบบสุ่มและการได้มาของคีย์ กระดาษ (เชื่อมโยงกับกระดาษ HKDF) ระบุว่า:
นอกจากนี้ สมมติฐานการสุ่มแบบ "เสาหิน" ในหนึ่งเดียว
ฟังก์ชัน (ไม่คีย์) เช่น SHA-1 ไม่เหมาะสมสำหรับการตั้งค่า
การสกัดแบบสุ่มเป็น ไม่มีฟังก์ชั่นเดียว (แม้ว่าจะสุ่มทั้งหมด)
สามารถแยกการแจกแจงแบบใกล้เคียงออกจากกันได้โดยพลการ
การกระจายอินพุตเอนโทรปีสูง. เป็นเช่นนี้ตั้งแต่เมื่อ
ฟังก์ชั่นได้รับการแก้ไข (แม้ว่าจะเป็นค่าสุ่มล้วน ๆ ก็ตาม) มี
การกระจายอินพุตเอนโทรปีสูงที่จะแมปกับชุดย่อยขนาดเล็ก
ของเอาต์พุต. ดังนั้นแนวทางที่เป็นไปได้สำหรับการสกัดแบบสุ่ม
คือการพิจารณากลุ่ม (หรือคอลเลกชัน) ของฟังก์ชันที่จัดทำดัชนีโดยชุด
ของกุญแจ เมื่อแอปพลิเคชันต้องการการแฮชอินพุตสำหรับ
จุดประสงค์ของการแยกการสุ่ม จากนั้นจึงทำการสุ่มองค์ประกอบ (เช่น a
ฟังก์ชัน) จากตระกูลนี้ถูกเลือกและฟังก์ชันจะถูกนำไปใช้
อินพุตที่กำหนด ในขณะที่อาจมีการแจกแจงอินพุตเฉพาะที่
มีปฏิสัมพันธ์กับหน้าที่เฉพาะในครอบครัวไม่ดี
ตระกูลสุ่ม-สกัด จะทำให้ "เหตุการณ์เลวร้าย" นี้เกิดขึ้นด้วย
ความน่าจะเป็นน้อยมาก
คำถามสุดท้ายคือวิธีสร้างคีย์ที่รู้จักแบบสุ่มซึ่งใช้โดย
เครื่องสกัด ในทางเทคนิคแล้วสิ่งนี้ไม่ใช่เรื่องยาก เนื่องจากฝ่ายต่างๆ สามารถสร้างได้
การสุ่มที่เหมาะสมแต่รายละเอียดที่แน่นอนนั้นขึ้นอยู่กับ
แอปพลิเคชัน.ตัวอย่างเช่น ในการแลกเปลี่ยนคีย์ DH ที่กล่าวถึงก่อนหน้านี้
ฝ่ายแลกเปลี่ยนในค่าที่เลือกแบบสุ่มซึ่งได้แก่
แล้วรวมกันเพื่อสร้างคีย์เดียว [เกลือ] สำหรับครอบครัวเครื่องแยกกาก
(เช่น HMAC-SHA1)
เดอะ กระดาษ HKDF รัฐ:
ครอบครัว Merkle-Damgard [ใช้ในการออกแบบอัลกอริธึมการแฮชที่ได้รับความนิยมมากมาย เช่น MD5, SHA-1 และ SHA-2] สร้างขึ้นจากการสุ่ม
ฟังก์ชั่นการบีบอัดคือ ไม่ใช่ตัวแยกสถิติที่ดี... ผลผลิตของตระกูลดังกล่าวเมื่อแจกจ่ายใด ๆ ที่
บล็อกสุดท้ายของอินพุตได้รับการแก้ไขอยู่ไกลจากเครื่องแบบทางสถิติ)
จากนั้นจะสะท้อนประเด็นที่ทำไว้ใน การสกัดแบบสุ่มและการได้มาของคีย์ กระดาษ:
ดังที่เราได้เน้นย้ำไปแล้วในหัวข้อก่อนหน้า เครื่องแยกสารทั่วไป
เช่น ผู้ที่ทำงานบนแหล่งค่า min-entropy สูงตามอำเภอใจ ต้องเป็น
สุ่มผ่านการสุ่ม แต่ไม่จำเป็นต้องเป็นความลับ คีย์ (หรือ âsaltâ).
โดยเฉพาะอย่างยิ่ง ตัวอย่างตามบทแทรก 2 แสดงให้เห็นว่า สำหรับทุกๆ
deterministic extractor มีแหล่งเอนโทรปีสูงที่
เอาต์พุตอยู่ไกลจากเครื่องแบบ.
ขัดแย้งกับข้อความเหล่านี้ ฉันทราบเกี่ยวกับการใช้งาน ECDH ที่ใช้แฮช Keccak-256 ในองค์ประกอบกลุ่ม EC ลับที่ใช้ร่วมกันโดยไม่มีเกลือ แต่บางทีนี่อาจเป็นสิ่งที่ชอบธรรม A) ด้วยเหตุผลที่ว่าการเลือกแฮชโครงสร้างฟองน้ำช่วยลดความกังวล ที่ทำให้แฮชตระกูล Merkle-Damgard เสียหาย หรือ B) เนื่องจากการแสดงจุดบีบอัดของ EC เป็นการสุ่มที่สม่ำเสมอเพียงพอ (เทียบกับความสม่ำเสมอของการสุ่มของความลับที่ใช้ร่วมกันใน DH ที่ไม่ใช่ EC)
เกลือจำเป็นในกรณีใดบ้าง? (สำหรับชนิดของวัสดุคีย์อินพุต และสำหรับฟังก์ชัน HMAC-Hash ประเภทใด)
เอกสารเหล่านี้ล้าสมัยหรือไม่ และข้อกังวลที่หยิบยกขึ้นมาจากเอกสารเหล่านี้เกี่ยวกับการใช้เกลือได้รับการบรรเทาลงในระดับใดด้วยการวิจัยอย่างละเอียดมากขึ้นเกี่ยวกับธรรมชาติของฟังก์ชันแฮชสมัยใหม่หรือไม่