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 첨부 파일
- 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 인증서 및 관련 개인 키는 여러 형식으로 제공됩니다.
덜 혼란스러운 상황은 OpenPGP에 있습니다. 모든 데이터는 동일한 이진 형식을 따르고 선택적으로 "갑옷"(Radix64로 인코딩되고 PEM과 같은 헤더 사이에 인코딩 됨)입니다.