
몇 시간 전, Bitcointalk 포럼의 한 사용자가 인기 있는 비트코인 도박 사이트 SatoshiDice에 대해 확인되지 않은 거래를 성공적으로 되돌릴 수 있었다고 발표했습니다. 공격자의 전략은 간단했습니다. 먼저, 그는 수수료 없이 SatoshiDice에 0.25 BTC를 베팅했지만 패배했습니다. SatoshiDice로부터 패배 알림을 받은 직후, 그는 다시 0.25 BTC 거래를 자신에게 보냈습니다. 이번에는 수수료를 포함하여 두 번째 거래가 첫 번째 거래보다 우선적으로 확인되도록 유도했습니다. 그러나 이 전략은 실패로 판명되었고, 공격자는 다른 전술을 도입해야 했습니다: 거래를 “스팸처럼” 만들기. 표준 비트코인 클라이언트는 블록체인을 수백 기가바이트의 거래로 채우는 것을 방지하기 위해 많은 디스크 공간을 차지하는 거래를 수용하는 데 대한 여러 규칙을 가지고 있으며, 일반적인 원칙은 표준 입력과 출력의 수가 적은 모델에서 벗어난 거래는 빠르게 수용되거나 제한된 경우 수수료 없이 전파될 가능성이 훨씬 낮다는 것입니다. 그래서 공격자는 의도적으로 두 번째 시도를 0.20 BTC 거래로 만들어 자금을 0.01 BTC씩 20개의 입력으로 나누고, 그 후 0.20 BTC 거래를 자신에게 수수료 0.004 BTC와 함께 덮어쓰려고 시도했습니다. 이번에는 시도가 성공했습니다. 채굴 풀 BTC Guild는 두 번째 거래를 첫 번째 거래보다 확인했고, 공격자의 원래 손실은 영원히 사라졌습니다.
여기서 매우 중요한 점은 이것이 비트코인의 전체 보안을 약화시키지 않는다는 것입니다. 비트코인 시스템에는 두 가지 형태의 “확인”이 있습니다. 첫 번째는 약 2~5초가 걸리는 간단한 네트워크 전파입니다. 유효한 거래는 비트코인 네트워크를 통해 상인에 의해 제어되는 노드로 전달됩니다. 두 번째는 약 10분이 걸리는 블록 확인입니다. 여기서 비트코인 네트워크를 유지하는 채굴자들은 거래를 블록에 포함시키고 블록에 대한 작업 증명을 수행하는데, 이는 막대한 컴퓨팅 파워를 요구합니다. 대부분의 비트코인을 수용하는 사업체는 제품을 출시하기 전에 하나의 블록 확인을 기다립니다. 이 공격은 블록 확인이 있는 거래에 대해서는 아무런 영향을 미치지 않습니다. 물리적 상품과 온라인 서비스를 판매하는 판매자의 경우, 사기 고객의 제품은 원래 결제 알림이 이루어진 후 몇 시간 후에도 쉽게 취소될 수 있습니다. 기프트 코드와 무선 리필과 같은 소비 가능한 디지털 상품의 경우는 다르지만, 그 경우에도 코드를 고객에게 보내는 과정은 일반적으로 최대 30분이 걸리므로 제공자는 이미 하나의 확인을 확인하거나 그렇게 하는 데 큰 불편을 추가하지 않고 쉽게 패치될 수 있습니다. 사용성 측면에서 현재의 즉각적인 확인 패러다임은 고객의 관점에서 여전히 유지되는 것처럼 보일 수 있습니다. 즉각적인 확인은 거래가 상인에게 성공적으로 도달했음을 고객에게 안심시키는 기능을 여전히 수행합니다. 추가로 10분을 기다리는 과정은 단순히 배경에서 발생할 수 있습니다.
놀랍게도 즉각적인 확인을 제공하는 디지털 다운로드 상점도 보호받고 있습니다; Coindl은 비즈니스 모델을 변경할 필요가 없습니다. 이 기술을 사용하여 그러한 비즈니스로부터 환불을 강제로 요구하는 것은 가능하지만, 경제학적으로 그 행위로 인해 심각한 금전적 손실을 입지 않도록 보호받고 있습니다. 책, 영화 및 노래와 같은 디지털 상품은 본질적으로 한계 비용이 제로에 가깝기 때문에, 예를 들어 Apple에서 $11.99에 앨범을 다운로드할 때 추가 전기 및 대역폭 비용으로 1센트도 들지 않습니다. 이 기술을 사용하여 디지털 다운로드 사이트에서 무료 노래나 책을 얻으려는 것은 사실상 토렌트 네트워크를 통해 다운로드하는 것과 동등합니다. 세상의 절반이 이를 시작하더라도, 정직한 고객과 아티스트는 여전히 평화롭게 사업을 계속할 수 있습니다.
해결책에 관해서는, 가장 간단하고 충분히 보장된 패치는 단순히 되돌릴 수 없는 작업을 수행하기 전에 하나의 확인을 기다리는 것입니다. 물론, 이것이 받아들여지지 않는 비즈니스 모델도 있습니다. SatoshiDice의 매력은 승리할 경우 즉시 돈을 돌려받는 것이었습니다. SatoshiDice 자체는 이미 문제를 해결했습니다. 이제 모든 들어오는 베팅에는 거래 수수료가 포함되어야 합니다. 그러나 사이트가 이러한 복잡성을 도입하고 싶지 않더라도 여전히 다른 옵션이 있습니다. 약 8개월 전, 이제는 운영 중단된 RingCoin이라는 회사가 ZipConf라는 제품을 출시하여 블록 확인이 없는 거래가 되돌려지는 것을 더 어렵게 만들어 즉각적인 확인을 수용하는 상인을 지원할 의도를 가지고 있었습니다. Zipconf의 소프트웨어 스택은 이러한 공격을 두 가지 방법으로 방지하려고 합니다. 첫째, 거래를 받자마자 가능한 한 많은 네트워크에 첫 번째 거래를 방송하여 노드가 기존 거래와 충돌하는 후속 거래를 무시하도록 합니다. 둘째, Zipconf는 거래를 수신한 후 사기 시도를 듣기 위해 몇 초를 추가로 기다리는 데 약간의 즉각성을 타협할 의향이 있었습니다. 그때 거래는 네트워크의 대부분으로 퍼질 것이며, 이론적으로 두 번째 거래가 발판을 얻는 것은 거의 불가능할 것입니다.
이러한 접근 방식은 SatoshiDice와 같은 비즈니스에서 구현할 수 있으며, 다른 기술과 결합될 수 있습니다. 예를 들어, SatoshiDice는 수수료와 함께 자신에게 수신한 거래의 출력을 즉시 다시 보내는 것을 고려할 수 있으며, 이를 통해 채굴자들이 새로운 거래와 그 부모 거래를 빠르게 확인하도록 유도할 수 있습니다. 또 다른 방어층은 지나치게 크거나 비표준 거래를 거부하고 즉시 반환하는 것입니다. 세 번째 전략은 채굴자 및 비트코인 개발자와 협력하여 새로운 거래가 훨씬 작고 수수료가 더 높더라도 이전 거래보다 충돌하는 거래를 수용하지 않는 패치를 포함하도록 하는 것입니다. 개별 “이기적인” 채굴자는 수수료를 받을 수 있지만, 대부분의 채굴은 채굴 풀에 의해 통제되며, 이는 비트코인 네트워크의 유용성이라는 공공의 이익이 그러한 거래를 수용하지 않음으로써 그들에게 개인적으로 발생하는 비용보다 더 크기 때문입니다. 따라서 전반적으로, 비트코인 프로토콜이 처리해야 할 더 큰 장애물 중 하나이긴 하지만, 특히 제로데이 취약점인 만큼 여전히 단지 장애물일 뿐입니다. 커뮤니티는 모든 비즈니스와 채굴자가 이 문제를 해결하기 위해 패치되도록 진지한 노력을 기울여야 하며, 즉각적인 확인도 여전히 존재할 가능성이 높습니다.