他の方のブログで、SSL の話を見かけたので、少し触れてみると、たしかにSSLはセキュリティというのは、そうなのですが、ウィルスとかの防止というよりも、ブラウザーやメールとかでのやり取りでのテキストの部分は、基本的に丸見えなわけで、インターネットはいろんなサーバーであるコンピューターを経由してるから、読もうと思えば内容を読むことができます。だからクレジットカードの情報や個人情報、メールの内容を見たり、改ざんすることができます。
これを防止するために、テキストのデータを暗号化したり、電子署名といって改ざんしたか判定するツール群が使われるわけです。
まずコンピュータの中のテキストデータにしても、すべて0か1のデータで、16進数や10進数として扱えるわけです。そこでこのデータを例えば足したり引いたり掛けたり、四則演算やほかの演算によって変形できます。 例えば、小さな数を対応させて、少し異なれば大きく違う数になるようにしておけば、その数を別途相手に送っておけば、仮にデータが改ざんされると、改ざんされたデータで出てくる数と合わなくなるので、改ざんされたことがわかります。これが電子署名です。
また、データをある長さで区切って 数の列だとします。この数をE乗して 非常に大きな数字Nの余りの世界で考えます、つまり、何乗してNより大きい場合はNで割って余りをとってくわけです。 これを 暗号文 = 平文^E mod N と書きます。これで暗号化されたわけです(平文のE上のNで割った余りが暗号文です)
そして、平文 = 暗号文^D mod N なる数 D があれば暗号文を元に戻せます
相手にNとE を 教えて 自分は NとDを持っておきます。
こうすると、相手はこちらに何かを送る際に このペアで暗号化できます。つまりデータに鍵をかけるわけです。この開ける鍵は自分しか持ってません。つまり他の人は鍵のかけられたデータを見れない。
この暗号化するための鍵を公開鍵といいます。これがSSLなんかの証明書です。ある機関が保証する証明書とは、その機関しか開けることできないための公開鍵、閉めるためだけの鍵といっていいでしょう。
実際は、先ほどの電子署名や 開けることも閉めることもできる鍵(別の暗号化の)自体にこの鍵をかけるかもしれません。こういう鍵を非対称鍵といいます。
対称鍵の暗号化と非対称鍵の暗号化と電子署名の組み合わせで工夫した形なると思います。
例えば、暗号化入門 第三版 秘密の国のアリス 結城浩著
とかわかりやすいです。実際それ見て書いてます。結城さんの説明は数学的でわかりやすい。さすがに数学ガールの著者だけありますね。
本のRSA暗号のところに書いてありますが、やり方だけ書いてあって、背景までは書いてないような
まず、使ってるのはフェルマーの小定理で
xのN-1乗 = 1 mod N (これは Nで割った余りが1という意味)
が成り立つので
E*D = 1 mod N-1 (* は掛け算) なる Dを見つければ
暗号文^D = (平文^E)^D = (平文)^(E*D) = 平文 mod N
ということで、暗号文から平文を取り出せます。
E*D = 1 mod N-1 なるDが存在するための必要十分条件はEとN-1が互いに素(最大公約数が1)です。
でも、これだと公開鍵として NとEを 公開したら D を求められる恐れがあります
そこで、もうひとひねりします。
Nとして大きな素数をp,q をとってきて、N=pq とします。こうするとこの素因数分解は普通はものすごく時間がかからないと求められません。だからコンピュータの性能が無茶苦茶上がらない限り、まずp,qはわかりません。
そうすると、こここでもう一つの数学の定理 中国式剰余定理を使います。こ定理は
Nの余りの世界は pの余りの世界とqの余りの世界に分解できる という定理です。
これを使うと それぞれで考えることができます。
x^(p-1) = 1 mod p
x^(q-1) = 1 mod q
ですから、p-1 と q-1 の最小公倍数をL とすると
x^L = 1 mod p
x^L = 1 mod q
つまり
x^L = 1 mod N
が成り立ちます。このL と互いに素なE をとってきて
暗号文=平文^E mod N とすれば
E*D =1 mod L なるD をとってくれば 先ほどと同じ議論で平文が復活します.
こういう原理です。


