암호화폐는 절대로 중간에 탈취할 수 없나요?

암호화폐 전송과정중에 탈취는 아예 불가능한건가요?

리플같은 전송속도가 굉장히 빠른 코인이 있는가하면 비트코인처럼 전송속도가 굉장히 느린 애들이 있잖아요.

늦게 전송되면 그만큼 탈취될 가능성도 많은거 아닌가요.

전송광정중 빼앗는게 기술적으로 아예 불가능한건가요?

    2개의 답변이 있어요!

    • 안녕하세요.

      전송과정에서 탈취는 전자서명에 의해 기술적으로 불가능합니다.

      전송예제로 한 번 살펴보도록 합시다. A라는 사람이 B에게 3개 코인을 전송하는데, 중간에 C라는 사람이 조작하여 자신에게 3개 코인이

      전송되도록 탈취를 시도한다고 보겠습니다.

      • 전송

      PublicKey: A

      To: B

      Amount: 3

      Signature( Hash(A, B, 3) )

      이 데이터를 노드가 받아서 유효한지 확인을 하는 방법은 이렇습니다.

      Signature를 PublicKey A로 풀고 Hash(PublicKey, To, Amount)와 Hash(A, B, 3)과 비교합니다. 같다면 유효한 트랜잭션이라고

      검증을 하게 됩니다.

      그런데 만약 To를 C로 조작을해서 다음과 같이 만들었다고 가정해보겠습니다.

      • 조작된 트랜잭션

      PublicKey: A

      To: C

      Amount: 3

      Signature( Hash(A, B, 3) )

      Signature는 PublicKey A로만 풀 수 있습니다. 그러면 Hash(A, C, 3)과 Hash(A, B, 3)은 다르므로 잘못된 트랜잭션이어서

      전송요청이 거절당합니다.

      따라서 다른사람이 내 것으로 전송하도록 조작할 수 없으므로 탈취가 불가능합니다.

    • 안녕하세요?

      transaction malleability라는 공격방식으로 중간의 트랜잭션을 탈취해 공격하는 방식이 있습니다.중간에 탈취를 하는 방식은 네트워크에 Tab을 연결해서 네트워크상에 전송되는 트랜잭션을 가로챌 수 있습니다. 문제는 이 가로챈 트랜잭션을 이용해 거래를 조작할 수 있는데 이게 transaction malleability 입니다. 하나의 트랜잭션은 하나의 TXID만을 가질 수 있지만 거래내용은 바꾸지 않고 TXID만 조작하여 새로운 하지만 동일한 거래를 만들어 낼 수 있는 일종의 버그중에 하나입니다.

      1. A->B에게 1BTC를 보내는 거래 X를 생성했습니다.

      2. B가 거래 X가 생성되었음을 확인하고 전체 네트워크에 전파되기 전 TXID만 바꾼 거래 X'를 노드들에게 전송합니다.

      3. B가 보낸 X'가 포함된 블록생성을 위한 채굴이 시작됨

      4. A->B에게 1BTC전송됨 (X' 트랜잭션에 의해)

      5. B는 A에게 1BTC를 받지 못했다고 말한다.

      6. A는 거래 X의 TXID를 찾아보지만 확인이 되지 않는다(노드들에게 전파되지 않았으므로)

      7. A는 B에게 1BTC를 다시 보내고 B는 결과적으로 2BTC를 받습니다.

      이 버그는 2017년 7월 21일에 SegWit을 적용하므로 해결이 되었습니다.

      감사합니다.