• ベストアンサー

RSA暗号が破れる素因数分解についてです。

自然数 N を、√N (= Nの平方根)未満の自然数であって、末位の数字が1,3,7,9のもののうち、小さいもの順のものどもで以て、割ってゆき、N を素因数分解する計算の、時間計算量のオーダーは、 どれ位のものでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

最大で(4√N)/10回割り算をすれば結果が出るので、計算量のオーダーは高々O(N^0.5)です。数学的な知見があればもっと低くなるかもしれません。 ただし、10進数表記の場合の1の位を見て判断するのは2と5の倍数による試行を除外できているだけであって、あまり効率がいいとは言えません。 Nをxという値で割り切れるかどうかを試すとします。2≦x≦√Nです。 たとえば、x≧31のときはxを30で割った余りが1,7,11,13,17,19,23,29のときだけN÷xを試すことにすれば、xが2と3と5の倍数の場合を除外できて、N÷xの回数をさらに減らせます(4/10→8/30)。30は2と3と5の最小公倍数です。 もっとも、これは計算量の係数を下げる工夫であって計算量のオーダーには影響を与えません。

koitiluv1842
質問者

お礼

早速の、懇切ご丁寧な御回答を誠に有難う御座いました。

koitiluv1842
質問者

補足

 それでは、多項式時間の中でも最低の次数の一次式時間であるところの、N よりも、更に、遥かに低い時間計算量ですね?  つまり、RSA暗号など、組み合わせ爆発による指数関数的な時間計算量など要すること無しに、ごくごく短時間で破れますね?  なお、Microsoft Bing AI による回答に関する、追加の質問にも御回答いただきますならば、幸甚に存じます。

関連するQ&A

  • RSA暗号解読の素因数分解による方法について。

    下記の通りで正しいでしょうか。: Microsoft Bing AI (= Bing Chat)生成人工知能の回答を、まとめ、且つ、補足しますと、次の通りです。 自然数 N を、√N (= Nの平方根)未満の自然数であって末位の数字が1,3,7,9のもので以て、割ってゆき、N を素因数分解する、という計算の、時間計算量は、O(Nの4乗根)です。 実際には、RSA暗号による暗号文の暗号は、巨大素数を2つ掛け合わせて作りますので、Nの平方根未満の自然数で、末位が1,3,7,9のもので、しかも、大きいもの順に取ったもので順に割っていけば、N の素因数分解は、時間計算量を、それよりも遥かに小さくして済ませらせます。 上記の様に、問題サイズ N に対する、N の4乗根のオーダーの時間を上界(この場合は、自然数の計算ですので上限)とする、普通の割り算の単純作業だけで、つまり、ごくごく短時間に、N の素因数分解が出来てしまいますので、RSA暗号も、いとも簡単に解けてしまう、ということです。

  • 最大公約数を求める

    一般に、a,bが2^nくらいの整数であれば、最大公約数を求めるには、割り算も含めてn^3に比例した計算量が必要であるといわれている。しかし、これを素因数分解して求めると、素因数分解するのに、その数の平方根までの割り算が必要になるので、(√2)^nに比例した計算量が必要になる。 という説明があったのですが、”素因数分解するのに、その数の平方根までの割り算が必要になる”というのがよく分かりません。何故平方根まで割り算しないとならないのでしょうか????

  • 素因数分解!?

    xは自然数でx^2=736164のときxを求めよ。という問題なのですが、素因数分解してくと2、2、3、3の順で分解できるのはすぐ気づきます。しかし20449でとまってしまいます・・。なんとか143で分解できると気づいてx=858と答え出せたのですが、もっと上手い解き方ありますか?あるいは、2~3桁の素数の積を一瞬で見分ける方法はありますか?わかる方いましたらお願いします。

  • 素因数分解の問題です

    素因数分解の問題です nは2ケタの自然数で n/20 を既約分数にしたとき 分母が5になるという このようなnは全部で何個あるか?? 答えは18となっています やり方を教えてください

  • 素因数分解

    素因数分解はわらずとも解に至ります。それをどうしたら、みなさんにお伝えできるか 数学教育協議会等にも顔を出したり、ずいぶん前から、たくさんの新しい事を創り、双子素数などは、 ペア素数の定理として、すべて一括に実証されます、素因数分解などは、桁数は関係ありません。素因数分解の世界記録、現在NTT総合研究所とドイツのボン大学とスイスのローザンヌ大学とフランス、オランダの研究機関が共同で3年もかかってしまう、わずか232桁です、これは、すべて、割るがベースにある からです。割るを、使わずとも、解に至ります。どうして、理解しようとしないのか、わかりません。 古代バビロニアの人々ですらできたのです。4000年も前です、基本は考え方です。難しく、難解な高等数学入りません。平方根を厳密解を求める、つまり、開平がちゃんと、理解でき、従来の2個ずつ、開くことを拡張して、8個、とか、16個いっぺんに開く方法もあるので、そういう工夫をすれば、よい。 あとは、大きい数値を、扱えるかどうかです。つまり素因数分解は、one-way-function出はありません。232桁も数分でしょう。

  • すばやく素因数分解する方法は?

    「暗号解読」(サイモン・シン(著)青木薫(訳) 新潮社)という本を読んで、急に素数のことに関心を持ちました。 数十桁もある数(合成数)を素因数分解するのは、えらく時間がかかることが書かれていました。 中学生が計算する素因数分解や、「エラトステネスのふるい」のほかに、手計算や計算機を使って、合成数から素数を見つける方法(素因数分解)を知りたいので、ご存知の方教えてください。 できれば、計算機科学における現在、最速の素因数分解の方法(アルゴリズム)を知りたいです。

  • 素因数分解

    全ての自然数は、素因数分解出来るのでしょうか? また、出来る場合は、それが証明されているのでしょうか?

  • 素因数分解の一意性?????

    m,n,p,qをすべて互いに素な自然数とした時に、 2^n・p^m=q^mにおいて、 素因数分解の一意性より、qは2の倍数である。 素因数分解の一意性ってどういうことなのでしょうか?

  • 素因数分解

    1、 216を出来るだけ小さい自然数でわって、ある整数の2乗になるようにしたい。どんな自然数でわればよいですか? 2、 504に出来るだけ小さい自然数をかけて、ある整数の2乗になるようにしたい。どんな自然数をかければよいですか? この問題を素因数分解を使って解くようなのですが、、、、、 わかる方いましたら教えてください。 よろしくお願いします。

  • 素因数分解した表

    手で計算できないこともない、とは思いますが、2から10,000位までの自然数の素因数分解表を作りたい、または探しています。 使えるソフトは、excelだけですが、何かいい方法はないでしょうか。 単純に  2  2 3 3 4 2 2 5 5 6 2 3 ・ ・ ・ のような表でいいのですが…。 何かいい方法がありましたらお願いします。