ก่อนอื่นควรทราบเกี่ยวกับคำศัพท์: ความปลอดภัยเชิงความหมายเป็นคุณสมบัติของรหัส ไม่ใช่วิธีการหรืออัลกอริทึม ดังนั้น "semantic security" จึงไม่สามารถป้องกันอะไรได้ แน่นอน ถ้าการเข้ารหัสมีความปลอดภัยทางความหมาย ก็ควรป้องกันการกู้คืนคีย์ เนื่องจากการกู้คืนคีย์จะนำไปสู่การกู้คืนข้อความธรรมดาโดยตรง หากสามารถกู้คืนข้อความธรรมดาทั้งหมดได้ แสดงว่าไม่ปลอดภัยทางความหมาย
รหัสบล็อกเป็นอัลกอริทึม (ดั้งเดิม) ที่ สามารถนำไปสร้าง การเข้ารหัสที่ปลอดภัยทางความหมาย ตัวเข้ารหัสบล็อกเองควรป้องกันการกู้คืนคีย์ ตราบใดที่คุณไม่ได้ใช้รหัสซ้ำที่อื่นในโครงการ - และนั่นเป็นค่าเริ่มต้นที่สมเหตุสมผล - คุณก็ไม่จำเป็นต้องให้การป้องกันเพิ่มเติม นี่อาจเป็นสาเหตุที่ไม่ได้กล่าวถึงเป็นพิเศษ
ตอนนี้หากคุณไม่ได้ใช้รหัสบล็อกเลย (รหัสสตรีมอาจใช้ไม่ได้) หรือถ้าคุณใช้รหัสโดยตรงเพื่อสร้างเช่น แท็กการพิสูจน์ตัวตน ใช่แล้ว คุณต้องมีการป้องกันเพิ่มเติมจากการกู้คืนคีย์
ระวังว่าโครงร่างบางอย่างแนะนำองค์ประกอบข้อมูลใหม่ที่อาจ ทำหน้าที่เป็นกุญแจ ในโครงการ หากเป็นกรณีนี้ โครงสร้างควรให้การป้องกันการกู้คืนคีย์เหล่านั้น นี่คือตัวอย่าง กรณีสำหรับค่า $H$ - ปุ่มแฮชย่อย - ในโหมด GCM
โปรดทราบว่าแท็กการรับรองความถูกต้องจะคำนวณเหนือข้อความเข้ารหัสในโหมด GCM ดังนั้นการเข้ารหัสจะยังคงปลอดภัยทางความหมายแม้ว่าคีย์นั้นจะรั่วไหลแม้ว่าคุณสมบัติการตรวจสอบสิทธิ์ข้อความจะใช้งานไม่ได้ก็ตาม สิ่งนี้ยังอาจนำไปสู่การสูญเสียความลับเนื่องจากการโจมตีด้วยออราเคิลแบบข้อความธรรมดา แต่นั่นก็อยู่นอกเหนือคำจำกัดความของการเข้ารหัส
การเข้ารหัสจะถือว่าปลอดภัยทางความหมายเนื่องจากโหมด CTR ซึ่งเป็นโหมดการเข้ารหัสพื้นฐานของ GCM จะยังคงให้ความปลอดภัยทางความหมาย