GPG: [E] 하위 키의 공개 키가 마스터 키의 공개 키와 동일합니까?

GPG: [E] 하위 키의 공개 키가 마스터 키의 공개 키와 동일합니까?

~/.gnupg에서 [E] 하위 키를 다른 폴더로 가져왔고 하위 키의 공개 키를 내보내는 옵션을 사용했습니다 --homedir.

하위 키의 공개 키에는 마스터 키의 공개 키보다 줄이 적다는 것을 알 수 있습니다. diff를 사용하면 시작 줄이 일부 동일하지만 맨 아래 줄이 다르기 때문에 결국에는 여전히 공개 키가 다릅니다.

내 질문: 공개 키가 다른가요? (여기서는 여전히 이중 확인이 필요합니다). 서로 다른 경우 하위 키를 사용한 암호화/암호 해독은 독립적이며 마스터 키 및 다른 하위 키와 관계가 없습니다.

답변1

비대칭 암호화에서는 항상 키 쌍을 처리합니다. 모든 비밀 키에는 해당하는 공개 키가 있습니다. 따라서 첫 번째 질문에 답해 보겠습니다. 예, 마스터 키 쌍의 공개 키는 슬레이브 키 쌍의 공개 키와 다릅니다.

귀하의 실험을 재현하려고 시도하고 기본 키(ID 0xA6271DD4)와 보조 키(ID 0x5336E1DC)를 사용하여 GnuPG 테스트 키를 만들었습니다. 그런 다음 종속 키를 파일로 내보내고 어떤 패킷이 포함되어 있는지 확인합니다.

$ gpg --export-secret-subkey 5336E1DC! > subkey.gpg
$ gpg --list-packets subkey.gpg | grep "\(packet\|keyid\)"
:secret key packet:
    keyid: 877AA505A6271DD4
:user ID packet: "testtest <test@test>"
:signature packet: algo 1, keyid 877AA505A6271DD4
:secret sub key packet:
    keyid: B0389BEB5336E1DC
:signature packet: algo 1, keyid 877AA505A6271DD4
$

사용자 ID와 비밀 슬레이브 키는 모두 마스터 키로 서명됩니다. 언뜻 보면 마스터 키와 슬레이브 키가 모두 내보내지는 것처럼 보입니다. 첫 번째 비밀 패킷에 대한 자세한 정보를 표시합니다.

$ gpg --list-packets subkey.gpg | head 
# off=0 ctb=95 tag=5 hlen=3 plen=277
:secret key packet:
    version 4, algo 1, created 1546169910, expires 0
    pkey[0]: [2048 bits]
    pkey[1]: [17 bits]
    gnu-dummy S2K, algo: 0, simple checksum, hash: 0
    protect IV: 
    keyid: 877AA505A6271DD4
# off=280 ctb=b4 tag=13 hlen=2 plen=20
:user ID packet: "testtest <test@test>"
$ 

GnuPG에서 키를 내보낼 때 해당 공개 키가 항상 내보내집니다. 따라서 이 비밀 키백에는 2048비트 공개 키와 17비트 해시가 포함될 수 있습니다. 그러나 키 자체는 손실되고 스텁만 내보내집니다 gnu-dummy S2K, algo: 0, simple checksum, hash: 0. 요약하자면, 비밀 하위 키를 내보낼 때 항상 공개 하위 키와 공개 마스터 키(서명 확인에 필요)도 함께 내보내게 됩니다.

공개 하위 키에 공개 마스터 키보다 행 수가 적다고 작성하셨습니다. 나는 이것을 재현할 수 없습니다. GnuPG를 사용하면 위 예의 명령을 통해 하위 키 없이 공개 키를 내보낼 수 있습니다 gpg --export A6271DD4! > pubkey.gpg(느낌표 참고). 반면에 그것은공개 하위 키만 내보낼 수 없습니다.. 그러나 마스터 키를 마스터 키와 하위 키를 비교하면 후자가 자연스럽게 더 많은 행을 갖게 됩니다. 따라서 관찰 내용을 더 잘 이해하려면 사용한 정확한 명령을 아는 것이 가장 좋습니다.

관련 정보