มีแนวความคิดในการเข้ารหัสลับเมื่อพูดถึงคีย์: หนึ่งการใช้งานหนึ่งคีย์.
ซึ่งให้เหตุผลในระดับแรกต่อการใช้คีย์แยกกันในแต่ละทิศทาง: แต่ละทิศทางคือการใช้คีย์ที่แตกต่างกัน
ระดับต่อไปคือการแสดงให้เห็นว่าการโจมตีนี้ป้องกันระดับใด นั่นคือ: การโจมตีกระจก ลองนึกภาพว่ามีการใช้คีย์เข้ารหัสและคีย์การตรวจสอบสิทธิ์ (แยกกัน) ในทั้งสองทิศทาง มีความเป็นไปได้อย่างน้อยที่ฝ่ายตรงข้ามสามารถนำข้อมูลที่เข้ารหัสและรับรองความถูกต้องที่ส่งมาจากเซิร์ฟเวอร์ และส่งซ้ำไปยังเซิร์ฟเวอร์ราวกับว่ามันมาจากไคลเอนต์ เมื่อแยกรายละเอียดในโปรโตคอล ข้อมูลส่วนนั้นจะผ่านการรับรองความถูกต้องและถูกถอดรหัสราวกับว่ามันมาจากไคลเอนต์ ซึ่งขัดกับคำกล่าวที่เรียบง่ายกว่าของวัตถุประสงค์ของโปรโตคอล และเป็นการหยุดชะงัก (การแสวงหาผลประโยชน์นั้นขึ้นอยู่กับรายละเอียดที่เราไม่ต้องการพิจารณา) ตรงกันข้ามกับสถานการณ์ที่ใช้คีย์ที่แตกต่างกัน: การรับรองความถูกต้องล้มเหลว (และการถอดรหัส ถ้าเกิด ทำให้เกิดขยะ)
เพิ่มเติม: มีวิธีอื่นๆ ที่มีประสิทธิภาพในการป้องกันการโจมตีแบบมิเรอร์ (เช่น การระบุผู้รับที่ต้องการในการเข้ารหัสลับที่รับรองความถูกต้อง) บางครั้งมีเหตุผลที่ดีที่จะใช้สิ่งนี้แทนที่จะใช้หลายปุ่ม (เช่น การลดรอยเท้าหน่วยความจำของแชนเนลที่เปิดอยู่ให้เหลือน้อยที่สุด)