ความสมบูรณ์ (การเข้ารหัส)
ในการเข้ารหัสลับฟังก์ชันบูลีนจะเรียกว่าสมบูรณ์หากค่าของบิตเอาต์พุตแต่ละบิตขึ้นอยู่กับบิตอินพุตทั้งหมด[ 1 ] [ 2 ]
นี่เป็นคุณสมบัติที่พึงประสงค์สำหรับการเข้ารหัส เพราะหากบิตใดบิตหนึ่งของข้อมูลนำเข้า ( ข้อความต้นฉบับ ) เปลี่ยนไป ทุกบิตของข้อมูลส่งออก ( ข้อความเข้ารหัส ) จะมี โอกาส เปลี่ยนแปลง โดยเฉลี่ย 50% วิธีที่ง่ายที่สุดที่จะแสดงให้เห็นว่าทำไมจึงดีคือ ลองพิจารณาว่าหากเราเปลี่ยนไบต์สุดท้ายของข้อความต้นฉบับ 8 ไบต์ มันจะมีผลเฉพาะกับไบต์ที่ 8 ของข้อความเข้ารหัสเท่านั้น ซึ่งหมายความว่าหากผู้โจมตีเดาคู่ข้อความต้นฉบับ-ข้อความเข้ารหัสได้ 256 คู่ เขาจะรู้ไบต์สุดท้ายของลำดับ 8 ไบต์ทุกชุดที่เราส่ง (คิดเป็น 12.5% ของข้อมูลทั้งหมดของเรา) การค้นหาคู่ข้อความต้นฉบับ-ข้อความเข้ารหัส 256 คู่ไม่ใช่เรื่องยากเลยในโลกอินเทอร์เน็ต เนื่องจากมีการใช้โปรโตคอลมาตรฐาน และโปรโตคอลมาตรฐานมีส่วนหัวและคำสั่งมาตรฐาน (เช่น "get", "put", "mail from:", เป็นต้น) ซึ่งผู้โจมตีสามารถเดาได้อย่างปลอดภัย ในทางกลับกัน หากรหัสลับของเรามีคุณสมบัตินี้ (และมีความปลอดภัยโดยทั่วไปในด้านอื่นๆ ด้วย) ผู้โจมตีจะต้องรวบรวมคู่ข้อความธรรมดา-ข้อความเข้ารหัสจำนวน 2 64 (~10 20 ) คู่ เพื่อถอดรหัสลับด้วยวิธีนี้