아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
WINTERFELL
WINTERFELL 19.08.07

이중지불을 일으키는 해킹에는 어떤 것들이 있나요?

안녕하세요.

아하의 블록체인 전문가님들로부터 많은 도움을 받아 감사드립니다.

블록체인 Transaction의 속도를 향상하고 처리 Capacity를 증가시키려는 다양한 개선이 있습니다.

하지만, 이런 노력들과 대조적으로 이중지불을 추구하는 시도들도 있다고 하는데요.

이중지불을 일으키는 해킹들은 어떤 것들인지 알고싶습니다.

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 이중지불과 관련된 공격으로 두 가지 정도 답변해 드리도록 하겠습니다. 우선 이클립스(Eclipse) 공격이 있습니다. 이 공격은 공격 대상이 되는 정직한 노드와의 연결을 독점하고 다른 노드로부터의 정보 수신을 차단하는 네트워크 공격이라고 할 수 있습니다.

    이렇게 되면 예를 들어 공격 노드인 A가 공격 대상 노드인 B와 거래를 한다고 할 때 B를 전체 네트워크로부터 격리시킨 다음 1BTC를 전송하는 정상적인 트랜젝션을 보여준 후 그 대가를 B로부터 수령하고, 다시 전체 네트워크 상에 존재하는 C에게 1BTC를 전송할 수 있게 됨으로써 이중 지불 공격이 성공하게 됩니다.

    이 공격은 공격 대상 노드와 네트워크 간의 연결을 가로 막고 독점하는 것이 필요한데 이것은 공격자가 보낸 IP주소를 자신도 모르게 저장하고 있음으로 인해서 가능해 집니다. 이러한 공격을 방지하기 위해서 오프라인 상에 네트워크 접속시 안전한 IP 주소를 저장해 두는 방법이 있지만 완전하게 예방하기에는 힘들 수가 있습니다.

    다음으로 Alternative History Attack이 있습니다. 이 공격에서는 공격자가 어느 정도 높은 해시 파워를 가지고 있다는 것을 전제하고 있다는 점을 말씀드리면서 답변을 시작하도록 하겠습니다.

    예를 들어 A가 B에게 1BTC를 1200만원에 판다고 해 보겠습니다. 우선 A는 B에게 1BTC를 전송하는 트랜젝션1을 블록체인 네트워크 상에 브로드캐스팅합니다. 이렇게 되면 트랜젝션1은 n컨펌을 받기 시작할 것입니다.

    그 사이에 A는 개인적으로 자신의 해시파워를 동원하여 해당 블록에서 포크하여 트랜젝션1을 무효화할 수 있는 트랜젝션2(예를 들어 A 소유의 다른 주소로 보낸다든가 하는)가 포함된 블록을 생성하고 이어 나가게 되지만 그러한 포크체인을 아직 다른 노드에게 아직 전파하지는 않습니다.

    그리고 시간이 지나 B는 n컨펌을 확인하고 안심하고는 A에게 1200만원을 주게 됩니다. 이때 A가 개인적으로 블록을 생성해서 이어왔던 포크 체인이 n블록 이상일 경우에 해당 포크체인을 블록체인 네트워크 상에 전파해 버립니다.

    이렇게 되면 트랜젝션 1이 무효화되면서 A는 1BTC를 B에게 주지 않고도 n컨펌을 확인한 B에게서 1200만원을 받은 것이 되며, 게다가 그 동안 채굴한 포크 체인이 메인 체인이 되면서 받게 되는 채굴 보상까지 챙길 수가 있게 됩니다. 또한 1BTC가 그대로 남아 있게 되므로 이중 지불 공격이 가능해집니다.

    하지만 만약에 A가 n블록 이상을 채굴하지 못하여 트랜젝션1을 무효화하지 못하는 경우에 1BTC를 B에게 주고 1200만원을 받았지만 개인적으로 채굴한 포크 체인에 포함된 블록 채굴 보상을 받지 못하게 되는 것은 물론이고 그러한 블록 생성에 투입된 전기 요금이나 기타 자원들의 비용까지 손해를 보게 된다고 할 수 있습니다. 즉, 1200만원을 벌기 위해 n블록 채굴보상과 채굴비용을 손해보게 된다는 것입니다.

    따라서 이 공격은 공격자에게 위험부담(기회 비용)이 존재하며 블록체인의 해시 파워 중 상당한 비율로 해시파워를 확보하고 있어야만 공격 성공 확률이 높아지는 것이라고 할 수 있습니다.

    하지만 이러한 공격을 여러 사람에게 동시에 시도하게 될 수도 있는데, 예를 들어 다섯 명과 각각 1BTC씩 총 5BTC를 동시에 거래한다고 한다면 한 번의 공격 시도가 실패하더라도 앞서 한 사람에게 공격을 시도했을 때보다 같은 해시 파워와 자원을 투입하고도 손실이 줄어들 수 있다는 점에서 주의할 필요가 있지 않나 싶습니다.

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