RSA SSH 키를 _primary_ 개인 키로 GPG에 가져 오는 방법은 무엇입니까?


16

현재 한동안 사용해온 SSH 키가 있으며 새 키 링으로 GnuPG를 사용하고 싶습니다. 그러나 연령대에 키를 사용 했으므로 GPG에서 해당 키를 기본 / 기본 키로 계속 사용하고 싶습니다. 이 지침을 통해 키를 가져 오려고했습니다 .

그러나 나는 "하위 키"로 간주되는 것으로 끝납니다. 또한 표준 GPG 키를 만들지 않고 가져 오려고하면 GPG에이 하위 키조차 표시되지 않습니다. (하위 키는 먼저 기본 키로 서명해야한다고 가정합니다.)

secring.gpg에서이 키를 기본 키로 어떻게 사용합니까?


어떤 의미에서 " _primary_ 개인 키 " 를 의미 합니까?
MadHatter

답변:


16

간단한 대답은 다음과 같습니다 .

두 프로토콜 모두 RSA 키 쌍을 사용할 수 있지만 SSH 키와 GnuPG (실제로 OpenPGP) 키는 완전히 다릅니다.

게다가 왜 그렇게하겠습니까? PGP 키를 구성하기 위해 동일한 키 자료를 사용해야하더라도 여전히 키를 PGP 키로 배포해야합니다. SSH 공개 키를 해당 사용자에게 배포하지 않았을 가능성이 있으므로 키 배포 관점에서는 차이가 없습니다. 공개 키를 받아야합니다. 그리고 SSH 공개 키를 다른 사람에게 배포 했더라도 OpenPGP 구현으로 가져 오기 위해 몇 가지 추가 단계를 수행해야 할 수도 있습니다.

으로 kasperd이 매우 righly 지적, (특히) 서명을 해석하는 하나의 방법이 있어야합니다. PGP와 SSH 모두에 동일한 키 를 사용 하는 경우 누군가가 특수하게 조작 된 메시지 (특정 시그니처 시스템 공격에서 추정되는 기능)에 한 번에 서명하도록 속일 수 있다면 두 시스템이 모두 안전하게 안전하더라도 시스템 중 하나에서 하나의 의미를 갖지만 다른 시스템에서는 다른 의미 로 그러한 메시지를 작성할 수 있습니다 . 그 자체로 취약점이 될 수 있습니다. (파열 가능? 누가 아는가. 그러나 왜 기회를 잡을까?)

PGP 및 SSH 키 쌍은 모두 장기 키로, 임시 (메시지 및 세션) 대칭 키를 보호하고 원격 당사자의 신뢰성을 확인하는 데 사용됩니다. 따라서 PGP 또는 SSH 개인 키가 해당 대칭 키보다 공격자에게 훨씬 더 높은 대상이됩니다. 둘 다에 동일한 키 자료를 사용하고 공격자가이를 인식 할 수 있으면 해당 키 쌍에 대한 성공적인 공격의 가치 만 증가시킵니다 .

두 프로토콜을 자세히 보지 않고 공개 키가 기본적으로 명확하게 전송되기 때문에 동일한 키 자료가 두 가지 모두에서 사용된다는 것을 인식하는 것이 상당히 쉽지 않을 것이라고 생각합니다.

새로운 PGP 키를 생성하십시오. 원하는 경우 RSA를 SSH 키와 동일한 길이로 만드십시오. (어쨌든 지문을 확인하는 것보다 제정신이 아닌 사람은 지문을 더 자세히 보지 않을 것입니다.) 그런 다음 공개 키를 PGP 키로 통신하려는 사람에게 배포하십시오. 시스템의 임의의 엔트로피 풀에서 소량의 엔트로피를 희생 시키면 모든 사람이 훨씬 쉽고 안전 할 것입니다. 어쨌든 빠르게 보충해야합니다.


당신이있는 경우 비밀의 열쇠 고리에 여러 개의 키를 기본적으로 사용되어야하는 하나의 지정하려면, 사용 default-key가능성이 default-recipient{,-self}당신의 ~ / .gnupg / gnupg.conf에 지시를.


