재현 가능한 빌드

재현 가능한 빌드(Reproducible builds) 또는 결정적 컴파일(deterministic compilation)은 결과 이진 코드재현할 수 있도록 하는 소프트웨어 컴파일 프로세스이다. 결정적 컴파일을 사용하여 컴파일된 소스 코드는 항상 동일한 바이너리를 출력한다.[1][2][3]

재현 가능한 빌드는 신뢰 체인[1]의 일부로 작용할 수 있다. 소스 코드에 서명할 수 있으며, 결정적 컴파일은 바이너리가 신뢰할 수 있는 소스 코드에서 컴파일되었음을 증명할 수 있다. 검증된 재현 가능한 빌드는 바이너리가 소스 코드와 일치하지 않는 공격(예: 공격자가 악성 코드를 바이너리에 삽입한 경우)에 대한 강력한 대응책을 제공한다. 이는 관련 공격이다. 공격자는 때때로 바이너리를 공격하지만 소스 코드는 공격하지 않는다. 예를 들어, 배포된 바이너리만 변경할 수 있거나 개발자가 일반적으로 검토하고 수정하는 소스 코드이기 때문에 탐지를 회피하기 위해서이다. 17명의 전문가를 대상으로 실시한 설문 조사에서 재현 가능한 빌드는 58.8%의 참여자에게서 매우 높은 유용성 평가를 받았지만 70.6%의 참여자에게서 높은 비용 평가를 받았다.[4] 이러한 비용을 줄이기 위해 소프트웨어 개발 도구를 수정하려는 다양한 노력이 이루어지고 있다.

각주

[편집]
  1. “reproducible-builds.org”. 《reproducible-builds.org》. 2016년 5월 20일에 원본 문서에서 보존된 문서. 2016년 8월 22일에 확인함. Reproducible builds are a set of software development practices which create a verifiable path from human readable source code to the binary code used by computers....build system needs to be made entirely deterministic: transforming a given source must always create the same result. 
  2. Lamb, Chris; Zacchiroli, Stefano (March 2022). “Reproducible Builds: Increasing the Integrity of Software Supply Chains”. 《IEEE Software》 39 (2): 62–70. arXiv:2104.06020. doi:10.1109/MS.2021.3073045. S2CID 233219473. 2023년 3월 26일에 확인함. 
  3. Ratliff, Emily (2016년 4월 4일). “Establishing Correspondence Between an Application and its Source Code | SecurityWeek.com”. 《www.securityweek.com》. SecurityWeek. 2016년 9월 20일에 원본 문서에서 보존된 문서. 2016년 8월 22일에 확인함. 
  4. Ladisa, Piergiorgio; Plate, Henrik; Martinez, Matias; Barais, Olivier (2022년 4월 19일). “Taxonomy of Attacks on Open-Source Software Supply Chains”. 《arxiv.org》. arXiv:2204.04008. doi:10.1109/SP46215.2023.00010 (년 이후로 접속 불가 2024-11-01). 

외부 링크

[편집]