デジタル署名と暗号技術
公開鍵暗号の計算の特徴
公開鍵暗号を実現する計算手順(アルゴリズム)は一つだけではありません。
しかし、アルゴリズムには、以下の条件が必要です。
暗号化の鍵をE、
復号化のための鍵をD、
平文をM、
暗号文をCとすると、
@ 暗号化が容易であること:MとEからCを求める計算が容易であること。
A 復号化が容易であること:CとDからMを求める計算が容易であること。
B 暗号文が破られないこと:CとEからMを求める計算が非常に困難であること。
C 暗号化の鍵から復号化の鍵が破られないこと:EからDを求める計算が非常に困難で
あること。
D 暗号化・復号化が出来ること:MとEからCを求め、CとDから元のMに戻ること
RSAのアルゴリズム
有名な公開鍵暗号の一つRSAのアルゴリズムを見てみましょう。
RSAを使用するには、公開鍵と秘密鍵の組を作成する必要があります。
ここでは、アリスとボブがRSAを使用して通信することにします。
鍵の組を作るのには、まずアリスは、非常に大きな素数PとQを無作為に選択します。
次に、この二つの素数の積をNとし、さらに、任意の整数eを(P−1)(Q−1)と
互いに素となるように選択します。
Nとeの組が暗号鍵(公開鍵)になります。
(例)アリスが二つの素数として 47、 71 を選択したとします。
(実際には、公開鍵暗号に使用するすべての整数は非常に大きいが、
ここでは、わかりやすいように小さな整数を使用します。)
P=47 Q=71
N=P*Q=47*71=3337
アリスは、次の式から、暗号鍵を3220と互いに素になるように選択します
(オイラー関数)。
Ф(N)=(P−1)*(Q−1)=46*70=3220
アリスは、e=79を選択したとする。
これで、拡張ユークリッドの互除法と2つの素数(アリスだけが知っている)を使用して、
復号鍵の要素dを計算できる。
ed=1(modФ(N))・・・dはmodФ(N)をとったうえでの逆元
d=79−1( mod3220)=1019
アリスは、公開鍵情報すなわち、N=3337とe=79を公開する。
たとえば、ボブが整数688(平文)を暗号化してアリスに送信する場合、
彼は、公開鍵登録簿を見に行き、アリスの公開鍵を検索する。
自分が暗号化したい数688を79乗して、その結果を3337で割った余りを計算する。
アリスの公開鍵 e=79
N=3337
68879mod3337=1570
アリスは、1570(暗号文)という数を受けると、ボブと同じ操作を復号鍵1019を
使用して行う。
15701019mod3337=688
アリスの秘密鍵 d=1019
modФ(N)=3220
P=47 Q=71
電子署名の仕組み
電子署名システムは、公開鍵方式の暗号鍵を逆に使用し、本人認証に利用するものです。
ある人の公開鍵に対応する秘密鍵は、事実上、世界に一つしかありません。
もし、ある公開鍵でメッセージを復号化出来たら、その公開鍵に対応する唯一の秘密鍵
で暗号化されたことが確認されます。
そもそも、電子署名は何故するのでしょうか?
それは、第1に、文書が改竄されるのを防ぐことにあり、第2に、自分の書いた文書が
本当に、本物であることを相手が確認出来るためにします。
つまり、電子署名には次のような重要な機能があるということです。
完全性:ファイルまたはメッセージが改竄されたかどうか分かる。
認証 :メッセージに署名した人物の名前を数学的に確認出来る。
参考文献:「PGP 暗号メールと電子署名」 Simson Garfinkel 著 山本和彦監訳