본문으로 건너뛰기

리플레이 공격 쉽게 풀기: 서명 하나가 두 체인에서 코인을 쓰게 되는 이유

한 독자가 BLAKE2b 포크에서 리플레이 공격이 무엇을 뜻하는지 물었습니다. 누구도 개인키를 가져가지 않지만, 한 체인에서 서명한 거래가 다른 체인으로 복사될 수 있고 포크의 보호는 선택 사항이며 한 방향으로만 작동합니다.

단기

중립 / 횡보

향후 1~4주

비트코인은 8월 말부터 80,000달러 아래에서 다져지는 가운데 모든 눌림이 75,600달러 선 위에서 지켜지고 있습니다. 단기 관점은 중립 / 횡보를 유지하며, 이 선 아래 일봉 마감이 나오면 70,000달러 부근이 다음 단기 목표로 열립니다.

중기

강한 강세

향후 1~6개월

상승 흐름은 5월을 가로막았고 1월의 붕괴 수준이기도 한 81,000에서 84,000달러 밴드 아래에서 숨을 고르고 있습니다. 회복의 구조는 온전하며 중기 관점은 강한 강세를 유지합니다.

장기

강한 강세

향후 1~3년

장기 관점은 강한 강세를 유지합니다. 포크를 둘러싼 거버넌스 소음은 다년간의 논지를 건드리지 못했으며, 70,000달러 부근으로의 조정이 먼저 오든 오지 않든 논지는 변함이 없습니다.

  • 리플레이 공격은 당신이 서명한 거래를 다른 체인으로 복사합니다. 훔쳐 가는 키는 없으며, 당신의 서명이 두 번 전파될 뿐입니다.
  • BLAKE2b 체인의 선택형 서명 형식은 한 방향으로만 리플레이를 막습니다. 일반 서명은 두 체인 모두에서 유효하며 계속 복사됩니다.

독자들이 질문을 보내오는데, 지난주에는 리플레이 공격과 그것이 BLAKE2b 체인에 어떤 의미인지를 묻는 질문이 있었습니다. 기술적인 주제이지만 포크를 지나며 코인을 보유한 사람이라면 누구에게나 해당되므로 쉬운 말로 풀어 볼 가치가 있습니다. 분리가 남기는 것부터 보겠습니다. Bitcoin이 실제로 두 체인으로 갈라진다고 가정하겠습니다. 분리 전에 당신은 비트코인 한 개를 가지고 있고, 분리 후에는 두 체인이 포크 시점까지 같은 이력을 함께 가지므로 당신의 것이던 미사용 출력이 이제 양쪽 모두에서 당신의 것이 됩니다. 그 자체로는 아무 문제가 없습니다. 문제는 두 네트워크가 계속 같은 거래를 받아들일 때 시작됩니다. 당신은 첫 번째 체인에서 코인을 팔기로 하고 거래에 서명해 전파하는데, 그것이 공개되는 순간 누구든 바로 그 거래를 그대로 가져다 다른 네트워크에 다시 전파할 수 있습니다. 그곳에서도 유효하다면 그곳에서도 확정됩니다. 이것이 리플레이 공격이며, 핵심은 이것이 무엇이 아닌지를 아는 데 있습니다. 누구도 당신의 개인키를 가져가지 않았고, 누구도 돈이 가는 곳을 바꿀 수 없습니다. 두 번째 체인에서 실행되는 것은 당신이 직접 서명한 그 거래이며, 바이트 하나까지 같습니다. 한쪽 갈래에서만 코인을 옮긴다고 생각했지만 양쪽에서 옮긴 셈입니다.

그래서 하드포크는 리플레이 보호를 넣을 수 있고, 발상은 단순합니다. 한 체인을 위해 서명한 거래를 다른 체인에서 기술적으로 무효로 만드는 것입니다. Bitcoin Cash는 2017년에 바로 그렇게 했습니다. 포크 고유의 서명 다이제스트인 SIGHASH_FORKID는 서명이 약속하는 메시지를 바꾸고, 새 체인은 포크가 활성화된 뒤 모든 거래에 이를 요구했습니다. 따라서 한 네트워크용으로 만든 거래는 다른 네트워크에서 실패했고 분리는 양방향으로 작동했습니다. 두 번째 방법은 프로토콜이 아니라 보유자의 몫이며, 코인을 분리하는 것입니다. 먼저 두 체인 중 한쪽에서만 유효할 수 있는 거래를 만듭니다. 그 시점부터 이력이 갈라지고 미사용 출력이 양쪽에서 더 이상 같지 않으며, 이후 거래는 한 네트워크에서 다른 네트워크로 그대로 복사될 수 없습니다.

