ฉันคิดว่าการเติมไบต์ที่บุนวมทั้งหมดด้วยเรื่องไร้สาระแบบสุ่มและไบต์สุดท้ายที่มีจำนวนไบต์ที่บุรองจะปลอดภัยกว่ามาก เหตุใดจึงไม่เป็นเช่นนั้นในมาตรฐานการเติมที่กระจายอย่างกว้างขวาง ตัวอย่างด้านล่างนี้ปลอดภัยกว่าหรือไม่
53 65 63 72 65 74 20 74 65 78 74 2e --> 53 65 63 72 65 74 20 74 65 78 74 2e 5a 2c 12 04
นี้เป็นที่รู้จักกันโดยทั่วไปว่าเป็น ช่องว่างภายใน ISO 10126เข้ากันได้กับ ช่องว่างภายใน ANSI X9.23.
ก่อนอื่น ควรสังเกตว่าการแพดดิ้งการโจมตีของออราเคิลเป็นเพียงส่วนหนึ่งของชุดการโจมตีออราเคิลแบบข้อความธรรมดาที่กว้างขึ้นดังนั้นหากข้อความธรรมดาที่ถอดรหัสสามารถสร้างข้อผิดพลาดได้ ปัญหาเดียวกันนี้อาจเกิดขึ้นได้เมื่อระบบพยายามใช้ข้อความธรรมดา ตัวอย่างเช่น มันง่ายมากที่จะสร้าง การโจมตีด้วยข้อความธรรมดาของ Oracle โดยใช้ข้อผิดพลาดของตัวถอดรหัส XML. ง่ายกว่า: หากบล็อกข้อความธรรมดาประกอบด้วยการเติมจากด้านซ้ายมือ เห็นได้ชัดว่ามันจะล้มเหลวในการโจมตีจากออราเคิลที่เติมข้อมูล
ประการที่สอง ciphertext จะได้รับการยอมรับ (เช่น ไม่สร้างข้อผิดพลาดการเติม) 1 ครั้งจาก 256 / 8 = 32 ครั้ง (มีค่าเป็นไบต์สุดท้าย 01
ถึง 08
) แทนที่จะเป็นประมาณหนึ่งครั้งใน 256 ครั้ง (ไบต์สุดท้ายมีค่า 01
หรือไบต์สุดท้ายมีค่า 02 02
ฯลฯ). สิ่งนี้ขัดขวางการใช้ช่องว่างภายในเพื่อความสมบูรณ์ของข้อความ / ความถูกต้อง
ประการที่สาม คุณได้บรรเทาการโจมตีของ oracle ที่ขยายออกไป แต่คุณยังไม่ได้กำจัดมันทั้งหมด ไบต์สุดท้ายจะยังคงต้องได้รับการประเมิน เราถือว่ารหัสแตกถ้า อะไรก็ตาม สามารถเรียนรู้ได้จากข้อความธรรมดาดั้งเดิม
ในที่สุดคุณก็ยังไม่ได้กำจัดค่าใช้จ่ายการเติม
หากคุณถือว่าค่าโสหุ้ยอยู่แล้ว คุณอาจเพิ่มแท็กการรับรองความถูกต้องซึ่งสร้างขึ้นโดยใช้ MAC หรือรหัสลับที่ผ่านการตรวจสอบแล้ว นี่คือเหตุผลที่เราไม่สนใจคุณสมบัติการเติมมากนัก เราสามารถใช้โหมดที่ไม่ต้องการการเติม เพิ่มแท็กการรับรองความถูกต้อง และมีโหมดการเข้ารหัสที่มีคุณสมบัติความปลอดภัยที่ดีกว่า ในขณะที่จำกัดการขยายข้อความ