주요 콘텐츠로 건너뛰기
이미지
보라색 육각형 패턴

코드 서명은 서명 도구와 디지털 인증서를 사용하여 실행 파일 및 스크립트에 디지털로 서명하는 프로세스입니다. 이 프로세스는 공개 키 인프라(PKI)라는 기술을 기반으로 합니다.

코드에 서명하려면 서명할 파일 유형에 따라 Microsoft의 SignTool, Java의 Jarsigner 또는 OpenSSL과 같은 전용 서명 도구가 필요합니다. 서명 자체는 파일 내용과 디지털 인증서를 묶는 암호화 작업입니다.

코드 서명은 특히 인터넷처럼 보안되지 않은 채널에서 실행 가능한 프로그램 파일을 다운로드할 때 소프트웨어 변조로부터 회사와 파트너, 최종 사용자를 보호합니다. 코드 서명 솔루션 제공업체인 Entrust는 애플리케이션을 위조 또는 변조하는 공격으로부터 비즈니스와 고객을 보호하는, 효율적인 고수준 보안 보장 코드 서명 솔루션을 구현할 수 있도록 지원합니다.

디지털 서명 코드의 목적은 무엇인가요?

코드를 디지털로 서명하는 데에는 두 가지 주요 이유가 있습니다.

  1. 서명된 파일을 게시하는 조직의 ID를 사용자에게 제공하려면
  2. 파일의 무결성(파일이 서명된 이후 손상되거나 악의적으로 변경되지 않았는지 여부)을 확인하는 수단을 제공하려면

코드 서명 인증서란 무엇입니까?

코드 서명 인증서는 소프트웨어 개발자가 애플리케이션, 드라이버, 실행 파일 및 소프트웨어 프로그램에 디지털 서명하는 데 사용합니다. 최종 사용자를 위해 제3자가 코드를 손상하거나 해킹하지 않았는지 확인합니다. 공개 키를 관련 사용자(개인 키 소유자)와 바인딩하기 위해 공개 키 인프라(PKI)는 디지털 증명서를 사용합니다.

코드 서명 모범 사례

코드 서명 인증서의 모범 사례는 다음과 같습니다.

  • 개인 키에 대한 액세스 제어
  • FIPS-140-2 Level 3 하드웨어 보안 모듈(HSM)로 개인 키 보호
  • 타임 스탬프 코드
  • 테스트 서명과 릴리스 서명의 차이점 이해
  • 서명할 코드 인증
  • 여러 인증서에 위험 분산
  • 손상된 인증서 해지

Entrust는 TLS/SSL Certificate, 보안 이메일 인증서, 문서 서명 인증서, 모바일 장치 인증서 등 다양한 코드 서명 인증서와 이를 관리하는 종합적인 방법을 제공합니다.

코드 서명은 어떻게 작동합니까?

코드 서명을 구현하려면 소프트웨어 게시자가 개인-공개 키 쌍을 생성하고, Certificate Authority에 코드 서명 인증서 발급 요청과 함께 공개 키를 제출해야 합니다. Certificate Authority는 소프트웨어 게시자의 ID를 확인하고 게시자의 디지털 서명된 인증서 요청을 인증합니다. 이 검사와 키 확인 프로세스가 완료되면, Certificate Authority에서 게시자의 ID를 공개 키와 함께 번들로 제공하고 해당 번들에 서명합니다. 이러한 방식으로 코드 서명 인증서가 생성됩니다.

코드 서명 삽화

이 백서에서 코드 서명 구현에 대해 자세히 알아보십시오.

디지털 서명 방법

다양한 애플리케이션 플랫폼은 코드 서명을 지원하고 다양한 서명 도구를 제공합니다. 일반적인 코드 서명 유형의 목록은 다음과 같습니다.

  • Adobe Air
  • Apple Mac OS X 개발자 라이브러리
  • Firefox XPI
  • Java
  • Microsoft

최종 사용자 단계

