2004年10月24日(日)更新 |
■元のデータに電子署名するときの問題
たけち: 前回は電子署名ってどんなものかを簡単にみたね。 さらら: えぇ、元のデータ(この場合、メッセージとも言います)といっしょに、元のデータを秘密鍵で暗号化して渡すのだっだわね。 たけち: そうだったね。でも、元のデータが大きなサイズのデータだったら大変だと思うでしょ。 さらら: えっ? あっ、そう言われればそうねぇ。。。元のデータとほぼ同じサイズの署名データを一緒に送んなくちゃいけないものね。 たけち: それだけじゃなくって、元のデータサイズが大きい場合、次のような問題もあるよね。
さらら: そうなんだぁ。 たけち: うん。公開鍵暗号の処理はすごく時間がかかるんだよね。 さらら: じゃあ、どうするの? |
■ハッシュ値を暗号化する
たけち: うん。元のデータの代わりに元のデータのハッシュ値を使うんだよ。 さらら: ハッシュ値? たけち: ハッシュ値は元のデータから、ある計算をして求めるんだ。ハッシュ値を使って署名する方法だと、元のデータそのものに電子署名するよりもずっと電子署名の性能や送受信するデータ量が削減できるんだよ。 さらら: そうなんだぁ。 |
■ハッシュ(hash)値
たけち: ここで簡単にハッシュ値ってどんなものかを見ておこうね。 さらら: はい。 たけち: あるデータから特別な計算をして求めた固定長の値をハッシュ(hash)値と言うんだ。そして、このハッシュ値を計算する計算方法(アルゴリズム)をハッシュ関数と言うんだよ。 |
さらら: ふ〜ん。そのハッシュ値は元のデータと同じように考えていいものなの? たけち: うっ、うん。。うまく説明できてるかどうかは分かんないけど、ハッシュ関数がどんなものかによるんだろうね。 さらら: どういうこと? たけち: たとえば、ものすごく簡単な例として、つぎのようなハッシュ関数を考えてみようか。
たけち: どう? |
さらら: そうね。こんなんじゃ、色々なデータから同じハッシュ値が作られるからだめだわね。 たけち: そうなんだね。だから実際には、ハッシュ値から簡単には元のデータを求められないように、いくつかのハッシュ関数が提案され、実際に使われているんだよ。一部を簡単に紹介しておくね。
さらら: そうなんだぁ。 たけち: ちなみにハッシュ(hash)値のことをメッセージダイジェスト(message digest)とも言うからね。 さらら: はい。 |
■ハッシュ値を使って電子署名する方法
たけち: ある文書のハッシュ値を暗号化して(署名をして)必要な人に渡し、受け取った人がその署名を確認するには、たとえば、次のような流れになるね。 |
たけち: もし、受け取り側で、比較したハッシュ値が異なる場合には、署名が正しくないか、誰かに元のデータが書き換えられたと判断するんだね。 さらら: そっか。これだと、元のデータよりずっと短いデータを使って署名を確認できるってわけね。なんとなく分かったわ。 たけち: じゃあ、今回はここまでね。そろそろ本題のXML署名の話に移りたいね。 さらら: はい。ありがと。 →次回はXML署名の概要_1です。 (^ ^; |