ลองพิจารณาบล็อกรหัสในโหมด CTR และลองพิจารณา PRNG ที่มีคีย์หรือ PRNG ที่ดีที่มีเมล็ดเป็นคีย์ PRNG จะต้องเร็วมาก
เป็นความคิดที่ดีหรือไม่ที่จะเลิกใช้กำหนดการที่สำคัญและทำการกำหนดเวลาที่สำคัญแบบ "ไม่สิ้นสุด" โดยการสร้างสตรีมคีย์ จากนั้นทุกบล็อกในรหัสจะถูกเข้ารหัสด้วยรหัสที่แตกต่างกัน
แน่นอนว่าแม้แต่ PRNG ที่รวดเร็วก็ยังต้องการเวลาในการสร้าง 128 สักเล็กน้อย
คีย์ -bit สำหรับตัวเลข แต่สิ่งนี้ไม่ได้เพิ่มความปลอดภัยให้กับอัลกอริทึมดังกล่าวมากนักใช่ไหม หากตัวอัลกอริทึมเองเป็นแบบดั้งเดิมที่รวดเร็วมาก (เช่น เร็วเท่ากับ Chacha20) ก็ควรมีความปลอดภัยที่ยอดเยี่ยมและความเร็วที่ดีหากเชื่อมโยงกับ "สตรีมกำหนดการที่สำคัญ" เช่นนี้
อย่างไรก็ตาม ฉันสงสัยว่าความเร็วของโซลูชันดังกล่าวอาจเป็นอุปสรรคสำคัญ เอาล่ะ เรามาเปลี่ยนแปลงทุกครั้งที่มีการทำซ้ำอัลกอริทึม (การเข้ารหัสเดี่ยว) โดยพลิกคีย์เพียงบิตเดียวต่อรอบ หากอัลกอริทึมต้องการหนึ่งคีย์ต่อรอบและมีสิบรอบ เราต้องการเพียงสิบบิต PRNG จะสร้างบิตดังกล่าวอย่างรวดเร็ว จากนั้นคีย์จะเปลี่ยนไปหลังจากการเข้ารหัสแต่ละครั้ง ไม่มาก (เราเปลี่ยนเพียงบิตเดียวในทุกคีย์) แต่น่าจะเป็นอุปสรรคอย่างมากสำหรับผู้โจมตี
บางทีเราอาจใช้อะไรง่ายๆ เช่น AES สองรอบ แต่ไม่เพิ่มอีกสองรอบในการเข้ารหัส ลองใช้สิ่งนี้เพื่อสร้างคีย์สตรีมเพื่อผสมกับคีย์ในการเข้ารหัสใหม่
คำถามของฉันเกี่ยวกับข้อเสียของโซลูชันดังกล่าว เท่าที่ฉันรู้ มันไม่ได้ใช้ - ทำไม? กล่าวอีกนัยหนึ่ง เหตุใดเราจึงใช้ค่าคงที่และคีย์เดียวกันในรอบ (เมื่อเข้ารหัสข้อความจำนวนมาก ) เมื่อคีย์สามารถแก้ไขได้ด้วยต้นทุนที่ต่ำหลังจากการเข้ารหัสแต่ละครั้ง ตัวอย่างเช่น โดยการเพิ่มหนึ่งบิต mod 2 (หลังจากการเข้ารหัสอื่น เราจะเพิ่มอีกหนึ่งบิตในตำแหน่งที่สูงขึ้น เป็นต้น เปลี่ยนคีย์ 128 บิตทั้งหมดหลังจากการเข้ารหัส 128)