SSH 키가 다른 목적으로 사용되는 비대칭 키와 어떻게 다릅니 까?


13

SSH 키가 이메일 서명과 같은 다른 목적으로 사용되는 비대칭 키와 어떻게 다릅니 까?

OS X에는 SSH 키 (ssh-agent, SSHKeychain 등)를 관리 할 수있는 앱과 GPG 키 (GPG 키 체인 액세스 등)를 관리하도록 설계된 앱이 있기 때문에이 메시지를 표시하라는 메시지가 표시됩니다. 그리고 트웨인이 만나야 할 것 같습니다. 그러나 이것이 OS X 관련 문제라고 생각하지 않습니다.

키가 매우 다른 종류이거나 다른 장소에 저장되어 있거나 다른 이유로 또는 이유의 조합 (예 : 역사적인 이유)으로 인해 이러한 분리 문제가 있습니까?

답변:


14
  • 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
    

    ( certtoolGnuTLS의 일부입니다.)

  • 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-agentSSH 인증에 이를 사용할 수 있습니다 .

    인증서에 포함 된 내용을 보려면

    gpg --export joe@example.com | gpg -vv
    
    gpg --export joe@example.com | certtool --pgp-certificate-info
    

    ( certtoolGnuTLS의 일부입니다.)


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과 같은 헤더 사이에 인코딩 됨)입니다.


2

다른 장소와 다른 형식으로 저장됩니다 (PGP, GnuPG ssh, 및 여러 가지 다른 X.509 형식에서 사용되는 형식은 상당히 다릅니다). 그것은 혼합 및 적절한 옵션을 일치시켜 어느 정도 그들 간을 변환하는 것이 가능하다 ssh-keygen, pgp, gpg/ gpg2, openssl등; 그러나 일반적으로 노력할 가치가 없습니다. 또한 다른 키 형식은 다음과 같이 다른 양의 정보를 지원합니다.ssh최소한의 추가 정보를 전달하고 X.509 PEM 및 DER 형식을 가장 많이 전달합니다. 또한 OSX 키 체인은 단순히 암호화 된 키 / 값 저장 장치이므로 일반적으로 프로그램의 기본 키 + 메타 데이터 형식과 키 체인에 저장할 수있는 형식간에 변환하기 위해 각 응용 프로그램마다 다른 메커니즘이 필요합니다. (KDE 지갑과 그놈 키 체인에도 비슷한 문제가 적용됩니다.)


기본 암호화 표준도 다르다는 점에 유의해야합니다. gpg는 대부분 DSA를 사용하고 SSH는 대부분 RSA를 사용합니다. 표준 비대칭 표준은 제한되어 있으며 대부분의 응용 프로그램은 여러 표준을 지원하지만 다른 응용 프로그램에 대해 '정상적인'표준은 다양합니다.
jcrawfordor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.