Score:2

คำถาม: Argon2 สถานะภายในและความปลอดภัยของมันเมื่อสร้างคีย์ที่ใหญ่กว่า 256/512 บิต

ธง pf

สมมติว่าฉันต้องการใช้การเข้ารหัสที่มีขนาดคีย์ใหญ่ เช่น ISAAC ที่รองรับคีย์ ogf 8192 บิต

ฉันสามารถแฮชด้วย sha-256 หรือ sha-512 และวนซ้ำจนกว่าจะถึงขนาดคีย์ แต่ฉันจะไม่ได้รับความปลอดภัย 8192 บิตเนื่องจากสถานะภายในของฟังก์ชันแฮชนี้ถูกจำกัดไว้ที่ 256 หรือ 512 บิต

ฉันสามารถแฮชด้วย XOF (eXtendable Output Function) เช่น Skein, SHAKE, KangarooTwelve, Blake3 หรือ Blake2x แต่ปัญหาอีกครั้งคือสถานะภายในซึ่งมีขนาดเล็กและอิงตามการวนซ้ำในฟังก์ชันการบีบอัด พวกเขาไม่ให้ความปลอดภัยมากกว่า 256/512 บิต แม้ว่าเอาต์พุตจะถูกเลือกโดยพลการก็ตาม

อาจใช้ฟังก์ชันพิเศษของ KDF เช่น Argon2 หรือ Scrypt

คำถามของฉันเฉพาะเจาะจงเกี่ยวกับ Argon2

เอกสารระบุว่ายอมรับอินพุตขนาดใหญ่สำหรับข้อความ สามารถเลือกเกลือและขนาดย่อยได้โดยพลการ

ฉันรวบรวมโปรแกรมรันไทม์ argon2 เพื่อแฮชไฟล์ในเทอร์มินัล เช่น รูปภาพ และฉันไม่เห็นความแตกต่างของเวลาเมื่อขนาดเอาต์พุตเล็กหรือใหญ่

$ เวลาแมว ~/some_file | argon2-คงที่ 00000000 -d -t 2000000 -m 3 -p 1 -r -l 32 &>/dev/null

0m6.334s จริง
ผู้ใช้ 0m6.329s
sys 0m0.004s

$ เวลาแมว ~/some_file | argon2-คงที่ 00000000 -d -t 2000000 -m 3 -p 1 -r -l 1024 &>/dev/null

0m6.455s จริง
ผู้ใช้ 0m6.443s
ระบบ 0m0.008s

ขนาดเอาต์พุตทั้ง 32 ไบต์ (256 บิต) และ 1024 (8192 บิต) มีเวลาเกือบเท่ากันเมื่อแฮชด้วย Argon2

นี่ทำให้ฉันสงสัย

สถานะภายในของ Argon2 มีขนาดเอาต์พุตเท่ากันหรือไม่ หรืออาจเป็นเพียงการวนซ้ำในฟังก์ชันแฮชเท่านั้น

ฉันถามสิ่งนี้เพราะ Argon2 ใช้ Blake2b เป็นฟังก์ชันแฮชและมีสถานะภายใน 512 บิตไม่ใช่ 8192 ที่ฉันต้องการ

ฉันจะมีการรักษาความปลอดภัย 8192 บิตหรือไม่ หากอินพุตเอนโทรปีสูง (เท่ากับหรือมากกว่าเอาต์พุต) ถูกประมวลผลเป็นขนาดเอาต์พุตนี้ใน Argon2

Maarten Bodewes avatar
in flag
คำถามคือทำไมคุณต้องการความปลอดภัยมากกว่า 256 บิต
kelalaka avatar
in flag
และถ้าคุณมีคีย์สุ่ม 8192 บิตเหมือนกัน คุณไม่จำเป็นต้องใช้ KDF ใดๆนอกจากนี้ ให้ $h_0 = SHA-256(yourRandom)$ มากกว่า $h_i = SHA-256(yourRandom||h_{i-1})$ เป็นวิธีแก้ปัญหาง่ายๆ ในการผสม สำหรับ Argon2 โปรดอ่าน [เอกสาร](https://www.password-hashing.net/argon2-specs.pdf) และดูวิธีการผสมทั้งหมด
Score:3
ธง cn

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

ฉันจะบอกว่า Argon2 ไม่สามารถบรรลุความปลอดภัย 8192 บิตได้ มีเพียง 512 บิตของ Blake2b เท่านั้น อย่างไรก็ตามสิ่งนี้ไม่เกี่ยวข้องจริงๆ ปัจจุบัน 256 บิตถือว่าปลอดภัย แม้ว่าคอมพิวเตอร์ควอนตัมจะปรากฏขึ้น ฉันคิดว่าจะไม่เปลี่ยนเป็นเวลานาน เวลาที่การรักษาความปลอดภัย 512 บิตไม่เพียงพออีกต่อไปคือสิ่งที่พวกเราจะมองไม่เห็น

ในกรณีของรหัสผ่าน เราไม่สามารถใช้มาตรฐานความปลอดภัยบิตตามปกติได้อยู่ดี เว้นแต่ว่ารหัสผ่านจะถูกสร้างขึ้นแบบสุ่มและใช้เพียงครั้งเดียว ความปลอดภัยบิตของรหัสผ่านนั้นไม่สามารถวัดได้อย่างชัดเจน

kelalaka avatar
in flag
ใช่ นั่นเป็นความจริงที่ใคร ๆ ก็สามารถพิจารณาอินพุต 512 บิตไปยัง Blake2 เพื่อโจมตีได้ ซึ่งแน่นอนว่าไม่มีความหมาย

โพสต์คำตอบ

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