개인 / 비밀 ASC 키를 내보내 GPG 파일을 해독하는 방법


88

배경 : 상사가 공개 및 비공개 부분을 사용하여 ASC 키를 나에게 내보내려고 시도했지만 파일을 가져올 때마다 비공개 부분이로드되지 않으며 파일을 해독하지 않습니다.

다음을 사용하여 ASC 키 내보내기를 시도했습니다.

  • Windows 응용 프로그램 Kleopatra 2.1 (gpg4win에 포함됨)
  • Windows Application GNU Privacy Assistant (gpg4win에 포함됨)

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

gpg 파일을 해독하기 위해 비밀 또는 개인 asc 키를 올바르게 내보내는 방법은 무엇입니까?

답변:


185

GPG에서 명령 줄 도구를 사용하여 개인 키를 내보낼 수 있습니다 . Windows-shell에서 작동합니다. 다음 명령을 사용하십시오.

gpg --export-secret-keys

로 일반 내보내기 --export에는 개인 키가 포함되지 않으므로을 사용해야 --export-secret-keys합니다.

편집하다:

내 의견에 제공된 정보를 요약하면 ID가 1234ABCD 인 특정 키를 secret.asc 파일로 내보낼 수있는 명령입니다.

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

다음 명령을 사용하여 필요한 ID를 찾을 수 있습니다. ID는 두 번째 열의 두 번째 부분입니다.

gpg --list-keys

모두가 아닌 하나의 특정 비밀 키만 내보내려면 :

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

keyIDNumber는 내보내려는 원하는 키의 키 ID 번호입니다.


4
@Brian : 키를 콘솔에 덤프합니다. 파일에 저장하려는 경우 출력을 임의의 파일 이름으로 리디렉션 할 수 있습니다 ( "gpg --export-secret-keys> secret.asc").
Demento 2011

5
@Brian : 이것은 바이너리가 아닌 ASCII로 출력을 제공합니다. 파일에 보관하면 실제로 중요하지 않습니다. 그러나 일단 다른 방법으로 전달하고 싶다면 ASCII 버전이 훨씬 더 쉽게 처리 할 수 ​​있습니다 (예 : 이메일로 인라인으로 전송)
Demento

8
비밀 키를 다른 위치로 옮기고 싶을 수도 있습니다. 이 경우 내 보낸 데이터를 암호화해야합니다. "gpg --export-secret-keys keyIDNumber | gpg -c> encrypted"는 "gpg -o 암호화되지 않은 암호화"로 해독합니다.
rockdaboot 2014-06-26

2
GnuPG에서 내 보낸 키는 암호화 된 상태로 유지되므로 (비공개 키 암호를 입력 할 필요가 없습니다) 다시 암호화 할 필요가 없습니다.
페리 Boender

1

32

위의 모든 응답이 정확하지만 중요한 단계가 누락되었을 수 있습니다. 가져온 키를 편집하고 해당 키를 "궁극적으로 신뢰"해야합니다.

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를 선택하십시오.


18

Dark Otter의 치료법보기

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를 생성합니다. 이어서 두 번째 계정 "import_private_key"에서 호출합니다. 다음은 cat으로 표시된 콘텐츠입니다 (콘텐츠 복사 및 붙여 넣기).

$ 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"를 두 번째 계정으로 전송하고 아래 표시된 프로그램을 호출합니다.

$ 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  ######################

Otter의 정신으로 "그리고 그게되어야한다".


하나의 암호로 보호 된 파일에 공개 및 개인 키를 모두 포함하는 스크립트에 감사드립니다. 내 인생이 훨씬 나아졌습니다!
codekoala 2016-04-16

옵션 --no-use-agentGPG 버전 2에서 사용되지 않습니다
조쉬 Habdas

9

메시지 오류가 말했듯이 아직 개인 키를 가져 오지 않았다고 생각합니다. gnupg에서 공개 / 개인 키를 가져 오려면 :

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

작동하는 컴퓨터에서 내보내는 것에 대해 묻고 있었는데 ... 로컬 서버에있는 경우에만 키를 가져올 수 있습니다.
Brian McCarthy

@Brian McCarthy : 무슨 말을하려는 건가요?
SIFE 2011

개인 키를 이미 가져온 경우 공개 키를 가져와야합니까? 내가 이해했듯이, 공개 키는 개인 키에서 무엇이든 생성 할 수 있습니다.
farhany

@farhany 메시지에 서명 할 때 필요하기 때문에 그렇다고 생각합니다.
SIFE

6

이것은 나를 위해 일했습니다.

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

.asc 확장자를 유지하는 한 모든 이름으로 keyfilename.asc의 이름을 지정할 수 있습니다.
이 명령은 사용자 컴퓨터의 모든 비밀 키를 명령이 호출 된 작업 디렉토리의 keyfilename.asc에 복사합니다.

모두가 아닌 하나의 특정 비밀 키만 내보내려면 :

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

keyIDNumber는 내보내려는 원하는 키의 키 ID 번호입니다.


1
"--list-keys"로 사용 가능한 모든 키를 나열 할 수 있습니다. 두 번째 열에는 "2048g / 1234ABCD"와 같은 ID가 포함됩니다. 원하는 키를 찾아 "gpg --export-secret-keys 1234ABCD> secret.asc"로 내보내십시오. 물론 올바른 ID로 1234ABCD를 변경하십시오. "-a"플래그를 추가 할 수도 있습니다. 바이너리 출력이 문제를 일으키는 경우에 대비하여 ASCII 문자로 출력을 기록합니다.
Demento 2011

@demento, 추가 피드백에 감사드립니다 ... 아쉽게 대답에 추가하십시오
Brian McCarthy

2
당신이 정말로 오름차순하려는 경우 당신은 여전히 -a 필요
RichieHH

그런 다음 다른 컴퓨터로 어떻게 가져 옵니까?
Natim

@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. Secret Key 가져 오기 (privateKey 가져 오기)

gpg --import privateKey.asc

3 아직 완료되지 않았더라도 궁극적으로 키를 신뢰해야합니다. 궁극적으로 키를 신뢰하는지 확인해야합니다.

gpg --edit-key yourKeyName

trust, 5, y를 입력 한 다음 종료

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.