Score:3

การใช้งานที่คุณควร/ไม่ควรใช้เกลือกับ HKDF

ธง in

rfc5869 มีข้อความต่อไปนี้เกี่ยวกับการใช้หรือขาดเกลือกับ HKDF:

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

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

  • การใช้ฟังก์ชันแฮชสองครั้งเป็นอิสระต่อกันหมายความว่าอย่างไร

  • ความหมายของ "การแยกแหล่งที่มาอิสระ" คืออะไร?

  • คืออะไร ตัวอย่างการปฏิบัติจริงของกรณีการใช้งานที่ควรจะเป็นเกลืออย่างแน่นอน ใช้กับ HKDF?

kelalaka avatar
in flag
[คำตอบบางส่วนที่นี่](https://crypto.stackexchange.com/q/76588/18298) และ [การแยกโดเมน](https://crypto.stackexchange.com/q/83306/18298) สำหรับฟังก์ชันแฮช ฉันพบว่ามันเป็นคำถามที่กว้าง
kelalaka avatar
in flag
การใช้ฟังก์ชันแฮชสองครั้งเป็นอิสระต่อกันหมายความว่าอย่างไร "การแยกโดเมน"
knaccc avatar
es flag
เนื่องจากเกลือมีไว้สำหรับการแยกโดเมนและการสกัดแบบสุ่ม ฉันจึงถามคำถามเฉพาะเจาะจงมากขึ้นเกี่ยวกับเฉพาะส่วนการแยกการสุ่ม... -หรือ-ไม่มีเกลือ
Score:2
ธง es

การใช้เกลือมีจุดประสงค์สองประการ: การแยกโดเมน และ การสกัดแบบสุ่ม.

หากคุณแน่ใจว่า IKM ของคุณ (ข้อมูลการป้อนข้อมูลคีย์ข้อมูล) ถูกใช้ใน "โดเมน" เดียวเท่านั้น คุณไม่จำเป็นต้องใช้เกลือเพื่อจุดประสงค์ในการแยกโดเมน ภายในโดเมนเดียวกัน คุณใช้พารามิเตอร์ข้อมูลแทนเพื่อสร้างคีย์หลายรายการจาก IKM เดียวกันสำหรับบริบทต่างๆ ภายในโดเมน

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

การแยกโดเมน

หน้า 26 ของ "การสกัดการเข้ารหัสและการได้มาของคีย์: โครงการ HKDF" paper (เรียกว่า [HKDF-paper] ใน rfc5869) แสดงตัวอย่างความจำเป็นของการแยกโดเมนดังต่อไปนี้:

ความสำคัญของความเป็นอิสระดังกล่าวสามารถอธิบายได้จาก ตามตัวอย่าง "ชีวิตจริง"... การแลกเปลี่ยน Diffie-Hellman ได้รับการรับรองความถูกต้องโดยการเซ็นชื่อในคีย์ $ก^{xy}$. ใน ความเป็นจริงสิ่งที่ลงนามคือ $H(g^{xy})$ สำหรับฟังก์ชันแฮชบางอย่าง $H$, พูด SHA-1 หากลายเซ็นอนุญาตให้กู้คืนข้อความ (เช่น RSA) ผู้โจมตีไม่เรียนรู้ $ก^{xy}$ แต่ $H(g^{xy})$; ดังนั้นถ้าใคร คิดถึง $H$ ในฐานะที่เป็น oracle แบบสุ่มไม่มีอะไรจะเรียนรู้ $ก^{xy}$. ตอนนี้ สมมติว่าโปรโตคอลด้านบนได้รับคีย์ผ่านทางแบบดั้งเดิม KDF กล่าวคือ คีย์ถูกคำนวณเป็น $H(g^{xy} \mathbin\| v)$ สำหรับบางคน ค่าสาธารณะ $v$. ในกรณีนี้หากเราปฏิบัติตาม $H$ = ตัวอย่าง SHA-1 และ สมมติ $ก^{xy}$ มีความยาว 1,024 เราได้รับการคำนวณนั้น $H(g^{xy}\mathbin\|v)$ เป็น เช่นเดียวกับการคำนวณ $H$ บน $v$ ด้วย IV ของ $H$ ตั้งค่าให้ $H(g^{xy})$ (สำหรับ ความง่ายถือว่าการคำนวณของ $H$ บน $ก^{xy}$ ไม่ใช้ ความยาวต่อท้าย) อย่างไรก็ตาม นี่หมายความว่าผู้โจมตีเรียนรู้ทั้งหมด กุญแจตั้งแต่เขารู้ $H(g^{xy})$! ความล้มเหลวของโปรโตคอลไม่ได้ เนื่องจากจุดอ่อนเฉพาะของ $H$ แต่น่าใช้เหมือนกัน (deterministic) สำหรับสองฟังก์ชันที่แตกต่างกัน: แฮช ฟังก์ชันที่ใช้กับ $ก^{xy}$ และ กฟผ. ในทางตรงข้าม ถ้าคนหนึ่งคีย์ $H$ ทาง ค่าเกลือที่ใช้โดย KDF จะบังคับใช้ความเป็นอิสระ ระหว่างสองฟังก์ชัน

HDKF ประกอบด้วยสองขั้นตอน:

  1. HKDF-Extract: PRK = HMAC-Hash(เกลือ, IKM)
  2. HKDF-ขยาย(PRK, ข้อมูล, L) -> OKM

(โดยที่ IKM คือ 'วัสดุคีย์อินพุต', PRK คือ 'คีย์สุ่มเทียม', OKM คือ 'วัสดุคีย์เอาต์พุต', L คือความยาวของเอาต์พุตที่ต้องการ)

ดังนั้น หากไม่มีการใช้เกลือ และค่าของ HMAC-Hash(NULL, IKM) รั่วไหล (เช่น ในสถานการณ์ "กู้คืนข้อความ" ด้านบน) ดังนั้น การใช้ HKDF ทั้งหมดในภายหลังโดยใช้ IKM เดียวกันและไม่มีเกลือจะ ก็ถูกบุกรุกเช่นกัน

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

โพสต์คำตอบ

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