"ssh-keygen -t rsa"를 사용할 때 키에 어떤 인코딩이 사용됩니까?

"ssh-keygen -t rsa"를 사용할 때 키에 어떤 인코딩이 사용됩니까?

내가 실행할 때 :

ssh-keygen -t rsa

id_rsa.pub 및 id_rsa와 같은 파일에서 공개/개인 키 쌍을 생성하려면 공개 키는 소수 p를 인코딩하고 개인 키는 숫자 pq를 인코딩하는 것으로 이해됩니다. 하지만 이 파일을 열면 사람이 읽을 수 있는 숫자가 아니라 일련의 문자가 보입니다. 그래서 제 질문은 간단합니다. 나는 무엇을 보고 있는 걸까요? 이러한 문자를 숫자에 직접 매핑할 수 있습니까? 그렇다면 어떤 규칙/알고리즘/인코딩을 사용합니까?

답변1

ssl(개인 및 공개)는 일반적으로 소위 이름으로 저장됩니다.PEM 형식.

PEM(Privacy Enhanced Mail)은 "Privacy Enhanced Mail"을 정의하는 1993 IETF 표준 세트를 기반으로 암호화 키, 인증서 및 기타 데이터를 저장하고 전송하기 위한 사실상의 파일 형식입니다. 원래 표준은 널리 채택되지 않았고 PGP 및 S/MIME으로 대체되었지만 이들이 정의한 텍스트 인코딩은 매우 유명해졌습니다. PEM 형식은 결국 RFC 7468의 IETF에 의해 공식화되었습니다.

이 형식은 실제로 헤더입니다.64비트 기반인코딩된 이진 데이터 및 바닥글입니다.

Base64는 이진 데이터를 ASCII 문자열 형식에서 기수-64 표현으로 변환하여 나타내는 유사한 이진-텍스트 인코딩 체계 세트입니다. Base64라는 용어는 특정 MIME 콘텐츠 전송 인코딩에서 유래되었습니다. 각 Base64 숫자는 정확히 6비트의 데이터를 나타냅니다. 따라서 3개의 8비트 바이트(즉, 총 24비트)는 4개의 6비트 Base64 숫자로 표시될 수 있습니다.

ssh키 에 대해서는 아래 dave_thompson_085의 설명을 확인하세요.

ssh-keygen은 (여러) PEM 형식을 사용하지만 7468의 형식은 사용하지 않습니다. 과거 RSA의 경우 기본적으로 OpenSSL의 두 가지 "레거시"(일명 "레거시") 형식(암호화되지 않거나 7468 유사한 형식(PKCS1 포함 제외) 또는 Proc 유형, DEK-Info 및 base64 암호화를 사용하는 암호화 암호화)으로 설정되었습니다. PKCS1의 1421과 유사하지만 7468과는 유사하지 않습니다. 7.8부터 기본적으로 OpenSSH의 자체 "새 형식"(이전에 -o 옵션으로 호출됨)이 사용됩니다. 이는 7468과 유사하지만 내용이 완전히 다릅니다(ASN.1 대신 XDR 스타일). 여러 스택에서 이에 대해 많은 질문이 있었습니다.

OpenSSH 공개 키 형식은 PEM이 아니었지만(상업용 "SSH2"는 그랬지만) SSH 유선 형식의 base64일 뿐입니다. 최근 누군가가 나에게 상기시켜 줬어요이 Q&A개인 키 형식을 상당히 철저하게 다룹니다.

관련 정보