1 ◆ RSA 暗号について◆ 鍵生成 素数 p, q(p ̸= q) を生成し,n = p ∗ q,λ(n) = LCM (p − 1, q − 1) を計算する。適当な e(1 < e < n),(GCD(λ(n), e) = 1) を定め,ed = λ(n)x + 1(x は自然数) を計算する 秘密鍵 d(または,p,q) 公開鍵 e,n 暗号化 M e ≡ C(modn) 復号 C d ≡ M (modn) 今回 RSA 暗号の理論をまとめるためにフェルマーの小定理と拡張ユークリッド互除法を用いた。 以下その証明である。 フェルマーの小定理 フェルマーの小定理とは ap ≡ a(modp) が p が素数で a が任意の自然数のとき成り立つこと をいう 数学的帰納法を用いて証明する a = 1 のとき明らかに ap ≡ a ここで二項定理を用いると (a = m + 1 のとき成り立つと仮定) p p (m + 1) = p Cp m + p−1 ∑ p Ck m p + p C0 1p ≡ mp + 1(modp) k=1 p が素数で 1 ≦ k ≦ p − 1 のときp Ck = で割り切れる p Pk k! = p(p − 1)(p − 2)...(p − k + 1) が p の倍数であるの k! mp ≡ m(modp) の式に両辺から 1 を加える mp + 1 ≡ m + 1 (m + 1)p ≡ m + 1 以上数学的帰納法より ap ≡ a(modp) が成り立つ。また両辺を a で割ると ap−1 ≡ 1(modp) が成 り立つ 拡張ユークリッド互除法 a, b を 0 でない自然数とし,GCD(a, b) = m とする。このとき, ax + by = m となる整数 x,y が存在する。そして,この x,y は実際に計算することが出来る。 RSA の鍵生成と照らし合わせると、GCD(λ(n), e) = 1 なので ey = λ(n)x + 1 2 と表せられる。 ◆拡張ユークリッド互除法について◆ 上記の ey = λ(n)x + 1 となる整数 x,y が存在するか調べる。 λ(n) = r0 , e = r1 (r1 < r0 とする) においてユークリッド互除法の過程を繰り返すと r0 = k0 r1 + r2 (0 < r2 < r1 ) r1 = k1 r2 + r3 (0 < r3 < r2 ) r2 = k2 r3 + r4 (0 < r4 < r3 ) .. . rn−1 = kn−1 rn + 0 r0 = k0 r1 + r2 より r1 と r2 の約数は r0 も割り切れるし、r0 の式を r2 について 変形すれば r2 = r0 − k0 r1 より r0 と r1 の約数は r2 も割り切れるといえる。従って r0 と r1 の最大公約数が r1 と r2 の最大公約数と同じだと言える。これを余りが 0 の地点まで再帰的に行うと r0 と r1 の 最大公 約数は rn となる。また k は商であり、さらに ( ) ( )( ) r0 k0 1 r1 = r1 1 0 r2 ( ) ( )( ) r1 k1 1 r2 = r2 1 0 r3 ( ) ( )( ) r2 k2 1 r3 = r3 1 0 r4 .. ( ) ( . )( ) rn−1 kn−1 1 rn = rn 1 0 0 すなわち ここで( Ki = ( ) ( r0 k0 = r1 1 ki ) 1 1 0 )( 1 k1 0 1 ( とおき、Ki −1 = 0 )( 1 k2 0 1 1 1 −ki )( 1 k3 0 1 ) ( 1 k · · · n−1 0 1 )( ) 1 rn 0 0 ) を前述の式から左にかけあわせる ( )−1 ( )−1 ( )−1 ( )−1 ( )−1 ( ) ( ) kn−1 1 kn−2 1 k2 1 k1 1 k0 1 r0 r ··· = n 1 0 1 0 1 0 1 0 1 0 r1 0 ( )( ) ( )( )( )( ) ( ) 0 1 0 1 0 1 0 1 0 1 r0 r ··· = n 1 −kn−1 1 −kn−2 1 −k2 1 −k1 1 −k0 r1 0 これらの過程において、λ(n) = r0 , e = r1 , 上記のユークリッド互除法により rn = gcd(λ(n), e) で あるから ( 0 1 1 −kn−1 )( ) ( )( )( 0 1 0 1 0 1 0 ··· 1 −kn−2 1 −k2 1 −k1 1 1 −k0 )( ) ( ) λ(n) gcd(λ(n), e) = e 0 3 となる。 ( x u y v ) ( )( ) ( )( )( 0 1 0 1 0 1 0 1 0 = ··· 1 −kn−1 1 −kn−2 1 −k2 1 −k1 1 1 −k0 ) とおき、ユークリッド互除法の過程で得られた k0 ∼kn−1 を用いて右辺を計算すれば、左辺の x,y が求まり ey = λ(n)x + gcd(λ(n), e) = λ(n)x + 1 を満たす。 1. 理論 ・相異な素数 p,q を選ぶ。 ・n = p ∗ q と λ(n) = LCM (p − 1, q − 1) を計算する。 ・e は n を法として平文を e 乗すると暗号文になる 1 < e < n でλ(n) と互いに素な数と定 義する。(平文 M, 暗号文 C とする) M e ≡ C(modn) また d は n を法として暗号文 C を d 乗すると平文にもどる ed = λ(n)x + 1(拡張ユークリ ッドから) を満たす数と定義する。 C d ≡ M (modn) ・C d ≡ M (modn) を証明する。上記より C d ≡ M ed ここでフェルマーの小定理を用いる。 フェルマーの小定理を用いると、M p−1 は指数部分 p − 1 にいくら値をかけても p を法にし た場合答えは 1 となるので M k(p−1) ≡ 1(modp) と表せることができる (k は自然数) また同じく q の場合も M k(q−1) ≡ 1(modq) と表すことができる つまり (p − 1) の倍数で 1(modp) となり 同様に (q − 1) の倍数でも 1(modq) となっている 従って (p − 1) と (q − 1) の両方の倍数である最小公倍数λ(n) について M λ(n)k ≡ 1(modp), M λ(n)k ≡ 1(modq) と表すことができる p, q は n の要素であり法を p, q にした場合どちらも M λ(n)k に対して答えが 1 になるので法 を pq にした場合でも M λ(n)k に対して答えが 1 になるか考える 上記の式より M λ(n)k = pa + 1 4 M λ(n)k = qb + 1 と表せられ (a, b は自然数とする) pa = qb となる p と q は互いに素なので b は p の倍数, a は q の倍数であるといえる。従って b = pt(t は自 然数) となり M λ(n)k = pqt + 1 となる。この式は M λ(n) を pq すなわち n を法にすると答えが 1 になるということがわかる ので M λ(n)k ≡ 1(modn) と表すことができる M λ(n)k ≡ 1(modn) の両辺に M をかける M λ(n)k+1 ≡ M (modn) 拡張ユークリッド互除法より ey = λ(n)x + 1 を用いる。x, k はそれぞれλ(n) の係数なので M λ(n)k+1 ≡ M ey (modn) 従って M λ(n)k+1 ≡ M ey ≡ M (modn) と表すことができる ここで y は上記の式を満たす秘密鍵 d となるので C d ≡ M ed ≡ M (modn) が成り立ち復号ができる。以上のことから ey は必ずλ(n) を法としたとき答えが 1 になら なければいけない値であることがわかる。 2. 例 ・p = 7, q = 11 とする ・n = p ∗ q = 77, λ(n) = LCM (p − 1)(q − 1) = 30 ・e = 17 とする。ここで拡張ユークリッド互除法を用いて d を求める λ(n) = 30, e = 17 より 30 = 1 ∗ 17 + 13 17 = 1 ∗ 13 + 4 13 = 3 ∗ 4 + 1 4=4∗1+0 5 前述の行列式より ( x u y v ) ( )( 0 1 0 = 1 −4 1 )( 1 0 −3 1 )( ) ( 1 0 1 4 = −1 1 −1 −16 従って 30 ∗ 4 + 17 ∗ (−7) = 1 と表せられ、この式の左辺に 17 ∗ 30 − 30 ∗ 17 を加えると 30 ∗ (−21) + 17 ∗ 23 = 1 17 ∗ 23 = 30 ∗ 21 + 1 となりこれから 17 ∗ 23 は 30 を法とすると答えは 1 であることが言える。 従って秘密鍵 d = 23 ・平文 M = 3 とするとき M ed ≡ M (modn) より 317∗23 = 3391 ≡ 3(mod77) −7 −28 )
© Copyright 2024 ExpyDoc