아니요, 정보는 공개 키 링에 보관 된 인증서 (또는 키 서버에서 다운로드 한 인증서)에서 가져옵니다. 서명에는 올바른 인증서를 찾는 데 필요한 몇 가지 정보 만 포함됩니다.
용도 gpg --list-packets
또는 pgpdump
:
$ echo Foo. > foo.txt
$ gpg --detach-sign foo.txt
$ gpg --list-packets < foo.txt.sig
:signature packet: algo 1, 키 ID D24F6CB2C1B52632 버전 4, 생성 된 1410762670, md5len 0, sigclass 0x00
알 고 10 소화, 소화 시작 25 58
해시 된 subpkt 2 len 4 (sig created 2014-09-15) subpkt 16 len 8 (발급자 키 ID D24F6CB2C1B52632) 데이터 : [4091 비트]
분리 된 서명에는 알고리즘, 서명 타임 스탬프 및 서명자의 8 바이트 키 ID가 포함 된 "서명"패킷 하나가 있습니다.이 ID는 키링에서 서명자의 인증서를 조회하는 데 사용됩니다. (해당 keyid가있는 공개 키가없는 경우 GnuPG는 공개 키 서버에서 공개 키를 찾으려고 시도합니다.)
(키 ID가 두 번인 이유는 모르겠다.)
GnuPG는 keyid를 검색하여 서명자에 관한 모든 것을 얻습니다. - 실제 공개 키와 확인하는 서명, 서명자를 설명하는 데 사용 된 userid 필드 (이름, 주소, 사진).
참고 : 예에는 4 바이트의 짧은 키 ID가 있습니다.이 키는 의도적이거나 우발적 인 몇 가지 알려진 단축 키 충돌이 있었기 때문에 매우 나쁩니다. 사용 keyid-format long
~ / .gnupg / gnupg.conf 파일에 더 긴 keyid를 표시하게 만들지 만 의도적으로 충돌하기 쉽습니다. 항상 새 키를 가져올 때 지문을 확인하십시오.
그러나 시그니처 패킷은 항상 8 바이트의 keyid를 유지합니다. 일부 사람들은 지문을 사용자 정의 필드 (표기법)에 넣도록 GnuPG를 구성하지만 불행하게도 소프트웨어 자체에서는 사용하지 않습니다.
서명으로 돌아 가기. 네가했다면 gpg --list-packets
일반 (인라인) 시그니처에는 다음과 같은 것들이 더 많이 있습니다.
:compressed packet: algo=1
: onepass_sig 패킷 : 키 ID D24F6CB2C1B52632
버전 3, sigclass 0x00, 다이제스트 10, 게시 키 1, 마지막 = 1 : 리터럴 데이터 패킷 : 모드 b (62), 생성 됨 1410762587, name = "",
원시 데이터 : 5 바이트
: 서명 패킷 : algo 1, keyid D24F6CB2C1B52632
버전 4, 생성 된 1410762587, md5len 0, sigclass 0x00
소화기 10, 소화기 시작 31
해시 된 subpkt 2 len 4 (sig created 2014-09-15)
subpkt 16 len 8 (발급자 키 ID D24F6CB2C1B52632)
데이터 : [4095 비트]
실제 서명 된 메시지는 일반적으로 DEFLATE를 사용하여 압축 된 "리터럴 데이터"패킷에 있습니다 ( pgpdump
사용중인 실제 알고리즘을 보여줍니다).
앞에는 "onepass_sig"패킷이 있습니다. 그 목적은 전체 메시지의 끝까지 읽을 필요없이 keyid를 제공하는 것입니다. 따라서 GnuPG는 keyid 검색을 시작하고 즉시 메시지 확인을 계속할 수 있습니다. (파이프에서 읽을 때, 예. cat|gpg
, 앞으로 및 뒤로 찾는 것은 불가능합니다. 모든 것은 한 번에 읽어야합니다.)
원하는 경우 서명자의 키 (인증서)를 사용하여이를 수행 할 수 있습니다. 먼저 파일로 내 보냅니다.
# gpg --export D24F6CB2C1B52632 | gpg --list-packets
:public key packet:
version 4, algo 1, created 1256993643, expires 0
pkey[0]: [4096 bits]
pkey[1]: [17 bits]
keyid: D24F6CB2C1B52632
:user ID packet: "Mantas Mikul\xc4\x97nas "
:signature packet: algo 1, keyid D24F6CB2C1B52632
version 4, created 1256993643, md5len 0, sigclass 0x13
digest algo 10, begin of digest 5a e2
[더 많은 줄]
또한 인증서는 공개 키, 각각에 대한 자체 서명이있는 사용자 ID (텍스트 레이블) (가짜 사용자 ID를 pubkey에 연결하는 것을 방지하기 위해), 몇 개의 공개 서브 키 패킷 (다시 자체 서명이 있음)으로 시작하는 패킷의 패킷으로 구성됩니다 ).
issuer key ID
마스터 키로keyid
당신이 그걸로 서명했다면 하위 키로?