ในคำตอบของ ที่นี่ มีคนกล่าวถึง:
หากคุณมีฟังก์ชันแฮชที่มีพลังของออราเคิล การสร้างสตรีมสุ่มหลอกจากคีย์ลับทำได้ค่อนข้างง่าย โดยการแฮช K||n โดยที่ K คือคีย์ลับและ n เป็นตัวนับ ด้วยการ XOR การใช้สตรีมสุ่มหลอกที่ขึ้นกับคีย์พร้อมข้อมูลที่จะเข้ารหัส คุณจะมีรหัสสตรีม
ในโพสต์เดียวกันยังมีส่วนนี้เกี่ยวกับการใช้ฟังก์ชันแฮชการเข้ารหัสสำหรับการสร้างรหัสสตรีม:
ฟังก์ชันแฮชการเข้ารหัสเป็นฟังก์ชันที่ทนทานต่อพรีอิมเมจ พรีอิมเมจที่สอง และการชนกัน เท่าที่ฉันรู้ ยังไม่ได้รับการพิสูจน์ว่าเงื่อนไขเหล่านี้เพียงพอที่จะสร้างรหัสสตรีม
เท่าที่ฉันทราบอัลกอริธึมสมมาตรที่มีอยู่ในปัจจุบันทั้งหมด โดยเฉพาะอย่างยิ่ง AES เชื่อว่าปลอดภัยเท่านั้น หลักฐานเดียวที่เรามีเกี่ยวกับความปลอดภัยคือการใช้งานจริง และการโจมตีที่พยายามจนถึงตอนนี้ไม่ได้ลดความปลอดภัยของอัลกอริทึมเหล่านั้นอย่างย่อยยับ
ปัญหาที่ว่า "ยังไม่ได้รับการพิสูจน์ว่าเงื่อนไขเหล่านี้เพียงพอที่จะสร้างการเข้ารหัสสตรีม" เป็นปัญหาเดียวจริง ๆ หรือไม่
ปัญหาอื่นๆ ของรหัสสตรีมที่เกิดจากฟังก์ชันแฮชคืออะไร พวกเขาอาจมีความปลอดภัยน้อยกว่าหรือไม่? พวกเขาอาจจะช้าลง? พวกเขาอาจใช้หน่วยความจำมากเกินไปหรือไม่ เป็นเพียงว่ามีอัลกอริธึมการเข้ารหัสอื่น ๆ ที่วิจัยแล้วซึ่งให้ผลลัพธ์ที่ดีกว่าหรือไม่?
ฉันจะถือว่าฟังก์ชันแฮชที่มีขนาดบล็อกใหญ่ขึ้นมีข้อได้เปรียบที่สามารถใช้คีย์ที่ยาวขึ้นหรือ nonce ที่ยาวขึ้นได้ สำหรับ SHA-512 สามารถใช้คีย์ที่มีความยาว 384 บิตและมีความยาว 128 บิตได้ ความเป็นไปได้อีกอย่างคือการใช้คีย์ 256 บิตต่อไป ใช้ nonces 128 บิต และมีขนาดข้อความสูงสุดที่ดีกว่า 2^128 บล็อก (หรือ 2^137 บิตสำหรับ SHA-512) เมื่อเทียบกับ ~2^39 บิตสำหรับ AES-GCM ด้วย nonces 96 บิตเท่านั้น (ซึ่งน่าจะเป็นเป้าหมายที่ดีในความคิดของฉัน)