한국어

개발자 도구 · SHA 해시 계산기

인증서 및 SSH 지문: SHA-256이 공개 키를 식별하는 방법

· 배경

샤-256 암호화 보안

SHA256을 표시하는 SSH 호스트 키 프롬프트: base64 다이제스트가 포함된 지문
원본 ToolAcre 벡터 일러스트레이션

지문은 소리내어 읽을 수 있을 만큼 짧은 인증서 또는 키의 해시입니다. 이 게시물에서는 TLS 및 SSH 지문이 계산되는 방법, SHA-1 지문이 대체되는 이유 및 일치 항목이 무엇인지 설명합니다.

항상 수락하는 호스트 키 프롬프트 - SHA256: 행에서 비교를 요청하는 내용

SSH를 통해 처음으로 서버에 연결하면 호스트 키를 수락할지 묻는 메시지가 표시됩니다. 프롬프트에는 `SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8` 또는 이와 유사한 지문이 표시됩니다. 이 지문은 서버 공개 키의 해시입니다. 이 키를 인식하는지 대역 외(SSH 프로토콜 외부)에서 확인하라는 메시지가 표시됩니다. 프롬프트에는 일반적으로 키 유형(RSA, ED25519, ECDSA)과 지문 형식도 표시됩니다. 이전에 신뢰할 수 있는 채널을 통해 이 키의 지문을 본 적이 있다면 자신 있게 "yes"를 입력할 수 있습니다. 그렇지 않은 경우 수락한다는 것은 네트워크가 올바른 키를 전달한다고 신뢰한다는 의미입니다.

지문은 단순히 인코딩된 키에 적용된 암호화 해시 함수의 출력입니다. SSH의 경우 키는 바이너리 blob(OpenSSH 와이어 형식)으로 인코딩되고 해당 blob에 대해 해시가 계산됩니다. 지문은 전체 키보다 짧아 읽기 쉽고 입력이 가능합니다. 동일한 지문은 항상 동일한 키에서 발생하므로 여러 장소나 채널에 게시된 지문을 비교할 수 있습니다.

지문은 인코딩의 해시와 같습니다. DER 인증서 또는 공개 키 blob을 입력으로 사용합니다.

SSH 호스트 키와 TLS 인증서는 다르게 인코딩되지만 지문 채취 원칙은 동일합니다. SSH의 경우 지문은 공개 키 자료에서 계산됩니다. TLS 인증서의 경우 전체 인증서(발급자, 유효 날짜 및 기타 필드 포함)에서 지문이 계산됩니다. 웹 서버에 연결할 때 TLS는 다른 신뢰 모델을 사용하기 때문에 브라우저는 인증서 지문을 표시하지 않습니다. 즉, 브라우저는 사전 설치된 CA(인증 기관) 집합을 신뢰하고 해당 CA는 인증서를 보증합니다. SSH는 사전 설치된 CA를 사용하지 않습니다. 대신 특정 키를 신뢰하고 `~/.ssh/known_hosts`에 로컬로 저장합니다.

지문에는 TLS에 대한 전체 인증서 바이트가 포함되어 있으므로 다시 서명하지 않고 유효 날짜를 변경하면 다른 지문이 생성됩니다. SSH의 경우 지문은 공개 키로만 구성되므로 키가 변경되지 않는 한 지문은 안정적입니다.

이 계산기는 SHA-1 및 SHA-256 길이를 보여줍니다. 지문 정책 권장 사항에는 프로토콜 소스가 필요합니다.

역사적으로 SSH 지문은 MD5 16진수로 표시되었습니다. MD5는 암호화되어 있으며 충돌이 가능합니다. 보안 커뮤니티는 기본값으로 SHA-256 지문으로 이동했습니다. SSH 클라이언트에 `SHA256: base64` 및 `MD5: hex` 형식이 모두 표시될 수 있습니다. SHA-256 지문은 신원 확인을 위해 신뢰할 수 있는 지문입니다. 두 가지가 모두 표시되면 SHA-256 버전을 신뢰할 수 있는 소스(서버 웹사이트, 관리자가 서명한 이메일, 내부 위키)의 지문과 비교하세요. MD5 충돌이 존재하기 때문에 MD5 지문의 신뢰성이 떨어집니다.

