249.3.2. キーリングの管理
キーリングを管理するには、コマンドラインツールを使用します。鍵を管理する最も簡単な方法であると見なします。その方法が必要な場合は、http://www.bouncycastle.org/java.html から Java ライブラリーを使用することもできます。
linux にコマンドラインユーティリティーをインストールします。
apt-get install gnupg
キーリングを作成し、セキュアなパスワードを入力します。
gpg --gen-key
他人の公開鍵をインポートして、ファイルを暗号化できるようにする必要がある場合。
gpg --import <filename.key
以下のファイルが存在し、サンプルの実行に使用できます。
ls -l ~/.gnupg/pubring.gpg ~/.gnupg/secring.gpg
[[crypto-PGPDecrypting/VerifyingofMessagesEncrypted/SignedbyDifferentPrivate/PublicKeys]] PGP Decrypting/Verifying of Messages Encrypted/Signed by different # Private/Public Keys
Camel 2.12.2 以降
PGP Data Formater は、異なる公開鍵で暗号化または異なる秘密鍵で署名されたメッセージを復号化および検証できます。唯一の方法として、シークレットキーリング、パブリックキーリングの対応する公開鍵、およびパスフレーズアクセッサーのパスフレーズを指定します。
Map<String, String> userId2Passphrase = new HashMap<String, String>(2);
// add passphrases of several private keys whose corresponding public keys have been used to encrypt the messages
userId2Passphrase.put("UserIdOfKey1","passphrase1"); // you must specify the exact User ID!
userId2Passphrase.put("UserIdOfKey2","passphrase2");
PGPPassphraseAccessor passphraseAccessor = new PGPPassphraseAccessorDefault(userId2Passphrase);
PGPDataFormat pgpVerifyAndDecrypt = new PGPDataFormat();
pgpVerifyAndDecrypt.setPassphraseAccessor(passphraseAccessor);
// the method getSecKeyRing() provides the secret keyring as byte array containing the private keys
pgpVerifyAndDecrypt.setEncryptionKeyRing(getSecKeyRing()); // alternatively you can use setKeyFileName(keyfileName)
// the method getPublicKeyRing() provides the public keyring as byte array containing the public keys
pgpVerifyAndDecrypt.setSignatureKeyRing((getPublicKeyRing()); // alternatively you can use setSignatureKeyFileName(signatgureKeyfileName)
// it is not necessary to specify the encryption or signer User Id
from("direct:start")
...
.unmarshal(pgpVerifyAndDecrypt) // can decrypt/verify messages encrypted/signed by different private/public keys
...
- この機能は、鍵交換をサポートするのに特に便利です。復号化のために秘密鍵を交換する場合は、古いまたは対応する公開鍵で暗号化される期間メッセージを許可できます。または、送信者が署名側の秘密鍵を交換する必要がある場合は、期間、古い署名者キー、または新しい署名側のキーを受け入れることができます。
- テクニカル背景: PGP 暗号化データには、データの暗号化に使用した公開鍵のキー ID が含まれます。このキー ID は、データを復号化するためにシークレットキーリングで秘密鍵を見つけるために使用できます。署名を検証する公開鍵を見つけるためにも同じメカニズムを使用します。したがって、アンマーシャリングにはユーザー ID を指定する必要はありません。