사용자가 소프트웨어를 신뢰할 수 있는지 여부를 판단하기 위한 간단한 다섯 가지 단계가 있습니다.

  1. 소프트웨어를 설치하려고 했는지 확인합니다.
  2. 파일 이름을 검토하여 설치하려는 소프트웨어를 나타내는지 확인합니다. 이전 예에서 사용자는 이름이 나타내는 것처럼 Adobe Reader 10을 설치하려고 합니다.
  3. 게시자 이름이 소프트웨어를 만들었을 것으로 생각하는 곳과 일치하는지 확인합니다. 소프트웨어 다운로드 사이트가 게시자의 사이트와 다를 수 있으므로 확인하기가 어려울 수 있습니다.
  4. 코드 서명 인증서를 검토하여 게시자의 이름이 인증서에 있는지 확인합니다.
  5. 인증서가 공개적으로 신뢰할 수 있는 CA에서 발급되었는지 확인합니다.

코드 서명 기능

OV(Organization Validated) Certificate는 인증서에 조직과 위치를 표시합니다. 또한 Windows 커널 모드 서명을 지원하지 않습니다. EV(Extended Validation) Certificate는 조직과 위치 외에도 관할권과 조직 유형을 표시합니다. 또한 EV Certificate는 Vista, Windows 7, Windows 8, Windows 8.1, Windows 10용 Windows 커널 모드 서명을 지원합니다. 조직의 요구 사항에 가장 잘 맞는 코드 서명 인증서 솔루션을 선택하는 일은 복잡하지만, Entrust가 도와 드리겠습니다.

코드 서명 솔루션

Entrust의 코드 서명 솔루션 포트폴리오는 변조 방지 nShield HSM(하드웨어 보안 모듈)과 Entrust Professional Services의 코드 서명 게이트웨이 솔루션을 함께 사용합니다. 코드 서명 게이트웨이는 승인 워크플로를 관리하고, 요청을 수락하며, 이메일을 통해 승인자에게 알릴 뿐만 아니라 시간 초과를 관리하고, 승인을 확인하며, 활동을 기록하고, 서명된 코드를 스테이징 영역으로 전달합니다. 이 솔루션은 Entrust nShield® HSM과 신뢰 루트를 활용하여 FIPS 140-2 인증 HSM 방식으로 모든 서명 키를 보호합니다. 또한 코드 진위성과 무결성의 핵심 요소인 중요한 서명 키의 잠재적 손실을 방지해 줍니다. 고객은 이러한 솔루션을 사용하여 자체 소프트웨어 코드에 서명할 수 있습니다. 기능은 다음과 같습니다.

  • Microsoft SmartScreen 필터
  • 제3자 통합
  • 무제한 통합
  • 타임 스탬핑
  • 확인된 게시자 상태
  • 경고 상자 감소

Entrust 코드 서명 솔루션은 코드 서명 모범 사례 및 표준에 관한 Entrust의 폭넓은 전문 지식을 바탕으로 제공됩니다.

코드 서명은 서명된 파일을 게시하는 조직의 ID를 어떻게 제공하나요?

전자 서명은 파일과 디지털 인증서 사이에 암호화 결합을 생성하며 후자는 조직을 나타냅니다. 인증서를 디지털화된 도장으로 생각할 수 있습니다. 여기에는 법적 이름, 이메일 주소, 실제 주소, 국적과 같은 조직에 대한 세부 정보가 포함됩니다. 따라서 서명 코드는 조직의 세부 정보를 표시하는 코드에 디지털 스탬프를 적용하는 것과 같습니다.

코드 서명의 내용은 서명된 파일을 열 때마다 확인할 수 있습니다. 대부분의 경우 이 작업은 운영 체제에서 자동으로 수행되며 서명에 사용된 인증서에 포함된 조직의 이름을 표시합니다.

사용자 계정 제어 프롬프트

코드 서명은 파일의 무결성을 확인하는 수단을 어떻게 제공하나요?

모든 코드 서명은 파일 내용을 기반으로 생성됩니다. 서명 도구는 기술적인 세부 내용에 너무 깊이 들어가지 않고도 서명할 파일의 압축 버전을 계산하고(해시라고 함) 제공된 디지털 인증서를 사용하여 이 압축 버전에 서명합니다. 이렇게 서명된 해시는 디지털 서명 호스팅 전용 위치에 있는 파일에 포함됩니다.

서명된 파일을 배포하기 시작하면 운영 체제 및 관련 애플리케이션에서 서명의 존재를 감지합니다. 그들은 자동으로 파일의 해시를 계산하고(서명된 해시는 계산에서 제외) 이를 파일에 포함된 서명된 해시와 비교합니다. 둘 다 같으면 검증이 통과됩니다. 계산된 해시가 서명된 해시와 다르면 실패합니다. 검증이 실패했다는 것은 서명이 수행된 후 파일 내용이 (오류 또는 악의적인 의도로) 수정되었음을 의미합니다.

