はじめに
こんにちは、データ&セキュリティ研究所の山口と伊豆です。
2024年12月に中国の研究者たちが量子アニーリング計算機を使ってある条件を満たす2048ビット合成数の素因数分解に成功したという論文を発表しました。インターネット等で使用されているRSA暗号やRSA署名という暗号方式は合成数をパラメータ(公開鍵)として使用しており、この合成数の素因数分解が難しいことが安全性の根拠となっています。このため2048ビット合成数が簡単に素因数分解できてしまうとRSA暗号やRSA署名が解読されてしまい、インターネットの安全性が大きく揺らいでしまいます。本記事では本論文の提案内容を解析し、2048ビット合成数を使用するRSA暗号やRSA署名の安全性には影響がないことを説明します。
文献情報
本記事が紹介する論文の情報は以下の通りです。以下、「本論文」と呼びます。
タイトル:A First Successful Factorization of RSA-2048 Integer by D-Wave Quantum Computer
著者:Chao Wang, Jingjing Yu, Zhi Pei, Qidi Wang, and Chunlei Hong
論文情報:Tsinghua Science and Technology, pp.1270-1282, Volume: 30, Issue: 3, June 2025
なお本論文の正式な出版日は2025年6月ですが、2024年12月に先行公開されています。
本論文の著者と同じ研究室では2024年10月にも量子アニーリング計算機を使った素因数分解法を提案しています。内容については過去のブログ記事を参照ください。
論文の概要と評価
本論文は、D-Wave という量子アニーリング計算機を使ってある条件を満たす2048ビット合成数を素因数分解する手法と、実際に D-Wave を用いて10種類の2048ビット合成数を素因数分解した検証結果を報告しています。ここで「ある条件」とは2048ビット合成数が1024ビットの2つの素数の積となっており、かつ、2つの素数の下から2ビット目と3ビット目の値が異なっていることを指します (このとき2つの素数の値の差は 2 または 6 となります)。実際、検証で使用された10種類の2048ビット合成数のうち、3種類は2つの素数の差が2、残り7種類は2つの素数の差が6となっています。
なお論文のタイトルにある「RSA-2048」という表記は過去にRSA社が開催していた RSA Factoring Challenge という素因数分解コンテストで出題された合成数 RSA2048 を連想させますが、今回の検証では無関係なのでご注意下さい。 一般に、ある合成数が同じビット長の2つの素数の積になっている場合、その合成数のことをRSA型合成数と呼ぶので、 「RSA-2048」は「2048ビットのRSA型合成数」を意味していると解釈できます。
本論文は筆算法という(量子)アニーリング計算機向けの素因数分解法を使用しています。量子計算機による素因数分解というとショアのアルゴリズムが有名ですが、こちらは量子ゲート計算機向けであり、本論文の提案手法とは全く関係ないことにも注意が必要です。量子計算機の分類や、量子アニーリング計算機と量子ゲート計算機の違いについては過去のブログ記事を参照下さい。
本論文は、2つの素数 ) の下から2ビット目と3ビット目の値が異なっているときに、量子アニーリング計算機 D-Wave によって合成数
が実際に素因数分解できることを検証しています。しかしRSA暗号やRSA署名においてこのような素数のペアを使うことは考えにくいです。というのも2つの素数
,
の値がほぼ同じ場合、合成数
に対してはフェルマー法という現在の計算機(古典計算機)向けの素因数分解法が有効であることが知られており、量子計算機を持ち出すまでもなく素因数分解が可能になるからです。このため、RSA暗号やRSA署名では
,
の差が大きくなるように選択することが多く、本論文が扱っている
という条件はRSA暗号・RSA署名にとっては現実性の低いケースになっています (下図参照)。
なお下位2ビット目と3ビット目の値が異なっている2つの素数 を生成するのは簡単です。例えば以下の2048ビットの素数
は下位2ビット目と3ビット目の値が異なっていて条件を満たしています。このとき4096ビットの合成数
は提案法によって素因数分解することは可能です。従って、合成数のビット長は素因数分解における重要なパラメータですが、それだけで素因数分解の意味の大小を判断することはできず、具体的にどのような性質の合成数を素因数分解したかまで気を払う必要があると言えます。
本論文の提案手法をベースにすることで、 が大きい場合でも素因数分解が出来るような拡張できて、RSA暗号やRSA署名で使用している合成数の素因数分解が可能になるかもしれないとの懸念を持つかもしれません。しかい本記事の後半で考察する通り、残念ながらその可能性も低いと言えます。
以上の考察により、本論文の素因数分解手法はRSA暗号・RSA署名の安全性に全く影響を与えないと結論づけることができます。
参考:特殊な合成数の利用について
本論文で提案している素因数分解法は、下位2ビット目と3ビット目が異なる2つの素数 を素因数にもつ特殊な合成数
にのみ適用できる手法です。著者もこのことを触れた上で過去にもメルセンヌ合成数 [tex: N=21039-1] や [tex: N=21061-1] を特殊数体篩法(SNFS)という素因数分解法で素因数分解する実験が行われており、特殊な合成数の素因数分解の意義を主張しています。確かにSNFSはメルセンヌ合成数などの特殊な合成数に効果のある素因数分解法ですが、素因数に関する情報は一切使っておらず、本論文で扱っている合成数とは状況がかなり異なります。一般にRSA暗号の解読(素因数分解)では素因数の情報は利用できないため、本論文のように攻撃者が素因数がある条件を満たしていることを知っているという仮定は現実性に欠けます。この意味でも提案法はRSA暗号の安全性に影響を与えないことが分かります。
技術的考察
以下では2つの素数の下位2ビット目と3ビット目が異なるという条件の導出法と, 条件の緩和方法を検討します。このため記述が専門的になることをご承知置き下さい。
筆算法の概要
(量子)アニーリング計算機は、ハミルトニアンと呼ばれる多項式の最小値を求めることに特化された計算機です。ここでハミルトニアンはバイナリ変数 (値は または
) であり、高々2次であることが必要です。筆算法は(量子)アニーリング計算機向けの素因数分解法で、乗算の筆算をもとにハミルトンを導出し、(量子)アニーリング計算機によって最小値を求めることで素因数分解を行います。
いま ビットの2つの素数
の2進展開を
,
と表すことにします。
ここで は
ビットの素数なので、
,
,
,
となっています。さらに の2進展開を
と表すとき、 を計算する筆算は以下のようになります。
ここで
は
の桁から
の桁への繰り上がりを表すバイナリ変数です。
ここで各桁から導出される関係式を
のようにおくと、 を満たす解から素因数分解が求められます。
この解は
の最小値を与えますので、
(量子)アニーリング計算により
の最小値を与える
を求めることで素因数分解が可能となります。これが筆算法と呼ばれる素因数分解法です。
なお上で定義した は一般には3次以上になりますが、
適当な項 (例えば
) を別のバイナリ変数に置き換えることで2次以下に変換することが可能ですが、
トレードオフとして変数の個数が増大します。
「ある条件」の導出
(量子)アニーリング計算では変数の個数が少ない方が効率的に解を求めることができます。
そこで(量子)アニーリング計算が楽になるような に関する条件を調べます。
まず
が成立する場合を考えます。
とおくと
となり
は定まりません。
しかし
とおくと
となり
が得られます。
よって と仮定することで(量子)アニーリング計算が楽になることがわかります。
このとき
となっています。
なお の下位2ビット目だけが異なる、つまり
と仮定すると という条件が得られます。
このとき
となるのですが、本論文はこのケースを検討の対象外としています。
次に
が成立する場合を考えます。
このとき
であることから
であり、
となっています。 よって
であり、さきほどと同じ議論により
を仮定すれば となることがわかります。
このとき
となっています。
さらに
を考えます。このとき
なので
となっています。 ここで
と仮定すると であり、
ならば
となり、
が得られます (このとき となっています)。
ハミルトニアンは
となります。
他方で ならば
となり、
が得られます (このとき となっています)。
ハミルトニアンは
となります。
このようにして2つの素数の「下位2ビット目と3ビット目が異なる」場合にハミルトニアンが簡略化できることがわかりました。
条件の緩和検討
さらなる条件を導出するにはには上のような計算を続けていく必要があります。 しかしここから先は桁上がりの変数が増大してしまうため、 合成数や素数に条件を課しても変数値は簡単には一意に決まりません。
われわれ富士通の研究チームは、
Digital Annealer というシミュレーティッドアニーリング計算機を用いて、
筆算法によって32ビット合成数の素因数分解に成功しました。
この結果から (かつ下位32ビット目より上のビット値は全て同じ) を満たすならば
今回の提案法により
の素因数分解は可能であることが予想できます。
逆に考えれば
の場合の素因数分解は難しく、
RSA暗号やRSA署名で使用するような合成数に適用できないことが分かります。
また、 の下位2ビット目と3ビット目のような連続するビットではなく
任意のビットを利用した場合が気になります。任意のビットを利用した場合、
対応するハミルトニアンに共通の変数が登場しなくなるため、
連続するビットを利用した場合に比べてハミルトニアンの最小値計算が難しくなり、
結果として素因数分解ができにくくなります。
このため任意のビットに拡張するメリットは小さいと考えられます。
まとめ
量子アニーリング計算機を使った素因数分解の提案論文の内容を紹介しました。 近年は量子計算機を使った素因数分解が盛んに研究されていますので、 機会があれば別の素因数分解法を本ブログにて紹介したいと思います。 最後までお読みいただきありがとうございました!