그러면 8월 30일 블록 961,640에서 활성화된 BLAKE2b 체인으로 돌아가게 됩니다. 이 체인에는 그런 장치가 실제로 있습니다. Knots 풀 리퀘스트 357에 규정된 SIGHASH_UNIFIED라는 선택형 서명 형식으로, 서명되는 메시지가 오늘 쓰이는 세 가지 서명 해시와 달라서 이를 선택한 서명은 이를 구현하지 않은 체인에서 검증되지 않습니다. 프로젝트 문서는 그 한계를 보기 드물게 솔직하게 밝힙니다. 이 보호를 새 메시지에 따라오는 부수적 효과이자 한 방향이며 서명 단위라고 설명하고, 일반 서명은 여전히 유효하며 계속 리플레이된다고 분명히 적어 두었습니다. 이 문장이 전부입니다. 보호는 지출하는 사람이 요청할 때만, 그 지출에만, 그리고 한 방향으로만 적용됩니다. 오늘의 지갑이 서명하는 방식대로 서명하는 사람은 아무 보호도 받지 못합니다. 이 포크가 바꾼 것은 작업증명 알고리즘이지 주소와 키와 서명 형식이 아니며, 바로 그래서 같은 승인이 두 네트워크 모두에서 의미를 가질 수 있다는 점도 기억할 만합니다.

그러므로 요점은 리플레이 공격으로 누군가 당신의 비트코인을 해킹한다는 것이 아니며, 그런 일은 일어나지 않습니다. 진짜 위험은 포크 전후에 하나의 암호학적 승인이 뜻하지 않게 두 네트워크에서 당신의 코인을 지출할 수 있다는 것입니다. 현실적인 모습은 그리기 쉽습니다. 새 포크가 생기고, 그 뒤 당신은 Bitcoin에 비트코인 한 개를 그리고 새 체인에 같은 크기의 포크 코인을 갖게 됩니다. 그때 누군가 공개적으로 그 포크 코인을 몇 달러에 사겠다고 제안하고, 당신에게는 거의 가치가 없어 보이니 마다할 이유가 없어 보입니다. 코인을 한 번도 분리하지 않은 채 그 이체에 평범하게 서명하면, 같은 거래가 Bitcoin으로 복사될 수 있고 거기서 포크 이전의 바로 그 출력을 지출합니다. 그때 지갑에서 나가는 것은 포크 코인이 아닙니다. 당신의 비트코인입니다. 포크 문서는 방어책도 알려 주는데, 그것이 위에서 말한 분리입니다. 다른 체인에서 지출하기 전에 선택형 형식을 써서 BLAKE2b 체인에서 자기 자신에게 코인을 보내고 그 지불이 확정되기를 기다리라는 것입니다.

시장에서는 Bitcoin이 지난주에 확보한 자리를 지키고 있습니다. 9월 3일 장중 고점 82,283달러까지 올라 81,000에서 84,000달러 밴드를 처음 건드린 뒤, 9월 6일 80,339달러로 다시 80,000달러 위에서 마감했고 발행 시점에는 79,200달러 부근에서 거래되고 있습니다. 75,600달러 선은 그 뒤로 시험받지 않았으며, 우리의 세 가지 기간 전망은 그대로입니다.

본 게시물은 시장 분석이며, 매수 또는 매도 권유가 아닙니다.

관점을 바꿀 요인

  • 지갑들이 이 선택형 형식을 기본값으로 제공하는 경우이며, 수동 예방책이 요청 없이 얻는 보호로 바뀝니다.
  • 포크 코인의 실제 시장이 생기는 경우이며, 이 위험이 이론이 아니라 현실이 됩니다.
  • 앞으로의 포크가 양방향 리플레이 보호를 의무화하는 경우이며, 위험을 서명자에게 떠넘기지 않고 없앱니다.

출처