Score:1

ทำลาย RSA โดยไม่ต้องเติมโดยใช้การโจมตีตารางสายรุ้ง

ธง cl

เรากำลังใช้ RSA โดยไม่มี OAEP โดยมีโดเมนอินพุตที่ค่อนข้างเล็ก

สมมติว่าเราเชื่อมต่อระหว่าง John และ Bob และเรากำลังดักฟังพวกเขา Bob ส่งรหัสสาธารณะของเขา (e,n) ให้ John ก่อน จากนั้น John จะเข้ารหัสข้อความของเขา m และส่งในบรรทัดที่เข้ารหัส เมื่อเราดักฟังสาย เราจะได้รับข้อความที่เข้ารหัสของเขา เช่น 3211 4431 9938 ... (ฉันใช้โมดูโลต่ำสำหรับตัวอย่างเท่านั้น)

ฉันในฐานะผู้โจมตีสามารถสร้างตารางการเข้ารหัสสายรุ้งสำหรับแต่ละหมายเลขตั้งแต่ 0 ถึง n จากนั้นถอดรหัสข้อความของ John โดยใช้ตารางที่ฉันสร้างขึ้น

  1. ฉันถูกไหม?
  2. เมื่อเราใช้เทคนิคการแพดดิ้ง เรากำลังป้องกันการโจมตีนี้ (ใช่ไหม) โดยการใส่บิตแบบสุ่มลงในข้อความ แต่ตัวถอดรหัส (Bob) สามารถ 'ลบ' บิตสุ่มเหล่านั้นได้อย่างไรหากเขาไม่รู้จัก
