暗証番号とフェルマーの小定理 §1 数値の暗号化と暗号の解読 我々は ATM で銀行預金を引き出すとき, 本人確認の為, ATM に暗証番号 を入力する. ATM は入力された暗証番号を変換して銀行に送る. 銀行は受け 取った暗号を解読して入力された暗証番号に戻し, 銀行に保管されている暗証 番号と照合する. 一致すれば, 本人確認が終わる. インターネットでのパスワー ド入力による本人確認でも, 同じような処理が行われる. 暗証番号を暗号に変換し, 更に暗号を解読してもとの暗証番号に戻す方法と して, 最初に考案された公開鍵暗号が RSA 暗号であり, 1976 年 R. Rivest, A. Shamir, L. Adelman によって考案された. この暗号に応用されている数学 の定理について説明する. 以下, 整数とは非負整数 0, 1, 2, · · · のこととする. 暗証番号は, アルファ ベットや記号を含まない, 4 桁の整数と仮定する. 従って, 暗証番号の最大の 値は 9999 になる. 先ず, 異なる素数 p, q を決め, n = pq を求める. ただし n > 9999 となるように p, q を決める. 次に p − 1 と q − 1 の公倍数 ` を 1 つ決める. 最小公倍数でもかまわない. そして, この ` と a の最大公約数が 1 となるように, 整数 a を 1 つ決める. 最 後に, ad − 1 が ` で割り切れるように整数 d の値を 1 つ決める. このような d が存在することは後 (補題 4) で証明します. 以上の整数に関して次の定理が 成立する. 定理 1. 9999 以下の整数 M に対して, M ad を n で割った余りは M に等 しい. 定理 1 を認めて, 暗証番号の暗号化と暗号の解読法を具体的に説明する. 暗 証番号として ATM に M が入力されたとする. ATM は M a を n で割った余 り x を計算して x を銀行に送る. 銀行は受け取った x から xd を計算し, xd を n で割った余り y を求める. すると, 定理 1 により y = M となる. RSA 暗号では a と n の値は秘密ではなく公開鍵と呼ばれている. しかし d の値は秘密鍵と呼ばれ, 暗号の解読者のみが厳重に管理しなければならない. 理論的には n の値から d の値を求めることがでる. しかし, n の素因数分解 が必要で, n の値が大きいときは膨大な時間がかかる. 今後ハードやソフトが 1 改良されるにしても, 「当分は n が 300 桁の数なら大丈夫」とされている. §2 定理 1 の証明 数学的な記号を導入し, 幾つかの補題 (補助定理) を示した後, 定理 1 を証明 する. p, q, n, `, a, d は §1 で使われた特定の整数とする. 定義 2. (1) 整数 b (b = 1) と c (c = 1) の最大公約数が 1 のとき, b と c は 互いに素であると言う. (2) 整数 b を整数 r (r = 1) で割った余りを (b)r で表す. (3) 有限集合 A の要素の数を #A で表す. 補題 3. 整数 b, c, r (r = 1) に対して (bc)r = ((b)r (c)r )r . 証明. 適当な整数 x, y, β (β 5 r − 1), γ (γ 5 r − 1) により b = xr + β, c = yr + γ と表すと, bc = (xyr + xγ + yβ)r + βγ により, (bc)r = (βγ)r = ((b)r (c)r )r である. □ 補題 4. (ad)` = 1 を満たす d が存在する. 証明. a と ` は互いに素であるので, a, 2a, · · · , (` − 1)a は ` で割り切れな い. 1 以上 ` − 1 以下の ` − 1 個の整数 (a)` , (2a)` , · · · , ((` − 1)a)` を考える と, この中に同じ整数はない. もしあれば, 例えば (ia)` = (ja)` (i < j) とす れば, (j − i)a は ` で割り切れることになり, 矛盾を生ずる. 従って (da)` = 1 を満たす d が存在する. □ 補題 5. 整数 N が素数 r の倍数でないとき, ある整数 i (1 5 i 5 r − 1) に 対し (N i )r = 1 が成立する. 証明. 1 以上 r − 1 以下の r − 1 個の整数 (N )r , (N 2 )r , · · · , (N r−1 )r を考え る. この中に同じ整数がなければ, ある i に対し (N i )r = 1 となる. 同じ整数 があれば, 例えば (N j )r = (N k )r (j < k) とすれば, N k − N j = N j (N k−j − 1) は r で割り切れる. N と r は互いに素であるので N k−j − 1 は r で割り切れ, やはり, (N i )r = 1 を満たす i が存在する. □ 以下, r は素数, N は r の倍数でない整数とする. 従って N と r は互いに 素であり, N = 1 である. また, i は (N i )r = 1 を満たす最小の整数とし, Bλ = {(λN )r , (λN 2 )r , · · · , (λN i )r } (λ = 1, 2, · · · , r − 1) 2 とおく. 補題 6. (1) #Bλ = i. (2) Bλ ∩ Bµ 6= ∅ のとき Bλ = Bµ . 証明. (1) (λN j )r = (λN k )r (1 5 j < k 5 i) とすると, λN k − λN j = λN j (N k−j − 1) が r で割り切れる. N j と r は互いに素だから, λ(N k−j − 1) が r で割り切れる. r が素数で 1 5 λ 5 r − 1 だから λ と r は互いに素 であり, 補題 4(と同じ理由) により, (µλ)r = 1 を満たす整数 µ が存在する. µλ(N k−j − 1) も r で割り切れるので, (µλN k−j )r = (µλ)r = 1 となる. 補題 3 により, (µλN k−j )r = ((µλ)r (N k−j )r )r = (1(N k−j )r )r = (N k−j )r だから, 結局 (N k−j )r = 1 となる. ところが k − j < i だから, この式は i の定義に矛 盾する. 以上により, #B = #{λ : λ = 1, · · · , i} = i である. (2) Bλ ∩ Bµ 6= ∅ のとき, ある j, k に対して (λN j )r = (µN k )r であり, 従っ て, 任意の h = 1, · · · , i − 1 に対して, (N h )r (λN j )r = (N h )r (µN k )r であり, 補題 3 により, (λN j+h )r = (µN k+h )r である. j + h > i のとき (λN j+h )r = ((N i )r (λN j+h−i )r )r = (1(λN j+h−i )r )r = (λN j+h−i )r だから, {(λN j+h )r : h = 1, · · · , i − 1} = Bλ である. 同様に {(µN k+h )r : h = 1, · · · , i − 1} = Bµ であり, {(λN j+h )r : h = 1, · · · , i − 1} = {(µN k+h )r : h = 1, · · · , i − 1} によ り Bλ = Bµ となる. □ 補題 7 (フェルマー (P. Fermat) の小定理). 整数 N と素数 r が互いに素 であるとき (N r−1 )r = 1. 証明. 集合 Bλ は集合 A = {1, 2, , · · · , r − 1} の部分集合であり, (λN i )r = λ により, A = ∪r−1 λ=1 Bλ である. 特に補題 6(2) により, A は互いに交わらない幾つ かの Bλ の和集合になっている. 従って補題 6(1) により, #A = r−1 は #B = i で割り切れ, r − 1 = gi として, 補題 3 により, (N r−1 )r = (((N i )r )g )r = 1 が 成立する. □ 補題 8. M が p とも q とも互いに素であるとき, 整数 m に対し (M m` )n = 1. 証明. ` は p−1 と q −1 の公約数だから ` = b(p−1) = c(q −1) と表せる. 補 題 3, 7 により (M m` )p = (((M p−1 )p )mb )p = (1mb )p = 1, 同様に (M m` )q = 1 である. 即ち M m` = xp + 1 = yq + 1 と表せる. p と q は互いに素で xp = yq だから, x = zq, y = zp と表せる. 従って M m` = zpq + 1 = zn + 1 と表され, (M m` )n = 1 となる. □ 補題 9. M (6= 0) が p の倍数のとき, 整数 m に対して (M m`+1 )n = M . 3 証明. M < n = pq により整数 s (= 1) 及び p とも q とも互いに素な整数 N を使って, M = ps N と表せる. ` は整数 c により ` = c(q − 1) と表せる ので M m`+1 = psmc(q−1) ps N m` N である. 補題 7 により psmc(q−1) = xq + 1 と表せるので, 補題 3, 8 により, (M m`+1 )n = ((xps q + ps )n (N m` )n (N )n )n = ((xps q + ps )n · 1 · N )n = ((ps )n N )n = (ps N )n = (M )n = M となる. □ 定理 1 の証明. M 6= 0 としてよい. (ad)` = 1 により ad = m` + 1 と 表せる. M が p とも q とも互いに素のときは, 補題 3, 8 により (M ad )n = ((M m` )n (M )n )n = (1 · M )n = M である. M が p の倍数のときは, 補題 9 により (M ad )n = (M m`+1 )n = M である. M が q の倍数のときも同様に (M ad )n = 1 である. □ 例 10. p = 3, q = 5, n = pq = 15, p − 1 = 2 と q − 1 = 4 の最小公倍数 ` = 4, a と ` = 4 との最大公約数が 1 であるような数 a = 7, ad = 7d を ` = 4 で割った余りが 1 でるような数 d = 3 に対して, M の暗号値 A = (M 7 )15 と その解読値 (A3 )15 は次の値になる. M M7 A = (M 7 )15 A3 (A3 )15 2 3 4 5 6 7 8 9 10 11 12 13 14 128 2187 16384 78125 279936 823543 2097152 4782969 10000000 19487171 35831808 62748517 105413504 8 12 4 5 6 13 2 9 10 11 3 7 14 512 1728 64 125 216 2197 8 729 1000 1331 27 343 2744 2 3 4 5 6 7 8 9 10 11 12 13 14 4
© Copyright 2024