Windows版ではGnuPGの場所を指定するレジストりキー(¥¥HKEY_CURRENT_USER¥Software¥GNU¥GnuPG¥HomeDir)に指定されているディレクトリ(指定が無い場合はc:¥gnupgになります)にoptionsというファイル(拡張子無し)を作成しforce-v3-sigsと表記します。UNIX版ではホームディレクトリ内に.gnupgというフォルダが作成されているので同様にその中のoptionsを変更します。こうするとPGP5,PGP6系に対応するようになります。(PGP2系はRSA/IDEAを使用しているため非対応)。注意しなければならないのが最初に鍵を生成する際にこれをしておく必要があることです。尚、相手がGnuPGを使用しているのが分かっている場合は--openpgpオプションを実行時に追加することで対応できます。(GnuPGはどちらの場合も正常に復号化できます。)
gpg -ea --throw-keyid filename.ascこのオプションを使うと復号化の際に全ての鍵に対して復号化を試みる為、処理が多少遅くなります。(複数の秘密鍵がある場合、全ての鍵に対して復号化できるまでパスワードを入力する必要があります。複数の受信者にお互いの情報を明かすことなく暗号化するなどの使い方がありますがPGP5,6との互換性がなくなるので注意してください。
gpg -ea -r 0xffffff -R 0xeeeeeeこの場合、0xffffffに対しては普通に暗号化されますが、0xeeeeeeへの暗号化は秘匿されます。 --throw-idを使用した場合は受信者全員が秘匿化されます。
UNIX版では問題ないものでWindows版では問題があるものとしてリダイレクタの使用があります。次のように復号していないでしょうか?
gpg -d filename.asc > fileファイルがバイナリファイルの場合はこれを使うと問題が起きます。次のように復号化するようにしてください。
gpg -o file -d filename.ascこれで問題ないはずです。
GnuPGは特許でカバーされているアルゴリズムを使用していないため商業利用は問題なく可能です。ちなみにGnuPGのライセンスであるGNU Public Licenseではソフトウェアの利用に関する項目はありませんので明示的に表明していないGnuPGの場合は自由に使用できます。
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.複製、頒布、変更以外の行為は本使用許諾の対象としません。それらは本使用許諾の範囲外です。「プログラム」を実行させる行為に関して制約はありません。「プログラム」の出力は、( 「プログラム」を実行させて作成させたかどうかとは無関係に) その内容が「プログラム生成物」である場合に限り本使用許諾の対象となります。これが当てはまるかどうかは、「プログラム」が何をするものかに依ります。
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.本許諾書の下で認められるすべての権利は、『プログラム』に主張される『コピーライト』の条項に基づき授与されるものであり、ここで述べられた条件が満たされている限り覆すことはできない。本許諾書は、改変されていない『プログラム』をあなたが無制限に実行することを許可し、明示的に確約する。『保護された作品』を実行することから得られた出力結果は、その出力内容が『保護された作品』を構成する場合のみ本許諾書で保護される。本許諾書は、あなたが有するフェアユースまたはその同等物の権利を、『コピーライト』法規によって提供される通りに承認する。
PGPで複合化できるように対称暗号化(つまり-cオプションの暗号化)するのには--cipher-algo CAST5の指定が必要です。つまり次のようにします。
PGPで対称暗号化したもので復号化できないものは次のようにすると問題ないはずです。gpg --cipher-algo CAST5 -c filename.asc(下記をご覧下さい)
gpg --cipher-algo CAST5 -d filename.asc
PGPとGPGが生成するパケットの違いを検証してみたところ、圧縮方式が違うことで起こる問題のようです。→技術情報
上の暗号化時のコマンドラインの代わりに次のように入力してください。
gpg --cipher-algo CAST5 --compress-algo 1 -c filename.ascこれでも問題があるようでしたらご一報下さい。
gpg --cipher-algo CAST5 --compress-algo 1 --set-filename _CONSOLE -c filename.asc実はSecure Viewerはファイル名が_CONSOLEという名前で設定されているだけなのでこれを--set-filenameオプションで設定するとこれが簡単に実現できてしまいます。Secure Viewerでは日本語は化けてしまうので注意してください。→技術情報
gpg --for-your-eyes-only -c filename.asc
gpg --import keys.ascこれでGnuPGに秘密鍵と公開鍵が取り込まれます。これで乗り換えは完了です。尚、通常のバージョンのGnuPGではこの方法が使えるのはPGPがバージョン5以降の場合のみです。(IDEA/RSA形式のものは使用できません)
現在のWindowsバージョンではローカル時間がGMTとして認識されてしまう問題が存在します。開発者によるとこの問題をWindows版では専用のコードを使用して回避する方向のようですのでしばらくお待ち下さい。
この問題はPGP側の「問題」のようです。PGP側でタイムゾーンの補正を二重にかけているようです。この問題はPGP同士では露見しないため今まで判明しなかったおそれがあります。現段階ではGnuPG開発メーリングリストとPGPメーリングリストにこの情報を投稿しました。(尚、この問題は「仕様バグ」に近く、「バグ」と呼称するのには語弊があるためここでは「問題」と呼称しました。OpenPGPを定義するRFC2440では二重に補正をかける定義はありません。)
尚、この問題はGnuPG News Japanにて作田氏の検証により判明しました。
この問題はPGP7.0より修正されているようです。
新たに--rfc2440及び--rfc4880オプションが追加されています。従来の意味での--openpgpを使用したい場合においては--rfc2440を使用します。--rfc4880と--openpgpは同じ挙動となります。
gpg --show-session-key file.gpg上記のコマンドラインを入力するとパスフレーズを訊かれるのでパスフレーズを入力するとSession keyが表示されます。尚、これを用いて復号化するには
gpg --override-session-key [先に抽出したSession key] file.gpgとします。尚、このSession keyが知られてしまうとそのメッセージは誰でも復号化できてしまいます。このオプションは特に必要とされる以外は使用しない方がいいでしょう。(公開鍵暗号の意味がなくなってしまいます。)
Windows用のフロントエンドには次のようなものがあります。
gpg --gen-revoke [keyid]破棄証明書を作成するGnuPGのアプローチは面倒なように思えますが実はこれは理にかなっているといえます。破棄証明書は一般的に短く、紙に印刷しても打ち込める程度のものです。(3行程度)使用しているPCのクラッシュなどで秘密鍵を紛失してしまうことなども決して珍しくありません。破棄証明書を印刷して保存しておくと後に何らかの原因で鍵を破棄する必要が出てきた場合に置いても秘密鍵を持っている必要はないわけです。sec 1024D/82957B66 2000-07-08 Hideki Saito
Create a revocation certificate for this key? y
Please select the reason for the revocation:
1 = Key has been compromised
2 = Key is superseded
3 = Key is no longer used
0 = Cancel
(Probably you want to select 1 here)
Your decision? 1
Enter an optional description; end it with an empty line:
>【任意のコメント(入力しないで改行すると終了)】
Reason for revocation: Key has been compromised
(No description given) ←上でコメントを入力した場合はそれがここに表示されます。
Is this okay? yYou need a passphrase to unlock the secret key for
user: "Hideki Saito"
1024-bit DSA key, ID 82957B66, created 2000-07-08Enter passphrase: 【パスフレーズを入力】
ASCII armored output forced.
Revocation certificate created.Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable. But have some caution: The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.4-1 (MingW32)Comment: A revocation certificate should follow
【省略】
-----END PGP PUBLIC KEY BLOCK-----
PGPとGnuPGの各バージョンの標準暗号アルゴリズムは次のようになっています。
| バージョン | 暗号アルゴリズム |
| PGP 2.x | IDEA |
| PGP 5.x, 6.x (DH) | CAST |
| PGP 5.x, 6.x (RSA) | IDEA |
| PGP 7 (DH) | CAST |
| PGP 7 (RSA) | CAST |
| PGP 7 (RSA-Legacy) | IDEA |
| GnuPG 1.0.1 - 1.0.3 | Twofish |
| GnuPG 1.0.4 | AES (Rijndael) |
PGP 7.0の場合は次の設定においてGnuPGとの互換性が保たれます。
GnuPGはforce-v3-sigsを指定しない場合version 4署名を生成しますがこれはPGP 7.0.xにおいても検証することが可能です。尚、以前のバージョンではこれは検証できないためご使用にはご注意下さい。(GnuPGNewsJapanにて作田さんより情報を戴きました、ありがとうございました。)
以下の方法でGnuPGでIDEAを使用できるようになります。尚、これはその使用を推奨するものではありません。これは特許が存在するアルゴリズムを実装しないというGnuPG開発チームの意向に反するものです。
と追記します。load-extension idea.dll
というような書式で追記します。ディレクトリのセパレーターが¥ではなく/であることに注意してください。load-extension c:/gnupg/idea.dll
でこのidea.cをコンパイルします。gcc -Wall -O2 -shared -fPIC -o idea idea.c
load-extension /home/user/.gnupg/optionsこれが成功した場合gpg --versionで次のような表示があるはずです。
万が一IDEAが表示されない場合はideaモジュールの場所やoptionsの設定を確認してください。gpg (GnuPG) 1.0.5 Copyright (C) 2001 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Home: c:/gnupg Supported algorithms: Cipher: IDEA, 3DES, CAST5, BLOWFISH, RIJNDAEL, RIJNDAEL192, RIJNDAEL256, TWOFISH Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG Hash: MD5, SHA1, RIPEMD160
GnuPGで使われる暗号は現段階でその信頼性が検証されているものです。暗号の強度の点で言えば問題はありません。ただし上記したように鍵長がある程度長いものを使用してください。
なお、ソフトウェア自体の安全性ですがこれもソースコードが公開されているということでバックドアなどを仕掛けることは事実上困難です(バイナリで公開されているものは配布者によってそのようなことがなされている可能性は否めません。その場合、ソースをコンパイルするか信頼できるサイト、つまり公式のサイトなどからダウンロードすることをお勧めします。どちらにせよ配布物とその署名を確認するなどの確認をするといいでしょう。)
この記事の情報は小林さんに提供していただきました。
gpg --import revoke.ascすると次のような表示がされるはずです。
gpg: Total number processed: 1これでローカルのGnuPG上では鍵ペアの破棄が完了しました。
公開鍵サーバーを利用している場合は、この破棄した公開鍵を公開鍵サーバーと同期することで破棄された公開鍵が公開されることになります。その他の方法で公開鍵を配布している場合はそれらも同じように破棄した公開鍵と差し替えてください。
gpg --edit-key 公開鍵IDaddrevokerコマンドを入力し、指定失効者のIDを入力します。
pub 1024D/xxxxxxxx 2006-06-26 xxxxxxxxここでyとすることにより指定失効者が追加されます。
Primary key fingerprint: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
WARNING: appointing a key as a designated revoker cannot be undone!
Are you sure you want to appoint this key as a designated revoker? (y/N)
This key may be revoked by DSA key xxxxxxxx xxxxxx xxxxxx <xxxxxxx@xxxx.xxx>これにより、指定失効者の設定がされました。
gpg --desig-revoke xxxxxxxxここで、指定失効者のパスフレーズを入力すると破棄証明書が生成されます。 これを--importで取り込むことにより鍵の破棄が行われます。