FAQ Hero
코드 서명 신뢰

코드 서명 모범 사례는
무엇입니까?

코드 서명 모범 사례는 무엇입니까?

코드 서명은 소프트웨어 개발자 또는 게시자의 ID를 확인하고 코드가 서명된 시점부터 다운로드된 시점까지 코드의 무결성이 유지되는지 확인합니다. 이는 코드를 신뢰할 수 있음을 증명합니다. 불행히도 악의적인 행위자는 코드 서명 관행에 침투하여 신뢰할 수 있는 코드에 맬웨어를 심으려고 끊임없이 시도합니다.

이러한 공격에 따른 위험을 줄이는 데 도움이 되는 몇 가지 모범 사례는 다음과 같습니다.

  • 보안 키 저장소: 조직에서 서명 개인 키가 손상되거나 도용된 경우, 맬웨어가 심어진 소프트웨어를 승인하는 데 사용될 수 있으며, 이에 따라 해당 소프트웨어가 해당 조직에서 비롯된 합법적인 소프트웨어로 등록되는 상황이 발생할 수 있습니다. 개인 키는 저장 중에 암호화하거나 HSM(하드웨어 보안 모듈)에 안전하게 보호해야 합니다. CA/B(CA/Browser) Forum의 요건에 따라 공개 신뢰 사용을 위한 키는 HSM에 저장되어야 합니다.
  • 키 및 서명 액세스 제어 적용: 정책을 설정하고 키 액세스 제어를 적용하여 필요한 경우 권한이 부여된 개발자와 사용자만 특정 키로 서명할 수 있도록 합니다. 클라우드에서 키를 생성하여 공유, 분실 또는 도난을 방지할 수 있습니다. 의무 분리를 시행합니다. 즉, 키를 생성하는 사람과 서명하는 사람의 책임을 분리합니다. MFA(다중 요소 인증)를 구현하여 서명에 액세스하는 사용자가 실제 본인인지 확인할 수 있습니다. 회사를 떠났거나 더 이상 서명 또는 키 생성에 액세스할 필요가 없는 직원의 액세스 권한을 해지합니다.
  • 키 서명 워크플로 모니터링 및 감사: 누가, 언제, 무엇에 서명했는지 추적하여 무단 서명이 이루어진 상황에 신속하게 대응하고 적절한 수정 조치를 취할 수 있도록 합니다. 생성, 인증서 작업, 키 할당, 서명 액세스를 포함하여 키 쌍과 관련된 모든 활동을 정기적으로 감사합니다.
  • 암호화 표준에 대한 전사적 정책 적용 및 최신 상태 유지: 업계 요구 사항의 변화가 조직이 위협 환경에 선제적으로 대처하는 데 도움이 될 수 있습니다. 최신 CA/Browser Forum 요건은 2021년 6월 1일부터 3072비트 RSA를 공개적으로 신뢰할 수 있는 코드 서명 및 타임스탬프 인증서의 최소 키 요구 사항으로 규정하고 있습니다. 조직 내의 개발자 및 사용자는 키 또는 서명 코드를 생성할 때 변경 사항을 인식할 수도, 알지 못할 수도 있습니다. 조직은 사용자가 취약하거나 규정을 준수하지 않는 알고리즘, 키 크기 또는 곡선으로 키를 생성하거나 인증서를 요청하지 못하도록 업계 요구 사항을 적용해야 합니다.
  • SDLC 프로세스에서 자동 코드 서명 활성화: CI/CD 파이프라인과 같은 SDLC 프로세스에서 서명을 통합 및 자동화하면 서명되지 않은 코드나 규정을 준수하지 않는 서명의 위험을 줄일 수 있습니다. 자동화와 함께 보안 제어 기능을 설정하여 지속적이고 빠른 소프트웨어 개발 속도로 안전하고 규정을 준수하는 소프트웨어를 개발할 수 있습니다.
  • 다른 빌드 서버의 서명 비교: 최근 소프트웨어 공급망 공격으로 인해 전 세계의 영향력이 큰 조직에서 주요 운영 및 재정상 혼란이 발생한 사례들이 있었습니다. 악성 행위자들은 표적으로 삼은 조직의 개발 작업에 침투하여 SDLC 중에 맬웨어를 코드에 심었으며, 이 변조된 코드가 후에 릴리스되어 고객 시스템에 배포되었습니다. 릴리스하기 전에 서로 다른 빌드 서버의 소프트웨어 해시에 서명하고 비교하면 서버 빌드 간에 불일치가 있는지 확인할 수 있습니다. 두 개 이상의 동일한 빌드로 구성된 쿼럼을 사용하면 빌드의 안전성을 보장하고 빌드에 알 수 없는 코드가 포함되는 상황을 방지할 수 있습니다.
  • 손상된 인증서 해지: 손상된 키나 서명된 맬웨어가 발견되면 CA(인증 기관)에 해당 상황을 보고합니다. 코드 서명 인증서를 해지해야 소프트웨어가 비활성화되고 맬웨어가 더 이상 전파되지 않습니다.
  • 서명된 코드의 타임스탬프: 코드 서명 인증서가 만료될 때 소프트웨어가 예기치 않게 만료되는 위험을 방지해야 합니다. 코드 서명 인증서는 1~3년간 유효합니다. 코드 서명 인증서가 만료되면 서명된 소프트웨어의 유효성도 만료됩니다(서명 당시 소프트웨어에 타임스탬프가 지정되지 않은 경우). 시스템은 타임스탬프를 기록하고, 소프트웨어는 운영 중인 동안 계속 유효합니다. 코드 타임스탬프를 지정하는 또 다른 이유는 인증서 해지의 영향을 최소화하기 위해서입니다. 맬웨어가 발견되어 관련 인증서를 해지해야 하는 경우, 타임스탬프를 적용하면 손상 날짜 이후에 릴리스된 소프트웨어만 해지되도록 하여 영향을 최소화할 수 있습니다.