저자: 제임슨 롭
저자: 제임슨 롭
번역 및 교정: 민민 & 아지안
사람들이 서로 다른 암호화폐의 합의 메커니즘을 논의할 때 논쟁이 자주 발생하는데, 주로 이러한 암호화폐가 원장의 기록 데이터를 보호하기 위해 사용하는 보안 모델에 대한 이해(정의)가 부족하기 때문입니다. 모든 합의 모델은 다양한 이론적 공격으로부터 보호하도록 설계되었지만 이러한 모델의 목적을 이해하는 것이 중요합니다.
보안 모델은 가정(assumption)과 보증(guarantee)의 두 부분으로 나눌 수 있습니다. 입력으로 사용된 가정이 유지되면 안전 모델의 출력에 대한 보장도 유지되어야 합니다.
비트코인이 전체 노드 운영자에게 제공하는 보안 모델을 자세히 살펴보겠습니다.
진실을 구하다
"사용자 간의 신뢰 필요성을 최소화하는 것이 비트코인의 강점 중 하나입니다. 개인적으로 이것이 비트코인의 가장 큰 강점이라고 생각합니다." — Pieter Wuille
분산 원장은 이벤트의 정렬된 레코드를 제공하도록 설계되었습니다. 분산 시스템에서는 단순히 타임스탬프를 신뢰할 수 없기 때문입니다.
새로운 참가자가 블록체인 네트워크에 처음 가입하면 소프트웨어에 하드 코딩된 제네시스 블록부터 사용 가능한 모든 블록을 다운로드한 다음 전체 블록체인의 유효성을 확인합니다.
비트코인 보안 모델의 가장 중요한 가정 중 하나는 대다수의 채굴자가 정직하다는 것입니다. 사실 비트코인의 개발 역사를 통틀어 효과적인 채굴자 인센티브 메커니즘 덕분에 일부 사람들은 이것이 오랫동안 유지될 수 있을지 의심했지만 지금까지 이 가정은 깨지지 않았습니다.
이 가정을 전제로 전체 노드 운영자는 다음을 확신할 수 있습니다.
채굴자 외에는 아무도 비트코인을 추가로 발행할 수 없으며 비트코인의 공급은 발행 일정에 따라 엄격하게 증가할 것입니다.
해당 비트코인은 개인 키 없이는 사용할 수 없습니다.
비트코인 블록체인의 강력한 보증 하에 풀 노드 운영자는 다음 두 가지 사항도 확신할 수 있습니다.
모든 비트코인 블록은 타임스탬프에서 약 2시간 이내에 생성됩니다.
기술적으로 말해서 비트코인 블록은 많은 검사를 거칩니다.
모든 블록은 합의 규칙을 따릅니다.
각 블록은 상위 블록에 연결됩니다.
모든 블록이 목표 난이도 값에 도달하고 충분한 작업 증명이 있습니다.
블록 타임스탬프는 마지막 최신 블록의 시간 창 내에 있습니다.
Merkle 루트는 블록에 기록된 트랜잭션과 일치합니다.
블록 크기가 상한을 초과하지 않습니다.
각 블록의 첫 번째(그리고 유일한 첫 번째) 트랜잭션은 코인베이스 트랜잭션입니다.
Coinbase 출력은 블록 보상을 초과하지 않습니다.
블록에 포함된 서명 작업은 권한 범위를 초과하지 않습니다.
모든 거래는 합의 규칙을 따릅니다.
입력 값과 출력 값 모두 합리적입니다.
트랜잭션은 아직 소비되지 않은 출력만 소비합니다.
사용할 모든 입력에는 유효한 서명이 있습니다.
코인베이스 트랜잭션이 생성된 후 100 블록 내에서는 코인베이스 트랜잭션의 출력을 사용할 수 없습니다.
트랜잭션이 아직 블록 확인 창에 있으면 해당 출력을 사용할 수 없습니다.
아무도 같은 비트코인을 두 번 사용할 수 없습니다.
그들이 동기화하는 것은 "실제" 블록체인 히스토리입니다.
공간이 제한되어 있으며 나머지 규칙은 반복되지 않습니다.
열역학적 안전
공격자가 전체 네트워크 컴퓨팅 파워의 50% 이상을 갖고 있지 않고 정직한 노드가 빠르게 통신할 수 있는 한 트랜잭션 롤백 가능성은 트랜잭션 확인 횟수에 따라 기하급수적으로 감소합니다. 다른 유형의 공격(예: 이기적 채굴)은 그렇게 높은 에너지 요구 사항이 없지만 구현하기 어렵습니다.
이미지 설명
그림
이미지 설명
- 출처 : http://bitcoin.sipa.be -
51% 공격의 비용을 계산해 보겠습니다.
10^26 hash * 0.1 J / 10^9 hash = 10^15 J
10^15 J = 2,777,777,778 kw/h * $0.10 kw/h = $277,777,Antminer S9의 소비 전력은 0.1J/GH(10^9해시)입니다.
778 (전체 블록체인을 다시 작성하는 데 드는 전기 비용)
253,618,246,641 * 2^48 / 65535 = 1.09 * 10^21 hash
1.09 * 10^21 hash * 0.1 J / 10^9 hash = 1.09 * 10^11 J
1.09 * 10^11 J = 30,278 kw/h * $0.10 kw/h = $3,이 글을 쓰는 시점에서 블록은 목표 난이도 값 253,618,246,641에 도달해야 하며 대략 다음과 같습니다.
028 (각 블록 생성에 필요한 전기 비용)
따라서 Bitcoin은 열역학적으로 안전하다고 말할 수 있습니다.
위의 계산에서 일부 변수를 조정하여 비용을 줄일 수 있지만 전체 블록체인을 다시 작성하는 것만으로도 수백만 달러 상당의 전기가 필요하다는 것을 확신할 수 있습니다. 그러나 최악의 시나리오에서는 이러한 강력한 컴퓨팅 성능을 가진 공격자가 트랜잭션을 2014년으로 롤백할 수 있습니다. 그 이유는 곧 자세히 설명하겠습니다.
또한 채광 장비를 구매하고 운영하는 데 필요한 비용은 고려되지 않습니다.
안티 시빌 공격
이를 Anti-Sybil 공격이라고도 하는데, 이는 공격자가 부정직한 피어 노드를 여러 개 실행하여 특정 피어 노드에 잘못된 정보를 제공할 수 없음을 의미합니다.
그림
위의 그래프는 최악에 가까운 시나리오를 보여줍니다. 노드가 대규모 Sybil 공격을 받지만 실제 블록체인에 연결할 수 있는 정직한 노드에 연결된 상태를 유지합니다. 실제 블록체인 데이터를 전체 노드로 전송하는 정직한 동료가 있는 한, 노드는 Sybil이 사용자를 속이고 무시하려는 시도를 간파할 것입니다.
실시간 합의
노드가 블록체인 상단에 동기화되면 비트코인 프로토콜이 다른 흥미로운 속성을 통해 네트워크 전체에서 합의를 유지한다는 것을 알게 될 것입니다.
"Research Perspectives and Challenges of Bitcoin and Other Cryptocurrencies"의 저자는 다음 속성이 암호 화폐의 안정성에 중요하다고 지적합니다.
최종 합의. 어느 시점에서든 규칙을 따르는 모든 노드는 최종 "합법적인" 블록체인의 최신 블록에 대한 합의에 도달해야 합니다.
지수 수렴. 깊이 n에서 포크의 확률은 O(2−n)입니다. 이를 통해 사용자는 "k 확인" 후에 거래가 영구적으로 정산될 수 있다고 굳게 믿게 됩니다.
활동적인. 새로운 블록이 지속적으로 생성되고 적절한 거래 수수료를 지불하는 유효한 거래는 합리적인 시간 내에 온체인으로 패키징됩니다.
단정. 블록에 포함된 모든 트랜잭션은 가장 누적된 작업 증명이 있는 체인에서 유효합니다.
공평. 전체 네트워크 전체 컴퓨팅 파워의 X%를 가진 채굴자는 약 X%의 블록을 채굴할 수 있습니다.
저자는 비트코인이 적어도 대부분의 채굴자들이 정직하다고 가정할 때 위와 같은 속성을 가지고 있는 것으로 보인다고 지적합니다. 이것이 블록 보상 및 작업 증명 메커니즘이 달성하려는 것입니다.
다음과 같이 분산 시스템에서 합의를 유지하는 데 사용할 수 있는 다른 많은 알고리즘이 있습니다.
지분 증명(PoS)
동전 시대의 증거
보증금 증명
소각의 증거
활동 증명
경과 시간 증명
연합 합의
위의 알고리즘은 다른 보안 모델을 생성합니다. 작업 증명과 가장 분명한 차이점은 이러한 알고리즘을 기반으로 하는 시스템이 모두 합의를 달성하기 위해 외부 리소스(전기)가 아닌 내부 리소스(코인 또는 평판)를 소비한다는 것입니다. 결과적으로 이러한 시스템은 네트워크의 검증자에 대한 인센티브와 신뢰 요구가 다양하여 보안 모델을 크게 변경합니다.
보안 모델에 대한 오해
보안 모델에 대한 오해
일반적인 오해는 비트코인에 잘 정의된 보안 모델이 있다는 것입니다.
사실 비트코인 프로토콜도 현재도 공식적으로 정의된 사양이나 보안 모델이 없습니다. 우리가 할 수 있는 최선은 비트코인의 보안 모델을 더 잘 이해하고 설명하기 위해 시스템 참여자의 동기와 행동을 연구하는 것입니다.
그럼에도 불구하고 비트코인 프로토콜의 일부 기능은 종종 오해를 받습니다.
일부 블록체인은 개발자가 "블록 X가 올바른 체인에 있음을 개발자가 확인했습니다"라고 노드 소프트웨어에 임의 서명된 체크포인트를 추가하기 때문에 심각하게 취약합니다. 이것은 극단적인 중앙 집중화의 단일 문제 지점입니다.
6,119,726,089 * 2^48 / 65535 = 2.62 * 10^19 hash
2.62 * 10^19 hash * 0.1 J / 10^9 hash = 2.62 * 10^9 J
Bitcoin에는 13개의 하드코딩된 체크포인트가 있지만 이러한 체크포인트는 임의로 설정한 체크포인트만큼 보안 모델을 변경하지 않습니다. 마지막 체크포인트는 비트코인 코어 0.9.3에서 블록 높이 295000(2014년 4월 9일 생성)에 추가되었습니다. 이 블록의 난이도 값은 6,119,726,089이며 필요한 전기 비용은 대략 다음과 같습니다.
2.62 * 10^9 J = 728kw/h * $0.10kw/h = $73(이 블록을 만드는 데 필요한 전기 비용)
따라서 Sybil이 새로 조인된 노드(처음부터 동기화해야 함)를 차단하는 경우 더 낮은 블록 높이에서 더 짧은 블록체인을 생성하는 데 거의 비용이 들지 않지만 체크포인트를 초과할 수는 없습니다.
Sybil이 블록 높이 295,000을 지나 동기화된 네트워크에서 노드를 분기하면 적어도 난이도 조정이 발생할 때까지 블록당 $73의 비용으로 가짜 블록을 제공할 수 있습니다. 그러나 피해자 노드가 동기화하는 체인이 길수록 공격자가 더 많은 누적 작업 증명으로 체인을 생성하는 데 더 많은 비용이 듭니다.
Greg Maxwell과 Pieter Wuille 모두 언젠가는 체크포인트를 완전히 제거하기를 희망한다고 말했습니다. Bitcoin Core의 유지 관리 책임자인 Wladimir van der Laan은 체크포인트가 Bitcoin의 보안 모델을 이해하려는 사람들에게 종종 혼란스럽다고 언급했습니다.
아마도 블록 높이 295,000의 체크포인트는 전체 노드가 비트코인 코어 개발자가 2014년 4월 9일 이전의 블록이 유효하다고 말하는 것을 "믿는다"는 것을 의미합니다. 그러나 전체 노드는 여전히 각 블록 헤더에서 Merkle 해시 값을 확인합니다. 즉, 거래 내역의 유효성은 여전히 작업 증명에 의해 보호됩니다. libsecp256k1의 도입으로 인해 성능 차이가 눈에 띄지 않게 되었지만 이러한 오래된 체크포인트는 처음으로 기록 블록체인을 동기화할 때 성능(서명 확인 건너뛰기)을 향상시킬 수 있습니다.
체크포인트는 세 가지 주요 목적을 위해 존재합니다.
노드의 메모리가 유효하지만 낮은 작업 증명 블록 헤더로 채워지는 것을 방지합니다.
이전 블록의 서명을 건너뜁니다(성능 향상).
그림
이미지 설명
- 출처 : Blockchain.info -
1.16 * 10^20 hash * 0.1 J / 10^9 hash = 1.16 * 10^10 J
1.16 * 10^10 J = 3,난이도 값이 27,000,000,000일 때 마이닝은 약 27,000,000,000 * 2^48 / 65535 = 1.16 * 10^20 해시 함수를 계산해야 합니다.
222kw/h * $0.10kw/h = $322(각 블록을 만드는 데 필요한 평균 전기 비용)
(다듬지 않은)
(다듬지 않은)
원본 링크:
https://blog.lopp.net/bitcoins-security-model-a-deep-dive/