지문 형식의 변경은 암호화 전환의 가시적 신호입니다. 이전 OpenSSH 버전에서는 MD5만 표시되었습니다. 최신 버전은 기본적으로 SHA-256을 표시합니다. `ssh-keygen -l -f /path/to/key` 명령은 ssh-keygen 버전에 대한 기본 형식으로 키의 지문을 표시합니다. `-E` 플래그(예: `-E sha256` 또는 `-E md5`)를 사용하여 특정 형식을 강제로 적용할 수 있습니다.

SSH의 base64 SHA256: 형식 — 지문을 16진수보다 짧게 만드는 인코딩 변경

SSH base64 지문은 변형 형식을 사용합니다. 즉, 알고리즘 이름과 콜론이 앞에 붙습니다(예: `SHA256:base64string`). 이는 하이픈을 사용하고 표준 base64만 포함하는 SRI(하위 리소스 무결성) 형식과 다릅니다. SSH 형식에는 어떤 알고리즘이 다이제스트를 생성했는지 명확하게 해주는 레이블이 포함되어 있습니다. SSH 출력에 지문이 표시되면 알고리즘이 항상 표시됩니다. SRI 무결성 속성이 표시되면 알고리즘은 하이픈이 포함된 접두사로 인코딩됩니다.

ToolAcre SHA 해시 계산기의 base64 출력은 표준 형식입니다. SSH 지문과 일치시키려면 `SHA256: `(알고리즘 이름, 콜론 및 공백)을 앞에 추가하세요. 계산기의 16진수 형식은 SSH가 표시하는 형식이 아니지만 동일한 다이제스트를 나타내고 확인 목적으로 동일하게 유효합니다.

일치가 증명되는 것 — 상대방이 게시한 것과 동일한 키 바이트를 보유하고 있으며 대역 외 확인 없이는 키 소유자에 대해 아무것도 알 수 없음

지문 일치는 두 가지를 증명합니다. 첫째, 상대방이 게시한 동일한 키 바이트를 보유하고 있다는 것과 둘째, 다이제스트가 계산된 이후 키나 지문이 변경되지 않았다는 것입니다. 이는 키 소유자의 신원을 증명하거나 특정 작업을 승인하지 않습니다. 대역 외 지문 확인은 키를 신뢰하기 위한 필요조건이지만 충분조건은 아닙니다. 또한 지문을 게시한 사람이 자신이 주장하는 사람인지 확인해야 합니다.

실제로 관리자가 회사 인트라넷이나 서명된 이메일에 서버의 SSH 지문을 게시하면 연결 시 받는 메시지와 일치하는지 확인할 수 있습니다. 지문이 일치하지 않으면 누군가 트래픽을 가로채고 있거나 서버 키가 변경되었기 때문에 안심하고 연결을 거부할 수 있습니다. 지문이 일치하면 올바른 키를 가지고 있는 것입니다. 해당 키가 올바른 서버에 속하는지 여부는 별도의 질문입니다. 게시 채널을 확인하여 답변할 수 있습니다(인트라넷 페이지가 합법적으로 보입니까? 실제로 해당 관리자 계정에서 보낸 이메일입니까?).

실제 사례 — 신뢰할 수 있는 채널을 통해 게시된 지문에 대해 단계별로 지문 확인

인증서 지문은 동일한 목적으로 사용됩니다. 즉, 특정 인증서를 고유하게 식별합니다. TLS 서버가 인증서를 변경하는 경우(예: 갱신 중) 새 인증서의 지문이 달라집니다. 인증서 고정(애플리케이션에서 지문 또는 허용되는 소수의 지문을 하드코딩하는 것)은 인증서 변경을 감지하는 보안 기술입니다. 서버가 다른 지문이 포함된 인증서를 제시하면 애플리케이션은 이를 거부합니다. 이는 브라우저가 신뢰하는 사기성 인증서를 발급하는 손상된 CA로부터 보호합니다.

