Score:0

XChaCha20 ไร้ค่าศูนย์?

ธง be

เราทราบดีว่าสำหรับ ChaCha20 และ XChaCha20 คีย์เดียวกันไม่สามารถใช้กับ nonce เดียวกันได้ แต่สมมุติว่าฉันใช้คีย์สุ่ม 256 บิตทุกครั้ง... ดังนั้น nonce จะเป็นอะไรก็ได้เพราะคีย์นั้นแตกต่างกันเสมอ สมมติว่าฉันตั้งค่า nonce เป็นศูนย์ทั้งหมด ตราบใดที่คีย์ 256 บิตยังเป็นแบบสุ่ม การตั้งค่านี้ควรจะปลอดภัยเนื่องจาก 256 บิตนั้นใหญ่พอที่จะไม่ถูกบังคับหรือใช้ซ้ำ

ตอนนี้เรามาทำงานย้อนหลังกัน สมมติว่าฉันใช้ Argon2 เพื่อรับคีย์ ถ้าฉันใช้เกลือ 256 บิตกับ Argon2 คีย์เอาต์พุตควรมีการสุ่ม 256 บิต และถ้าฉันใส่คีย์นั้นลงใน XChaCha20 ในทางทฤษฎีฉันไม่ควรเรียกใช้คีย์เดียวกัน ดังนั้น จึงสามารถใช้ nonce ที่เป็นศูนย์ได้ .

ฉันมีคำถามสามข้อ:

  1. มีสิ่งผิดปกติเกิดขึ้นกับการใช้ nonce ที่เป็นศูนย์หรือไม่ หากคีย์สุ่มอยู่เสมอ
  2. ในกรณีนี้ การใช้ nonce 192 บิตสำหรับ XChaCha20 มีประโยชน์เพิ่มเติมหรือไม่
  3. ปลอดภัยไหมที่จะใช้เกลือ 256 บิตสำหรับ Argon2 เมื่อเกลือที่แนะนำคือ 128 บิต

บริบท: การเข้ารหัสไฟล์

kelalaka avatar
in flag
[คุณต้องระมัดระวังเมื่อเข้ารหัสไฟล์ด้วย (X)ChaCha](https://crypto.stackexchange.com/a/84440/18298)
Evan Su avatar
be flag
ขอบคุณ @kelalaka! การใช้ Argon2 กับเกลือมาตรฐาน จากนั้นใช้ HKDF กับเกลือ 32 ไบต์เพื่อสร้างคีย์การเข้ารหัส และ nonce สำหรับ ChaCha20 นั้นสมบูรณ์แบบ อาจให้คำตอบด้วยคำพูดจากลิงค์นั้นและฉันยอมรับได้ไหม
kelalaka avatar
in flag
ฉันไม่คิดว่าเราต้องการคำตอบอื่น ฉันค่อนข้างแน่ใจว่า SAI Peregrinus สามารถอัปเดตคำตอบได้ ให้ฉัน ping พวกเขา
Score:1
ธง si
  1. ใช่. ผลงานคงจะแย่มาก
  2. ไม่ มันลดประสิทธิภาพลงเท่านั้น จุดประสงค์ของ XChaCha20 คือการมีขนาดที่ไม่ใหญ่พอที่จะสุ่มเลือกได้ในขณะที่ยังมีตัวนับ 64 บิต
  3. Argon2 ไม่ใช้ nonce มันใช้เกลือ สิ่งเหล่านี้แตกต่างกัน: เกลือไม่ซ้ำกันสำหรับผู้ใช้แต่ละราย และตั้งใจให้เหมือนกันระหว่างการเรียกใช้ nonce ไม่ซ้ำกันต่อข้อความ เกลือไม่ได้มีไว้เพื่อให้เอนโทรปีลับแก่เอาต์พุต มันแค่ทำให้รหัสผ่านที่เหมือนกันสองตัวที่ใช้เป็นอินพุตมีเอาต์พุตที่แตกต่างกัน เกลือจะถือว่าเป็น สาธารณะ อินพุตและการวิเคราะห์ความปลอดภัยของ Argon2 ไม่ได้แสดงว่าไม่พบจากเอาต์พุต (เนื่องจากเป็นส่วนหนึ่งของโครงสร้างเอาต์พุตมาตรฐานโดยตรง) เอนโทรปีของเอาต์พุต Argon2 มาจากข้อความรหัสผ่านอินพุต ไม่ใช่เกลือ การใช้เกลือเป็นแหล่งอินพุตเอนโทรปีแทนวลีรหัสผ่านละเมิดการวิเคราะห์ความปลอดภัย ดังนั้นเราจึงไม่สามารถพูดได้ว่าปลอดภัย
  4. (จากความคิดเห็น) "การใช้ Argon2 กับเกลือมาตรฐาน (ต่อผู้ใช้/บัญชี/ที่คล้ายกัน) จากนั้นใช้ HKDF กับเกลือ 32 ไบต์ (ไม่ระบุแหล่งที่มา) เพื่อสร้างคีย์การเข้ารหัสและ nonce สำหรับ ChaCha20 นั้นสมบูรณ์แบบ" สิ่งนี้สามารถทำงานได้ แต่ไม่จำเป็นหากใช้ XChaCha20 Argon2 เป็น KDF และสามารถใช้รับรหัสจากรหัสผ่านได้อย่างปลอดภัย XChaCha20 อนุญาตให้ใช้ nonce แบบสุ่ม ดังนั้นคุณจึงสามารถใช้ RNG ที่ปลอดภัยของระบบปฏิบัติการของคุณได้ หากคุณต้องการใช้ ChaCha20 (เวอร์ชันที่ไม่ใช่ X) สิ่งนี้สามารถช่วยในการเลือก nonce ได้ โปรดทราบว่าเกลือ ต้องได้รับการแก้ไข สำหรับ HKDF มันคือ ข้อมูล พารามิเตอร์ที่คุณต้องเปลี่ยนแปลงเพื่อให้ได้ค่า nonce ที่ไม่ซ้ำใครออกมาอย่างปลอดภัย โพสต์บล็อกนี้ มีคำอธิบายที่ดีว่าทำไมฉบับสั้น ๆ คือ HKDF มีหลักฐานความปลอดภัยที่ขึ้นอยู่กับการแก้ไข เกลือ มูลค่าแต่ต่างกันไป ข้อมูล คุ้มค่าที่จะส่งออกผลลัพธ์อิสระอย่างปลอดภัย
kelalaka avatar
in flag
คุณช่วยอัปเดตคำตอบด้วยคำแนะนำที่ _Evan Su_ พบว่า [เหมาะสำหรับพวกเขา](https://crypto.stackexchange.com/questions/98259/xchacha20-with-a-zeroed-nonce?noredirect=1#comment212266_98259)ได้ไหม

โพสต์คำตอบ

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