비트코인의 핵심 보안 보장 중 하나는 공격자가 비트코인 네트워크에 성공적으로 간섭하고 거래를 차단하거나 되돌리기 위해서는 나머지 비트코인 네트워크의 컴퓨팅 파워보다 더 많은 컴퓨팅 파워를 가져야 한다는 것입니다. 그 이유는 비트코인 네트워크가 거래 기록을 “블록체인” 형태로 쌓아가며, 무작위 노드가 이전 블록 위에 10분마다 새로운 블록을 추가하기 때문입니다. 거래를 되돌리기 위해서는 공격자가 거래를 하고 그 거래가 포함된 블록보다 한 블록 뒤에서 블록체인을 “포크”해야 하며, 그 시점부터 공격자는 모든 다른 채굴자들과 함께 경쟁하게 됩니다. 그러나 코넬 대학교의 연구자 이타이 에얄과 에민 건 시레르의 새로운 논문은 경제적 공격이라는 또 다른 유형의 공격을 도입함으로써 비트코인의 보안 보장을 상당히 약화시킵니다. 경제적 공격은 적대적인 채굴자가 비트코인에 대해 일방적으로 성공적인 공격을 할 수 없게 하지만, 보통 정직하고 이익을 극대화하려는 노드들이 공격자의 연합에 가입하고 싶어하도록 유도하여 51% 공격이 두 번째 단계로 발생할 수 있게 합니다.
공격의 고수준 개요는 다음과 같습니다: 공격자는 정상적인 채굴자로 행동하여 블록을 즉시 네트워크에 게시하는 대신, 선택적으로 블록을 게시하며 때때로 자신의 수익을 희생하지만 종종 많은 블록을 한 번에 게시하여 나머지 네트워크가 블록을 폐기하고 수익을 잃도록 강요합니다. 이는 공격자의 단기 수익을 줄이지만, 다른 모든 사람의 수익을 더 많이 줄이므로 중립적인 노드들은 이제 자신의 수익을 늘리기 위해 공격자의 연합에 가입할 유인이 생깁니다. 결국 공격자의 연합은 50명을 초과하여 확대되어 네트워크에 대한 높은 정도의 통제를 제공할 수 있습니다.
공격자의 정확한 전략은 다음과 같습니다. 공격자는 자신의 “개인 체인”을 추적하며, 이는 나머지 네트워크가 작업하는 “공개 체인”과 분리되어 있습니다. 처음에 개인 체인과 공개 체인은 동일하게 시작됩니다. 공격자는 항상 개인 체인에서 채굴하며 발견한 블록은 비공개로 유지합니다. 이 전략은 공격자가 블록을 게시해야 하는 정확한 시점을 정합니다. 공격자의 네트워크 해시 파워 비율이 X라고 가정하고, 두 개의 경쟁하는 공개 체인이 있을 때 공격자의 체인을 인식하는 네트워크의 비율이 Z라고 가정합니다.
- 상태 0: 공격자의 개인 체인이 공개 체인과 동일할 경우, 개인 체인에서 채굴합니다. 확률 X로 공격자가 블록을 발견하고 상태 1로 진행합니다(개인 체인 1 블록 앞). 확률 1-X로 공개 네트워크가 블록을 발견하고 공격자는 개인 체인을 공개 체인으로 재설정합니다.
- 상태 1: 공격자의 개인 체인이 공개 체인보다 1 블록 더 길 경우, 개인 체인에서 채굴합니다. 확률 X로 공격자가 상태 2로 진행합니다(개인 체인 2 블록 앞). 확률 1-X로 공개 네트워크가 블록을 발견하여 시스템이 상태 0′로 설정됩니다.
- 상태 0′: 공격자가 자신의 블록을 게시합니다. 이제 두 개의 경쟁 체인이 모두 1 블록 길이입니다. 확률 X로 공격자가 또 다른 블록을 발견하여 네트워크가 개인 체인으로 전환됩니다. 공격자는 2의 수익을 얻고 시스템은 상태 0으로 재설정됩니다. 확률 (1-X)Z로 네트워크가 공격자의 블록 위에 블록을 발견합니다. 공격자와 네트워크는 1의 수익을 얻고 시스템은 상태 0으로 재설정됩니다. 확률 (1-X)(1-Z)로 네트워크가 자신의 블록 위에 블록을 발견하여 네트워크는 2의 수익을 얻고 시스템은 상태 0으로 재설정됩니다.
- 상태 2: 확률 X로 공격자가 상태 3으로 진행하고 1의 수익을 얻습니다(기술적으로 공격자는 나중에 수익을 얻지만 여기서 회계 처리하기가 더 쉽습니다). 확률 1-X로 네트워크가 블록을 발견하여 공격자는 여전히 공개 체인보다 1 블록 더 긴 2 블록 개인 체인을 게시합니다. 그러면 네트워크는 공격자의 체인으로 전환됩니다. 공격자는 2의 수익을 얻습니다.
- 상태 n (n > 2): 확률 X로 공격자가 상태 n+1로 진행하고 1의 수익을 얻습니다. 확률 1-X로 공격자는 상태 n-1로 후퇴합니다.
이 전략이 왜 효과적인지 보려면 Z가 1에 가까운 경우를 가정해 보십시오. 이 경우 공격자가 블록을 폐기해야 할 가능성은 없습니다; 유일하게 발생할 수 있는 경우는 상태 0′에서이며, Z가 1에 가까우면 네트워크의 거의 모든 부분, 공격자와 다른 노드가 포함되어 공격자의 블록에서 채굴하고 있으므로 공격자의 블록은 폐기되지 않습니다. 따라서 공격자는 최대 효율로 채굴하고 있습니다. 그러나 공개 네트워크는 상태 0′와 상태 2에서 블록이 폐기되는 것을 볼 수 있으므로 공개 네트워크는 부분 효율로 채굴하고 있습니다. 따라서 중립적인(이익을 극대화하는) 노드는 자신의 수익을 늘리기 위해 공격자의 연합에 가입할 유인이 생깁니다. Z가 감소함에 따라 공격자의 이점도 줄어들며; Z = 0.5에서 에얄과 시레르는 공격자가 X > 1/4일 때 공개 네트워크보다 더 효율적이 되며, X > 1/3일 경우 공격자는 어떤 Z에서도 공개 네트워크보다 더 효율적입니다.
그렇다면 Z를 어떻게 계산할까요? 현재 비트코인 네트워크는 간단한 규칙을 따르도록 설정되어 있습니다: 모든 노드는 자신이 처음 보는 블록만 채굴하고 전파합니다. 채굴 파워만 있는 공격자에 대해 이는 성공적인 방어입니다; 공격자의 전략이 반응적이어서 공개 네트워크가 블록을 게시한 후에만 블록을 게시하므로 Z는 0에 가까워집니다. 그러나 자금이 충분한 공격자(또는 봇넷을 제어하는 공격자)는 “시빌 공격”을 감행하여 수백만 개의 노드를 생성하고 가능한 많은 장소에 네트워크에 삽입할 수 있습니다. 공격 중에 시빌 노드는 공격자의 블록만 전파합니다. 이 경우 에얄과 시레르는 Z가 1에 매우 가까워질 수 있다고 추측합니다. 실제로는 그렇지 않습니다; 최소한 모든 채굴 풀은 자신의 블록에 대해 가장 먼저 듣게 되므로 Z <= 0.8는 본질적으로 보장되지만, 시빌 공격이 얼마나 많은 일을 할 수 있는지는 논란의 여지가 있습니다. 비트코인이 시빌 공격에 대해 안전하게 만들기 위해, 에얄과 시레르는 정직한 채굴자들이 모든 블록을 전파하고 동일한 길이의 여러 경쟁 체인을 받으면 무작위로 하나에서 채굴하는 전략으로 전환해야 한다고 주장합니다. 모든 채굴자가 이를 구현하면 Z = 0.5가 되어 이 공격이 작동하기 위한 X >= 1/4의 합리적인 임계값을 생성합니다.
이것이 비트코인에 치명적인 위협인가요? 그렇지 않습니다. 공격의 아이디어는 새로운 것이 아닙니다; 매우 유사한 공격이 2010년 비트코인 포럼에서 이론화되었으며, 비트코인 주요 개발자 가빈 안드레센도 논의에 참여했습니다. 그러나 그 당시에는 아무런 조치가 취해지지 않았습니다 – 주로 그 당시 모든 사람이 이 공격이 비트코인이 직면해야 할 다른 위협에 비해 걱정할 가치가 없다고 생각했기 때문입니다. 실제로 대부분의 비트코인 채굴자는 이념적 고려와 자신의 수익의 출처를 불안정하게 만들고 싶지 않기 때문에 네트워크를 지원하기 위해 이타적으로 행동합니다. 이러한 고차원적인 경제적 우려는 에얄과 시레르의 논문의 범위를 넘어가지만, 이 경제적 공격이 실제로 작동할 가능성을 심각하게 줄입니다.
더욱이, 표준 51% 공격과 달리, 이는 사후에만 명백해지는 것이 아니라, 이 경제적 공격은 중립적인 채굴자들에게 자신들의 이익을 위해 공격 연합에 가입할 기회가 있음을 알리기 위해 사전에 발표되어야 합니다. 따라서 채굴 풀은 실제로 이를 실행할 수 없습니다; 하나가 네트워크를 속일 의도를 발표하는 즉시, 그 사용자는 이념적 고려로 인해 떠날 것이며, 설령 그렇지 않더라도 다른 채굴 풀은 그 채굴 풀의 사용자에게 수수료에 대한 대폭 할인 혜택을 제공하여 이익을 극대화하려는 참가자들이 전환하도록 설득할 가능성이 높습니다. 그러나 그럼에도 불구하고, 에얄과 시레르의 결과와 그 이전 몇 년 동안 다른 사람들의 연구는 비트코인 주변의 게임 이론적 연구의 중요한 부분이며, 비트코인의 네트워크 보안이 우리가 처음 생각했던 것보다 약간 덜 무결하다는 것을 보여줍니다.