되돌리기 공격(reversion attack)에 대해서 질문입니다.

pos로 진행한다는 가정하의 질문입니다.

  1. 되돌리기 공격에 대한 정의가 정확히 어떻게 되나요??

  1. 프로토콜을 어기게 되면 해당하는 경제적인 처벌(예치금 몰수 등)을 피하기 위해서

    현재 관련 금액을 다 인출한다음에 이전의 블록에는 아직 지분이 남아있는걸로 기록되어있기때문에

    거기서 부터 다시 블록을 생성하여 현재 블록 높이까지 생성할수 있다고 하는데

    이렇게 되면 지분이 많은 사람이 있으면 독재적인 형태가 되지않나요??

    1개의 답변이 있어요!

    • 질문 1번과 관련하여 질문해 주신 되돌리기 공격이라는 것은 어떤 사람이 블록체인을 공격할 목적으로 어느 블록에서 체인을 분기하여 블록을 생성하며 이어나가는 것으로 시작합니다.

      그리고 그것을 메인 체인으로 인정 받게 하려면 메인 체인보다 체인의 길이가 더 길어져야 하는데 공격자가 블록을 만들고 있을 때 메인 체인도 함께 길어지고 있으므로 길이가 더 긴 체인을 만드는 것이 힘들다고 할 수 있겠습니다.

      이때 예를 들어 사토시라는 사람이 있고 10000번째 블록에서 50% 이상의 지분의 코인을 스테이킹 해제하여 보유한 지분을 팔았다고 해 보겠습니다. 그리고 나카모토라는 사람이 앞서 살펴 보았듯이 블록체인의 길이를 더 길게 하여 자신이 생성한 체인을 메인 체인이 되게 하려는 시도를 하고 있었다고 해 보겠습니다.

      <참고 그림 1>

      ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ... 10119번째 블록 : 메인 체인

      ㅁ X ㅁ X X X ㅁ ㅁ X ㅁ ... 10110번째 블록 : 나카모토의 체인 (X는 비어 있다는 의미)

      위의 그림처럼 나카모토가 메인 체인보다 9개의 블록만큼 길이가 모자란 블록체인을 생성하고 있기 때문에 이 블록체인은 메인 체인으로 인정을 받지 못하게 됩니다. 그런데 말입니다, 아까 사토시가 과반수 이상의 지분을 보유하고 있다가 10000번째 블록에서 스테이킹을 해제 했다고 말씀드린 것을 기억하실 것입니다.

      사토시는 현재 스테이킹을 하고 있지 않으므로 새로운 블록을 생성하지는 못하지만 과거 과반수 이상의 지분을 보유하고 서명한 첫 블록부터 암호화폐를 매도한 10000번째 블록 중 자신이 이미 서명했던 블록에 대한 재서명을 하는 것이 가능합니다.

      즉, 과거에 과반수 이상의 지분을 소유한 사토시가 서명함으로써 확정된 상태가 되었던 블록을 재서명함으로써 그러한 확정성 상태에 있던 블록을 되돌릴 수 있다는 것입니다.

      이때 만약에 나카모토가 사토시의 프라이빗 키를 훔친다든가, 사토시를 회유하여 사토시가 과반수 이상의 지분을 갖고 있는 상태에서 서명했던 블록을 나카모토에게 유리하도록 재서명해 버린다면 어떻게 될까요?

      <참고 그림 2>

      ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ... 10119번째 블록 : 메인 체인 아님

      ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ... 10230번째 블록 : 나카모토의 메인 체인

      위의 그림처럼 나카모토가 이어가고 있던 블록에다가 사토시가 다시 재서명한 블록이 결합되면서 결과적으로 나카모토의 체인의 길이가 더 길어져 버리는 결과를 낳게 됩니다.

      따라서 나카모토가 만든 체인이 더 길어져 메인 체인이 된 사실에 중점을 두면 Long Range Attack이라고 부를 수 있고 블록의 재서명으로 인해 공격자의 블록체인의 길이가 더 길어지고 그것이 메인 체인이 되도록 블록의 확정성을 되돌린다는 것에 중점을 두면 되돌리기 공격(Reversion Attack)이라고도 할 수 있습니다.

      끝으로 질문 2번과 관련하여 질문자께서 말씀하신 문제가 나타나는 블록체인도 있고 이러한 문제를 해결하기 위한 해결책을 마련한 블록체인도 있기 때문에 POS 전체의 문제라고는 볼 수 없지 않나 개인적으로 생각합니다.

      예를 들어 질문 2번의 문제를 해결하기 위해 블록을 검증하고 확정할 때 이더리움의 캐스퍼 FFG 같은 경우에는 POS 검증 방식을 도입했지만 검증 노드들이 Justified, Finalized의 과정에서 투표를 통해 2/3 이상이 투표한 것을 되돌릴 수 없게 함으로써 이러한 공격이나 지분이 많은 노드의 독재를 해결하고 있지 않나 싶습니다.

      답변이 도움이 되길 바랍니다.