หากมีวิธีการตรวจสอบความถูกต้องของข้อความธรรมดาอยู่แล้ว เป็นไปได้ที่จะข้ามการรับรองความถูกต้องของข้อความธรรมดาหรือข้อความเข้ารหัสด้วยวิธีอื่น
แน่นอนว่ามีของ catcha อยู่บ้าง
ประการแรก ไม่ควรใช้ข้อความธรรมดาไม่ว่าด้วยวิธีใดก่อนที่จะตรวจสอบค่าแฮชที่ผ่านการรับรองความถูกต้องแล้วหากไม่ใช่กรณีนี้ ผู้โจมตีสามารถเปลี่ยนข้อความธรรมดาได้ ซึ่งหมายความว่าฝ่ายนั้นอาจถูกโจมตีหลายประเภท รวมถึงข้อความธรรมดา oracle หรือข้อผิดพลาดที่อาจเกิดจากการแทรก
นอกจากนี้ การใช้งานไม่ควรให้ข้อมูลใด ๆ เกี่ยวกับกระบวนการถอดรหัส หากเป็นเช่นนั้น การนำไปใช้งานอาจถูกโจมตีจากช่องทางด้านข้าง แย่กว่านั้นถ้าเช่น ใช้ CBC จากนั้นจึงใช้ช่องว่างภายใน ดังนั้นจึงเหมาะสมกว่าที่จะใช้ AES-CTR หรือรหัสสตรีมเช่น ChaCha20
ข้อผิดพลาดในการออกแบบ/การใช้งาน 2 รายการล่าสุดสามารถหลีกเลี่ยงได้เมื่อใช้โหมดการรับรองความถูกต้อง ดังนั้นจึงสามารถใช้โหมดตรวจสอบความถูกต้องได้แม้ว่ารหัสจะไม่น่าเชื่อถือก็ตาม ข้อเสียประการหนึ่งคือนักพัฒนารายอื่นอาจสันนิษฐานว่าโหมดการรับรองความถูกต้องมีการรับรองความถูกต้องที่จำเป็น และเริ่มใช้ข้อความธรรมดาแม้ว่าข้อความจะยังไม่ได้รับการรับรองความถูกต้องก็ตาม
โดยส่วนตัวแล้วฉันจะไม่ใช้โหมดรับรองความถูกต้องสำหรับสิ่งนี้
โปรดทราบว่าการจัดการ IV ไม่ได้ระบุไว้ในโปรโตคอลที่คุณอธิบาย ไม่จำเป็นต้องเป็นส่วนหนึ่งของแฮชหากเป็นการปกป้องข้อความธรรมดาแทนที่จะเป็นข้อความไซเฟอร์ อย่างไรก็ตาม คุณควรตรวจสอบให้แน่ใจว่าข้อความนั้นไม่ซ้ำกันสำหรับแต่ละข้อความที่เข้ารหัสด้วยคีย์เดียวกัน (และหากคุณใช้โหมด CBC ก็จะคาดเดาไม่ได้)
ฉันยังไม่เห็นว่าโปรโตคอลนั้นไวต่อการโจมตีแบบเล่นซ้ำและการโจมตีแบบคาดเดาข้อความธรรมดาหรือไม่ หากใช้แฮชที่ผ่านการรับรองความถูกต้องทั้งสำหรับการระบุตัวตนและการรับรองความถูกต้อง