사용자 ID가 없는 PGP 키를 gpg로 가져오기

사용자 ID가 없는 PGP 키를 gpg로 가져오기

우리 회사는 Authora Edge를 사용하여 pgp 키를 생성/관리합니다. 회사가 예기치 않게 문을 닫았으며 기존 키를 gpg로 마이그레이션하는 중입니다.

공개 키를 가져오려고 하면 다음 오류가 발생합니다.

# gpg --import ./Feedback-RSA-4096.public.asc
gpg: key 5DE4473F: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: Total number processed: 1
gpg:           w/o user IDs: 1

하지만 --allow-non-selfsigned-uid를 사용하면 이 문제를 해결할 수 있습니다.

# gpg --allow-non-selfsigned-uid --import ./Feedback-RSA-4096.public.asc
gpg: key 5DE4473F: accepted non self-signed user ID "Feedback-RSA-4096.public.asc"
gpg: key 5DE4473F: public key "Feedback-RSA-4096.public.asc" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

불행히도 키를 가져올 때는 작동하지 않습니다.

# gpg --expert --allow-non-selfsigned-uid --import Feedback-RSA-4096.private.txt
gpg: key 5DE4473F: no user ID
gpg: Total number processed: 1
gpg:       secret keys read: 1

키를 gpg로 가져오는 방법을 아시나요? 전문가 모드를 사용할 수 있다는 내용을 읽었지만 지금까지의 시도는 실패했습니다.

답변1

실제로 GnuPG는 사용자 ID 없이 키를 가져오지 않습니다. 다행히 이 --allow-non-selfsigned-uid옵션은 효과가 있었습니다너무 쉽게임시 사용자 ID를 만들어 가져오기 전에 짧은 바이트 문자열로 파일에 쓰세요. 이 예에서는 사용자 ID "foobar"를 사용하므로 바이트열은 \xb4\x06foobar.

이것이 작동하려면 키 파일이 바이너리 형식이어야 합니다.ASCII 갑옷 없음. 파일을 일반 텍스트 편집기로 읽을 수 있고 로 시작하는 경우 -----BEGIN PGP PRIVATE KEY BLOCK-----ASCII로 무장되어 있으므로 변환해야 합니다. 이미 바이너리인 경우 복사본을 만들어야 합니다.

원본 키 파일이 ASCII로 보호된 경우 바이너리 복사본을 만듭니다.

gpg -o Feedback-RSA-4096.private.gpg --dearmor Feedback-RSA-4096.private.txt

그렇지 않고 원본 키 파일이 바이너리 파일인 경우 이름이 바뀐 바이너리 복사본을 만듭니다.

cp Feedback-RSA-4096.private.txt Feedback-RSA-4096.private.gpg

위의 명령 중 어떤 명령을 사용하든 이라는 키 파일의 바이너리 복사본이 생성됩니다 Feedback-RSA-4096.private.gpg. 이렇게 하면 문제가 발생하더라도 원본 키 파일을 망칠 필요가 없습니다.

사용자 ID 바이트 문자열을 바이너리 복사본에 추가합니다.

printf '\xb4\x06foobar' >> Feedback-RSA-4096.private.gpg

다음 옵션을 사용하여 키 파일을 가져옵니다 --allow-non-selfsigned-uid.

gpg --allow-non-selfsigned-uid --import Feedback-RSA-4096.private.gpg

거의 끝났다...

자체 서명되지 않은 사용자 ID가 있는 키의 기능은 심각하게 제한되므로 키를 가져온 후 해당 키를 사용하여 gpg --edit-key foobar편집 모드로 들어가야 합니다. 편집 모드 진입 후 gpg>프롬프트에서 입력adduid그리고 화면의 지시에 따라 실제(자체 서명된) 사용자 ID를 추가하세요. 사용자 ID를 추가한 후 편집 모드에서 gpg>프롬프트에 따라 입력하세요 .1"foobar" 사용자 ID를 선택하고( *이름 옆에 선택되었음을 나타내는 표시가 있음) 다음을 입력합니다.deluid사용자 ID 삭제를 확인하세요. 마지막 입력save변경 사항을 저장하고 키 편집 모드를 종료합니다.

키 패키지에는 항상 해당 공개 키 패키지가 포함되어 있으므로 키가 포함된 파일을 가져오면 공개 키도 가져옵니다. 이는 공개 키 파일 가져오기를 건너뛰고 개인 키 파일만 가져올 수 있음을 의미합니다.

관련 정보