이 노트는 비트코인에 대한 리눅스 배포 패키징 모델의 내재된 위험을 요약하며, 비트코인에 대한 특별한 요구 사항을 이해하지 못한 채 배포 패키지 저장소의 일부로 비트코인 노드 소프트웨어를 배포하지 말 것을 상류 유지 관리자로부터 요청합니다.
배포자는 일반적으로 내부 라이브러리를 분리하고 다양한 일반적으로 좋은 이유로 패치를 적용합니다. 여기에는 보안에 중요한 수정 사항을 여러 패키지에 대해 여러 번 적용하는 대신 한 번만 적용할 수 있도록 하는 것이 포함됩니다. 대부분의 경우, 일반적인 배포 패키징 정책은 많은 장점이 있습니다.
그러나 비트코인 노드는 특이한 소프트웨어 범주입니다: 모든 클라이언트가 다른 클라이언트의 동작을 정확하게 검증하는 복잡한 그룹 합의를 구현합니다. 심지어 겉보기에는 무해한 버그 수정과 같은 미세한 변화도 합의에 도달하지 못하게 할 수 있습니다. 한 클라이언트의 합의 실패는 해당 클라이언트 사용자의 보안 위험입니다. 합의에 도달하지 못하는 상당수의 노드 – 2013년 3월 데이터베이스 라이브러리의 변경으로 인해 발생한 경우와 같이 – 는 모든 사용자에게 시스템의 기능과 보안을 위협하는 중요한 문제입니다.
이러한 이유로, 가능한 한 많은 네트워크가 신중하게 감사되고 테스트된 수정되지 않은 구현을 사용하는 것이 중요합니다. 예를 들어, bitcoind에 포함된 LevelDB 복사본이 시스템 전체에서 공유 라이브러리로 대체되는 경우, 해당 공유 라이브러리에 대한 모든 변경 사항은 감사 및 테스트가 필요하며, 이는 일반적으로 표준 배포자 패키징 관행에서 충족되지 않는 요구 사항입니다.
분산된 글로벌 합의는 새로운 컴퓨터 과학 연구 분야이기 때문에, 서명자는 배포자가 비트코인 노드 소프트웨어(비트코인 및 Bitcoin-Qt 포함)를 패키징하지 말고 사용자에게 상류에서 제공된 바이너리를 대신 사용하도록 안내할 것을 요청합니다. 고유한 테스트 절차 및 합의 도달에 필요한 기타 요구 사항을 이해할 때까지 말입니다. 글로벌 일관성을 넘어, 상류 바이너리는 재현 가능한 빌드 시스템을 사용하여 생성되어 백도어에 대한 감사를 받을 수 있도록 보장합니다.
서명자,
- 가빈 안드레센
- 제프 가르직
- 그레고리 맥스웰
- 루크 대시주르
- 피터 토드
- 마크 프리덴바흐
- https://en.bitcoin.it/wiki/BIP_0050
- http://gitian.org/