GnuPG について (13) 電子署名と鍵輪

間違ったことを書いてはいけないと思い、電子署名に関して裏づけデータを探していたら、見事にネット上で迷子になってしまった。
電子署名は、誤解を恐れずに説明するのは比較的容易だが、「絶対に誤解されないように」説明するのはかなり難しいようだ。

電子署名は、「このデータは間違いなく私が作ったものです」ということを証明するための「データ」だ。
主に、本人確認およびデータ偽造の防止に使われる。
色々なやり方が考案されているらしいが、GnuPG で扱うのは公開鍵暗号を応用した電子署名だ。

さてここで一つお断りしておかなければいけないことがある。
私はあくまで GnuPG を使った応用プログラムを作っているプログラマであって暗号の専門家ではない。
RSA 暗号なら自力で桁の少ないサンプルで実際に解く練習をしたりしたことはあるが、電子署名については、自力で計算したことが、実はない。基本的に、書物やネット上の情報の受け売りになってしまう。

以上をお断りしたうえで、ここからが、GnuPG を使った電子署名の説明だ。

GnuPG では、何らかのデータを秘密鍵で処理することで、その秘密鍵を持った人でないと作れないデータ、すなわち電子署名データを作ることができる。
その秘密鍵と対になる公開鍵を持った人は、その電子署名データを処理することで、確かに相手が対になる秘密鍵を持っているということを確認することができる。ただし、公開鍵では電子署名を作ることはできない。

もっと具体的には、「何らかのデータ」のハッシュ値(チェックデジットの親玉のようなもの)を計算し、それを秘密鍵で処理する(「秘密鍵で暗号化する」と表現している解説記事が見かけられるが、厳密には暗号化とはいわない)ことで、電子署名データを作成する。
データを受け取った側は、予め受け取っておいた送り手の公開鍵で「電子署名データ」を処理(これも「公開鍵で復号する」と表現している解説記事があるが、厳密には復号ではない)し、これと、受け取ったデータのハッシュ値を比較することで、データが本物であるかどうかと、改ざんされていないかどうかを確認することができる。

以上が、GnuPG を使った電子署名の原理だ。拙作 JanusDG ではまさにこの通りの手順を踏んで電子署名を扱うことができるようになっている。

ところで、ここでもし鍵輪、すなわち、自分がこれまでに受け取った公開鍵のデータベースがあると、この署名検証をずっと楽にすませることができる。
GnuPG は、鍵輪があると、受け取った電子署名をもとに、それに該当する公開鍵を自動的に鍵輪の中から探し出してくれるのだ。
いちいち「このデータを作ったのは山田さんだから、山田さんの公開鍵ファイルを探して」といった作業をしなくても、GnuPG が自動的に「この電子署名は山田さんのものであることが確認できました」と表示してくれる。

ではなぜこのように便利な鍵輪を、JanusDG では使用していないのか?
それは、「鍵輪の説明をしなくても使えるように」してあるからだ。

そして、鍵輪と電子署名にはもう一つ、重要な機能があるのだが、それはまたエントリを改めて。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック