Рейтинг:0

Когда можно разложить на множители большое полупростое число?

флаг us

При каких условиях можно разложить на множители большое полупростое число? В частности, является ли следующее 400-значное полупростое число действительно тривиальным для разложения на простые числа?

6962155154859963260211100482357357666900094513013513488352858667799199787495340476167566639530574848375895722792291996203873323650274512138128403360943634134259376986501375967452208380337012919869885380406071772232795575963202558402893589313281327208179913789760736615950818685956393838601277519011418885197723428318400763080858914698836058070301404903262955501113318317950597435778777212408626799143

kodlu avatar
флаг sa
Моя цель редактирования заключалась в том, чтобы хороший ответ не пропал даром.
флаг us
Спасибо, @kodlu!
kelalaka avatar
флаг in
400 цифр слишком много для CFT, чтобы просто учитывать [факторизацию простых чисел (102 цифры)] (https://crypto.stackexchange.com/q/89560/18298). Может быть, вам стоит попробовать метод факторинга Ферма.
kelalaka avatar
флаг in
Дубликат [Как это 2048-битное число было учтено так быстро?] (https://crypto.stackexchange.com/q/91404/18298)
fgrieu avatar
флаг ng
@kelalaka: Целое число в [Как это 2048-битное число было учтено так быстро?] (https://crypto.stackexchange.com/q/91404/18298) было учтено на первом этапе факторизации Ферма. Этот сопротивляется как минимум нескольким тысячам. Я использовал этот [простой код Mathematica] (https://pastebin.com/ukxGkpkM).
флаг pe
Больше дубликата этого: https://crypto.stackexchange.com/questions/67384/factoring-rsa-weak-modulus/67458
Рейтинг:6
флаг ng

Слово «тривиальный» почти наверняка не подходит для этого. Лучше спросить, разумно ли эффективно использовать фактор. Во-первых, стоит упомянуть, что ваш полупрайм равен 400. десятичный цифры. Умножив это на $\log_2(10)$, мы видим, что это $\около 1300$ биты длинные. Это намного больше, чем самая большая заявленная запись факторинга (полупростых чисел) в 829 бит. Так что ответ "нет", если только ваше полупростое число не имеет особой структуры, которая делает его "слабым".

Какую особую структуру могут иметь полупростые числа? Позволять $N = p_1p_2$ быть факторизацией. Есть несколько кандидатов, которые работают, если

  1. Один из $p_i$ является небольшой (скажем, не более $\около 60$ биты), то метод эллиптических кривых разумно бежать.

  2. Один из $p_i$ таков, что $p_i+1$ является гладкий, например все основные факторы $p_i+1$ ограничены некоторым разумно малым числом $В$. затем Уильямс $р+1$ алгоритм разумный.

  3. Один из $p_i$ таков, что $p_i-1$ является пауэрглад, например все самое лучшее сила факторы $p_i-1$ ограничены некоторым разумно малым числом $В$. затем Полларда $p-1$ алгоритм разумно.

Возможно, есть еще несколько «особых структур», которые я упустил (кажется, я помню одну, если $p_1\приблизительно p_2$, но сейчас не могу вспомнить название). Ваш единственный реальный шанс разложить число на множители состоит в том, что оно будет сгенерировано неправильно, и все вышеперечисленное может быть примерами, поэтому, если у вас нет конкретной причины думать, что они сгенерированы неправильно (скажем, это вызов CTF), я бы не пытайся сломать его.

Если у вас есть причина думать, что это должно быть сгенерировано неправильно, существуют их реализации. Например, Мудрец имеет реализацию ECM (через GMP-ECM). в GMP-ECM сама страница, я также вижу ссылки на $p-1$ и $р+1$, но я не знаю, пытается ли sage их напрямую (поскольку они действительно полезны, только если вы подозреваете, что полупростые числа были сгенерированы неправильно).

Но не столкнувшись ни с одним из этих случаев "слабых полупростых чисел" (что крайне маловероятно, если полупростое число сгенерировано должным образом --- поэтому, если у вас нет причин думать, что это слабый RSA semiprime, наверное, даже не стоит проверять).

kodlu avatar
флаг sa
Как бы то ни было, онлайн-калькулятор Magma не может это учесть. Вам разрешено 120 секунд процессора, но я не знаю, какой процессор они используют, но их подход описан здесь: https://magma.maths.usyd.edu.au/magma/handbook/text/182 калькулятор: http:// magma.maths.usyd.edu.au/calc/
флаг us
Спасибо, @Марк. Сейчас я пытаюсь разложить на множители p+1, p-1, q+1, q-1, чтобы увидеть, удовлетворяют ли эти простые числа какому-либо из этих условий.
poncho avatar
флаг my
На самом деле, метод эллиптических кривых довольно эффективен при поиске простых чисел меньше 128 бит и имеет приличную вероятность найти простые числа несколько больше этого...
poncho avatar
флаг my
А для $p_1 \приблизительно p_2$ метод Ферма быстро находит множители...
Рейтинг:3
флаг me

Да, у этого 400-значного полупростого числа есть большой недостаток, который позволяет учитывать его в часах.

Я учел это число, так что вы могли бы быть любезны и сказать мне где этот CTF, чтобы я мог получить кредит (сказал полушутя)

Ни Ферма, ни ECM, ни SNFS вам ни в чем не помогут. разумное количество времени.

Коэффициент p имеет 41606 в 15-19-м старших разрядах, а q имеет 89827 в 15-19 старших разрядах.


Обновлять (перенесено сюда модератором)

Возможно, это класс методов? Нет
Или/и с помощью множителя? Нет

Спойлер — факторы приведены ниже. . . . .

n= 6962155154859963260211100482357357666900094513013513488352858667799199787495340476167566639530574848375895722792291996203873323650274512138128403360943634134259376986501375967452208380337012919869885380406071772232795575963202558402893589313281327208179913789760736615950818685956393838601277519011418885197723428318400763080858914698836058070301404903262955501113318317950597435778777212408626799143
                                                                                          p= 1055314811678641606424788110765439117222699930257095408671007391029759113842109970448108699505224742945927781061767905202515184760446787611555372203775837301834490832771874109424228620164137709228509254318229660698954763303449460372503950485172061048411036447824270015301213488707
                                                                                          q= 6597230587321689827469274987496974524162638657985346941557775305494810601668451103917887716603988821282535336087463657549
fgrieu avatar
флаг ng
Действительно, прямой Ферма не поможет. Я также безрезультатно пробовал использовать p-1 Полларда (ecm -pm1 4e9) и p+1 Уильяма (ecm -pp1 2e9) и немного ECM. Если ECM не поможет, то и Ро Полларда не поможет. Возможно [этот] (https://crypto.stackexchange.com/posts/comments/198606) класс методов? Или/и [используя множитель](https://en.wikipedia.org/wiki/Fermat%27s_factorization_method#Multiplier_improvement)? Один из способов убедить людей, что $n=pq$ разложено на множители, не раскрывая факторизации, — это опубликовать $t=2^{n^{-1}\bmod((p-1)(q-1))}\ бмод п$. Тогда любой может проверить, что $t^n\bmod n=2$.
fgrieu avatar
флаг ng
А, понял. Нужно было смотреть на $n$ в шестнадцатеричном или двоичном формате. Хороший.
флаг us
Отлично, @MostlyResults! Вы использовали алгоритм Копперсмита? («Небольшие решения полиномиальных уравнений и уязвимости RSA с низким показателем экспоненты», J. Cryptology (1997) 10: 233–260)
fgrieu avatar
флаг ng
@Sam Blake: я думаю, MostlyResults догадался по шестнадцатеричной форме $n$, что $n=(r\,2^i+s)(t\,2^j+u)$ с небольшим $(r,s,t ,у)$.
Рейтинг:2
флаг vg

Используемый метод заключался в том, чтобы привести N к специальной форме, которую легко факторизовать.

Отобразил N в двоичном формате и заметил сотни нулей между 4 числами.

Это было сокращено до следующего:

Н = а2^1228+б2^875+с*2^353+д

куда а= 1506291488774150974626762365373 б = 322571915263178581 с= 576377099039115423 д = 123431

Рассматривая это как многочлен от x, где x = 2:

Н = ах^1228+бх^875+с*х^353+д

Это очень быстро влияет на:

(359561509069941х^353+77)(4189245652768553*x^875 + 1603)

флаг us
Чтобы ответить на ваш вопрос (который был отредактирован). Я сам собрал этот пример в качестве теста для некоторых экспериментов по целочисленной факторизации, которые я проводил. Вот немного более сложная задача: 7215955072690155355400859323297730634528493510676300043022948136348249037517276095868127042993906604904230826475281383188764473510881994780947137238252071087749294743150564851420395422525735221770067605216401023
Рейтинг:2
флаг fr

В комментарии @Sam Blake задал дополнительный вопрос о факторе целого числа:

7215955072690155355400859323297730634528493510676300043022948136348249037517276095868127042993906604904230826475281383188764473510881994780947137238252071087749294743150564851420395422525735221770067605216401023

Вопрос в том, действительно ли это второе полупростое число тривиально для разложения на простые числа?

Это полупростое число не является слабым, потому что оно не очень легко отказывается от своей особой формы.

Это слабо для противника с возможностями национального государства, потому что это всего 701 бит. Рекомендуется модуль 2048 бит или выше с равной битовой длиной p и q.

Кроме того, у него нет слабости при использовании Ферма, p-1, его отношение не близко к маленькому. фракция, ECM не помогает.

Похоже, что это целое число не соответствует специальной форме, которую легко вычислить. Даже не смотря на как только специальная форма распознана, число может быть разложено на множители с гораздо меньшими усилиями, определение специальной формы может занять очень много времени, поскольку существует множество форм.

Какие подсказки вы готовы дать? Что это полупремьер? что факторы имеют разную длину? Факторы представляют собой многочлены с членами: a0 x 2^(k0) + a1 x 2^(k1) + a2 x 2^(k2)...

флаг us
Привет @MostlyResults, это полупростое число с 293-битным простым множителем.

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

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