2019/02/08 - [암호화폐 이야기] - 블록체인의 약점이라고 알려진 51% 공격에 대한 간단한 이야기




비트코인 (이하 많은 코인들)은 51% 공격으로 이중지불이 가능하다고 알려져 있습니다. 

과연 그럴까요 한번 살펴보겠습니다. 



51% 이상의 해시를 보유하고 있다고 해서 전지전능한 신이 되는 것은 아닙니다

채굴자는 들어오는 거래를 묶어 블록을 만들고 이전 블록과 연결하는 역할을 합니다. 

주어진 역할 외의 권한은 없으며 이것은 아무리 많은 해시를 보유하고 있다 하더라도 마찬가지입니다 

룰 자체를 변경하는 하드 포크가 아닌 이상 정해진 룰을 어길 수 없습니다. 


혹자는 51% 공격으로 장부를 조작할 수 있다고 하지만 없는 코인을 만드는 것은 처음부터 주어진 권한이 아니며 불가능한 일입니다


빈 계좌에 코인이 100만개 있다 100억개 있다는 식의 날조는 51% 해시를 보유하고 있더라도 불가능합니다.





두 번째로 없는 코인을 만들 수는 없지만 이미 많은 코인을 보유한 사람의 계좌에서 가짜 거래를 발생시키는 방법을 생각할 수 있습니다 


정상적인 방법으로 100만개의 코인을 보유하고 있는 A의 계좌에서 내 계좌로 100만개의 코인을 송금했다는 가짜 기록을 만들어 거래를 승인시키면 100만개의 코인을 탈취할 수 있게 됩니다. 


문제는 채굴자는 거래 승인의 권한은 있지만 가짜 거래 주문서를 만들 수 있는 권한은 없다는 것입니다. 

거래 주문은 개인키를 알아야만이 가능한데 이것은 해시 파워를 많이 가진 것과 전혀 별개의 영역으로 절대로 알아낼 수 없습니다. 


(만약 모종의 방법으로 개인키를 알아냈다고 가정하면 51% 공격도 필요 없고 정상적인 방법으로 코인을 탈취할 수 있으며 어떤 방식의 공격도 필요가 없음) 


한마디로 이 두 번째 방법도 불가능하다는 것입니다.



또한 사실상 동시에 두 명 이상에게 코인을 전송하는 실제적인 이중 지불도 불가능합니다. 

첫 번째에 설명했다시피 채굴자는 거래 승인 이상의 권한이 없으며 코인을 복제할 수 있는 방법 따윈 없습니다. 

동시에 두 명 이상에게 코인을 전송하려면 복제가 되어야 하는데 이것 역시 불가능합니다. 






그렇다면 이중지불은 어떻게 가능한것인가 ?


예를 들어 설명해보죠 


1. A가 B 계좌로 코인 100개를 정상 송금합니다.


2. 이후 A는 해당 코인의 가치에 해당하는 다른 재화를 받습니다.


3. 51% 공격으로 A가 B에게 코인을 전송하기 전의 블록에 다른 블록을 연결하여 사용합니다. 


4. A가 B에게 코인을 전송하지 않은 상태가 되며 롤백과 같은 현상이 일어납니다. 


5. A는 다시 자신의 계좌에 생긴 코인 100개를 사용합니다




이렇듯 사용한 코인을 사용하기전 상태로 돌려서 또 사용하는 방식으로 이중 지불이 가능합니다. 


그런데 이후 블록의 연결 갯수가 많아질수록 거래를 되돌리기 힘들어지니 51%공격은 짧은 시간내에 이루어져야 합니다.


3일전에 한 거래를 되돌린다거나 하는것은 불가능하며 비트코인은 사실상 6블록이 지나면 되돌리지 못하는것으로 이야기 하고 있습니다. (1시간) 



코인을 복제하는것이 불가능하므로 이것을 짧은 시간내에 다른 재화로 바꾸고 다시 되돌리고를 빠르게 반복하는 방식으로 이중지불이 가능한데 


이것을 현실적으로 실행할수 있는곳이 거래소외엔 없습니다



마지막으로 정리해서 쉽게 설명하자면 


거래소로 코인을 보낸뒤 팔고 

코인을 보내기전 상태로 롤백 시켜서 다시 생긴 코인을 다시 보냅니다. 

보낸 코인을 판매한뒤 다시 롤백을 시킵니다.


51% 공격은 거래소들이 주타겟이며 일반 사용자의 계좌는 별다른 피해가 생기지 않았습니다. 







+ Recent posts