재현 가능한 빌드
Reproducible builds결정론적 컴파일이라고도 알려진 재현 가능한 빌드는 결과적인 이진 코드가 재현될 수 있도록 보장하는 소프트웨어를 컴파일하는 과정이다.결정론적 컴파일을 사용하여 컴파일된 소스 코드는 항상 동일한 이진을 출력한다.[1][2]
재현 가능한 빌드는 신뢰 체인의 일부로 작용할 수 있다;[1] 소스 코드는 서명될 수 있으며, 결정론적 컴파일은 이 이진이 신뢰할 수 있는 소스 코드로부터 컴파일되었음을 증명할 수 있다.
방법들
컴파일 프로세스가 결정론적이 되려면 컴파일러에 대한 입력은 사용된 빌드 환경에 관계없이 동일해야 한다.여기에는 일반적으로 입력 파일, 타임스탬프, 로케일 및 경로의 순서와 같이 변경될 수 있는 변수를 정규화하는 작업이 포함된다.
또한, 컴파일러는 비결정론 자체를 도입해서는 안 된다.이것은 랜덤 해시 시드 값이 있는 해시 테이블을 사용할 때 가끔 발생한다.변수의 주소를 사용할 때도 발생할 수 있는데, 이는 주소 공간 레이아웃 무작위화(ASLR)에 따라 다르기 때문이다.
Bazel이나 Gitian과 같은 빌드 시스템을 사용하여 결정론적인 빌드 프로세스를 자동화할 수 있다.[3]
역사
GNU 프로젝트는 1990년대 초에 재현 가능한 건축물을 사용했다.1992년의 체인지로그는 지속적인 노력을 나타낸다.[4]
재현 가능한 빌드를 추진하기 위한 오래된[5] 프로젝트 중 하나가 기티안과 함께 한 비트코인 프로젝트다.이후 2013년 토르(익명 네트워크) 프로젝트가 재현 가능한 빌드에 기티안을 사용하기 시작했다.[6]
2013년 7월 Debian 프로젝트는 전체 패키지 아카이브에 걸쳐 재현 가능한 빌드를 구현하기 시작했다.[7][8]
2017년 7월까지 리포지토리에 있는 패키지의 90% 이상이 재현적으로 제작되는 것으로 입증되었다.[9]
2018년 11월 Replicable Builds 프로젝트는 소프트웨어 자유보존에 가입했다.[10]
F-드로이드는 분산 APK가 청구된 자유 소스 코드를 사용한다는 보증을 제공하기 위해 재현 가능한 빌드를 사용한다.[11]
Tails 휴대용 운영 체제는 재현 가능한 빌드를 사용하고 다른 사람들에게 배포를 확인하는 방법을 설명한다.[12]
닉소스는 2021년 6월 100% 재현 가능하다고 주장한다.[13]
참조
- ^ a b "reproducible-builds.org". reproducible-builds.org. Archived from the original on 20 May 2016. Retrieved 22 August 2016.
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.
- ^ Ratliff, Emily (4 April 2016). "Establishing Correspondence Between an Application and its Source Code SecurityWeek.com". www.securityweek.com. SecurityWeek. Archived from the original on 20 September 2016. Retrieved 22 August 2016.
- ^ "Gitian: a secure software distribution method". gitian.org. Retrieved 2018-01-10.
- ^ "Email describing GNU reproducible builds".
- ^ "LICENSE-file of the Gitian-Project". Retrieved 2019-12-03.
- ^ 결정론적 구축 제2부: 기술 세부 정보.2013년 10월 4일
- ^ "Reproducible Builds talk in Debian".
- ^ "Reproducible Builds history".
- ^ "Linux-Distributionen: Mehr als 90 Prozent der Debian-Pakete reproduzierbar - Golem.de" (in German). 2017-07-24. Retrieved 2018-10-30.
- ^ "Reproducible Builds joins the Software Freedom Conservancy". Retrieved 2018-12-15.
- ^ "Reproducible Builds". F-Droid.
- ^ "Verifying a Tails image for reproducibility". Tails.
- ^ "Nixos-unstable's iso_minimal.x86_64-linux is 100% reproducible!". NixOS Discourse. 2021-06-20. Retrieved 2021-06-21.