이 메커니즘의 신뢰성은 해시를 계산하는 알고리즘의 강도를 기반으로 합니다. 따라서 해시가 길수록 좋습니다. 현재 사용하는 표준 중 하나는 256비트 해시를 생성하는 알고리즘인 SHA-256입니다.

코드 서명의 이점은 무엇인가요?

디지털 서명 코드에는 다음과 같은 몇 가지 이점이 있습니다.

  • 소프트웨어에 대한 사용자의 신뢰도가 개선됩니다. 서명된 코드는 파일이 기대하는 조직에 속해 있음을 증명할 뿐만 아니라 파일이 변조(예: 맬웨어 주입)되지 않았음을 보장합니다.
  • 소프트웨어 개발자로서의 명성을 높입니다. 서명된 소프트웨어를 많이 게시할수록 평판이 좋아집니다. 예를 들어 Microsoft 코드는 고객이 올바른 파일을 다운로드할 수 있도록 소프트웨어에 서명합니다. 서명된 소프트웨어는 바이러스 백신 및 맬웨어 감지기에도 유용합니다. 소프트웨어에 서명하면 서명되지 않은 의심스러운 소프트웨어 버전에 플래그를 지정할 수 있습니다.
  • 운영 체제의 경고 및 차단을 피합니다. 운영 체제는 실제로 모든 소프트웨어 게시자가 실행 파일에 서명할 것을 기대합니다. 서명되지 않은 소프트웨어를 게시하고 사용자가 이를 실행하면 운영 체제에서 경고 메시지를 표시할 가능성이 매우 높습니다. MacOS에서는 서명되지 않은 파일 실행을 거부하여 사용자가 설치를 계속 진행하기 위해 보안을 우회해야 하는 것으로 알려져 있습니다.

경고 메시지 프롬프트

서명되지 않은 소프트웨어를 설치할 때 Microsoft Windows 10에서 보내는 경고 메시지입니다.

차단 메시지 프롬프트

서명되지 않은 소프트웨어를 설치할 때 MacOS에서 보내는 차단 메시지입니다.

펌웨어를 사용하는 IoT 장치의 경우 안전한 업데이트를 보장하는 가장 좋은 방법 중 하나는 펌웨어를 구축할 때 내부(비공개) 코드 서명 인증서를 사용하여 서명되고 업데이트된 파일만 수락하는 요구 사항을 추가하는 것입니다.

공개 코드 서명과 비공개 코드 서명의 차이점은 무엇인가요?

코드 서명 인증서는 인증서 발급 엔진인 인증 기관(CA)에서 발급합니다. 대부분의 조직에서는 하나 이상의 "사설"(내부) CA를 소유하고 있으며 코드 서명 인증서를 비롯한 모든 종류의 디지털 인증서를 발급할 수 있습니다. 그러나 이러한 인증서로 생성된 서명은 조직의 내부 환경에서만 신뢰할 수 있습니다.

이는 내부 애플리케이션 및 IoT와 관련된 많은 사용 사례에 적합하지만 CA가 인식되지 않는 외부 환경에 코드를 배포하려는 경우에는 작동하지 않습니다.

Entrust와 같이 공개적으로 신뢰할 수 있는 CA에서 발급한 코드 서명 인증서는 전 세계 모든 주요 운영 체제 및 애플리케이션에서 인식하고 신뢰할 수 있는 서명을 생성합니다. Entrust와 같은 공용 CA 조직(간단히 공용 CA라고도 함)은 엄격한 인증서 발급 기준을 준수하며, 정기적인 감사를 거쳐야 하며, Microsoft, Apple, Google 또는 Mozilla 같은 주요 운영 체제 또는 애플리케이션 공급업체의 신뢰를 얻기 위해 신청해야 합니다.

서명된 코드가 있는 경우 운영 체제 및 애플리케이션은 서명에 사용된 인증서의 발급 CA를 확인합니다. 발급하는 CA가 "신뢰 목록"(루트 저장소라고도 함)에 없으면 서명을 신뢰하지 않으며 확인에 실패합니다. 따라서 인터넷에 소프트웨어를 게시할 때 공개적으로 신뢰할 수 있는 코드 서명 인증서를 얻는 것이 중요합니다.

