RSA 暗号
RSA 暗号は、素因数分解の難しさを利用する。
まず、2つの素数 p,q と積 N = pq を用意する。
一般に素因数分解は、掛け算よりもずっと難しいし、計算量も多いので、 p,q を非常に大きな素数とすると、N を公開しても事実上素因数分解できない。
一方、p と q からは容易に N を求めることができる。
これを使って、公開鍵暗号は以下のように具体的に構成できる。
AがBに平文 W を暗号化して送るものとする。
  1. Bは、L=(p-1)(q-1) を計算し、L と互いに素な自然数 e を選ぶ。
    ここで、L は、任意の N 以下の自然数 m に対して m の L 乗(以下 mL と書く) を N で割ると余りが 1 になるような数(以下、mL mod N = 1 と書く)であることに注意。 (オイラーの定理)
  2. 秘密鍵 d を、de mod L =1 となるようにとる。つまり、ある整数 k に対して、de = k・L + 1 が成り立っている。
    このような数の存在は、1.で、L と e が互いに素であることからいえる。
  3. e と N を公開鍵とする。
  4. Aは、平文 W に対して、r = We mod N を暗号として送る。なお、W の桁数は N よりも小さくとる。
  5. Bは、r = We mod N を d 乗し、N で割った余りを求めると、W = rd mod N になる。
    なぜなら、rd mod N = W(de) mod N = Wk・L + 1 mod N = W だから。
    (WL = 1 mod N に注意せよ。)

オイラーの定理

自然数 n に対して、n 以下の、n と互いに素な数の個数を N(n) とすると、 n と互いに素である任意の自然数 a に対して aN(n) mod n = 1 が成り立つ。

注:特に n が素数の場合がフェルマーの小定理である。
フェルマーの小定理
p が素数のとき、p 以下の任意の自然数 a に対して a(p-1) mod p = 1 が成り立つ。


(証明)
簡単のため、フェルマーの小定理の証明のみにする。オイラーの定理の証明もほぼ同様。
1,2,…,(p-1) のおのおのに a をかけた数、 a, 2a, … , (p-1)a を考える。
ここで、a と p が互いに素であることから、 a mod p, 2a mod p, … (p-1)a mod p はすべて異なる数になることが分かる。…(*)
( ka mod p = la mod p と仮定すると、(k-l) a mod p = 0 となり、p が素数なので、k=lとなる。)

これらをすべて乗じると、a X 2a X … X (p-1)a = 1・2・…・(p-1) X a(p-1) となるので、これを p で割った あまりを考える。
ここで、(*)から、a X 2a X … X (p-1)a mod p = 1・2・…・(p-1) mod p となることが分かるから、
a X 2a X … X (p-1)a mod p = 1・2・…・(p-1) X a(p-1) mod p と連立すると、

a(p-1) mod p = 1

を得る。(証明終)



なお、私の能力不足、時間不足から、間違ったことが書かれている場合もあります。 コメントなどは、ここまでお願いします。 質問もできる限りお答えしたいと思います。

暗号メインページへ
表紙に戻る