해당 개인 키로 서명을 확인하려면 공개 키가 있어야하지만 키에 서명하거나 로컬로 서명 할 필요는 없습니다. 이 경우 GPG로부터 키를 신뢰할 수 없다는 경고를 받게됩니다.
내 키로 서명 한 파일로 키를 가져 오지 않은 시스템에서 테스트 한 내용은 다음과 같습니다.
[ben@seditious tmp]$ gpg -v --verify thing.txt.gpg
gpg: original file name='thing.txt'
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
gpg: Can't check signature: public key not found
[ben@seditious tmp]$ gpg -v --status-fd 1 --verify thing.txt.gpg
gpg: original file name='thing.txt'
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
[GNUPG:] ERRSIG 7FF2D37135C7553C 1 10 00 1380142299 9
[GNUPG:] NO_PUBKEY 7FF2D37135C7553C
gpg: Can't check signature: public key not found
[ben@seditious tmp]$
불행히도 Harry의 제안은 효과가 없으며 약간 더 많은 정보를 추출하지만 사용하기에는 충분하지 않습니다.
보시다시피, 가장 많이 얻은 정보는 서명을하는 데 사용 된 하위 키의 키 ID와 서명 시간입니다. 이는 pgpdump (또는 --list-packets)에 사용 가능한 데이터와 일치합니다.
bash-3.2$ pgpdump thing.txt.gpg
Old: Compressed Data Packet(tag 8)
Comp alg - ZLIB <RFC1950>(comp 2)
Old: One-Pass Signature Packet(tag 4)(13 bytes)
New version(3)
Sig type - Signature of a binary document(0x00).
Hash alg - SHA512(hash 10)
Pub alg - RSA Encrypt or Sign(pub 1)
Key ID - 0x7FF2D37135C7553C
Next packet - other than one pass signature
Old: Literal Data Packet(tag 11)(24 bytes)
Format - binary
Filename - thing.txt
File modified time - Thu Sep 26 06:51:39 EST 2013
Literal - ...
Old: Signature Packet(tag 2)(412 bytes)
Ver 4 - new
Sig type - Signature of a binary document(0x00).
Pub alg - RSA Encrypt or Sign(pub 1)
Hash alg - SHA512(hash 10)
Hashed Sub: signature creation time(sub 2)(4 bytes)
Time - Thu Sep 26 06:51:39 EST 2013
Sub: issuer key ID(sub 16)(8 bytes)
Key ID - 0x7FF2D37135C7553C
Hash left 2 bytes - f0 97
RSA m^d mod n(3066 bits) - ...
-> PKCS-1
bash-3.2$
보시다시피 해시 알고리즘, 키 유형의 세부 정보 (내 서명 키는 3072 비트 RSA 하위 키 및 하위 키의 키 ID이지만 마스터 키를 식별 할 수는 없습니다. 공개 키가 있고 서명을 확인하면 공개됩니다.
그런 다음 해당 시스템에서 공개 키를 가져 와서 다시 시도했습니다.
[ben@seditious tmp]$ gpg -v --verify thing.txt.gpg
gpg: original file name='thing.txt'
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
gpg: using subkey 35C7553C instead of primary key 73590E5D
gpg: using PGP trust model
gpg: Good signature from "Ben M <ben@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M (backup email address) <benm@REDACTED>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: DB47 24E6 FA42 86C9 2B4E 55C4 321E 4E23 7359 0E5D
Subkey fingerprint: B7F0 FE75 9387 430D D0C5 8BDB 7FF2 D371 35C7 553C
gpg: binary signature, digest algorithm SHA512
[ben@seditious tmp]$
이제 키를 식별하고 기본 키와 일치시킬 수 있습니다. 그러나 다음과 같은 경고의 특성을 줄이는 것이 가능합니다.
[ben@seditious tmp]$ gpg -v --verify --trust-model always thing.txt.gpg
gpg: original file name='thing.txt'
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
gpg: using subkey 35C7553C instead of primary key 73590E5D
gpg: Good signature from "Ben M <ben@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M (backup email address) <benm@REDACTED>"
gpg: WARNING: Using untrusted key!
gpg: binary signature, digest algorithm SHA512
[ben@seditious tmp]$
여전히 신뢰할 수없는 키라는 경고가 있지만, 그렇게 큰 것은 아니며 자세한 정보를 제거하면 키가 줄어 듭니다.
[ben@seditious tmp]$ gpg --verify --trust-model always thing.txt.gpg
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
gpg: Good signature from "Ben M <ben@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M (backup email address) <benm@REDACTED>"
gpg: WARNING: Using untrusted key!
[ben@seditious tmp]$
공개 키는 서명자가 생성 한 데이터를 개인 키와 일치시키는 데 사용되므로 확인 단계에 필요합니다. 간단히 말해서 공개 키로 암호화 된 데이터를 해독하기 위해 개인 키가 필요한 암호화의 보완이라고 생각할 수 있습니다.
참고 :이 예제에서 UID를 약간 조정했지만 해당 키를 얻는 사람은 누구나 실제로 무엇인지 알 수 있습니다. 그렇지 않으면 출력물은 직선 복사하여 붙여 넣습니다.
편집 : 공개 키 파일을 ASCII가 아닌 형식으로 (예 : .asc 파일 대신 .gpg 파일) 키 링처럼 직접 호출 할 수 있습니다. 그럼에도 불구하고 여전히 공개 키가 필요합니다. 이렇게하려면 명령은 다음과 같습니다.
[ben@seditious ~]$ gpg -v --no-default-keyring --keyring /tmp/mykey.gpg --verify /tmp/thing.txt.gpg
gpg: original file name='thing.txt'
gpg: Signature made Thu 26 Sep 2013 06:51:39 AM EST using RSA key ID 35C7553C
gpg: using subkey 35C7553C instead of primary key 73590E5D
gpg: using PGP trust model
gpg: Good signature from "Ben M <ben@REDACTED>"
gpg: aka "Ben M (backup email address) <benm@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: aka "Ben M <ben.m@REDACTED>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: DB47 24E6 FA42 86C9 2B4E 55C4 321E 4E23 7359 0E5D
Subkey fingerprint: B7F0 FE75 9387 430D D0C5 8BDB 7FF2 D371 35C7 553C
gpg: binary signature, digest algorithm SHA512
[ben@seditious ~]$
gpg --status-fd 1 --verify (thefile)
이 출력을 통해 서명을 만든 키의 지문을 첫 번째 문자열로 제공 하는지 확인하십시오 .