SSH 키가 이메일 서명과 같은 다른 목적으로 사용되는 비대칭 키와 어떻게 다릅니 까?
OS X에는 SSH 키 (ssh-agent, SSHKeychain 등)를 관리 할 수있는 앱과 GPG 키 (GPG 키 체인 액세스 등)를 관리하도록 설계된 앱이 있기 때문에이 메시지를 표시하라는 메시지가 표시됩니다. 그리고 트웨인이 만나야 할 것 같습니다. 그러나 이것이 OS X 관련 문제라고 생각하지 않습니다.
키가 매우 다른 종류이거나 다른 장소에 저장되어 있거나 다른 이유로 또는 이유의 조합 (예 : 역사적인 이유)으로 인해 이러한 분리 문제가 있습니까?
답변
-
SSH 키는 단순한 RSA, DSA 또는 ECDSA 비대칭 키 쌍입니다. OpenSSH에서 생성 된 이러한 키 쌍은 OpenSSL 및 대부분의 다른 프로그램에서 이미 사용할 수 있습니다.
(의
.pub
파일 출력ssh-keygen
은 OpenSSH 특정 형식이지만 “개인”파일에는 이미 개인 키와 공개 키가 모두 포함되어 있기 때문에 관련이 없습니다.)다른 SSH 소프트웨어는 RFC 4716 또는 PuTTY의 PPK 와 같은 자체 스토리지 형식을 가질 수 있지만 동일한 RSA / DSA / ECDSA 정보를 저장합니다.
-
X.509 (SSL, S / MIME에서 사용)는 약간 더 복잡합니다. “개인”키는 여전히 동일하지만 공개 키 파일 대신 “인증서”가 있습니다. 공개 키, 주제 및 발행자 이름, 유효 날짜. X.509 v3 인증서에는 “키 사용”및 “대체 주체 이름”과 같은 확장이 있습니다. 전체 인증서는 발급자의 키로 서명됩니다 (또는 별도의 발급자가없는 경우 자체 서명).
SSH 용 X.509 “개인 키”파일을 쉽게 사용할 수 있습니다. OpenSSH도 동일한 형식을 사용합니다.
간단한 키 쌍에서 X.509 인증서를 만든 다음 자체 서명하거나 “인증 요청”을 만들어 CA (인증 기관)에서 서명하도록 제출할 수 있습니다.
X.509 인증서에 정보를 표시하려면 다음을 사용하십시오.
certtool -i < foo.pem certtool -i --inder < foo.crt openssl x509 -noout -text < foo.pem openssl x509 -noout -text -inform der < foo.crt
(
certtool
GnuTLS의 일부입니다.) -
OpenPGP (GPG에서 사용) 키가 가장 복잡합니다. “PGP 키”또는 “PGP 키 쌍”이라고하는 것은 다음을 포함하는 “OpenPGP 인증서”라는 복잡한 구조입니다.
- 하나의 “기본 키”– 일반적으로 서명에 사용되는 비대칭 키 쌍
- 하나 이상의 “사용자 ID”– 일반적으로 “이름 <email @ address>”형식의 텍스트 레이블
- 그들 중 적어도 하나는 “기본 사용자 ID”로 표시됩니다
- 각 사용자 ID에 대해 “자체 서명”– 자신의 기본 키로 서명
- 각 사용자 ID에 대해 다른 사용자의 0 개 이상의 “서명”
- 자체 서명 패킷에는 선호하는 알고리즘 (SHA-1, AES 등)도 포함됩니다.
- 하나 이상의 “하위 키”– 추가 키 쌍, 첫 번째는 일반적으로 암호화
- 각 하위 키에 대해 기본 키의 서명
- 0 개 이상의 “사진 ID”– 얼굴이 포함 된 JPEG 또는 PNG 첨부 파일
- 사용자 ID와 같은 방식으로 서명
- 0 개 이상의 X.509 인증서
모든 키 쌍에는 만료 날짜 및 사용 비트 (서명 데이터, 인증 (서명) 키, 암호화, 서비스 인증)가 있습니다. 기본 키에는 기본적으로 “sign”및 “certify”비트가 있으며 첫 번째 하위 키는 “encrypt”입니다. “인증”하위 키를 추가하면
gpg-agent
SSH 인증에 이를 사용할 수 있습니다 .인증서에 포함 된 내용을 보려면
gpg --export joe@example.com | gpg -vv gpg --export joe@example.com | certtool --pgp-certificate-info
(
certtool
GnuTLS의 일부입니다.)
X.509 인증서 및 관련 개인 키는 여러 형식으로 제공됩니다.
-
DER 은 인증서 ASN.1 구조의 이진 인코딩입니다. 이러한 파일은 일반적으로
.crt
또는.cer
파일 이름 확장자를 갖습니다 (.der
흔하지는 않지만 보이지는 않음). -
“PEM”형식 파일은 동일한 DER 인코딩 데이터를 포함하지만 Base64를 사용하여 “BEGIN THIS”와 “END THAT”헤더 사이에 추가로 인코딩됩니다. 일반적인 파일 이름 확장자는입니다
.pem
..crt
그리고.cer
때로는 여기에서도 사용됩니다 (그러나 절대 사용하지는 않음.der
). -
인증서에 속하는 개인 키의 경우 일반적으로 “PEM”형식이 사용됩니다. Base64 헤더 “BEGIN PRIVATE KEY”(PKCS # 7 구조의 키) 또는 “BEGIN RSA (또는 DSA) PRIVATE KEY”(맨손 키, OpenSSL) 체재). 때로는 키가 별도의
.key
파일에 있고 때로는 인증서와 함께 번들로 제공되기도합니다. -
PKCS # 12 와 약간 오래된 PFX 는 인증서와 개인 키 (보통 발급자의 인증서도 모두)를 저장하는 암호화 된 컨테이너입니다. 이 형식은 개인 키로 인증서를 내보내거나 “백업”할 때 대부분의 소프트웨어에서 사용됩니다.
덜 혼란스러운 상황은 OpenPGP에 있습니다. 모든 데이터는 동일한 이진 형식을 따르고 선택적으로 “갑옷”(Radix64로 인코딩되고 PEM과 같은 헤더 사이에 인코딩 됨)입니다.
답변
다른 장소와 다른 형식으로 저장됩니다 (PGP, GnuPG ssh
, 및 여러 가지 다른 X.509 형식에서 사용되는 형식은 상당히 다릅니다). 그것은 혼합 및 적절한 옵션을 일치시켜 어느 정도 그들 간을 변환하는 것이 가능하다 ssh-keygen
, pgp
, gpg
/ gpg2
, openssl
등; 그러나 일반적으로 노력할 가치가 없습니다. 또한 다른 키 형식은 다음과 같이 다른 양의 정보를 지원합니다.ssh
최소한의 추가 정보를 전달하고 X.509 PEM 및 DER 형식을 가장 많이 전달합니다. 또한 OSX 키 체인은 단순히 암호화 된 키 / 값 저장 장치이므로 일반적으로 프로그램의 기본 키 + 메타 데이터 형식과 키 체인에 저장할 수있는 형식간에 변환하기 위해 각 응용 프로그램마다 다른 메커니즘이 필요합니다. (KDE 지갑과 그놈 키 체인에도 비슷한 문제가 적용됩니다.)