Long Range Attack이란 어떤 방식의 공격인가요?
POS(Proof Of Stake-지분 증명)의 합의 알고리즘을 따르는 블록체인을 대상으로, 이중 지불을 목적으로 하는 Long Range Attack은 어떤 방식의 블록체인 공격인가요?
Long Range Attack은 어떤 사람이 블록체인을 공격할 목적으로 어느 블록에서 체인을 분기하여 블록을 생성하며 이어나가는 것으로 시작합니다.
그리고 그것을 메인 체인으로 인정 받게 하려면 메인 체인보다 체인의 길이가 더 길어져야 하는데 공격자가 블록을 만들고 있을 때 메인 체인도 함께 길어지고 있으므로 길이가 더 긴 체인을 만드는 것이 힘들다고 할 수 있겠습니다.
이때 예를 들어 사토시라는 사람이 있고 10000번째 블록에서 50% 이상의 지분의 코인을 스테이킹 해제하여 보유한 지분을 팔았다고 해 보겠습니다. 그리고 나카모토라는 사람이 앞서 살펴 보았듯이 블록체인의 길이를 더 길게 하여 자신이 생성한 체인을 메인 체인이 되게 하려는 시도를 하고 있었다고 해 보겠습니다.
<참고 그림 1>
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ... 10119번째 블록 : 메인 체인
ㅁ X ㅁ X X X ㅁ ㅁ X ㅁ ... 10110번째 블록 : 나카모토의 체인 (X는 비어 있다는 의미)
위의 그림처럼 나카모토가 메인 체인보다 9개의 블록만큼 길이가 모자란 블록체인을 생성하고 있기 때문에 이 블록체인은 메인 체인으로 인정을 받지 못하게 됩니다. 그런데 아까 사토시가 과반수 이상의 지분을 보유하고 있다가 10000번째 블록에서 스테이킹을 해제 했다고 말씀드린 것을 기억하실 것입니다.
사토시는 현재 스테이킹을 하고 있지 않으므로 새로운 블록을 생성하지는 못하지만 과거 과반수 이상의 지분을 보유하고 서명한 첫 블록부터 암호화폐를 매도한 10000번째 블록 중 자신이 이미 서명했던 블록에 대한 재서명을 하는 것이 가능합니다.
즉, 과거에 과반수 이상의 지분을 소유한 사토시가 서명함으로써 확정된 상태가 되었던 블록을 재서명함으로써 그러한 확정성 상태에 있던 블록을 되돌릴 수 있다는 것입니다.
이때 만약에 나카모토가 사토시의 프라이빗 키를 훔친다든가, 사토시를 회유하여 사토시가 과반수 이상의 지분을 갖고 있는 상태에서 서명했던 블록을 나카모토에게 유리하도록 재서명해 버린다면 어떻게 될까요?
<참고 그림 2>
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ... 10119번째 블록 : 메인 체인 아님
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ... 10230번째 블록 : 나카모토의 메인 체인
위의 그림처럼 나카모토가 이어가고 있던 블록에다가 사토시가 다시 재서명한 블록이 결합되면서 결과적으로 나카모토의 체인의 길이가 더 길어져 버리는 결과(Long Range)를 낳게 됩니다.
이와 같이 블록의 재서명으로 인해 나카모토가 만든 체인이 더 길어져 메인 체인이 되어 버리면 Long Range Attack이 성공한 것이라고 볼 수 있습니다.
하지만 부가적으로 이러한 공격이 통할 수 있는 블록체인도 있고 이러한 문제를 해결하기 위한 해결책을 마련한 블록체인도 있기 때문에 POS 알고리즘을 채택하고 있는 모든 블록체인이 가지고 있는 취약점이라고는 볼 수 없지 않나 싶습니다.
예를 들어 질문 2번의 문제를 해결하기 위해 블록을 검증하고 확정할 때 이더리움의 캐스퍼 FFG 같은 경우에는 POS 검증 방식을 도입했지만 검증 노드들이 Justified, Finalized의 과정에서 투표를 통해 2/3 이상이 투표한 것을 되돌릴 수 없게 함으로써 이러한 공격을 예방하고 있기 때문입니다.
답변이 도움이 되길 바랍니다.