GPG를 사용하여 공개 키 블록에서 "사용자 이름" 필드를 어떻게 얻나요?

GPG를 사용하여 공개 키 블록에서 "사용자 이름" 필드를 어떻게 얻나요?

내가 이것에 대해 많은 시간을 투자한 후에 이것에 대해 질문해야 한다는 사실은 이미 다음 두 진술 중 적어도 하나가 사실이라는 것을 말해줍니다.

  1. 제가 뭔가 엄청나게 나쁜 짓을 하고 있어요.
  2. PGP/GPG는 의도적으로 작업하기를 최대한 어렵고 혼란스럽게 만드는 절대적인 혼란입니다.

기본적으로 내 시스템은 나에게 전송된 모든 PGP 공개 키 블록을 자동으로 가져옵니다. 이는 메시지가 외부로 나갈 때 자동으로 메시지를 암호화할 수 있도록 하기 위한 것입니다(나에게서 응답으로 전송됨).

PGP/GPG로 일반 텍스트 메시지를 암호화할 때 사용할 "수신기"를 프로그램에 알려줍니다. 이 혼란스러운 용어는 실제로 GPG에 저장된 공개 키의 "전체 이름 + 이메일 주소" 필드(어떤 이유로 "사용자 이름"이라고 함)를 나타냅니다.

글쎄요, 작동하는 PGP 공개 키 블록을 "가져올" 때 "사용자 이름" 필드가 무엇인지 전혀 모르고, 이를 모르면 실제로 사용할 수 없습니다. 암호화 기능은 올바른 "저장된 공개 키"를 참조하기를 원합니다.

하지만 실제로 공개 키에서 "사용자 이름" 필드를 어떻게 추출합니까? --import 명령을 수행하면 이를 반환할 것이라고 생각하겠지만, 내가 아는 한 그렇지 않습니다. 그리고 나는 이것과 관련된 어떤 것도 찾지 못한 채 몇 시간 동안 매뉴얼을 파헤쳤습니다.

기록을 위해 다음 StackOverflow 스레드를 찾았습니다.https://security.stackexchange.com/questions/50965/extracting-the-gpg-userid-from-the-public-key-file ...하지만 나에게는 전혀 이해가 되지 않습니다. "솔루션"은 이미 일종의 ID를 알고 지정하고 있는데, 이는 본질적으로 우리가 찾으려고 하는 것이기 때문에 전체 요점을 무너뜨리는 것처럼 보입니다("사용자 이름" 필드는 제외).

나는 모든 종류의 "일반적이고 유용한 PGP/GPG 명령"을 보았지만 그중 어느 것도 이에 대해 언급하지 않았습니다. 뭐? 이게 가장 기본적이고 중요한 작업인거 같은데... 많이 헷갈립니다. --import 명령이 사용할 수 있는 ID를 제공하지 않는 이유는 무엇입니까? 그렇긴 하지만 좀 복잡한 방식으로요?

답변1

--import 명령이 사용할 수 있는 ID를 제공하지 않는 이유는 무엇입니까? 그렇긴 하지만 좀 복잡한 방식으로요?

그렇습니다. 대부분 잘못된 "사용 가능한 ID"에 대한 기대입니다.

PGP/GPG로 일반 텍스트 메시지를 암호화할 때 사용할 "수신기"를 프로그램에 알려줍니다. 이 혼란스러운 용어는 실제로 GPG에 저장된 공개 키의 "전체 이름 + 이메일 주소" 필드(어떤 이유로 "사용자 이름"이라고 함)를 나타냅니다.

해당 필드는 "사용자 ID"라고 합니다. "사용자 이름"이라고 부르지 않습니다.

많은 프로그램(주로 gpg이를 래핑하는 모든 도구)~ 할 것이다또한 이메일 주소, 사용자 ID와 일치하는 기타 하위 문자열, 전체 160비트 공개 키 지문 또는 "키 ID"(32/64비트 잘린 지문)만으로 수신자를 허용합니다. 예를 들어:

gpg --recipient [email protected] --encrypt
gpg --recipient EA708A76F932CCEAF60D364375F1129BE6E591E4 --encrypt
gpg --recipient "EA70 8A76 F932 CCEA F60D 3643 75F1 129B E6E5 91E4" --encrypt
gpg --recipient fred --encrypt
gpg --recipient 0x75F1129BE6E591E4 --encrypt

gpg --list-keys( 예: 에 전달하여 일치 항목을 테스트할 수 있습니다 gpg -k fred.)

이 중에서 지문으로 수신자를 지정하는 것이 가장 안전한 방법입니다. "사용자 ID" 필드(전체 또는 부분)는 Web of Trust를 사용하거나 합법적인 "Fred Foobar" 키와 가짜 "Fred Foobar" 키를 구별할 수 있는 다른 방법이 있는 경우에만 안전한 식별자입니다.

글쎄요, 작동하는 PGP 공개 키 블록을 "가져올" 때 "사용자 이름" 필드가 무엇인지 전혀 모르고, 이를 모르면 실제로 사용할 수 없습니다. 암호화 기능은 올바른 "저장된 공개 키"를 참조하기를 원합니다.

GnuPG는 항상 이 필드를 출력의 일부로 표시합니다 gpg --import(64비트 "키 ID"와 함께). 예를 들어:

$ gpg --status-fd=2 --import < /tmp/test.key
gpg: 키75F1129BE6E591E4: 공개 키 "테스트 사용자 <[이메일 보호됨]>" 가져옴
gpg: 총 처리 수: 1
gpg: 가져온: 1

자동화된 도구에서 이 기능을 사용하려면 --status-fd전체 160비트 지문을 제공하는 도구를 사용하세요. 예를 들어:

$ gpg --status-fd=2 --import < /tmp/test.key
[GNUPG:]IMPORT_OK 0 EA708A76F932CCEAF60D364375F1129BE6E591E4
[GNUPG:] KEY_CONSIDERED EA708A76F932CCEAF60D364375F1129BE6E591E4 0
[GNUPG:] IMPORT_RES 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0

다른 PGP 소프트웨어(즉, GnuPG가 아닌)를 사용하고 있고 방금 가져온 키에 대한 정보가 표시되지 않는다면 이는 다른 PGP 소프트웨어의 UI 문제입니다.

관련 정보