Рейтинг:6

RSA с показателем степени, являющимся коэффициентом модуля

флаг in

В эти выходные я участвовал в CTF, но наткнулся на задачу, которую не смог решить. Я не могу найти никаких рецензий, поэтому я надеюсь, что вы можете мне помочь.

Данный: $$ п = 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$ и что $р$ 1024 бит и $q$ 1000 бит, с $р,к$ быть премьером. Есть ли эффективный способ восстановить $м_1,м_2$?

Я знаю, что если я смогу восстановиться $р,к$ это тривиально из-за теоремы Ферма, но опять же, эта проблема делает RSAP сложным.

Единственная другая предоставленная информация заключалась в том, что оба $м_1,м_2$ были 25 байт (200 бит). Не было службы, которая могла бы действовать как оракул.

Maarten Bodewes avatar
флаг in
Обратите внимание, что как CTF мы должны относиться к этому как к заданию и давать только подсказки, желательно в комментариях.
флаг in
CTF закончился, так что я не считаю это заданием. Но подсказки также приветствуются.
Рейтинг:5
флаг pe

Ключевая идея здесь в том, что $m_1$ (или же $m_2$) очень мал по отношению к модулю. Это позволяет нам применить обычные методы копперсмита.

Мы знаем это $c_1 = m_1^p \bmod n$, что влечет за собой $c_1 \экв 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}$. Здесь наш ожидаемый $х = 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]
шалфей: м1                                                                                                                                                      
1106883791702122199703869965196585780508362129433642126297878

Восстановление $m_2$ можно сделать таким же образом или путем восстановления факторов один раз $m_1$ восстанавливается$p = \gcd(c_1 - m_1, n)$и расшифровка $m_2$ обычно.

Hagen von Eitzen avatar
флаг rw
Я не понимаю из условия задачи, почему $m_1$, $m_2$ должны быть маленькими?
AJM avatar
флаг in
AJM
@HagenvonEitzen В комментарии к другому ответу OP пишет: * «Единственная другая предоставленная информация заключается в том, что m_1, m_2 составляют 25 байтов, и, конечно же, p, q являются простыми. Не было службы, которая могла бы действовать как оракул. «* Поскольку этого не было в вопросе, я предполагаю, что ответивший либо видел этот комментарий, либо сталкивался с подобным упражнением CTF в другом месте.
флаг pe
Правильно, я видел комментарий. Возможно, это также своего рода предположение, которое вы обычно должны угадывать / пробовать в CTF.
Рейтинг:1
флаг my

Я не верю, что, как сказано, эта проблема разрешима; в конкурсе CTF могла быть какая-то дополнительная информация или точные значения, указанные для $n, c_1, c_2$ возможно, включал некоторую слабость.

Я считаю, что схема Клиффорда Кокса [1] (где зашифрованный текст $m^n \bmod n$ считается безопасным для $n$ секретной факторизации); если вы можете решить вышеуказанную проблему для генерации $n, c_1, c_2$, вот как сломать эту схему:

  • Данный $с, н$, вызовите Oracle с помощью $с_1 = с$, и $c_2$ произвольный; что дает вам ценность $m_1$

  • Затем снова вызовите Oracle с помощью $c_2 = m_1$ и $c_1$ произвольный; Значение $m_2$ который возвращает будет расшифровка шифрования Кокса, то есть значение $м$ с $m^n \экв с$.

[1] или петухи; Я видел оба варианта написания...

флаг in
Единственная дополнительная информация состоит в том, что обе переменные $m_1,m_2$ имеют длину 25 байт, и потому $p,q$ являются простыми числами. Не было службы, которая могла бы действовать как оракул.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.