สมมติว่าฉันต้องการใช้การเข้ารหัสที่มีขนาดคีย์ใหญ่ เช่น 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