인증서 고정에는 신중한 관리가 필요합니다. 서버가 인증서를 업데이트하는데 예상하지 못한 경우 애플리케이션은 유효한 새 인증서를 거부합니다. 많은 애플리케이션은 대신 전체 인증서가 아닌 공개 키를 고정하는 공개 키 고정을 사용합니다. 이를 통해 동일한 키를 사용하는 한 거부 없이 인증서를 갱신할 수 있습니다.

작업 예: ToolAcre 해시가 DER 또는 SSH 와이어 바이트가 아닌 UTF-8 텍스트를 붙여넣었기 때문에 프로토콜 인식 도구로 확인합니다.

확인을 위해 수동으로 지문을 계산하는 것은 간단합니다. 인증서나 키를 파일에 저장하고 `openssl dgst -sha256 filename` 또는 `ssh-keygen -l -f filename -E sha256`을 사용하여 지문을 표시하고 서버가 보여준 지문과 비교하세요. ToolAcre SHA 해시 계산기는 키 바이트를 붙여넣으면 다이제스트를 계산할 수도 있지만 계산기는 바이너리 파일이 아니라 붙여넣은 UTF-8 텍스트를 해시한다는 점을 기억하세요. 키가 PEM 형식(`-----BEGIN CERTIFICATE-----` 헤더와 base64로 인코딩된 바이트가 있는 텍스트)인 경우 계산기에 붙여넣을 수 있습니다. DER 형식(바이너리)인 경우 먼저 명령줄 도구를 사용하거나 PEM으로 변환해야 합니다.

경계가 중요합니다. ToolAcre는 계산기 인터페이스에 붙여넣은 UTF-8 텍스트를 해시합니다. 장치에서 파일을 읽지 않습니다(모든 계산은 네트워크 없이 브라우저, 탭에서 이루어짐). 디스크에 키 파일이 있으면 텍스트 편집기에서 열고 텍스트를 복사한 후 PEM 형식인 경우 계산기에 붙여넣을 수 있습니다. 또는 `openssl`, `ssh-keygen` 또는 `sha256sum`과 같은 명령줄 도구를 사용하여 로컬에서 해시를 계산할 수 있습니다.

요점: 대역 외 지문 비교 - ToolAcre SHA 해시 계산기는 지문이 사용하는 길이에 따라 SHA-1 및 SHA-256 다이제스트가 어떻게 보이는지 보여줍니다.

ToolAcre SHA 해시 계산기는 모든 텍스트 입력에 대해 SHA-1 및 SHA-256 다이제스트를 표시합니다. PEM 형식 또는 SSH 공개 키로 인증서를 붙여넣으면 계산기가 두 다이제스트를 모두 계산합니다. SSH 키의 경우 계산기는 붙여넣은 텍스트를 해시합니다. 표준 base64로 인코딩된 SSH 공개 키 형식을 붙여넣으면 SSH가 해싱 전에 자체 형식(와이어 형식)을 적용하기 때문에 다이제스트가 SSH 지문과 일치하지 않습니다. 직접 일치를 위해서는 공개 디스플레이 형식이 아닌 SSH가 내부적으로 사용하는 정확한 형식의 키가 필요합니다.

인증서 지문의 경우 동작은 유사합니다. 즉, PEM으로 인코딩된 인증서 텍스트를 붙여 넣으면 계산기가 해당 텍스트를 해시합니다. 인증서의 지문은 PEM 텍스트 래퍼가 아닌 인코딩된 인증서 바이트(DER 형식)를 통해 계산됩니다. 바이트는 동일하지만 텍스트 인코딩이 다릅니다. OpenSSL 또는 브라우저의 인증서 뷰어에서 인증서 지문을 일치시키려면 사람이 읽을 수 없는 DER 바이트를 제공해야 합니다. 계산기의 목적은 붙여넣고 읽을 수 있는 UTF-8 텍스트를 해시하여 경계를 명확하게 하는 것입니다. 표준 바이너리 또는 유선 프로토콜 형식의 암호화 키 파일이 아닌 텍스트 입력을 해시합니다.