OV 코드 서명과 EV 코드 서명의 차이점은 무엇인가요?

조직에서는 공용 코드 서명 인증서에 원하는 세부 정보를 자유롭게 포함할 수 있지만 공인 인증서에는 인증서를 발급하기 전에 공인 CA에서 철저히 검증한 정보만 포함해야 합니다.

공용 CA는 공개적으로 신뢰할 수 있는 두 가지 범주의 코드 서명 인증서를 발급할 수 있습니다. 이들은 OV와 EV입니다. 이들 범주는 인증서를 발급하기 전에 공용 CA에서 수행하는 조직의 확인 수준과 인증서(특히 개인 키)에 대한 저장소 요구 사항에 해당합니다.

  • 조직 검증(OV): CA에서 수행하는 조직의 표준 유효성 검사 방법입니다. 여기에는 회사 확인(회사가 실제로 존재하는지, 현재 상태는 양호한지, 위치는 어디인지 등)과 조직을 대신하여 인증서를 요청하는 사람 확인(실제로 조직의 일원인지)이 포함됩니다.
  • 확장 검증(EV): 이름에서 알 수 있듯이 조직 세부 정보와 인증서 요청자에 대한 추가 확인이 필요한 확장된 유효성 검사 프로세스입니다. CA는 더 많은 정보와 더 많은 서류 작업을 요구하며 인증서를 발급하기 전에 조직 및 요청자에게 한 번 또는 여러 번 전화를 걸어 진행합니다. EV 코드 서명 인증서에는 보안 저장소가 필수입니다. 이는 인증서와 비공개 키를 저장하기 위해 보안 USB 토큰이나 하드웨어 보안 모듈(HSM)이 필요하다는 뜻입니다.

Entrust에서는 OV 인증서든 EV 인증서든 모든 코드 서명 주문에 대해 USB 토큰 또는 nShield HSM을 제공합니다.

코드 서명 인증서 타임스탬프에 대해 자세히 알아보세요.

코드 서명 인증서에서 타임스탬프는 어떻게 작동하나요?

코드 서명의 맥락에서 타임스탬프는 정확한 날짜와 시간이 포함된 디지털 타임스탬프를 코드 서명에 적용하는 프로세스입니다.

타임스탬프는 중요하지만 종종 잊혀지는 코드 서명 단계입니다. 서명에는 실제로 서명에 사용된 코드 서명 인증서의 만료 날짜에 해당하는 만료 날짜가 있습니다. 만료된 서명의 경우 서명된 코드가 실행될 때 확인에 실패하여 경고 메시지가 표시되고 코드 실행이 차단될 수도 있습니다.

공용 인증서는 필요한 경우 매우 긴 수명(10년 이상)을 가질 수 있습니다. 이는 서명된 코드가 오랜 기간 후에 더 이상 사용되지 않을 수 있기 때문에 충분합니다. 그러나 공용 코드 서명 인증서는 현재 최대 3년 동안 유효하며 이 기간이 끝날 때까지 코드를 계속 사용할 가능성이 매우 높습니다. 코드 서명을 타임스탬프하면 9~10년의 유효 기간이 추가됩니다. 이는 사용된 타임스탬프 인증서의 유효 기간에 따라 다릅니다. 그리고 현재 타임스탬프가 만료되려고 할 때 새 타임스탬프를 다시 적용하여 코드 서명의 유효성을 더욱 확장하고 경고/차단을 방지할 수 있습니다.

타임스탬프는 코드 서명 인증서가 노출되어 코드 서명 인증서 해지가 필요한 경우에도 유용합니다. 해지는 인증서가 노출되었다고 생각되는 날짜와 시간으로 소급될 수 있습니다. 모든 서명에 타임스탬프가 찍힌 경우 해지 날짜 이전에 생성된 서명만 유효합니다. 타임스탬프가 없는 코드 서명은 인증서가 만료되거나 취소되면 무효가 됩니다.

타임스탬프는 내부 CA의 개인 타임스탬프 인증서를 사용하여 수행할 수 있습니다. 그러나 외부적으로 공유해야 하는 코드의 경우 모든 주요 운영 체제 및 애플리케이션에서 인식하고 신뢰할 수 있는 공용 타임스탬프 서비스를 사용해야 합니다. Entrust를 포함한 대부분의 공용 CA에서는 공용 타임스탬프 서비스를 제공하며 전용 URL을 통해 사용할 수 있습니다.