1
이 답변에 동의합니다. 그러나 동일한 키 자료를 사용하지 않는 이유가 하나 더 있습니다. 보안상의 이유로 서명을 해석하는 방법은 하나만 있어야합니다. 동일한 서명을 두 가지 다른 방식으로 해석 할 수 있다면 취약점이 될 수 있습니다. ssh와 gpg가 모두 자체적으로 안전하더라도 상대방은 메시지로 서명하도록 속인 다음 다른 프로그램에 서명을 취하여 다른 의미를 가질 수 있습니다.
kasperd

@kasperd 좋은 지적입니다. 나는 그 대답을 수정했다. 지금은 어떻습니까?
CVn

잘 들립니다.
kasperd

1
이 답변은 완전히 정확하지 않다고 생각합니다. monkeysphere의 경우 개인 OpenPGP 키에 기존 OpenSSH 키를 인증 전용 하위 키로 사용할 수있는 사용 사례가 있습니다. 적어도 나는 그런 식으로 사용하고 싶습니다.
user134450

이 키들은 전혀 다르지 않습니다. 그들의 메타 데이터는
foo

5

monkeysphere 프로젝트 의 도구 pem2openpgp를 사용하여 SSH 키를 OpenPGP 키로 변환 할 수 있습니다 . 그런 다음이 키는 gnupg에서 일반 개인 / 공개 키 쌍으로 가져올 수 있습니다. 다른 답변에서 언급했듯이 ssh에는 인증서 개념이 없기 때문에 일반적으로 좋은 생각이 아니므로 이전에는 없었던 기존 키에 기능을 효과적으로 추가하고 있습니다. 이것은 일반적으로 암호화에 대한 이동이 아닙니다.

어쨌든 내 ssh 키 중 하나를 사용 하여이 작업을 수행했지만 다른 OpenPGP 키에 키 쌍을 하나의 기능 플래그가있는 하위 키로 추가했습니다 : 인증. 이 플래그는 키 페어 ( gnupg의 의미 --encrypt--sign옵션) 로 서명하거나 암호화 하고 싶지 않지만 OpenSSH 및 gnupg-agent와의 인증을 위해 키 박스에 포함시키려는 경우와 같은 상황을위한 것입니다.

자세한 내용은 monkeysphere 설명서를 참조하십시오.


2

gpg로 가져 오기 위해 일반 PKCS 형식 키를 변환해야 할 이유가있을 수 있습니다.

예를 들어, 스마트 카드에 넣으려는 경우. gpg가 card-info 및 card-edit 명령을 제공하는 기능은이 목적에 매우 도움이되므로 도구로 사용하지 않겠습니까? 극복해야 할 유일한 장애물은 ... 정확하게 : 추가 처리를 위해 표준 PKCS # 8 형식 (또는 "원시"RSA PKCS # 1 형식)에서 gpg 키 저장소로 키를 가져 오는 것입니다.

따라서 승인 된 답변에 대한 이의 제기에 주목하십시오. :)

질문의 종류에 실제로 도움이 대답은 여기있다 : /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg


1

Ubuntu 16.04 또는 Windows WSL에서 이것을 사용하십시오.

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

수입 카드. Windows 또는 Linux에서 수행 할 수 있습니다.

gpg --import key.gpg

카드로 이동

키 서명 식별자를 찾으십시오.

gpg --list-key

인증 키를 카드로 이동

gpg --edit-key FFFFFFFFFFF
keytocard

인증 슬롯 번호를 선택하십시오.

당신은 여기에 있습니다.

카드를 사용하는 경우 gpg 키 체인에서 키를 삭제해야합니다. 위에서 키 식별자를 사용하십시오.

gpg --delete-secret-key FFFFFFFFFFF

기타

필요하지 않지만 텍스트 기반 pgp 형식의 키를 얻는 데 유용 할 수 있습니다.

gpg -a --export FFFFFF > key.asc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.