การตรวจสอบฉลากที่ไม่ตรงเวลานั้นอันตรายแค่ไหน?
เท่าที่ฉันสามารถบอกได้ไม่มาก ตราบใดที่ป้ายกำกับนั้นเปิดเผยต่อสาธารณะ และการตรวจสอบนี้ดำเนินการและไม่ได้กำหนดเงื่อนไขโดยการตรวจสอบ 0x00 ไบต์ทางด้านซ้ายของผลลัพธ์ของการถอดรหัส RSA แบบดิบ/แบบเรียน $c^d\bmod n$. ซึ่งใช้โดยไม่คำนึงว่าการดำเนินการถอดรหัสจะรองรับป้ายกำกับหรือไม่
เดอะ บันทึกความปลอดภัยใน PKCS#1v2.2 ที่กล่าวถึงในคำถามอ่านว่า:
บันทึก. ต้องใช้ความระมัดระวังเพื่อให้แน่ใจว่าคู่ต่อสู้ไม่สามารถแยกแยะเงื่อนไขข้อผิดพลาดต่างๆ ในขั้นตอนที่ 3.f ได้ ไม่ว่าจะด้วยข้อความแสดงข้อผิดพลาดหรือเวลา หรือโดยทั่วไป ให้เรียนรู้ข้อมูลบางส่วนเกี่ยวกับข้อความที่เข้ารหัส อีเอ็ม. มิฉะนั้น ฝ่ายตรงข้ามอาจสามารถรับข้อมูลที่เป็นประโยชน์เกี่ยวกับการถอดรหัสข้อความเข้ารหัส C ซึ่งนำไปสู่การโจมตีข้อความเข้ารหัสที่เลือก เช่น การโจมตีที่สังเกตโดย Manger [35].
หมายเหตุนั้นอ้างอิงถึงการทดสอบ (ตัวหนาด้านล่าง) ที่ส่วนท้ายของขั้นตอนที่ 3.g ของการดำเนินการถอดรหัส:
แยก ฐานข้อมูล ลงในสตริงออกเตต lHashâ ความยาว hLen, สตริงการเติม (อาจว่างเปล่า) ปล ประกอบด้วยออคเต็ตที่มีค่าเลขฐานสิบหก 0x00 และข้อความ M เป็น
เธ เธ เธ เน เธ ฐานข้อมูล = lHashâ || ปล || 0x01 || ม .
ถ้าไม่มี octet ที่มีค่าเลขฐานสิบหก 0x01 ให้แยก ปล จาก ม, ถ้า แฮช ไม่เท่ากัน lHashâ, หรือถ้า วาย ไม่เป็นศูนย์, เอาต์พุต âข้อผิดพลาดในการถอดรหัสâ และหยุด
âตรวจสอบฉลากâ ในคำถามหมายถึงการเปรียบเทียบของ แฮช (แฮชของป้ายกำกับหรือสตริงว่างคือไม่มีป้ายกำกับ) และ lHashâ. ไบต์ วาย คือทางด้านซ้ายของ bytesting ที่เป็นตัวแทน $c^d\bmod n$ ในสัญกรณ์ big-endian บนจำนวนไบต์เท่าที่จำเป็นเพื่อแสดงโมดูลัสสาธารณะ $n$, และ $ค$ โดยพื้นฐานแล้วคือข้อความเข้ารหัสที่นำเสนอต่อเครื่องมือถอดรหัส
ถ้าเราทำการเปรียบเทียบของ lHashâ และ แฮช มีเงื่อนไขก็ต่อเมื่อการเปรียบเทียบของ วาย ถึง 0x00 สำเร็จ (เช่น ถ้าเราเปรียบเทียบ วาย || lHashâ ถึง 0x00 || แฮช กับ memcmp
ของไลบรารีมาตรฐาน C) แล้วเราอยู่ในเงื่อนไขที่กำหนดโดย การโจมตีของผู้จัดการซึ่งช่วยให้สามารถถอดรหัสข้อความโดยการส่งรหัสลับที่ไม่ถูกต้องซ้ำๆ ไปยังอุปกรณ์ถอดรหัสและสังเกตปฏิกิริยาของมัน
ถ้าเราทำการเปรียบเทียบของ lHashâ ถึง แฮช ในเวลาที่ไม่แน่นอน แต่ไม่ว่าอย่างไรก็ตาม วาย ตรงกับ 0x00 (และทำการทดสอบนั้นของ วาย และเป็นการรวมเข้ากับการทดสอบของ lHashâ ในเวลาคงที่หรือทำการทดสอบนั้น วาย อย่างมีเงื่อนไขถ้าการเปรียบเทียบของ lHashâ ถึง แฮช สำเร็จ) สถานการณ์ไม่ได้เลวร้ายนัก เนื่องจากการเปลี่ยนแปลงของเวลาของเรารั่วไหลโดยไม่มีเงื่อนงำว่าจะเกิดขึ้นหรือไม่ วาย ตรงกับ 0x00 ซึ่งเป็นสิ่งที่ฝ่ายตรงข้ามต้องการทราบมากที่สุด แม้ว่าฝ่ายตรงข้ามจะยังคงได้รับข้อมูลบางส่วนเกี่ยวกับ อีเอ็มฉันไม่เห็นว่าการโจมตีสามารถทำงานได้แม้ว่าจะมีการสืบค้นเครื่องมือถอดรหัสมากขึ้นเพราะทุกไบต์ของ lHashâ ในช่วงเวลาของการเปรียบเทียบขึ้นอยู่กับแต่ละบิตของ อีเอ็ม ข้างผู้ที่อยู่ใน วาย.
ไม่ตรวจสอบ lHashâ ไม่ใช่การใช้งาน RSAES-OAEP ที่ถูกต้องโดยไม่มีการสนับสนุนแท็ก (ในกรณีนี้ การเปรียบเทียบจะต้องดำเนินการกับแฮชของสตริงว่าง) และมีแนวโน้มที่จะเปิดใช้การโจมตีของ Manger
ฉันนึกถึงฉลากลับที่แชร์ล่วงหน้าซึ่งถูกเดาโดยบุคคลภายนอกด้วยรหัสสาธารณะเข้ารหัสเป็นสถานการณ์เดียว
ภาพในใจของฉันสำหรับฉลากคือมันเป็น สาธารณะ ค่าคงที่มีไว้เพื่อให้คู่คีย์สาธารณะ/ส่วนตัวคู่เดียวถูกใช้ในบริบทที่เป็นอิสระต่อกัน ซึ่งมีประโยชน์ในการหลีกเลี่ยงการโจมตีที่ส่งต่อ ภายนอก ciphertext ที่รับรองความถูกต้อง (เช่น ลงนามโดยผู้ริเริ่ม) ไปยังบริบทที่ไม่ได้ตั้งใจจะได้รับ ฉันไม่เคยรู้มาก่อนว่าป้ายกำกับ (หรือแฮช) สามารถเป็นความลับที่แบ่งปันล่วงหน้าได้ และใช้เพื่อรับรองความถูกต้องของรหัสลับที่ส่งไปยังอุปกรณ์ถอดรหัส RSAES-OAEP หากมีหลักฐานความปลอดภัยของ RSAES-OAEP ภายใต้การใช้งานนั้น ฉันพลาดไปแล้ว และแน่นอนว่ามันสำคัญมากที่การเปรียบเทียบระหว่าง lHashâ และ แฮช เป็นเวลาคงที่
มีคนอื่นอีกไหม?
ข้าง การโจมตีของผู้จัดการ พิจารณาแล้วไม่เห็นมีเลย