相対エントロピーから情報と物理を組み立てる 第6部 第3章 §6.3.1 ★★★ 位数 r r r が偶数で a r / 2 ≢ − 1 a^{r/2}\not\equiv-1 a r /2 ≡ − 1 なら gcd ( a r / 2 ± 1 , N ) \gcd(a^{r/2}\pm1,N) g cd( a r /2 ± 1 , N ) が因数になる。でたらめに選んだ a a a で半分以上の確率でそうなる
N N N を2つ以上の素数の積とする。N N N を素因数に分ける問題は、桁数 n = ⌈ log 2 N ⌉ n=\lceil\log_2N\rceil n = ⌈ log 2 N ⌉ について多項式時間で解く古典のアルゴリズムが知られていない。この難しさを安全性の根拠に置いたのが RSA 暗号である1 1 R. L. Rivest, A. Shamir and L. Adleman (1978), Commun. ACM 21 , 120。 。P. W. Shor は 1994 年に、量子コンピュータを使えば O ( n 3 ) \mathcal{O}(n^3) O ( n 3 ) 程度の手間で因数分解できることを示した2 2 P. W. Shor (1994), Proceedings of the 35th Annual Symposium on Foundations of Computer Science, 124。詳しい版は P. W. Shor (1997), SIAM J. Comput. 26 , 1484。 。
この章が選ぶ問題は、N N N と互いに素な整数 a a a について、a r ≡ 1 ( m o d N ) a^r\equiv1\pmod N a r ≡ 1 ( mod N ) を満たす最小の正の整数 r r r (a a a の位数 )を求める問題である。因数分解は、古典の計算だけで位数を求める問題に帰着する(6.3.1 節)。量子計算を使うのは位数を求める部分だけで、「y y y に a a a を掛けて N N N で割った余りを取る」ユニタリ U a U_a U a の固有値が e 2 π i s / r \mathrm{e}^{2\pi\mathrm{i} s/r} e 2 π i s / r の形をしていることから、前の章の位相推定(第6部第2章 )で s / r s/r s / r の近似値が読める(6.3.2 節)。近似値から分母 r r r を取り出す操作は連分数で行い(6.3.3 節)、ここで再び古典の計算に戻る。6.3.4 節で1回の実行が成功する確率と回路の大きさを数え、RSA の 2048 ビットの鍵に要る資源の現在の見積もりを引く。
この巻の背骨である相対エントロピーとの縁は、6.3.5 節に1つだけ置く。位相推定の直前の状態を計算基底でそのまま測ると、結果は周期について何も教えない(相互情報量が 0 0 0 )。同じ状態に逆 Fourier 変換を当ててから測ると、相互情報量はほぼ ln r \ln r ln r になり、出力の分布は一様分布から D D D の分だけ離れる。周期の情報は状態の位相に書かれていて、逆 Fourier 変換はその位相を測定で読める基底へ移す操作である。6.3.6 節では、信号処理の授業の離散 Fourier 変換と、暗号の授業の RSA を、この章の式と並べる。
この章の対数は自然対数(nat)とし、ビットで数えるときは log 2 \log_2 log 2 と書く。N N N は奇数で、素数の累乗でないとする(偶数なら 2 2 2 で割れ、N = p k N=p^k N = p k なら N 1 / k N^{1/k} N 1/ k を k = 2 , … , n k=2,\dots,n k = 2 , … , n について古典の計算で調べれば見つかる)。第1のレジスタの量子ビットの数を t t t 、測定で得る整数を m ∈ { 0 , 1 , … , 2 t − 1 } m\in\{0,1,\dots,2^t-1\} m ∈ { 0 , 1 , … , 2 t − 1 } と書く。位相推定の流儀は前の章に合わせ、t t t 量子ビットの量子 Fourier 変換を ∣ x ⟩ ↦ 2 − t / 2 ∑ k e 2 π i x k / 2 t ∣ k ⟩ | x \rangle \mapsto2^{-t/2}\sum_{k}\mathrm{e}^{2\pi\mathrm{i} xk/2^t}| k \rangle ∣ x ⟩ ↦ 2 − t /2 ∑ k e 2 π i x k / 2 t ∣ k ⟩ とする(第6部第2章の式 (6.2.1) と同じ符号)。Euler の関数(N N N 以下で N N N と互いに素な正の整数の個数)を ϕ ( N ) \phi(N) ϕ ( N ) と書き、位相の φ \varphi φ と字形で分ける。
1の平方根で ± 1 \pm1 ± 1 でないもの
N N N と互いに素な a a a (1 ≤ a < N 1\le a<N 1 ≤ a < N )を1つ選び、その位数 r r r が分かったとする。r r r が偶数なら x ≔ a r / 2 m o d N x\coloneqq a^{r/2}\bmod N x : = a r /2 mod N は
x 2 ≡ a r ≡ 1 ( m o d N ) x^2\equiv a^r\equiv1\pmod N x 2 ≡ a r ≡ 1 ( mod N )
を満たす。つまり x x x は「N N N を法とした1の平方根」である。N N N が素数なら1の平方根は ± 1 \pm1 ± 1 しかないが、N N N が合成数なら他の平方根がある。r r r は位数(最小)なので x ≢ 1 x\not\equiv1 x ≡ 1 である。さらに x ≢ − 1 x\not\equiv-1 x ≡ − 1 なら、
( x − 1 ) ( x + 1 ) ≡ 0 ( m o d N ) , x − 1 ≢ 0 , x + 1 ≢ 0 ( m o d N ) (6.3.1) (x-1)(x+1)\equiv0\pmod N,\qquad x-1\not\equiv0,\quad x+1\not\equiv0\pmod N\tag{6.3.1} ( x − 1 ) ( x + 1 ) ≡ 0 ( mod N ) , x − 1 ≡ 0 , x + 1 ≡ 0 ( mod N ) ( 6.3.1 )
となる。N N N は積 ( x − 1 ) ( x + 1 ) (x-1)(x+1) ( x − 1 ) ( x + 1 ) を割り切るのに、どちらの因子も割り切らない。したがって N N N の素因数の一部は x − 1 x-1 x − 1 に、残りは x + 1 x+1 x + 1 に入っていて、gcd ( x − 1 , N ) \gcd(x-1,N) g cd( x − 1 , N ) と gcd ( x + 1 , N ) \gcd(x+1,N) g cd( x + 1 , N ) はどちらも 1 1 1 でも N N N でもない約数になる。最大公約数は Euclid の互除法で O ( n 3 ) \mathcal{O}(n^3) O ( n 3 ) 程度のビット演算で求まるので、ここまでの手間は古典の計算として小さい。
たとえば N = 15 N=15 N = 15 、a = 7 a=7 a = 7 では 7 1 = 7 7^1=7 7 1 = 7 、7 2 = 49 ≡ 4 7^2=49\equiv4 7 2 = 49 ≡ 4 、7 3 ≡ 28 ≡ 13 7^3\equiv28\equiv13 7 3 ≡ 28 ≡ 13 、7 4 ≡ 91 ≡ 1 7^4\equiv91\equiv1 7 4 ≡ 91 ≡ 1 で、位数は r = 4 r=4 r = 4 である。x = 7 2 m o d 15 = 4 x=7^2\bmod15=4 x = 7 2 mod 15 = 4 は ± 1 \pm1 ± 1 でないので、gcd ( 3 , 15 ) = 3 \gcd(3,15)=3 g cd( 3 , 15 ) = 3 と gcd ( 5 , 15 ) = 5 \gcd(5,15)=5 g cd( 5 , 15 ) = 5 が因数として出てくる。
でたらめな a a a がうまくいく確率
うまくいかないのは、r r r が奇数のときと、a r / 2 ≡ − 1 a^{r/2}\equiv-1 a r /2 ≡ − 1 のときである。N = 15 N=15 N = 15 の a = 14 a=14 a = 14 は 14 ≡ − 1 14\equiv-1 14 ≡ − 1 なので r = 2 r=2 r = 2 、a r / 2 ≡ − 1 a^{r/2}\equiv-1 a r /2 ≡ − 1 で失敗し、a = 1 a=1 a = 1 は r = 1 r=1 r = 1 で失敗する。失敗する a a a が少ないことは、次の定理が保証する。
定理 6.3.1(位数発見への帰着 ★★★)
N N N を奇数で、異なる素因数を k ≥ 2 k\ge2 k ≥ 2 個持つ整数とする。N N N と互いに素な a a a (1 ≤ a < N 1\le a<N 1 ≤ a < N )を一様に選ぶと、
Pr ( r が偶数かつ a r / 2 ≢ − 1 ( m o d N ) ) ≥ 1 − 1 2 k − 1 ≥ 1 2 (6.3.2) \Pr\bigl(r\text{ が偶数かつ }a^{r/2}\not\equiv-1\pmod N\bigr)\ \ge\ 1-\frac{1}{2^{k-1}}\ \ge\ \frac12\tag{6.3.2} Pr ( r が偶数かつ a r /2 ≡ − 1 ( mod N ) ) ≥ 1 − 2 k − 1 1 ≥ 2 1 ( 6.3.2 )
が成り立つ。
証明 N = p 1 α 1 ⋯ p k α k N=p_1^{\alpha_1}\cdots p_k^{\alpha_k} N = p 1 α 1 ⋯ p k α k とし、中国剰余定理で a a a を各 p j α j p_j^{\alpha_j} p j α j を法とした余り a j a_j a j の組と同一視する。a a a を一様に選ぶことは、各 a j a_j a j をp j α j p_j^{\alpha_j} p j α j を法とした既約剰余類から独立に一様に選ぶことと同じである。a j a_j a j の位数を r j r_j r j とすると r = lcm ( r 1 , … , r k ) r=\operatorname{lcm}(r_1,\dots,r_k) r = lcm ( r 1 , … , r k ) である。r j r_j r j を割り切る2の最大の冪を 2 d j 2^{d_j} 2 d j と書く。
失敗は2通りある。r r r が奇数なら、すべての r j r_j r j が奇数で d 1 = ⋯ = d k = 0 d_1=\dots=d_k=0 d 1 = ⋯ = d k = 0 である。r r r が偶数で a r / 2 ≡ − 1 ( m o d N ) a^{r/2}\equiv-1\pmod N a r /2 ≡ − 1 ( mod N ) なら、各 j j j で a j r / 2 ≡ − 1 a_j^{r/2}\equiv-1 a j r /2 ≡ − 1 なのでr j r_j r j は r / 2 r/2 r /2 を割り切らないが r r r を割り切る。これは d j d_j d j が r r r の2の指数に等しいことを意味し、すべての d j d_j d j が同じ値になる。どちらの失敗でも d 1 = ⋯ = d k d_1=\dots=d_k d 1 = ⋯ = d k である。
p j α j p_j^{\alpha_j} p j α j を法とした既約剰余類の群は位数 ϕ ( p j α j ) = p j α j − 1 ( p j − 1 ) \phi(p_j^{\alpha_j})=p_j^{\alpha_j-1}(p_j-1) ϕ ( p j α j ) = p j α j − 1 ( p j − 1 ) の巡回群で、p j p_j p j が奇数なのでこの位数は偶数である。巡回群の元を一様に選ぶと、その位数の2の指数が群の位数の2の指数にちょうど等しくなる確率は 1 / 2 1/2 1/2 (生成元の奇数乗の元がちょうど半分)である。したがって、d 1 d_1 d 1 がどの値でも、d j d_j d j がそれに一致する確率は各 j ≥ 2 j\ge2 j ≥ 2 で 1 / 2 1/2 1/2 以下で、d 1 = ⋯ = d k d_1=\dots=d_k d 1 = ⋯ = d k の確率は 2 − ( k − 1 ) 2^{-(k-1)} 2 − ( k − 1 ) 以下である。
N = 15 N=15 N = 15 では N N N と互いに素な a a a が ϕ ( 15 ) = 8 \phi(15)=8 ϕ ( 15 ) = 8 個あり、そのうち a = 1 , 14 a=1,14 a = 1 , 14 を除く6個で成功する(割合 3 / 4 3/4 3/4 )。N = 21 N=21 N = 21 では12個のうち6個(1 / 2 1/2 1/2 、下界の等号)、素因数を3個持つ N = 105 N=105 N = 105 では 0.875 ≥ 3 / 4 0.875\ge3/4 0.875 ≥ 3/4 である。1回の試行で半分以上の確率で成功するので、a a a を選び直して ℓ \ell ℓ 回試せば失敗の確率は 2 − ℓ 2^{-\ell} 2 − ℓ 以下になる。残る仕事は位数 r r r を求めることだけで、ここに古典の速いアルゴリズムが知られていない。
例題 6.3.1 N = 15 N=15 N = 15 の位数の表 ★★
オリジナル N = 15 N=15 N = 15 と互いに素な a ∈ { 2 , 4 , 7 , 8 , 11 , 13 , 14 } a\in\{2,4,7,8,11,13,14\} a ∈ { 2 , 4 , 7 , 8 , 11 , 13 , 14 } のそれぞれについて、位数 r r r を求めよ。帰着の手続きで因数が出る a a a と出ない a a a を分け、出る a a a についてどの因数が出るかを書け。a = 4 a=4 a = 4 と a = 11 a=11 a = 11 の位数が小さい理由を、4 = 2 2 4=2^2 4 = 2 2 、11 ≡ − 4 11\equiv-4 11 ≡ − 4 を使って説明せよ。
解答 冪を順に計算すると次の表になる。
a a a 2 4 7 8 11 13 14 r r r 4 2 4 4 2 4 2 a r / 2 m o d 15 a^{r/2}\bmod15 a r /2 mod 15 4 4 4 4 11 4 14
a r / 2 ≡ 14 ≡ − 1 a^{r/2}\equiv14\equiv-1 a r /2 ≡ 14 ≡ − 1 となる a = 14 a=14 a = 14 だけが失敗する。a r / 2 = 4 a^{r/2}=4 a r /2 = 4 の場合は gcd ( 3 , 15 ) = 3 \gcd(3,15)=3 g cd( 3 , 15 ) = 3 、gcd ( 5 , 15 ) = 5 \gcd(5,15)=5 g cd( 5 , 15 ) = 5 が出る。a = 11 a=11 a = 11 では gcd ( 10 , 15 ) = 5 \gcd(10,15)=5 g cd( 10 , 15 ) = 5 、gcd ( 12 , 15 ) = 3 \gcd(12,15)=3 g cd( 12 , 15 ) = 3 で、同じ2つの因数が逆の順に出る。a = 1 a=1 a = 1 も含めると、8個のうち6個が成功する。
2 2 2 の位数が4なので、4 = 2 2 4=2^2 4 = 2 2 の位数は 4 / gcd ( 2 , 4 ) = 2 4/\gcd(2,4)=2 4/ g cd( 2 , 4 ) = 2 になる。11 ≡ − 4 11\equiv-4 11 ≡ − 4 なので 11 2 ≡ 16 ≡ 1 11^2\equiv16\equiv1 1 1 2 ≡ 16 ≡ 1 で、位数は2である。一般に ( Z / 15 Z ) × (\mathbb{Z}/15\mathbb{Z})^\times ( Z /15 Z ) × の元の位数は、 m o d 3 \bmod3 mod 3 での位数(1か2)と m o d 5 \bmod5 mod 5 での位数(1・2・4のどれか)の最小公倍数で、4を超えない。この「位数は各素因数の側の位数の最小公倍数」という構造が定理 6.3.1 の証明の中身で、a = 14 a=14 a = 14 は m o d 3 \bmod3 mod 3 でも m o d 5 \bmod5 mod 5 でも − 1 -1 − 1 (位数2)なので、2の指数がそろって失敗する。
1 R. L. Rivest, A. Shamir and L. Adleman (1978), Commun. ACM 21 , 120。
2 P. W. Shor (1994), Proceedings of the 35th Annual Symposium on Foundations of Computer Science, 124。詳しい版は P. W. Shor (1997), SIAM J. Comput. 26 , 1484。
AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com