Computer >> 컴퓨터 >  >> 시스템 >> Windows

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

인터넷에서 프로그램을 내려받을 때마다 그것이 악성 코드가 아니라는 사실을 개발자를 믿고 수용해야 합니다. 이는 피할 수 없는 부분입니다. 하지만 대부분의 경우, 특히 잘 알려진 소프트웨어와 개발자라면 큰 문제가 되지 않습니다.

그러나 소프트웨어를 호스팅하는 웹사이트는 훨씬 취약합니다. 공격자는 웹사이트의 보안을 무력화한 뒤 정상 프로그램을 자신들이 만든 악성 버전으로 교체할 수 있습니다. 겉보기에는 원본과 똑같이 보이고 작동하지만, 내부에는 백도어가 숨겨져 있습니다. 이 백도어를 통해 공격자는 일상적인 컴퓨팅 환경의 다양한 부분을 장악할 수 있습니다. 컴퓨터가 봇넷에 편입되거나, 더 심각한 경우 신용카드나 체크카드를 사용하는 순간을 기다렸다가 결제 정보를 탈취하기도 합니다. 따라서 운영체제, 암호화폐 지갑처럼 중요한 소프트웨어를 다운로드할 때는 각별히 주의해야 합니다.

디지털 서명이 해결책이 될 수 있습니다

소프트웨어 개발자는 자신의 제품에 서명할 수 있습니다. 공격자가 개발자의 개인 키를 훔치지 않는 한, 이 서명을 위조할 알려진 방법은 없습니다. 실제로 수천 명의 사용자가 악성 프로그램을 다운로드한 사례가 여러 차례 있었지만, 거의 모든 경우 디지털 서명만 확인했어도 서명이 유효하지 않다는 사실을 알아차리고 피해를 막을 수 있었습니다. 취약한 웹사이트에서 소프트웨어를 교체하는 것은 비교적 쉽지만, 인터넷 접속이 차단된 안전한 곳에 보관된 개인 키를 훔치는 것은 놀랄 만큼 어렵습니다.

디지털 서명에 대한 더 자세한 내용은 별도의 참고 자료를 통해 확인할 수 있습니다. 이 글에서는 같은 원리를 Windows 유틸리티를 활용해 다운로드 파일을 검증하는 실전 방법으로 안내합니다.

Gpg4win으로 디지털 서명 검증하기

먼저 공식 페이지에서 Gpg4win을 내려받아 설치합니다. 현명한 독자라면 "그런데 이 프로그램 자체가 정품인지 어떻게 알 수 있지?"라고 스스로 물을 것입니다. 아주 좋은 질문입니다. 만약 이 첫 단계가 무너지면 이후의 모든 검증 과정은 무의미해집니다.

다행히 Gpg4win 개발자는 인증 기관(CA)으로부터 프로그램 서명을 받기 위해 많은 노력을 기울였고, 자신의 웹사이트에 검증 절차를 상세히 안내해 두었습니다. 유효성 확인에 유사한 암호학이 사용되지만 전체적인 방식은 다르며, 여기서는 디지털 인증서가 활용됩니다.

1단계: 파일 체크섬 검증

비트코인 코어(Bitcoin Core) 지갑을 다운로드한다고 가정해 보겠습니다. x64 Windows 실행 파일(zip이 아닌 exe)을 내려받은 후, "Verify release signatures"를 클릭해 "SHA256SUMS.asc" 파일을 추가로 다운로드합니다. 첫 번째 단계는 설치 파일의 해시 값을 확인하는 것입니다.

다운로드 폴더로 이동합니다. Gpg4win이 설치되어 있다면 파일을 마우스 오른쪽 버튼으로 클릭할 때 새로운 컨텍스트 메뉴가 나타납니다. 비트코인 설치 파일(내려받은 exe)을 오른쪽 버튼으로 클릭하고 아래 그림처럼 "More GpgEX Options -> Create checksums"를 선택합니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

생성된 "sha256sum.txt"와 내려받은 "SHA256SUMS.asc" 파일을 모두 열어 SHA256 체크섬을 비교합니다. 두 값이 완벽하게 일치해야 합니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

2단계: 체크섬 목록 파일의 서명 확인

방금 설치 파일과 체크섬 목록을 같은 웹사이트에서 내려받았지만, 공격자가 설치 파일을 교체했다면 체크섬 목록도 손쉽게 함께 교체할 수 있습니다. 하지만 공격자가 할 수 없는 것이 바로 서명 위조입니다. 서명은 알려진(정상적인) 공개 키로 검증할 수 있으므로, 먼저 해당 공개 키를 확보해야 합니다.

다음 이미지는 서명의 실제 모습입니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

이것은 인라인 서명(검증 대상과 같은 파일에 포함된 형태)입니다. 경우에 따라서는 분리형(detached) 서명으로 별도의 파일에 담기기도 합니다. 이 텍스트 파일에서 단 한 글자만 변경해도 서명은 즉시 무효가 됩니다. 즉, 개발자가 정확히 이 내용과 이 체크섬을 승인하고 서명했다는 사실을 확인할 수 있는 것입니다.

3단계: 개발자의 공개 키 가져오기

공개 키는 비트코인 다운로드 페이지의 "Bitcoin Core Release Signing Keys" 섹션에서 내려받을 수 있습니다. 안전을 위해 다른 출처에서도 동일한 키를 내려받아 비교해 보세요. 만약 공격자가 정품 키를 자신의 키로 교체했다면, 다른 곳에 게시되거나 논의된 올바른 키(및 지문)를 발견할 가능성이 높습니다.

"SHA256SUMS.asc" 파일을 마우스 오른쪽 버튼으로 클릭하고 "Decrypt and Verify"를 선택합니다. 프로그램이 아직 공개 키가 없다고 알려주면 "Search"를 클릭합니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

검색에는 시간이 다소 걸릴 수 있습니다. "Find" 입력란에 표시된 문자열에 주목하세요.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

이 문자열을 복사해 Google에 붙여넣으면, 해당 공개 키 지문이 정상적인 포럼 스레드나 웹사이트 등에서 논의된 적이 있는지 확인할 수 있습니다. 더 많은 곳에서 발견될수록 그 키가 실제 소유자의 것이라는 확신이 커집니다.

키를 클릭한 후 가져오기를 진행합니다. 다음에 나타나는 프롬프트(키 인증 조치)에서 방법을 모르거나 지금 진행하고 싶지 않다면 "No"를 클릭해도 괜찮습니다.

마지막으로 "Show Audit Log"를 클릭합니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

다음 그림에서 강조된 텍스트, 즉 "Good signature"(올바른 서명)라는 문구가 표시되어야 합니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

반대로 "SHA256SUMS.asc" 파일에서 단 한 글자만 변경해 보면, 다음 이미지와 같이 검증 실패 결과가 나타나는 것을 확인할 수 있습니다.

디지털 서명으로 Windows 소프트웨어 진위 여부 확인하는 완벽 가이드

결론

자신이 만든 소프트웨어임을 사용자가 직접 확인할 수 있도록 해주는 개발자는 생각보다 많지 않습니다. 하지만 민감한 데이터를 다루거나 매우 중요한 프로그램은 대개 이러한 검증 옵션을 제공합니다. 오늘 소개한 방법을 활용하면 언젠가 심각한 보안 사고로부터 여러분을 지켜줄 것입니다.