PRP คือ การเปลี่ยนรูปแบบสุ่มหลอก และเราต้องการให้แยกไม่ออกจากการเรียงสับเปลี่ยนแบบสุ่ม AES และ block cipher ทั้งหมดควรจะเป็น PRP การเรียงสับเปลี่ยนหมายความว่ามีการผกผันและได้รับการออกแบบให้มีอย่างใดอย่างหนึ่งและมีประสิทธิภาพ
เราต้องการโหมดการทำงานสำหรับ block ciphers และเราออกจาก CBC เนื่องจากการโจมตีจำนวนมากที่เกิดขึ้น แม้ว่าจะมี Ind-CPA ที่ปลอดภัยก็ตามปัจจุบัน การเข้ารหัส TLS 1.3 ทั้งหมดใช้โหมด CTR ที่ปลอดภัยของ Ind-CPA ภายใน (ชุดการเข้ารหัส TLS 1.3 เป็นมากกว่านั้น โดยเป็นโหมดการเข้ารหัสที่ตรวจสอบความถูกต้องทั้งหมดพร้อมข้อมูลที่ตรวจสอบความถูกต้อง)
การผ่อนคลายเช่นนี้จะให้ประโยชน์อะไรแก่เราหรือไม่?
ทำให้เรามีโอกาสมากมาย เราไม่จำเป็นต้องจำกัดตัวเองให้อยู่เฉพาะ PRP ในโหมด CTR ซึ่งได้รับการออกแบบมาสำหรับสิ่งนี้แล้ว ฟังก์ชันสุ่มหลอก (PRF); โหมด CTR ไม่ต้องการส่วนผกผันของฟังก์ชัน ด้วย PRF เราสามารถใช้ฟังก์ชันได้หลากหลายที่ไม่จำเป็นต้องมีผกผัน (มี $2^น!$ PRP และ $(2^n)^{2^n}$ PRF สำหรับรหัสบล็อก n-บิต แม้แต่เราสามารถใช้ฟังก์ชันแฮชและแปลงเป็นการเข้ารหัส CTR ได้ ซัลซ่า. เราอาจออกแบบตารางเวลาที่สำคัญโดยมีค่าใช้จ่ายเกือบเป็นศูนย์เช่นกัน
การใช้ PRP ในโหมด CTR อาจทำให้เกิด ตัวแยกข้อความยาว และเราสามารถกำจัดสิ่งนี้ได้โดยใช้ PRF หากเราใช้ PRP ในโหมด CTR เราจำเป็นต้องจำกัดจำนวนบล็อกการเข้ารหัสเนื่องจากการสลับบทแทรกของ PRP-PRF
นอกจากนี้ โหมด CTR ยังไม่ต้องการการเติม ดังนั้นจึงมีภูมิคุ้มกันต่อการโจมตีจาก Oracle
ChaCha20 และ Salsa20 เป็นตัวอย่างที่รู้จักกันดีซึ่งมีต้นทุนกำหนดการคีย์เป็นศูนย์ การออกแบบ ARX ที่เป็นมิตรกับ CPU พวกเขามีโหมด CTR ในตัวและมีซอฟต์แวร์ที่รวดเร็วมาก