เทคนิคนี้ล่าช้าโดยเจตนาคือการป้องกันการโจมตีเช่น"การโจมตี Linearization" (มีการโจมตีอื่น ๆ และเหตุผลเช่นกัน)
เพื่อแสดงให้เห็นการโจมตีพิจารณาโปรแกรม (โดยไม่ชักช้าโดยเจตนานี้) ซึ่งการตรวจสอบป้อนอนุกรมเพื่อดูว่ามันตรงกับอนุกรมที่ถูกต้องซึ่งในกรณีนี้จะเกิดขึ้น " xyba " เพื่อประสิทธิภาพโปรแกรมเมอร์ตัดสินใจที่จะตรวจสอบตัวละครทีละตัวและออกทันทีที่พบตัวอักษรที่ไม่ถูกต้องก่อนที่จะเริ่มการตรวจสอบความยาว
ความยาวอนุกรมที่ถูกต้องจะใช้เวลาในการประมวลผลนานกว่าความยาวอนุกรมที่ไม่ถูกต้อง ยิ่งกว่านั้น (สำหรับผู้โจมตี) หมายเลขซีเรียลที่มีตัวอักษรตัวแรกที่ถูกต้องจะใช้เวลานานกว่าตัวที่มีตัวอักษรตัวแรกไม่ถูกต้อง ขั้นตอนต่อเนื่องในช่วงเวลารอคอยคือเนื่องจากแต่ละครั้งมีการวนซ้ำอีกครั้งการเปรียบเทียบการป้อนข้อมูลที่ถูกต้อง
- ดังนั้นผู้โจมตีสามารถเลือกสตริงสี่ตัวอักษรและสตริงที่ขึ้นต้นด้วยxใช้เวลามากที่สุด (โดยเดางาน)
- จากนั้นผู้โจมตีสามารถแก้ไขอักขระเป็นxและเปลี่ยนแปลงอักขระที่สองซึ่งในกรณีนี้พวกเขาจะพบว่าyใช้เวลานานที่สุด
- จากนั้นผู้โจมตีสามารถแก้ไขอักขระสองตัวแรกเป็นxyและเปลี่ยนแปลงอักขระที่สามซึ่งในกรณีนี้พวกเขาจะพบว่าbใช้เวลานานที่สุด
- จากนั้นผู้โจมตีสามารถแก้ไขอักขระสามตัวแรกเป็นxybและเปลี่ยนแปลงอักขระที่สี่ซึ่งในกรณีนี้พวกเขาจะพบว่าaใช้เวลานานที่สุด
ดังนั้นผู้โจมตีสามารถกู้คืนหมายเลขซีเรียลได้ทีละตัวอักษร
Linearization.java
Linearization.docx, เอาต์พุตตัวอย่าง
หมายเลขซีเรียลมีความยาวสี่ตัวอักษรและแต่ละตัวมี 128 ค่าที่เป็นไปได้ แล้วมี 128 4 = 2 28 = 268,435,456 สิ่งพิมพ์ที่เป็นไปได้ ถ้าโจมตีแบบสุ่มต้องเดาหมายเลข serial สมบูรณ์เธอจะคาดเดาหมายเลขในประมาณ
2 27 = 134,217,728 พยายามซึ่งเป็นจำนวนเงินมหาศาลในการทำงาน ในทางตรงกันข้ามโดยการใช้การโจมตีเชิงเส้นด้านบนจะต้องใช้ค่าเฉลี่ยเพียง 128/2 = 64 การคาดเดาสำหรับจดหมายแต่ละฉบับสำหรับงานที่คาดหวังทั้งหมดประมาณ 4 * 64 = 2 8 = 256 การเดา
ซึ่งเป็นจำนวนเล็กน้อย ของการทำงาน.
ศิลปะการต่อสู้ส่วนใหญ่ถูกดัดแปลงมาจากสิ่งนี้ (นำมาจาก "ความปลอดภัยของข้อมูล: หลักการและการปฏิบัติ" ของมาร์คแสตมป์) นอกจากนี้การคำนวณข้างต้นไม่ได้คำนึงถึงจำนวนของการคาดเดาที่จำเป็นในการหาความยาวอนุกรมที่ถูกต้อง