秘密/秘密ASCキーをエクスポートしてGPGファイルを復号化する方法


88

背景:上司がパブリックパーツとプライベートパーツを使用してASCキーをエクスポートしようとしましたが、ファイルを取得するたびにプライベートパーツが読み込まれず、ファイルが復号化されません。

以下を使用して、ASCキーのエクスポートを試みました。

  • WindowsアプリケーションKleopatra 2.1(gpg4winに含まれる)
  • WindowsアプリケーションGNUプライバシーアシスタント(gpg4winに含まれる)

            Error: "Decryption failed. Secret Key Not available." 
    

シークレットまたはプライベートのascキーを適切にエクスポートしてgpgファイルを復号化するにはどうすればよいですか?

回答:


185

GPGのコマンドラインツールを使用して秘密鍵をエクスポートできます。Windowsシェルで動作します。次のコマンドを使用します。

gpg --export-secret-keys

を使用した通常のエクスポートに--exportは秘密鍵が含まれないため、を使用する必要があります--export-secret-keys

編集:

私のコメントで与えられた情報を要約すると、これはID 1234ABCDの特定のキーをファイルsecret.ascにエクスポートできるコマンドです。

gpg --export-secret-keys --armor 1234ABCD > secret.asc

次のコマンドを使用して、必要なIDを見つけることができます。IDは2列目の2番目の部分です。

gpg --list-keys

すべてではなく1つの特定の秘密鍵のみをエクスポートするには:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumberは、エクスポートしようとしている目的のキーのキーIDの番号です。


4
@ブライアン:これはキーをコンソールにダンプします。ファイルに保存する場合は、出力を任意のファイル名にリダイレクトできます( "gpg --export-secret-keys> secret.asc")。
Demento

5
@ブライアン:これにより、バイナリではなくASCIIで出力が得られます。ファイルに保存する場合、それは重要ではありません。しかし、他の方法で渡したい場合は、ASCIIバージョンの方が処理がはるかに簡単です(Eメールでインラインで送信するなど)
Demento

8
たぶん、あなたはあなたの秘密鍵を別の場所に運びたいでしょう。この場合、エクスポートされたデータを暗号化する必要があります:「gpg --export-secret-keys keyIDNumber | gpg -c> encrypted」「gpg -o unencrypted encrypted」で暗号化を解除します。
rockdaboot 14年

2
GnuPGからエクスポートされた鍵は暗号化されたままであるため(秘密鍵のパスフレーズを入力する必要がないのはそのためです)、実際に再度暗号化する必要はありません。
フェリーベンダー

1
@FerryBoenderよろしいですか?
Josh Habdas

32

上記のすべての応答は正しいですが、1つの重要なステップが欠落している可能性があります。インポートしたキーを編集して、そのキーを「完全に信頼」する必要があります

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

5を選択して、インポートした秘密鍵を鍵の1つとして有効にします


18

ダークオッターによる治療を見る

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

サイトがダウンしている場合は、archive.orgのバックアップを参照してください。

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

これには、キーを転送するためのかなり安全な方法が含まれています。繰り返し使用するために、以下に示すシェルスクリプトにその推奨事項を含めることができます。

最初に、表示されるリストから必要なKEYIDを取得します

$ gpg -K

結果のリストから、転送に必要なKEYID(秒に続く8桁の16進数)をメモします。

次に、最初のアカウントでテスト済みのシェルscipts "export_private_key"を呼び出し、pubkey.gpg + keys.ascを生成します。続いて、2番目のアカウント「import_private_key」を呼び出します。これが猫で表示されたコンテンツです(コンテンツをコピーして貼り付けます):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

ここで、何らかの方法で "pubkey.gpg"(必要な場合)およびプライベートな "keys.asc"を2番目のアカウントに転送し、以下に示すプログラムを呼び出します。

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

オッターの精神で「そしてそれは、そうあるべきです」。


スクリプトが1つのパスフレーズで保護されたファイルに公開鍵と秘密鍵の両方を含めるようにしていただきありがとうございます。私の人生をより良くします!
codekoala

オプションは、--no-use-agentGPGバージョン2で廃止されました
ジョシュHabdas

9

gnupgから公開鍵/秘密鍵をインポートするには:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key

動作するコンピューターからのエクスポートについて質問していました...ローカルサーバー上にある場合にのみ、キーをインポートできます。
ブライアンマッカーシー

@ブライアンマッカーシー:あなたは何を言おうとしているのですか?
SIFE 2011

秘密鍵がすでにインポートされている場合、本当に公開鍵をインポートする必要がありますか?私が理解しているように、公開鍵は秘密鍵から何でも生成できます。
farhany 2013

@farhanyメッセージに署名するときに必要になるため、そうだと思います。
SIFE 2013

6

これは私のために働いてしまいました:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

拡張子.ascを維持する限り、keyfilename.ascには任意の名前を付けることができます。
このコマンドは、ユーザーのコンピューター上のすべての秘密鍵を、コマンドが呼び出された作業ディレクトリーのkeyfilename.ascにコピーします。

すべてではなく1つの特定の秘密鍵のみをエクスポートするには:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumberは、エクスポートしようとしている目的のキーのキーIDの番号です。


1
「--list-keys」を使用すると、使用可能なすべてのキーを一覧表示できます。2番目の列には、「2048g / 1234ABCD」のようなIDが含まれます。目的のキーを見つけて、「gpg --export-secret-keys 1234ABCD> secret.asc」でエクスポートします。もちろん、1234ABCDを正しいIDに変更します。「-a」フラグを追加することもできます。バイナリ出力が問題を引き起こしている場合に備えて、出力をASCII文字で書き込みます。
デメント

@demento、追加のフィードバックをありがとう...それを答えに追加してください
ブライアン・マッカーシー

2
本当にascが必要な場合は、引き続き-aが必要です
RichieHH

その後、それらを別のコンピューターにどのようにインポートしますか?
Natim、2015年

@Natim私はあなたがexportedKeyFilename.asc他のコンピュータに連れて行って、gpg --allow-secret-key-import --import exportedKeyFilename.ascその.ascファイルのあるディレクトリで行うことを想像します。参照:unix.stackexchange.com/questions/184947/...
Brōtsyorfuzthrāx

5

@Wolfram Jの回答と同様に、パスフレーズで秘密鍵を暗号化する方法を次に示します。

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

そして対応する復号化メソッド:

gpg private_key.asc

5

1.秘密鍵をエクスポートする(これは上司があなたのためにすべきことです)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.秘密鍵のインポート(privateKeyをインポート)

gpg --import privateKey.asc

3.まだ完了していません。最終的にキーを信頼する必要があります。また、最終的にキーを信頼することを確認する必要があります。

gpg --edit-key yourKeyName

信頼、5、yを入力して、終了します

出典:https//medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.