<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>暗号解読 on kenji.blog</title><link>http://kenji.blog/tags/%E6%9A%97%E5%8F%B7%E8%A7%A3%E8%AA%AD/</link><description>Recent content in 暗号解読 on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ja</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 05 Sep 2026 22:09:21 +0900</lastBuildDate><atom:link href="http://kenji.blog/tags/%E6%9A%97%E5%8F%B7%E8%A7%A3%E8%AA%AD/index.xml" rel="self" type="application/rss+xml"/><item><title>量子コンピュータは本当にRSA暗号を破壊するのか？〜ショアのアルゴリズムと現在の到達点〜</title><link>http://kenji.blog/p/shors-algorithm-and-rsa-breaking/</link><pubDate>Sat, 05 Sep 2026 22:09:21 +0900</pubDate><guid>http://kenji.blog/p/shors-algorithm-and-rsa-breaking/</guid><description>&lt;img src="http://kenji.blog/p/shors-algorithm-and-rsa-breaking/quantum_breaking_rsa_1788613722990.jpg" alt="Featured image of post 量子コンピュータは本当にRSA暗号を破壊するのか？〜ショアのアルゴリズムと現在の到達点〜" />&lt;h2 id="はじめに暗号技術と量子コンピュータの交差点">はじめに：暗号技術と量子コンピュータの交差点
&lt;/h2>&lt;p>現代のインターネット社会において、通信の秘密を守るための基盤となっているのが「公開鍵暗号」です。その中でも代表的なものが、1977年にRon Rivest、Adi Shamir、Leonard Adlemanの3氏によって開発された「RSA暗号」です。私たちが毎日利用しているオンラインショッピングの決済、ウェブサイトの閲覧（HTTPS）、メールの送受信に至るまで、RSA暗号はインターネットインフラの心臓部として機能しています。&lt;/p>
&lt;p>しかし、「量子コンピュータ」の登場によって、この安全性が根底から覆される可能性が指摘されています。メディアでは「量子コンピュータが完成すれば、世界中のパスワードや暗号が数秒で解読されてしまう」といったセンセーショナルな見出しが躍ることもあります。果たして、それは本当なのでしょうか？&lt;/p>
&lt;p>本記事では、古典的な暗号解読手法であるGNFS（一般数体ふるい法）と、量子コンピュータを用いた暗号解読アルゴリズムの決定版である「ショアのアルゴリズム（Shor&amp;rsquo;s Algorithm）」の仕組みを深く掘り下げます。量子フーリエ変換や周期発見といった高度な概念を分かりやすく解説し、現在のNISQ（Noisy Intermediate-Scale Quantum）時代における量子ハードウェアの現状と、実際にRSA-2048を破るために必要なハードルについて詳細に検証していきます。&lt;/p>
&lt;hr>
&lt;h2 id="rsa暗号の根幹素因数分解の困難性">RSA暗号の根幹：素因数分解の困難性
&lt;/h2>&lt;p>RSA暗号の安全性は、数学における極めてシンプルな非対称性に依存しています。それは、「2つの巨大な素数を掛け合わせることは簡単だが、その掛け合わせた結果（合成数）から元の2つの素数を見つけ出す（素因数分解する）ことは極めて難しい」という事実です。&lt;/p>
&lt;p>例えば、 $ p = 61 $、 $ q = 53 $ という2つの素数があったとします。この掛け算 $ N = p \times q = 3233 $ を計算するのは一瞬です。しかし、「3233」という数字だけを与えられて、「これはどの素数とどの素数の掛け算か？」を解くのは、数字が大きくなればなるほど計算量が爆発的に増加します。&lt;/p>
&lt;p>現在主流となっているRSA-2048では、鍵長が2048ビット、つまり10進数にして約617桁にも及ぶ巨大な合成数 $ N $ が使われています。この $ N $ を素因数分解できれば、暗号は解読されたも同然となります。&lt;/p>
&lt;h3 id="古典コンピュータによる挑戦gnfs一般数体ふるい法">古典コンピュータによる挑戦：GNFS（一般数体ふるい法）
&lt;/h3>&lt;p>素因数分解問題を解くために、数学者や暗号学者は長年にわたり様々なアルゴリズムを開発してきました。その中で、古典コンピュータにおいて現在最も高速とされているのが &lt;strong>一般数体ふるい法（GNFS: General Number Field Sieve）&lt;/strong> です。&lt;/p>
&lt;p>GNFSは、巨大な数 $ N $ を素因数分解するために、整数環における計算をより抽象的な代数体（Number Field）に拡張して解析する手法です。大まかな流れとしては以下のようになります。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>多項式の選択&lt;/strong> : $ N $ を根として持つような、適切な次数と係数を持つ多項式 $ f(x) $ を見つけます。&lt;/li>
&lt;li>&lt;strong>データ収集（ふるい分け）&lt;/strong> : 有理数体および代数体の上で、小さな素数（滑らかな数、Smooth numbers）に分解できるような数のペアを大量に探索します。このプロセスが「ふるい分け」と呼ばれ、最も時間を要する部分です。&lt;/li>
&lt;li>&lt;strong>行列の生成と簡約&lt;/strong> : 収集した関係式を元に巨大な疎行列（成分のほとんどが0の行列）を生成し、線形代数的な手法（ブロック・ランチョス法など）を用いて解を求めます。&lt;/li>
&lt;li>&lt;strong>平方根の計算&lt;/strong> : 最後に代数体上での平方根を計算し、$ N $ の因数（素因数）を導き出します。&lt;/li>
&lt;/ol>
&lt;p>GNFSの計算量は、非漸近的に $ O(\exp((\sqrt[3]{\frac{64}{9}} + o(1)) (\log N)^{\frac{1}{3}} (\log \log N)^{\frac{2}{3}})) $ と評価されます。これは「準指数関数的（Sub-exponential）」な時間計算量と呼ばれます。指数関数時間よりは速いものの、多項式時間（Polynomial time）よりは遥かに遅い計算量です。&lt;/p>
&lt;p>実際に、2020年には国際的な研究チームがGNFSを用いてRSA-250（829ビット、250桁の合成数）の素因数分解に成功しました。この計算には、世界中の計算機リソースをかき集めて約2700 CPUコア年という膨大な計算時間を費やしています。しかし、これが2048ビットとなると、必要な計算量は宇宙の寿命の数兆倍にも膨れ上がると言及されており、現在のスーパーコンピュータをどれだけ並列稼働させても、古典的な手法では現実的な時間内で解読することは不可能です。&lt;/p>
&lt;hr>
&lt;h2 id="量子コンピュータの切り札ショアのアルゴリズム">量子コンピュータの切り札：ショアのアルゴリズム
&lt;/h2>&lt;p>ここで登場するのが、1994年にピーター・ショア（Peter Shor）によって発表された「ショアのアルゴリズム」です。このアルゴリズムは、素因数分解問題を量子コンピュータ上で &lt;strong>多項式時間&lt;/strong> （ $ O((\log N)^3) $ ）で解くことができるという画期的なものでした。準指数関数時間と多項式時間の差は決定的なものであり、理論上、量子コンピュータを使えばRSA暗号は完全に破壊されることを意味します。&lt;/p>
&lt;h3 id="ショアのアルゴリズムの全体フロー">ショアのアルゴリズムの全体フロー
&lt;/h3>&lt;p>&lt;code>mermaid graph TD A[素因数分解したい数 N を入力] --&amp;gt; B[ランダムな整数 a を選択] B --&amp;gt; C{a と N の&amp;lt;br&amp;gt;最大公約数} C --&amp;gt;|1より大きい| D[幸運にも素因数を発見！] C --&amp;gt;|1 互いに素| E[量子コンピュータの出番] E --&amp;gt; F[関数 f_x = a^x mod N の&amp;lt;br&amp;gt;周期 r を量子フーリエ変換で求める] F --&amp;gt; G{周期 r が偶数 かつ&amp;lt;br&amp;gt;a^r/2 ≢ -1 mod N} G --&amp;gt;|Yes| H[最大公約数 gcd_a^r/2 ± 1, N を計算] H --&amp;gt; I((素因数分解 成功！)) G --&amp;gt;|No| B &lt;/code>&lt;/p>
&lt;p>ショアのアルゴリズムは、素因数分解という問題を直接解くのではなく、数論の定理を用いて「周期発見問題（Period Finding Problem）」という別の問題に変換し、それを量子コンピュータの特性を活かして高速に解くというアプローチをとります。&lt;/p>
&lt;h3 id="ステップ1素因数分解から周期発見問題への還元古典的処理">ステップ1：素因数分解から周期発見問題への還元（古典的処理）
&lt;/h3>&lt;p>アルゴリズムの最初のステップは古典コンピュータで行われます。
素因数分解したい数 $ N $ に対して、$ N $ と互いに素な（最大公約数が1の）ランダムな整数 $ a $ （ $ 1 &lt; a &lt; N $ ）を選びます。もし偶然にも最大公約数が1でなければ、その時点で見つかった公約数が $ N $ の素因数なので解読完了ですが、確率は極めて低いです。&lt;/p>
&lt;p>次に、以下のモジュロ方程式の列を考えます。
$ f(x) = a^x \pmod N $&lt;/p>
&lt;p>この関数 $ f(x) $ に $ x = 1, 2, 3, \dots $ と代入していくと、値はランダムなように見えますが、有限の範囲内で計算しているため、必ずどこかで元の値に戻り、同じ数列を繰り返します。この繰り返しの周期を $ r $ と呼びます。つまり、
$ a^r \equiv 1 \pmod N $
となる最小の正の整数 $ r $ を見つける問題、これが「周期発見問題」です。&lt;/p>
&lt;p>もしこの周期 $ r $ が見つかり、かつ $ r $ が偶数であれば、$ a^r - 1 \equiv 0 \pmod N $ となり、因数分解の公式を用いて
$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $
と変形できます。ここから、ユークリッドの互除法を使って $ N $ と $ a^{r/2} \pm 1 $ の最大公約数を計算することで、$ N $ の素因数が極めて高い確率で得られます。&lt;/p>
&lt;p>古典コンピュータで周期 $ r $ を見つけるためには、結局のところ指数関数的なステップが必要となり高速化できません。しかし、量子コンピュータならばこの周期 $ r $ を一瞬で（多項式時間で）見つけることができるのです。&lt;/p>
&lt;h3 id="ステップ2量子状態の準備と重ね合わせ">ステップ2：量子状態の準備と重ね合わせ
&lt;/h3>&lt;p>ここからが量子コンピュータの出番です。
量子コンピュータは、「0」と「1」の状態を同時に持つことができる「量子ビット（Qubit）」を使用します。ショアのアルゴリズムでは、入力を格納するレジスタ（第1レジスタ）と、計算結果を格納するレジスタ（第2レジスタ）の2つを用意します。&lt;/p>
&lt;p>まず、アダマールゲート（Hadamard gate）と呼ばれる量子ゲート操作を第1レジスタの全ての量子ビットに適用します。これにより、第1レジスタは考え得るすべての $ x $ の値（ $ 0 $ から $ 2^n-1 $ まで。$ n $ は十分大きなビット数）の &lt;strong>均等な重ね合わせ状態&lt;/strong> になります。&lt;/p>
&lt;p>つまり、量子コンピュータの内部には、$ x=0, 1, 2, 3, \dots $ という無数の入力値が同時に並行して存在している状態が作られます。&lt;/p>
&lt;h3 id="ステップ3量子モジュロべき乗算quantum-modular-exponentiation">ステップ3：量子モジュロべき乗算（Quantum Modular Exponentiation）
&lt;/h3>&lt;p>次に、第1レジスタの重ね合わせ状態を入力として、$ f(x) = a^x \pmod N $ を計算し、その結果を第2レジスタに格納します。
この計算は量子回路上のユニタリ変換として実行されるため、重ね合わせが保たれたまま、すべての $ x $ に対する $ f(x) $ の計算が「同時並行的に（量子並列性）」行われます。&lt;/p>
&lt;p>この時点での量子システム全体の空間は、
$ |x, a^x \bmod N\rangle $
という状態の膨大な重ね合わせになっています。&lt;/p>
&lt;p>しかし、ここで単純に第2レジスタを測定（観測）してしまうと、ランダムな $ a^x \bmod N $ の値が一つだけ確率的に選ばれ、それに連動して第1レジスタの $ x $ も一つに確定してしまいます。これでは古典コンピュータで一回計算したのと同じことで、周期 $ r $ を見つけることはできません。&lt;/p>
&lt;p>量子力学のルールでは、重ね合わせ状態の中身を直接覗き見ることはできないのです。では、どうやって全体の「周期」というグローバルな情報を抽出するのでしょうか？&lt;/p>
&lt;h3 id="ステップ4量子フーリエ変換qft-quantum-fourier-transform">ステップ4：量子フーリエ変換（QFT: Quantum Fourier Transform）
&lt;/h3>&lt;p>この壁を突破するショアのアルゴリズムの真骨頂が、第1レジスタに対する &lt;strong>量子フーリエ変換（QFT）&lt;/strong> の適用です。&lt;/p>
&lt;p>測定を行う前に、関数 $ f(x) $ の波の性質を解析します。第2レジスタを観測したと仮定しましょう。ある値 $ y $ が得られたとします。すると、第1レジスタの状態は「 $ a^x \pmod N = y $ となるような全ての $ x $ の重ね合わせ」に収縮します。
この $ x $ の値は、$ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \dots $ のように、周期 $ r $ の間隔で離散的に並んだ状態（一種の櫛状の確率振幅分布）になります。&lt;/p>
&lt;p>この状態に対して量子フーリエ変換（QFT）を適用します。古典的な離散フーリエ変換が時間領域の信号を周波数領域に変換するように、QFTは量子状態の確率振幅に干渉を起こさせます。&lt;/p>
&lt;p>QFTをかけると、量子干渉効果によって、周期 $ r $ と共鳴しない（位相が揃わない）誤った答えの確率は互いに打ち消し合ってゼロに近づき（破壊的干渉）、周期 $ r $ の情報を持つ正しい答えの確率だけが増幅されます（建設的干渉）。&lt;/p>
&lt;h3 id="ステップ5測定と連分数展開古典的後処理">ステップ5：測定と連分数展開（古典的後処理）
&lt;/h3>&lt;p>QFT適用後に第1レジスタを測定すると、非常に高い確率で $ c \approx \frac{j \cdot 2^n}{r} $ という形に近い整数 $ c $ が得られます（ $ j $ は未知の整数、$ 2^n $ はレジスタのサイズ）。&lt;/p>
&lt;p>この測定結果 $ c $ を古典コンピュータに戻し、$ \frac{c}{2^n} \approx \frac{j}{r} $ という分数を作ります。そして、数学的手法である「連分数展開（Continued fraction expansion）」を用いて近似値を計算することで、分母である周期 $ r $ を見事にあぶり出すことができます。&lt;/p>
&lt;p>$ r $ が分かれば、あとはステップ1の公式を使って $ N $ の素因数を計算し、RSA暗号は完全に解読されます。&lt;/p>
&lt;hr>
&lt;h2 id="現状の量子コンピュータnisqの実力と課題">現状の量子コンピュータ（NISQ）の実力と課題
&lt;/h2>&lt;p>理論的には完璧なショアのアルゴリズムですが、「明日にもRSA暗号が破られるのか？」と問われれば、答えは明確に「ノー」です。その理由は、現在の量子コンピュータのハードウェア技術の限界にあります。&lt;/p>
&lt;h3 id="nisqnoisy-intermediate-scale-quantum時代">NISQ（Noisy Intermediate-Scale Quantum）時代
&lt;/h3>&lt;p>現在我々が存在しているのは、「NISQ」と呼ばれる時代です。NISQデバイスは、数十から数百の物理量子ビットを持ちますが、ノイズに対して極めて脆弱です。&lt;/p>
&lt;p>量子ビットは、熱や電磁波などの外部環境の影響を受けやすく、量子状態が壊れてしまう「デコヒーレンス（量子もつれ喪失）」や、ゲート操作時の「ゲートエラー」が頻繁に発生します。ショアのアルゴリズムのような非常に深い（演算ステップ数が膨大な）量子回路を実行しようとすると、計算の途中でエラーが蓄積し、最終的な出力は意味を持たない完全なノイズになってしまいます。&lt;/p>
&lt;h3 id="物理量子ビットと論理量子ビット">物理量子ビットと論理量子ビット
&lt;/h3>&lt;p>このエラー問題を解決するために不可欠なのが「量子誤り訂正（Quantum Error Correction）」です。
古典コンピュータでも誤り訂正コードは使われていますが、量子状態の複製を禁じる「量子複製不可能定理」があるため、量子誤り訂正は非常に複雑です。&lt;/p>
&lt;p>量子誤り訂正では、「表面符号（Surface Code）」などの技術を用いて、多数のノイズだらけの「物理量子ビット」を組み合わせることで、エラーのない理想的な1つの「論理量子ビット」を作り出します。&lt;/p>
&lt;p>現在のエラー率を前提とすると、1つの論理量子ビットを作るためには、およそ1,000〜10,000個の物理量子ビットが必要になると試算されています。これを「誤り訂正のオーバーヘッド」と呼びます。&lt;/p>
&lt;h3 id="rsa-2048を破壊するために必要なリソースとは">RSA-2048を破壊するために必要なリソースとは？
&lt;/h3>&lt;p>では、実際にRSA-2048を解読するために、ショアのアルゴリズムを走らせるにはどれくらいのリソースが必要なのでしょうか？&lt;/p>
&lt;p>Craig Gidney (Google) と Martin Ekerå による2021年の論文による画期的なリソース推定では、最適化されたショアのアルゴリズムを使用し、表面符号による誤り訂正を行った場合、以下のリソースが必要になるとされています。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>論理量子ビット数&lt;/strong> : 約 4,096 個&lt;/li>
&lt;li>&lt;strong>物理量子ビット数 ** : ** 約 2000万個&lt;/strong> （エラー率 $10^{-3}$ 程度を仮定）&lt;/li>
&lt;li>&lt;strong>計算時間&lt;/strong> : 約 8時間（物理ゲート操作が数百万〜数十億回必要）&lt;/li>
&lt;/ul>
&lt;p>これに対して、現在の量子ハードウェアの到達点はどうでしょうか。
2023年末にIBMが発表した超伝導量子プロセッサ「Condor（コンドル）」は 1,121 量子ビットです。また、論理量子ビットの生成に関する画期的な研究（ハーバード大学やQuEra社などによる中性原子量子コンピュータを用いた48個の論理量子ビットの生成など）も登場していますが、まだ「ノイズのない完璧な演算」を長時間連続して実行できる段階にはありません。&lt;/p>
&lt;p>数千の物理量子ビットから、 &lt;strong>2000万個&lt;/strong> の実用的な物理量子ビット（かつ相互結線され、極低温で安定動作し、超高速で制御信号を処理できるシステム）へのスケールアップは、工学的にとてつもない壁（配線問題、冷却能力の限界、制御エレクトロニクスの肥大化）が存在します。多くの専門家は、RSA-2048を解読可能な「フォールトトレラント（誤り耐性）量子コンピュータ（FTQC）」が実現するには、少なくとも10年から30年、あるいはそれ以上の年月が必要だと予測しています。&lt;/p>
&lt;hr>
&lt;h2 id="忍び寄るstore-now-decrypt-laterの脅威とpqcの夜明け">忍び寄る「Store Now, Decrypt Later」の脅威とPQCの夜明け
&lt;/h2>&lt;p>「まだ10年以上かかるなら安心だ」と考えるのは早計です。現在、国家の機密情報や医療データ、長期的なインフラ設計など、数十年先まで秘密を担保しなければならないデータが存在します。&lt;/p>
&lt;p>ここで懸念されているのが、 &lt;strong>「Store Now, Decrypt Later（今保存して、後で解読する）」&lt;/strong> という攻撃手法です。悪意のある国家や組織が、現在のRSAやECC（楕円曲線暗号）で暗号化された通信データをすべて傍受し、ストレージに保存しておくのです。そして10年後、20年後に強力な量子コンピュータが完成した瞬間に、ショアのアルゴリズムを用いて過去のデータをすべて解読し、秘密を暴露するという手法です。&lt;/p>
&lt;p>このタイムラグの脅威に対抗するため、NIST（米国国立標準技術研究所）を中心に、 &lt;strong>「耐量子計算機暗号（PQC: Post-Quantum Cryptography）」&lt;/strong> の標準化プロセスが急ピッチで進められてきました。&lt;/p>
&lt;p>PQCは、量子コンピュータを用いても解読が困難（つまり、ショアのアルゴリズムが適用できない）な数学的問題をベースにした新しい暗号アルゴリズムです。主なアプローチとして以下のようなものがあります。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>格子暗号（Lattice-based cryptography）&lt;/strong> : LWE（Learning with Errors）問題などを基礎とする。NISTの標準化で主流（Kyber、Dilithiumなど）。&lt;/li>
&lt;li>&lt;strong>符号ベース暗号（Code-based cryptography）&lt;/strong> : 誤り訂正符号の復号問題の困難性に依存。&lt;/li>
&lt;li>&lt;strong>多変数多項式暗号（Multivariate cryptography）&lt;/strong> : 多変数の連立二次方程式を解く困難性に依存。&lt;/li>
&lt;li>&lt;strong>ハッシュベース署名（Hash-based signatures）&lt;/strong> : ハッシュ関数の安全性のみに依存するデジタル署名。&lt;/li>
&lt;/ul>
&lt;p>すでにGoogle ChromeやAppleのiMessageなど、主要なソフトウェアやプラットフォームではPQCの導入テストやハイブリッド実装が開始されています。&lt;/p>
&lt;h2 id="おわりに">おわりに
&lt;/h2>&lt;p>量子コンピュータは、SFの世界の夢物語から現実の工学的挑戦へと移行しています。ショアのアルゴリズムは、数学と量子力学が融合した人類の偉大な知的成果ですが、同時に我々のデジタル社会の基盤を揺るがす「破壊的な力」を秘めています。&lt;/p>
&lt;p>RSA暗号が明日すぐに使えなくなるわけではありません。しかし、量子技術の進化と「Store Now, Decrypt Later」のリスクを鑑みれば、PQCへの移行という暗号史に残る大規模なマイグレーションはすでに始まっています。我々は今、情報セキュリティにおけるパラダイムシフトの最前線を目撃しているのです。&lt;/p></description></item><item><title>【数式で完全理解】古典最強「GNFS」はなぜ量子アルゴリズムに敗れるのか？素因数分解のパラダイムシフト</title><link>http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post 【数式で完全理解】古典最強「GNFS」はなぜ量子アルゴリズムに敗れるのか？素因数分解のパラダイムシフト" />&lt;p>現代のインターネット社会における情報セキュリティは、RSA暗号をはじめとする公開鍵暗号方式によって守られています。RSA暗号の安全性の根拠は、 &lt;strong>「巨大な合成数の素因数分解は計算量的に極めて困難である」&lt;/strong> という事実に依存しています。&lt;/p>
&lt;p>本記事では、古典コンピュータにおいて最強の素因数分解アルゴリズムである &lt;strong>「一般数体ふるい法」&lt;/strong> （General Number Field Sieve, GNFS）の数学的メカニズムを紐解くとともに、それがなぜピーター・ショアによって発見された &lt;strong>「Shorのアルゴリズム」&lt;/strong> によって完全に打ち破られるのか、そのパラダイムシフトを数式と概念図を用いて徹底的に深掘りします。&lt;/p>
&lt;hr>
&lt;h2 id="1-古典計算における素因数分解のアプローチフェルマーの素因数分解法からの発展">1. 古典計算における素因数分解のアプローチ：フェルマーの素因数分解法からの発展
&lt;/h2>&lt;p>素因数分解問題とは、与えられた合成数 $N$ に対して、$N = p \times q$ となる素数 $p, q$ を見つける問題です。&lt;/p>
&lt;p>基本的なアイデアは、次の合同式を満たす非自明な $x, y$ を見つけることに帰着します。&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>これを変形すると、&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>ここで、$x \not\equiv \pm y \pmod N$ であれば、$\gcd(x-y, N)$ または $\gcd(x+y, N)$ を計算することで、$N$ の非自明な因数を得ることができます。この事実がGNFSなどの近代的な素因数分解アルゴリズムの基礎となっています。&lt;/p>
&lt;hr>
&lt;h2 id="2-古典最強のアルゴリズム一般数体ふるい法gnfsの深淵">2. 古典最強のアルゴリズム：「一般数体ふるい法」（GNFS）の深淵
&lt;/h2>&lt;p>&lt;strong>「GNFS」&lt;/strong> は、今日知られている古典コンピュータ向けの素因数分解アルゴリズムの中で最も高速なものです。その時間計算量は、準指数関数的（Sub-exponential）な時間を要します。&lt;/p>
&lt;h3 id="gnfsの計算量">GNFSの計算量
&lt;/h3>&lt;p>数 $N$ の桁数を $b = \log_2 N$ としたとき、GNFSの計算量は次のように表されます。&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>この式からわかるように、計算量は多項式時間ではなく、指数関数よりはわずかに遅い &lt;strong>「準指数時間」&lt;/strong> となります。それでも桁数が増えれば計算時間は天文学的に増大します。&lt;/p>
&lt;h3 id="gnfsの数学的メカニズム">GNFSの数学的メカニズム
&lt;/h3>&lt;p>GNFSは大きく分けて4つのステップで構成されます。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>多項式選択 (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>ふるい分け (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>行列の簡約化 (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>平方根の計算 (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-多項式選択と代数体">2.1. 多項式選択と代数体
&lt;/h4>&lt;p>まず、整数を係数とする既約多項式 $f(x)$ と $g(x)$ を選びます。これらは共通の根 $m$ を modulo $N$ で持つように設定されます。すなわち、&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>通常、$g(x)$ は一次多項式 $g(x) = x - m$ として選ばれます。$f(x)$ の根を $\alpha$ とおくと、$\mathbb{Q}(\alpha)$ という &lt;strong>「代数体」&lt;/strong> （Number Field）が構成されます。$\mathbb{Q}(\alpha)$ の環における演算と、通常の整数環 $\mathbb{Z}$ の演算を、準同型写像 $\phi: \alpha \mapsto m$ を通じて比較します。&lt;/p>
&lt;h4 id="22-ふるい分け-sieving">2.2. ふるい分け (Sieving)
&lt;/h4>&lt;p>次に、互いに素な整数のペア $(a, b)$ を大量に探索します。目的は、以下の2つの値がそれぞれ &lt;strong>「B-smooth」&lt;/strong> （比較的小さな素因数のみで構成される）になるようなペアを見つけることです。&lt;/p>
&lt;ol>
&lt;li>$a - bm$ （整数環上での値）&lt;/li>
&lt;li>$b^d f(a/b)$ （代数体上でのノルム $N(a - b\alpha)$ に対応）&lt;/li>
&lt;/ol>
&lt;p>ここで &lt;strong>「ふるい」&lt;/strong> （Sieve）と呼ばれる高速な探索手法が用いられます。これにより、膨大な候補の中から条件を満たす $(a, b)$ ペアを効率的に抽出します。&lt;/p>
&lt;h4 id="23-行列の簡約化-linear-algebra-over-gf2">2.3. 行列の簡約化 (Linear Algebra over GF(2))
&lt;/h4>&lt;p>集めたペア $(a, b)$ から、指数ベクトルを構成し、巨大な疎行列の左零空間を $\mathbb{F}_2$ （要素が0と1のみの体）上で求めます。&lt;/p>
&lt;p>関係式 $ \prod (a_i - b_i m) $ と $ \prod (a_i - b_i \alpha) $ がそれぞれ平方元になるように、ベクトル $v$ を解として見つけます。これは、&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>という線形方程式系を解くことに他なりません。ここで、ブロック・ランチョス法（Block Lanczos Algorithm）やブロック・ウィーデマン法（Block Wiedemann Algorithm）などの高度な数値計算アルゴリズムが活用されます。&lt;/p>
&lt;h4 id="24-平方根の計算">2.4. 平方根の計算
&lt;/h4>&lt;p>最後に、代数体と整数環の双方で平方根を取り、$x^2 \equiv y^2 \pmod N$ という関係式を導き出します。そして、$\gcd(x-y, N)$ を計算し、因数を得ます。&lt;/p>
&lt;hr>
&lt;h2 id="3-量子計算によるブレイクスルーshorのアルゴリズム">3. 量子計算によるブレイクスルー：「Shorのアルゴリズム」
&lt;/h2>&lt;p>GNFSが準指数関数的な時間を必要とするのに対し、1994年にピーター・ショアが発表した &lt;strong>「Shorのアルゴリズム」&lt;/strong> は、量子コンピュータを用いることでこの問題を &lt;strong>「多項式時間」&lt;/strong> で解くことができます。&lt;/p>
&lt;h3 id="shorのアルゴリズムの計算量">Shorのアルゴリズムの計算量
&lt;/h3>&lt;p>量子ビット数を $O(\log N)$ としたとき、時間計算量は次のようになります。&lt;/p>
$$ O((\log N)^3) $$
&lt;p>これは、ビット数に対して指数関数的な爆発を起こさないことを意味します。 &lt;strong>「古典計算」&lt;/strong> の計算量が宇宙の寿命を超えるような巨大な合成数であっても、 &lt;strong>「量子計算」&lt;/strong> では数時間〜数日で解読可能になるという驚異的な結果です。&lt;/p>
&lt;h3 id="shorのアルゴリズムの全体像周期発見問題への帰着">Shorのアルゴリズムの全体像：周期発見問題への帰着
&lt;/h3>&lt;p>Shorのアルゴリズムは、素因数分解問題を &lt;strong>「周期発見問題」&lt;/strong> へと巧みに帰着させます。&lt;/p>
&lt;ol>
&lt;li>$N$ と互いに素なランダムな整数 $a$ を選ぶ（$1 &lt; a &lt; N$）。&lt;/li>
&lt;li>関数 $f(x) = a^x \bmod N$ を定義する。&lt;/li>
&lt;li>$f(x)$ の周期 $r$、すなわち $a^r \equiv 1 \pmod N$ となる最小の正整数 $r$ を見つける。&lt;/li>
&lt;li>$r$ が偶数であれば、$a^{r/2} \not\equiv -1 \pmod N$ かどうかを確認し、$\gcd(a^{r/2} \pm 1, N)$ を計算して素因数を得る。&lt;/li>
&lt;/ol>
&lt;p>このステップ3の &lt;strong>「周期 $r$ の発見」&lt;/strong> こそが、古典コンピュータでは指数関数的時間を要するボトルネックですが、量子コンピュータは &lt;strong>「量子重ね合わせ」&lt;/strong> と &lt;strong>「量子フーリエ変換」&lt;/strong> （QFT）を用いることで、これを一瞬で解決します。&lt;/p>
&lt;hr>
&lt;h2 id="4-量子フーリエ変換qftと周期の抽出">4. 量子フーリエ変換（QFT）と周期の抽出
&lt;/h2>&lt;p>Shorのアルゴリズムの核心である、量子状態の操作について数式で詳しく見ていきましょう。&lt;/p>
&lt;h3 id="41-量子重ね合わせの生成">4.1. 量子重ね合わせの生成
&lt;/h3>&lt;p>まず、2つの量子レジスタを用意します。レジスタ1は入力 $x$ の重ね合わせ状態を保持し、レジスタ2は関数の計算結果 $f(x)$ を保持します。初期状態 $|0\rangle |0\rangle$ に対してアダマール変換（Hadamard Transform）を適用し、すべての可能な $x$ の重ね合わせを作り出します。&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
（ここで $Q$ は $N^2 \le Q &lt; 2N^2$ を満たす2のべき乗）&lt;/p>
&lt;p>次に、量子オラクル $U_f$ を用いて $f(x) = a^x \bmod N$ を計算し、レジスタ2に格納します。&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>ここでレジスタ2を測定したと仮定しましょう（実際には測定しなくても数学的構造は同じです）。ある値 $y = a^{x_0} \bmod N$ が観測されたとすると、レジスタ1の状態は、$f(x) = y$ となるすべての $x$ の重ね合わせに収縮します。周期を $r$ とすると、そのような $x$ は $x_0, x_0 + r, x_0 + 2r, \dots$ となります。&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
（ここで $M \approx Q/r$ は項の数）&lt;/p>
&lt;p>この状態は、周期 $r$ の情報を内在していますが、直接測定してもランダムな $x_0 + kr$ が得られるだけで、周期 $r$ はわかりません。ここでQFTの出番です。&lt;/p>
&lt;h3 id="42-量子フーリエ変換-quantum-fourier-transform-の適用">4.2. 量子フーリエ変換 (Quantum Fourier Transform) の適用
&lt;/h3>&lt;p>QFTは、量子状態の振幅に対して離散フーリエ変換を行う操作です。状態 $|x\rangle$ に対するQFTの作用は以下のように定義されます。&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>これを $|\psi_3\rangle$ に適用すると、位相の干渉（量子干渉）が起こります。&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>この式の和を展開すると、&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>という部分が現れます。この幾何級数の和は、$ry/Q$ が整数に近いときにのみ強め合い（Constructive Interference）、それ以外のときには相殺し合います（Destructive Interference）。&lt;/p>
&lt;p>したがって、高い確率で測定される状態 $|y\rangle$ は、&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>という条件を満たす整数 $y$ となります（$c$ は何らかの整数）。&lt;/p>
&lt;h3 id="43-連分数展開による周期の特定">4.3. 連分数展開による周期の特定
&lt;/h3>&lt;p>測定によって $y$ を得た後、古典コンピュータを用いて $y/Q$ を &lt;strong>「連分数展開」&lt;/strong> （Continued Fraction Expansion）します。これにより、$y/Q$ の近似分数 $c/r$ を計算し、分母から周期 $r$ の候補を高効率に抽出することができます。&lt;/p>
&lt;hr>
&lt;h2 id="5-概念モデルの比較とパラダイムシフト">5. 概念モデルの比較とパラダイムシフト
&lt;/h2>&lt;p>GNFSとShorのアルゴリズムの違いを直感的に理解するために、Mermaid記法による概念図を示します。&lt;/p>
&lt;h3 id="量子回路によるshorのアルゴリズムの概念図">量子回路によるShorのアルゴリズムの概念図
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[初期状態: 0...0] --&amp;gt; B[Hadamard変換で全状態の重ね合わせ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[モジュラべき乗演算 a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|量子もつれ| D[周期性を持つ状態への収縮]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[量子フーリエ変換 QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|干渉による確率増幅| F[測定: yを得る]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[古典処理: 連分数展開]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[周期 r の発見]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[Nの素因数を算出]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="パラダイムシフトの本質">パラダイムシフトの本質
&lt;/h3>&lt;p>GNFSは &lt;strong>「数学的な空間（代数体）の中で関係式を探索する」&lt;/strong> というアプローチをとります。しかし、探索空間は桁数に対して指数関数的に拡大するため、古典コンピュータの計算能力（並列化を含めても）では、鍵長が2048ビットなどを超えると事実上解読不可能になります。&lt;/p>
&lt;p>一方、Shorのアルゴリズムは &lt;strong>「量子干渉による波の性質」&lt;/strong> を利用します。重ね合わせ状態にあるすべての計算経路を同時に評価し、QFTによって不要な答えを相殺（弱め合い）、正解となる周期の確率振幅だけを増幅（強め合い）させます。これにより、空間を探索するのではなく、 &lt;strong>「正解そのものを浮かび上がらせる」&lt;/strong> という全く異なる次元のアプローチを実現しているのです。&lt;/p>
&lt;h2 id="6-まとめ">6. まとめ
&lt;/h2>&lt;p>本記事では、古典限界の極みである &lt;strong>「GNFS」&lt;/strong> と、量子計算の力を見せつける &lt;strong>「Shorのアルゴリズム」&lt;/strong> について、それぞれの数学的背景とアルゴリズムの構造を深く比較しました。&lt;/p>
&lt;p>GNFSが多項式の選択や巨大行列の計算といった数学的技巧を凝らして準指数時間へと計算量を押し下げたのに対し、Shorのアルゴリズムは量子力学の基本原理である重ね合わせと干渉を数学的ツール（QFT）と融合させ、一気に多項式時間へとブレイクスルーを果たしました。&lt;/p>
&lt;p>現状では、実用的な規模（数千量子ビット）でShorのアルゴリズムを実行できるエラー耐性量子コンピュータ（FTQC）は存在しません。しかし、この数学的・理論的なパラダイムシフトの存在こそが、現在世界中で耐量子計算機暗号（PQC: Post-Quantum Cryptography）への移行が急がれている最大の理由なのです。&lt;/p></description></item></channel></rss>