51% 공격
51% 공격은 한 세력이 전체 작업증명 계산 능력의 과반을 확보하고 장부의 일부를 되돌리려는 시도입니다. 비트코인의 안전성은 정직한 참여자들이 더 많은 계산 능력을 가지고 있다는 전제에 기대고 있으므로, 이 전제가 흔들릴 때 무엇이 가능하고 무엇이 불가능한지 구분할 필요가 있습니다.
이 공격을 두고 비트코인이 끝난다고 말하거나 절대 일어날 수 없다고 단정하는 것은 모두 정확하지 않습니다. 공격으로 가능한 일에는 범위가 있고, 계산 능력만으로 할 수 없는 일도 분명히 있습니다.
51%라는 숫자의 의미
채굴은 조건에 맞는 결과를 찾을 때까지 계속 시도하는 경쟁으로 볼 수 있습니다. 한 세력이 전체 계산 능력의 절반을 넘게 가지고 있다면, 장기적으로는 다른 참여자들보다 블록을 더 빠르게 발견할 가능성이 커집니다.
과반은 성공을 보장하는 마법의 경계선이라기보다, 공격자가 경쟁에서 지속적인 우위를 차지할 가능성이 커지는 기준입니다. 과반에 이르지 못한 경우에도 운이 좋으면 짧은 기간 동안 대체 체인이 따라잡거나 앞설 수 있지만, 과반을 확보하면 공격을 이어 갈 가능성이 훨씬 커집니다.
장부를 되감는 방식
공격자는 자신의 거래가 포함된 공개 체인과 별도로, 거래를 되돌린 대체 체인을 비밀리에 이어 갈 수 있습니다. 자신의 체인이 공개된 체인보다 더 많은 누적 작업량을 갖게 되면 네트워크에 공개하고, 규칙에 맞는 체인 가운데 누적 작업량이 더 큰 체인을 따르는 참가자들이 그 체인을 선택하도록 만들 수 있습니다. 비트코인 개발자 문서는 체인 선택을 누적 작업량과 유효성에 따라 설명합니다.
그러면 원래 체인에 있던 최근 기록이 사라질 수 있습니다. 공격자가 거래소에 비트코인을 입금하고 그 대가로 현금을 받은 뒤, 입금 거래가 포함된 기록을 되돌린다고 가정해 보겠습니다. 거래소는 이미 현금을 내주었지만 입금 기록은 장부에서 사라질 수 있습니다. 공격자는 비트코인과 현금을 모두 확보하게 되어 결과적으로 같은 돈을 두 번 사용하는 셈이 됩니다.
재조직의 영향은 공격자의 거래에만 한정되지 않습니다. 대체 체인에 포함되지 않은 다른 사람의 거래 확인도 취소되거나 지연될 수 있고, 충돌하지 않는 거래라도 기존 블록이 빠지면서 확인 수가 줄어들 수 있습니다. 다만 재조직이 타인의 서명을 위조해 그 사람의 비트코인을 임의로 지출하게 만드는 것은 아닙니다.
오래전에 굳어진 기록보다 최근 거래를 되돌리는 일이 상대적으로 쉽기 때문에, 방금 받은 입금이 특히 위험한 대상이 됩니다.
특정 거래를 검열하는 일
채굴자는 과반이 아니더라도 자신이 만드는 블록에서 특정 거래를 제외할 수 있습니다. 그러나 과반 공격의 핵심은 여기에서 더 나아갑니다. 공격자는 특정 거래를 포함한 다른 채굴자의 블록을 자신의 대체 체인으로 밀어내고, 그 거래가 포함된 기록을 재조직으로 반복해서 제거할 수 있습니다.
이렇게 특정 거래를 계속 막으려면 공격자가 작업증명 경쟁에서 우위를 유지해야 합니다. 과반을 유지하지 못하면 다른 채굴자가 만든 블록과 거래가 체인에 포함될 가능성이 커집니다. 따라서 51% 공격은 모든 거래를 영구적으로 지우는 만능 권한이 아니라, 우위를 유지하는 동안 거래 순서와 확인, 포함 여부에 영향을 주는 능력에 가깝습니다.
할 수 없는 일
채굴 계산 능력의 과반을 확보해도 다른 사람의 개인키를 얻는 것은 아닙니다. 다른 사람의 비트코인을 옮기려면 그 사람의 개인키로 만든 유효한 서명이 필요합니다. 블록을 더 빠르게 만들 수 있다는 사실이 서명을 만들어 주지는 않습니다.
발행 규칙을 넘어 비트코인을 만들거나 그 규칙을 일방적으로 바꾸는 일도 할 수 없습니다. 기존 규칙을 검증하는 풀 노드가 규칙을 위반한 블록을 거부하기 때문입니다. 비트코인 개발자 문서의 검증 방식 설명은 풀 노드의 검증과 간소화된 검증 방식을 구별합니다. 총량 2,100만 개라는 발행 한도를 넘는 보상이나 규칙을 어긴 거래가 들어간 블록은 계산 능력이 아무리 커도 유효한 장부로 인정되지 않습니다.
내 비트코인이 사라지는가
51% 공격이 발생한다고 해서 개인키로 서명하지 않은 사람의 비트코인이 공격자의 장부에서 마음대로 빠져나가는 것은 아닙니다. 공격자가 계산 능력만으로 타인의 서명을 만들어 지출할 수는 없습니다.
다만 공격이 진행되는 동안 최근 입금이나 아직 충분히 굳지 않은 거래는 영향을 받을 수 있습니다. 기존 블록이 재조직으로 밀려나면 다른 사람의 거래 확인도 취소되거나 지연될 수 있습니다. 블록이 더 쌓이고 확인이 늘어날수록 되감기에 필요한 비용과 작업량은 커집니다.
공격자도 비용을 치른다
공격에는 계산 장비와 전력이 필요하며, 과반을 유지하는 동안 비용이 계속 발생합니다. 공격이 알려지면 해당 네트워크에 대한 신뢰와 가치가 함께 하락할 수 있고, 공격자가 보유한 채굴 사업의 가치도 영향을 받을 수 있습니다.
계산 능력이 적은 네트워크에서는 빌린 계산 능력만으로 과반을 확보할 수 있어 이런 공격이 실제로 발생한 사례가 언급되기도 합니다. 비트코인은 더 큰 계산 능력이 모인 네트워크이므로 같은 일을 하려면 훨씬 큰 비용이 필요하다는 차이가 있습니다.
공격 비용이 만드는 안전
이 안전은 공격을 규칙으로 금지하는 데서만 나오지 않습니다. 공격자가 감당해야 할 비용을 크게 만드는 구조에서도 나옵니다. 네트워크의 해시레이트가 클수록 체인을 되감기 위해 필요한 계산 자원과 비용이 커집니다.
그렇다고 해시레이트가 모든 위험을 없애 주는 것은 아닙니다. 51% 공격은 비트코인의 규칙을 전부 무력화하는 권한이 아니라, 작업증명 경쟁에서 과반의 계산 능력을 가진 세력이 거래를 되돌리거나 검열할 수 있는 범위를 보여 주는 개념입니다.
이중 지불은 장부를 되돌려 같은 돈을 두 번 사용하는 문제를 설명하고, 작업증명은 이러한 경쟁이 어떤 방식으로 이루어지는지 다룹니다.
정리
51% 공격으로 가능한 일은 공격자가 자신의 거래를 되돌리고, 다른 채굴자가 만든 블록과 그 안의 거래를 재조직으로 밀어내며 확인을 취소하거나 지연하는 것입니다. 자신이 만드는 블록에서 특정 거래를 제외하는 일 자체는 과반 없이도 가능하지만, 이를 지속적인 검열로 확대하려면 작업증명 경쟁에서 우위를 유지해야 합니다.
반대로 남의 개인키를 얻어 비트코인을 가져오거나, 발행 규칙을 어겨 비트코인을 만들거나, 총량 한도를 넘기는 일은 계산 능력만으로 할 수 없습니다. 51% 공격은 비트코인 전체를 마음대로 조종하는 권한이 아니라, 작업증명 경쟁에서 과반의 계산 능력을 가진 세력이 행사할 수 있는 제한된 공격 능력입니다.