GnuPG について (9) 鍵作成でイレギュラーしてみる

前回は当たり前の方法で鍵を作成してみた。今回は、ここで当たり前でないことをしたらどうなるか、色々と試してみた。

その前に、確かマニュアルには書いてなかったと思うが、gpg.exe --gen-key を実行して入力プロンプトが出ている状態、例えば
---- 画面表示 ----
ご希望の鍵の種類を選択してください:
(1) DSAとElgamal (既定)
(2) DSA (署名のみ)
(5) RSA (署名のみ)
選択は?
---- ここまで ----

この状態で「?」と入力してエンターを押すと、簡単なヘルプを見ることができる。
---- 画面表示 ----
選択は? ?
使用するアルゴリズムを選択してください。

DSA (別名DSS) は、署名専用の電子署名アルゴリズムです。

Elgamalは、暗号化のみのアルゴリズムです。

RSAは、署名にも暗号化にも使えます。

最初の鍵(主鍵)は、署名に使用できる鍵でなければなりません。
選択は?
---- ここまで ----

このように。短いヘルプなので、役に立つかどうかは微妙だったりするのだが、いざという場面もあるかも知れないので豆知識として。

では、ここからが本題。

・既に鍵を生成してあるのにまた --key-gen を実行

この場合、元の鍵が上書きされるのか、それとも新しい鍵が後ろに追加されるのか、興味があったので、今日初めて試してみた。
その結果、新しい鍵が古い鍵の後ろに追加されるということが分かった。元の鍵が消されることはないので一安心だ。

・ユーザーID に日本語を入力

メールアドレスはともかくとして、本名やコメントに日本語を入力したらどうなるか試してみた。
とりあえず「山田太郎2」と入れてみた。すると警告メッセージが出ながらも、鍵の生成はできた。
その後、gpg.exe --list-key を実行した結果がこれ。
---- 画面表示 ----
pub 1024D/A9597DA7 2008-09-28
uid \x8e\x93\x91\x98\x82
sub 2048g/EBF88D4A 2008-09-28
---- ここまで ----

2バイト文字の頭1バイトだけが16進数の形で表示されているようだ。
フォントを設定したうえで、CHCP 65001 を実行して画面を UTF8 に切り替えて同じコマンドを実行したが、結果に変化はなかった。
ところで、私の知識では、この鍵を編集して正常なユーザーID に変更してやることができない。gpg.exe --edit-key でユーザーIDを指定しようにも、「山田」でもダメ、「\x8e」でもダメなのだ。どうしたものか。

ところで、やり方の詳細は別の機会に説明するが、ユーザーID に UTF8 で「山田太郎12345」という文字列を与えたところ、無事

---- 画面表示 ----
pub 1024D/5BF3B489 2008-09-28
uid 山田太郎12345
sub 2048g/FBD188F9 2008-09-28
---- ここまで ----

このような結果を得ることができた。画面の文字コードは CP932 のままだ。
gpg.exe は入力は UTF8 にしてやらないと正常に処理できないのだが、出力に関しては自動文字コード変換ができるようになっている。

・イレギュラーな本名、メールアドレス、コメント

GnuPG では、短すぎる本名(5文字未満)や、イレギュラーなメールアドレス(不適切な文字が使われている、@が無い、@が2つ以上ある、..(ピリオドの連続)がある、アドレスが@や.で終わっている)、不適切なコメント(コメント名で「(」や「)」が使われている)場合は、エラーとして、再入力を求めてくる。
しかし、入力された文字列の長さなどを厳密に判定しているわけではない。
メールアドレスにしても、RFC2822 に100%従っているわけでもない。あくまで簡易なチェックに過ぎない。
このあたりは間違っておかしな入力をしないように、使用者が心がける必要がある。

ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 0

この記事へのコメント

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

  • GnuPG について (9) 鍵作成でイレギュラーしてみる の訂正

    Excerpt: 以前の記事で、GnuPG の鍵生成の過程でいろいろとイレギュラーなデータを突っ込んでどのような動作をするのか確認したことがあった。そこで、 Weblog: 民芸的プログラミング ~ソフトウェア開発日記~ racked: 2008-10-01 23:22