web-dev-qa-db-ja.com

gpg:secおよびpubキーがキーリングにある場合、「秘密キーは使用できません」

生成した公開鍵で暗号化されたファイルを受信しましたが、復号化できません。

手順:

  1. gpg --gen-keyデフォルトオプション
  2. gpg --export -a <email> > pub.key
  3. pub.keyを送信しました
  4. 暗号化されたファイルを受け取りました
  5. cat <file> | gpg

エラー:

$ cat cred.gpg | gpg
gpg: key 71980D35: secret key without public key - skipped
gpg: encrypted with RSA key, ID 0D54A10A
gpg: decryption failed: secret key not available

しかし、秘密鍵は私の鍵リングに存在し、私がそれから生成した公開鍵は、同僚に送信したpub.keyのフィンガープリントと一致します。

$ gpg --list-secret-keys 
/home/jcope/.gnupg/secring.gpg
------------------------------
sec   2048R/71980D35 2016-03-04
uid                  me <email>
ssb   2048R/0D54A10A 2016-03-04

指紋を確認する

    $ gpg --with-fingerprint pub.key 
    pub  2048R/AF0A97C5 2016-03-04 me <email>
          Key fingerprint = 17A4 63BF 5A7D D3B2 C10F  15C0 EDD6 4D8A AF0A 97C5
    sub  2048R/1103CA7C 2016-03-04
$ gpg --fingerprint | grep 17a4 -i
      Key fingerprint = 17A4 63BF 5A7D D3B2 C10F  15C0 EDD6 4D8A AF0A 97C5

私はgpgの初心者ですが、なぜこれが機能しないのか途方に暮れています。最も標準的な操作のようです。

5
jonRH

エラーメッセージに注意してください。秘密鍵が欠落している(そうではない)とは表示されず、公開鍵が欠落していると表示されます。

gpg: key 71980D35:公開鍵なしの秘密鍵- skipped

RSAでは、一部の番号(d、p、q、u)はプライベートで、その他の番号(n、e)はパブリックです。暗号化と署名の検証には2つの公開番号のみが必要ですが、復号化と署名には6つの番号すべてが必要です。したがって、後者の操作では、実際には秘密鍵と公開鍵の両方が必要です。

公開鍵は誤ってpubringから削除されましたか?

公開鍵の再インポートを試すことができます。公開鍵は広く配布されているものなので、簡単に再取得できます。

2
Celada