ในวิทยาการเข้ารหัสลับ การเติมคือวิธีปฏิบัติที่แตกต่างกันหลายประการ ซึ่งทั้งหมดรวมถึงการเพิ่มข้อมูลไปยังจุดเริ่มต้น ตรงกลาง หรือจุดสิ้นสุดของข้อความก่อนการเข้ารหัส
นี่เป็นประโยคย่อ
โหมดการเข้ารหัสแบบบล็อก เช่น CBC และ ECB จำเป็นต้องมีการเติมเพื่อให้สามารถเข้ารหัสบล็อกข้อความได้อย่างถูกต้อง ไม่ใช่ข้อความทั้งหมดที่มีขนาดบล็อกหลายเท่าของรหัส การเติมทั่วไปคือ PKCS#7 และนำไปใช้ในตอนท้าย เมื่อเร็ว ๆ นี้ เทรนด์อยู่ในโหมดเช่น CTR ที่ไม่ต้องการช่องว่างภายใน สิ่งนี้ลบเวกเตอร์โจมตีหนึ่งตัว การขยายการโจมตีของออราเคิล
การเข้ารหัสคีย์สาธารณะของ RSA จำเป็นต้องมีการเติมเพื่อความปลอดภัยจากการโจมตี ในกรณีนี้ ข้อมูลจะนำหน้าอักขระคงที่และอักขระสุ่มบางตัว
- สศอ. : $\text{T=lhash||PS||01||ข้อความ}$
- PKCS#1.v5 : $\text{EM = 0x00 || 0x02 || ปล.|| 0x00 || ข้อความ}$
ในขณะที่การแฮช หากเราต้องการการเชื่อมสองสายเข้าด้วยกัน เราจะไม่เชื่อมสองสายในลักษณะการต่อสายแบบ Sting เพียงอย่างเดียว แต่เราจะเพิ่มตัวคั่นพิเศษเข้าไป เพื่อไม่ให้เกิดการชนกันแบบง่ายๆ
$$แฮช(\texttt{abcd||efgh}) = แฮช(\texttt{abc||defgh})$$ ที่ไหน $s_1 = abcd, s_2 = efgh, s_3 = abc, s_4 = defgh$ เป็น 4 สตริงที่แตกต่างกัน แต่การเชื่อมโยงกันยังคงสร้างค่าแฮชเดียวกัน เพื่อบรรเทา เราใช้ช่องว่างระหว่างกลางด้วยค่าพิเศษบางอย่างกับโดเมน
$$Hash(\texttt{abcd||<sperator>||efgh}) \neq Hash(\texttt{abc||<sperator>||defgh})$$ การเปลี่ยนแปลงของการชนกันนั้นเล็กน้อยสำหรับแฮชการเข้ารหัสที่ดี
ในการเข้ารหัสแบบคลาสสิก การเติมอาจรวมถึงการเพิ่มวลีไร้สาระในข้อความเพื่อบดบังข้อเท็จจริงที่ว่าข้อความจำนวนมากจบลงด้วยวิธีที่คาดเดาได้
นี่เป็นเพราะความจริงที่ว่าเราไม่ต้องการให้ข้อมูลธรรมดาแก่ผู้โจมตี ซึ่งอัลกอริทึมแบบดั้งเดิมเกือบทั้งหมดไม่ปลอดภัยต่อสิ่งนี้
พิจารณาขนาดรหัสของฮิลล์ $n$ และถ้าบล็อกสุดท้ายมีอักขระเพียงตัวเดียวจากข้อความ และถ้าคุณเติมค่าที่เหลือด้วยค่าที่ทราบคงที่ แสดงว่าคุณให้คีย์ของคุณแก่ฝ่ายตรงข้าม พวกเขาเพียงแค่ต้องแก้ระบบสมการ 26 ครั้งเพื่อให้ได้รหัสเข้ารหัส
อย่างที่คุณเห็นแล้วว่าช่องว่างภายในนั้นเกี่ยวกับความปลอดภัยและการปฏิบัติงานมากกว่า
ดูเหมือนว่า Checksum จะให้บริการในลักษณะเดียวกัน ซึ่งเพิ่มเข้ามาในข้อความ และผู้ตรวจสอบจะตรวจสอบผลรวมและโมดูลาร์ของตัวหารที่ตกลงไว้ล่วงหน้า
การตรวจสอบเป็นเรื่องเกี่ยวกับการตรวจหาข้อผิดพลาด ที่นี่เราแยกความแตกต่างของการตรวจสอบความถูกต้องในการเข้ารหัสที่เราใช้ฟังก์ชันแฮช ฟังก์ชันแฮชสามารถตรวจจับข้อผิดพลาดได้ อย่างไรก็ตาม ฟังก์ชันเหล่านี้มีประสิทธิภาพมากกว่าการตรวจสอบผลรวม
โปรดทราบว่าแม้ว่าการเติมสามารถระบุข้อผิดพลาดได้ เช่น การเติม PKCS#7 แต่นั่นไม่ได้หมายความว่าจุดประสงค์คือความสมบูรณ์ (หรือการตรวจสอบ) และที่น่าสนใจคือ ข้อผิดพลาดนี้ใช้การเว้นระยะจากการโจมตีของ Oracle เพื่อถอดรหัสข้อความบนเซิร์ฟเวอร์ที่ส่งกลับ ข้อผิดพลาด.