Score:6

RSA ที่มีเลขชี้กำลังเป็นปัจจัยของโมดูลัส

ธง in

สุดสัปดาห์นี้ฉันเข้าร่วม CTF แต่เจองานที่ฉันไม่สามารถแก้ไขได้ ฉันไม่พบบทความใดๆ เลยหวังว่าคุณจะสามารถช่วยฉันได้

ที่ให้ไว้: $$ n = pq\ c_1\cong m_1^{\hspace{.3em}p} \mod n\ c_2\cong m_2^{\hspace{.3em}q} \mod n $$ รู้คุณค่าของ $c_1,c_2,n$ และนั่น $p$ เป็น 1024 บิต และ $คิว$ คือ 1,000 บิตด้วย $p,q$ เป็นนายกรัฐมนตรี มีวิธีการกู้คืนที่มีประสิทธิภาพหรือไม่ $m_1,m_2$?

ฉันรู้ว่าถ้าฉันสามารถฟื้นตัวได้ $p,q$ เป็นเรื่องเล็กน้อยเนื่องจากทฤษฎีบทของแฟร์มาต์ แต่ปัญหาก็คือสิ่งที่ทำให้ RSAP ยาก

ข้อมูลอื่น ๆ เพียงอย่างเดียวคือทั้งคู่ $m_1,m_2$ คือ 25 ไบต์ (200 บิต) ไม่มีบริการใดที่สามารถทำหน้าที่เป็นออราเคิลได้

Maarten Bodewes avatar
in flag
โปรดทราบว่าในฐานะ CTF เราควรปฏิบัติต่อสิ่งนี้เป็นการมอบหมายงานและให้คำแนะนำเท่านั้น โดยเฉพาะอย่างยิ่งในความคิดเห็น
in flag
CTF สิ้นสุดลงแล้ว ดังนั้นฉันจะไม่ถือว่าเป็นงานที่มอบหมาย แต่คำแนะนำก็น่ายินดีเช่นกัน
Score:5
ธง pe

แนวคิดหลักที่นี่คือ $m_1$ (หรือ $m_2$) มีค่าน้อยมากเมื่อเทียบกับโมดูลัส สิ่งนี้ช่วยให้เราใช้ เทคนิค Coppersmith ตามปกติ.

เรารู้ว่า $c_1 = m_1^p \bmod n$ซึ่งรวมถึง $c_1 \equiv m_1 \bmod p$. จากนี้เรารู้ว่า $c_1 - m_1 = t\cdot p$, สำหรับบางคน $t$. กล่าวอีกนัยหนึ่ง $\gcd(c_1 - x, n) = p \ge n^{1/2}$ สำหรับบางคน $x = m_1 \le n^{1/4}$. ที่นี่เราคาดหวัง $x = m_1$ มีขนาดเล็กกว่ามาก $n^{1/4}$ในความเป็นจริงซึ่งทำให้การคำนวณง่ายขึ้น

สิ่งนี้ทำซ้ำได้ง่ายใน Sage:

ปราชญ์: p = Random_prime(2^1024, lbound=2^1023+2^1022)                                                                                                          
ปัญญาชน: q = Random_prime(2^1000, lbound=2^999+2^998)                                                                                                            
ปราชญ์: n = p*q                                                                                                                                                 
ปราชญ์:                                                                                                                                                         
ปราชญ์: m1 = randint(0, 2^200)                                                                                                                                  
ปราชญ์: m2 = randint(0, 2^200)                                                                                                                                  
ปัญญาชน: c1 = power_mod(m1, p, n)                                                                                                                                
ปราชญ์: c2 = power_mod (m2, q, n)                                                                                                                                
ปราชญ์:                                                                                                                                                         
ปราชญ์: P.<x> = Zmod(n)[]                                                                                                                                       
ปราชญ์: f = (c1 - x).monic()                                                                                                                                    
ปราชญ์: f.small_roots (เบต้า = 0.5)                                                                                                                                 
[1106883791702122199703869965196585780508362129433642126297878]
ปราชญ์: m1                                                                                                                                                      
1106883791702122199703869965196585780508362129433642126297878

กำลังฟื้นตัว $m_2$ สามารถทำได้เช่นเดียวกันหรือจะถวายปัจจัยครั้งเดียวก็ได้ $m_1$ ได้รับการกู้คืนแล้ว â$p = \gcd(c_1 - m_1, n)$âและถอดรหัส $m_2$ โดยทั่วไป.

Hagen von Eitzen avatar
rw flag
ฉันไม่เห็นจากคำชี้แจงปัญหาว่าทำไม $m_1$, $m_2$ จึงคาดว่าจะเล็ก
AJM avatar
in flag
AJM
@HagenvonEitzen ในความคิดเห็นเกี่ยวกับคำตอบอื่น OP เขียนว่า: *"ข้อมูลอื่นที่ให้ไว้คือทั้ง m_1,m_2 มีขนาด 25 ไบต์ และแน่นอนว่า p,q เป็นจำนวนเฉพาะ ไม่มีบริการใดที่สามารถทำหน้าที่เป็นคำพยากรณ์ได้ "* เนื่องจากไม่ได้อยู่ในคำถาม ฉันเดาว่าผู้ตอบอาจเห็นความคิดเห็นนั้นหรือเคยพบแบบฝึกหัด CTF ประเภทนี้ที่อื่น
pe flag
ถูกต้องฉันเห็นความคิดเห็น เนื้อหานี้ยังเป็นข้อสันนิษฐานที่คุณมักจะคาดเดา/ลองใช้กับ CTF
Score:1
ธง my

ฉันไม่เชื่อว่าตามที่ระบุไว้ ปัญหานั้นสามารถแก้ไขได้ ในการแข่งขัน CTF อาจมีข้อมูลเพิ่มเติมหรือค่าที่แน่นอนที่กำหนดไว้ $n, c_1, c_2$ อาจมีจุดอ่อนอยู่บ้าง

ฉันเชื่อว่าโครงร่าง Clifford Cox [1] (โดยที่ไซเฟอร์เท็กซ์คือ $m^n \bmod n$ เชื่อว่าจะปลอดภัยสำหรับ $n$ ของการแยกตัวประกอบแบบลับ); หากคุณสามารถแก้ปัญหาข้างต้นสำหรับการสร้าง $n, c_1, c_2$นี่คือวิธีการทำลายโครงร่างนั้น:

  • ที่ให้ไว้ $c, n$, เรียกใช้ Oracle ด้วย $c_1 = ค$, และ $c_2$ ตามอำเภอใจ; ที่ให้คุณค่าแก่คุณ $m_1$

  • จากนั้นเรียกใช้ Oracle อีกครั้งด้วย $c_2 = m_1$ และ $c_1$ ตามอำเภอใจ; มูลค่า $m_2$ ที่ส่งคืนจะเป็นการถอดรหัสของการเข้ารหัส Cox นั่นคือค่า $m$ กับ $m^n \equiv c$.

[1] หรือไก่ชน; ฉันเคยเห็นการสะกดทั้งสอง ...

in flag
ข้อมูลอื่นๆ ที่ให้ไว้คือทั้ง $m_1,m_2$ มีขนาด 25 ไบต์ และสาเหตุที่ $p,q$ เป็นจำนวนเฉพาะ ไม่มีบริการใดที่สามารถทำหน้าที่เป็นออราเคิลได้

โพสต์คำตอบ

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