kelalaka avatar
in flag
หากคุณสามารถสร้างตารางเรนโบว์สำหรับโมดูลัสขนาด 2048 คุณไม่จำเป็นต้องกังวลเกี่ยวกับ OAEP เลย สำหรับข้อความสั้น ใช่ มีอันตรายสำหรับ TextBook RSA การเติมเป็นสิ่งสำคัญในการดูการเข้ารหัสที่น่าจะเป็น
kelalaka avatar
in flag
q/[ความแตกต่างระหว่างการโจมตีด้วยข้อความธรรมดาที่รู้จักและการโจมตีการค้นหาไปข้างหน้า](https://crypto.stackexchange.com/q/15040/18298)
Maarten Bodewes avatar
in flag
@kelalaka ฉันไม่เห็นว่าตำราเรียน RSA จะมีปัญหาจากการสร้างตารางสีรุ้งสำหรับรหัสสาธารณะเฉพาะได้อย่างไร ทุกอย่างขึ้นอยู่กับโดเมนอินพุตและหากคุณมีเพียงข้อความเดียวก็จะใช้เวลานานเท่ากับการบังคับข้อความอย่างดุร้ายในตอนแรก สามารถดูวิธีอื่นๆ ในการโจมตีตำรา RSA ได้[ที่นี่](https://crypto.stackexchange.com/q/20085/1172)
kelalaka avatar
in flag
@MaartenBodewes สำหรับคีย์สาธารณะและโมดูลัสแต่ละรายการ คุณสามารถสร้างตารางสายรุ้งสำหรับขนาดข้อความไม่เกิน 2048 ได้หรือไม่ สำหรับข้อความสั้นๆ ใช่ เป็นไปได้ ประเด็นของฉันคือถ้าคุณสามารถเข้าถึงขนาดโมดูลัสของตารางได้ คุณก็สามารถทำลายโมดูลัสได้ :)
Maarten Bodewes avatar
in flag
ใช่ นั่นคือสิ่งที่ฉันหมายถึงกับ "โดเมนอินพุต"ฉันไม่คิดว่ามันเป็นวิธีที่ไม่ดีในการโจมตีโดเมนอินพุตขนาดเล็กและข้อความจำนวนมาก พูดตามตรง และมันก็เป็นการโจมตีทั่วไปเช่นกัน นั่นเป็นเหตุผลที่ฉันเปิดคำถามอีกครั้ง เนื่องจากเรามี Q/A เพื่อแสดงรายการการโจมตีทั้งหมดบนข้อความธรรมดา RSA แล้ว
Yotam Sofer avatar
cl flag
@MaartenBodewes ถ้าฉันถือว่าข้อความมีเฉพาะตัวอักษร ascii ดังนั้นโดเมนอินพุตจึงเล็กมากใช่ไหม และควรแตกหักง่าย ยิ่งกว่านั้น คำตอบสำหรับคำถามส่วนที่สองของฉันคืออะไร
Maarten Bodewes avatar
in flag
ได้ คุณสามารถปิดการโจมตีนี้ได้หากคุณเพิ่มบิตสุ่ม *เพียงพอ* คุณสามารถใช้การเข้ารหัสแบบใดก็ได้สำหรับสิ่งนี้ จริง ๆ แล้ว PKCS#1 มีการเข้ารหัสที่ค่อนข้างง่าย: ไบต์มีค่า 01..FF และ 00 เป็นค่าไบต์สิ้นสุด (โดยมีข้อเสียอย่างมากตรงที่ต้องมีช่วงจาก PRNG แน่นอน) แต่ การเข้ารหัสย้อนกลับอื่น ๆ จะทำ หลังจากที่คุณสามารถระบุบิตแบบสุ่มได้แล้ว คุณก็สามารถเพิกเฉยต่อบิตเหล่านั้นและส่งข้อความกลับได้ แน่นอนว่ายังมีการโจมตีอื่นๆ **เช่น** การโจมตีจากช่องว่างที่เป็นไปได้ใน PKCS#1 และ OAEP ฉันคิดว่านั่นต้องมีการศึกษาเพิ่มเติม
kelalaka avatar
in flag
@MaartenBodewes การเติมใดๆ นั้นกว้างเกินไป อย่างไรก็ตาม หากขนาดรวมของข้อความที่มีการเติมแบบสุ่มอยู่ในช่วงของตารางสายรุ้ง เราจะเห็นบิตแบบสุ่มด้วยเช่นกัน...
Score:2
ธง ng
  1. ใช่ การโจมตีในคำถามจะใช้ได้กับโมดูโลต่ำของตัวอย่างคำว่า "พจนานุกรม" เหมาะสมกว่า "ตารางสีรุ้ง" (ใช้ในบริบทของการสร้างตารางขนาดกะทัดรัดของแฮชที่คำนวณล่วงหน้า)

    การโจมตีจริงไม่สามารถทำงานในลักษณะนี้ได้ ในทางปฏิบัติ RSA เป็นไปไม่ได้ที่จะสร้างพจนานุกรมขนาดใหญ่พอ เนื่องจากจะใช้เวลามากเกินไปในการสร้าง (สัดส่วนกับโมดูลัส $n$ซึ่งโดยทั่วไปแล้วในปัจจุบันจะมีขนาดอย่างน้อย 2048 บิต) อย่างไรก็ตาม หากอลิซเข้ารหัสข้อความที่ทราบว่าเป็นของชุดเล็กๆ (เช่น ชื่อในรายชื่อชั้นเรียน) โดยตรงกับ RSA หนังสือเรียน $m\mapsto c:=m^e\bmod n$จากนั้นจะสามารถถอดรหัสได้ $ค$ โดยการเข้ารหัสแต่ละข้อความที่เป็นไปได้และทดสอบว่าข้อความใดตรงกัน $ค$. การค้นหาตามลำดับของ $m$ ในม้วนชั้นเรียนจะทำ: พจนานุกรมที่เกี่ยวข้อง $ค$ จะมีประโยชน์ก็ต่อเมื่อมีหลายข้อความ (และ RSA ไม่ได้ใช้จริงโดยการแบ่งข้อความออกเป็นชิ้นเล็กๆ ดังเช่นในคำถาม)

  2. การขยายการเข้ารหัสแบบสุ่มช่วยแก้ปัญหานี้ได้โดย ย้อนกลับ เปลี่ยนข้อความ $m$ เป็นตัวแทนข้อความแบบสุ่มที่เพียงพอ $\widetilde m\in[0,n)$. จากนั้นตำราเรียน RSA สามารถนำไปใช้ได้อย่างปลอดภัย $\ไวด์ทิลด์ m$ตามสมมติฐานของ RSA: สำหรับคีย์สาธารณะที่เหมาะสม $(น,อี)$ และ สุ่ม $x\in[0,n)$,มันยากที่จะหา $x$ จาก $x^e\bmod n$.

    ตัวถอดรหัส (Bob) จะ 'ลบ' บิตสุ่มเหล่านั้นได้อย่างไรหากเขาไม่รู้จัก

    ภาพใหญ่คือมีการประชุมระหว่างอลิซกับบ็อบเกี่ยวกับส่วนไหนของ $\ไวด์ทิลด์ m$ กำลังขยาย (บางส่วนสุ่ม) ที่อลิซเพิ่มเข้ามาซึ่งบ็อบควรลบออก คำอธิบายแบบง่ายนั้นค่อนข้างใกล้เคียงกับเทคนิคการเติมที่เลิกใช้แล้วใน RSAES-PKCS1-v1_5. ที่ทันสมัย RSAES-สศอ มีขั้นตอนเพิ่มเติมดังนั้นทั้งหมดยกเว้น (สูงสุด) 8 บิตของ $\ไวด์ทิลด์ m$ ปรากฏแบบสุ่มแม้ว่า $m$ ไม่ใช่ (ซึ่งได้มาจากการแปลงรหัสลับแบบสมมาตรที่ย้อนกลับได้หลังจากใช้การเติมแบบสุ่ม ซึ่งกระจายการสุ่ม) แต่แนวคิดยังคงอยู่

kelalaka avatar
in flag
ฉันคิดว่าช่องว่างภายในต้องอยู่ใน MSB ดังนั้นเมื่อใช้ 3 เป็นเลขยกกำลังสาธารณะจะไม่พบ $\sqrt[3]{c}$

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา