FAQ Hero
코드 서명 신뢰

코드 서명이란
무엇입니까?

코드 서명이란 무엇입니까?

코드 서명은 소프트웨어 이진 또는 파일에 디지털 서명을 적용하는 프로세스입니다. 이 디지털 서명은 소프트웨어 작성자나 게시자의 ID를 검증하고 파일이 서명된 이후 변경되거나 변조되지 않았음을 인증합니다. 코드 서명은 소프트웨어 수신자가 코드를 신뢰해도 될지 가늠하는 지표이며, 시스템이나 데이터를 손상시키려는 악의적인 시도를 막아내는 데 중추적인 역할을 합니다.

코드 서명을 활용할 수 있는 부문에는 내외부 사용을 위한 소프트웨어, 패치 또는 수정, 테스트, IoT 장치 제품 개발, 컴퓨팅 환경, 모바일 앱 등이 포함됩니다. 코드와 소프트웨어 외에도 코드 서명은 애플리케이션, 펌웨어, 파일, 메시지, XML, 스크립트, 컨테이너, 이미지에도 적용될 수 있습니다.

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

다른 PKI 기술과 마찬가지로 코드 서명에는 공개/비공개 키 쌍, 인증 기관, 디지털 인증서가 포함됩니다. 게시자는 소프트웨어에 서명할 때 게시자의 소프트웨어, 코드 서명 인증서, 디지털 서명을 포함하는 제한된 패키지를 생성합니다. 코드 서명 인증서에는 게시자의 ID와 공개 키뿐 아니라 CA가 ID를 검증했음을 확인하는 CA의 서명이 포함되어 있습니다. 디지털 서명은 게시자의 개인 키를 사용하는 소프트웨어의 서명된 해시입니다. 소프트웨어가 전달되면 사용자 에이전트는 인증서의 유효성과 무결성을 점검합니다(서명 후 소프트웨어가 변경되진 않았는지 확인). 인증서의 공개 키를 사용하여 디지털 서명의 해시를 표시한 다음, 디지털 서명 해시를 최근에 계산된 소프트웨어의 해시와 비교합니다. 해시가 일치하는 경우 고객이나 사용자는 소프트웨어가 변조되지 않았음을 확인할 수 있습니다. 개인 키 관리는 코드 서명에서 빼놓을 수 없는 보안 요소입니다. 키를 도난당하거나 잘못 관리하면 사이버 범죄자가 키를 사용하여 악성 코드에 서명하고 개발자나 고객 시스템에 업데이트로 전달하는 상황이 발생할 수 있습니다.

코드 서명이 필요한 이유는 무엇입니까?

Java 및 Microsoft와 같은 주요 소프트웨어 플랫폼에서 맬웨어 전파를 방지하려면 코드 서명이 필요합니다. 또한 고객이나 사용자가 알 수 없는 소스의 코드나 변조된 코드를 다운로드하는 상황을 방지하는 데도 코드 서명을 사용할 수 있습니다. 코드 서명으로 조직의 코드나 소프트웨어를 조직에서 비롯된 것처럼 보이도록 가장한 코드와 실제 코드를 구분할 수 있습니다. 또한, 공개 소프트웨어가 배포된 경우, 해당 소프트웨어에 서명이 되어 있지 않은 경우, 사용자에게 보안 경고 레이블을 표시할 수 있습니다. 코드가 내부에서 사용할 용도로 구축되고 개발된 경우 코드 서명을 활용하면 책임소재 파악 및 제어가 용이합니다.

서명할 수 있는 소프트웨어의 유형은 무엇입니까?

다음을 포함하여 모든 유형의 이진 또는 파일에 서명할 수 있습니다.

• 웹 사이트에서 다운로드할 수 있는 소프트웨어 애플리케이션

• 내부 IT 애플리케이션

• 모바일 애플리케이션

• XML 파일

• 스크립트

• 소프트웨어 이미지

• 컨테이너

• 드라이버 및 유틸리티

• 펌웨어

코드 서명은 어떤 단계로 이루어집니까?

먼저 소프트웨어 게시자가 공개/개인 키 쌍을 생성합니다. 그런 다음 공개 키와 함께 CSR(인증서 서명 요청)을 CA(인증 기관)에 제출하여 코드 서명 인증서를 획득합니다. CA는 게시자의 ID를 확인하고 인증서 요청을 승인합니다. 성공하면 CA가 코드 서명 인증서를 발급합니다. 인증서에는 게시자의 ID, 공개 키 및 CA의 서명이 포함됩니다. CA의 서명은 인증서 베어러의 ID에 대한 신뢰할 수 있는 제3자 승인을 보여주기 때문에 중요한 요소입니다. 코드 서명 인증서는 게시자의 ID뿐만 아니라 소프트웨어의 무결성도 확인합니다. 게시자는 소프트웨어에 서명할 때 소프트웨어, 코드 서명 인증서, 디지털 서명을 포함하는 제한된 패키지를 생성합니다.

디지털 서명에는 다음 단계도 필요합니다. 

  1. 해시 알고리즘을 사용하여 해시나 소프트웨어의 암호화된 고유 표현을 생성합니다.
  2. 게시자의 개인 키와 서명 알고리즘으로 해시에 서명합니다.

코드 서명은 수동으로 수행하거나 CI/CD(지속적 통합/지속적 전달) 프로세스와 같은 소프트웨어 개발 수명 주기의 일부로 자동화할 수 있습니다.