第11回 暗号技術の常識知ってるつもり?「セキュリティの常識」を再確認(3/5 ページ)

» 2005年04月26日 09時00分 公開
[宮崎輝樹(三井物産セキュアディレクション),ITmedia]

 話が変わるが、電子署名について説明する前に、「ハッシュ関数」に関して説明しておこう。

 ハッシュ関数は「一方向関数」とも呼ばれ、任意の長さのデータをハッシュ関数に通すと、特定の長さ(128bitや160bit)のデータ(ハッシュ値)に変換される。ハッシュ関数の特徴としては、データからハッシュ関数を通してハッシュ値を生成することは簡単であるが、ハッシュ値から元データを生成することが不可能な点である。また、元のデータを1bitでも変えると、生成されるハッシュ値が大きく変化し、同じハッシュ値を生成する別のデータを作り出すことが事実上不可能なのである。このような特徴から、元データの特徴を現す値として、ハッシュ値が利用される。ちなみに、ハッシュ値を「Finger-Print(指紋)」と呼ぶこともある。

 ハッシュ関数としてはMD5やSHA-1が広く利用されているが、つい最近の暗号学会でSHA-1の脆弱性について発表されたこともあり、将来的にはSHA256やSHA512など、より強固なハッシュ関数へ移行していくことであろう。

電子署名

 それでは公開鍵暗号方式を利用した電子署名について説明しよう。先ほども説明したが、RSAでは、秘密鍵を使用して暗号化したデータは、公開鍵でのみ復号することができる。これを利用すると、どのような面白いことができるのであろうか?

 例えば、ある文書と一緒に、その文書を自分の秘密鍵で暗号化する。そして、元の文書と秘密鍵で暗号化した文書を一緒に送信する。受信者は、送信者の公開鍵を利用して暗号化された文書を復号し、一緒に送られてきた元の文書と比較することで、その文書が確かに送信者から送られてきていることが確かめられるのである。なぜならば、送信者の公開鍵で復号できるデータを生成できるのは、対応する秘密鍵を持っている送信者だけだからだ。

 しかし、先にも説明したように、公開鍵暗号方式の暗号化・復号の処理の負荷は非常に重い。そこで、利用されるのがハッシュ関数である。実際には、送信者は元文書をハッシュ関数に通し、元文書のハッシュ値を得る。そして、この小さなハッシュ値に対して、送信者の秘密鍵で暗号化を行い、元文書とハッシュ値を秘密鍵で暗号化したデータを一緒に送信するのである。

 受信者は、暗号化されたデータを送信者の公開鍵で復号し、同時に、一緒に送られてきた元データを、送信者と同じハッシュ関数を利用してハッシュ値を得る。そして、復号したデータと計算したハッシュ値を比較することで、そのデータが確かに送信者から送られてきたことを確認するのである。先に説明したように、このハッシュ値は元文書の特徴を抽出したものであり、他の文書から同じハッシュ値を生成することは事実上できないからである(図4)。

図4図4■電子署名

 このように、秘密鍵で暗号化されたハッシュ値は、元データを確かにそのユーザーが送信したことを証明することができるため、「電子署名」と呼ばれる。

PKI(Public-Key Inl_frastructure)

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