back

검색

[박상현] 블록체인 양날의 검… 인센티브의 함정

박상현, BDoS, 51%공격

[박상현의 배(워서) 남주자] 인센티브는 블록체인의 핵심이다. 사람들은 인센티브를 받기 위해 채굴에 참여한다. 채굴자들은 개인의 이득을 최대화하기 위해 행동하지만, 그 행동이 결국 네트워크 전체에 이득이 된다. 인센티브로부터 시작되는 이 ‘잘 정의된 설계’가 블록체인의 전부라 해도 과언이 아니다. 그러나 인센티브가 블록체인의 취약점이라는 사실이 최근 밝혀져 이슈가 되고 있다. #인센티브가 블록체인의 약점이다 인센티브를 받고자 하는 블록체인의 운영에 참여하는 채굴자 수가 많아지면, 블록체인의 보안성도 덩달아 높아진다. 문제는 블록체인의 보안성이 전적으로 블록 채굴 보상으로 주어지는 암호화폐, 즉 인센티브에만 의존한다는 점이다. 만일 채굴로 얻을 기대수익이 지불하는 비용인 채굴기 가격, 유지보수 비용, 전기세 보다 낮아지면 어떻게 될까. 채굴자들은 더 이상 채굴에 참여하지 않을 것이며, 블록체인 서비스는 중단된다. 이를 ‘블록체인 서비스 거부 공격(BDoS, Blockchain Denial of Service)’이라 한다. #‘가짜 블록’으로 블록체인 공격하는 BDoS BDoS 공격은 어떻게 행해질까. 먼저, 특정 블록체인 서비스의 구동을 멈추고자 하는 ‘공격자’는 블록을 생성하고 요약본에 해당하는 ‘블록 헤더’만을 네트워크에 전파한다. 블록체인은 모든 데이터가 다 있어야 검증이 가능하다. 그러나 블록 헤더는 전체를 포함하지 않는 요약본, 즉 가짜 블록이다. 문제는 이를 전파 받아 뒤이어 블록을 생성하는 채굴자들은 이 블록이 진짜인지 가짜(블록 헤더)인지를 전파 받은 시점에 바로 알 수가 없다는 점이다. 이 가짜 블록 때문에 네트워크는 혼란에 빠진다! 공격자가 아닌 채굴자들은 네트워크에 ‘가짜 블록’이 등장한 것을 알아차리게 된 후, 세 가지 전략 중 한 가지를 취할 수 있다. 첫 번째는 전파 받은 블록 헤더를 무시하고 다른 새 블록을 채굴하는 것이다. 이는 진짜 블록으로 이루어진 블록체인과 가짜 블록으로 이루어진 블록체인 간의 분기, 즉 포크를 유발한다. 이 경우 분기의 수만큼 채굴자의 기대수익이 낮아진다. 두 번째 전략은 블록 헤더를 받아들이고 이어서 다음 블록을 채굴하는 것이다. 물론, 나중에 가짜 블록임이 밝혀지면 이를 참조하는 다음 블록들이 전부 무효가 된다. 이 경우 채굴자의 기대수익은 0이다. 결국, 채굴자들의 최선 전략은 마지막 세 번째인 ‘채굴 중단’이 된다. 이미 네트워크에 ‘가짜 블록’이 섞인 사실을 알게 된 채굴자들은 기대수익이 0이 되는 것보다 채굴을 멈추는 것을 택하게 된다. 여기까지 오면 공격자의 BDos가 성공한 것이다. 연구에 의하면, 공격자는 단 20%의 해시 파워만으로 비트코인 채굴자들을 정지 상태로 만들 수 있다. #BDoS는 중대한 문제, 아직 시간은 있다 BDoS는 현실적인 위협이다. 공격자가 네트워크 전체 파워의 과반을 가져야 하는 ‘51% 공격’과는 달리, 현저히 적은 파워만으로 블록체인 서비스를 중단시킬 수 있다. 인센티브에 따라 움직이는 채굴자들이 가장 현실적인 대안인 ‘세 번째’ 전략을 취하는 경우가 많기 때문이다. 더 큰 문제는 아직 깔끔한 BDoS 해결책을 찾지 못했다는 점이다. 이 중대한 문제에 맞서 우리는 어떻게 행동해야 할까. 다행스럽게도 직접적인 위협은 당분간 없을 것으로 예상된다. ‘채굴 중단’ 전략이 비트코인 프로그램에 구현되지 않았기 때문이다. BDoS 공격이 성공하기 위해서는 채굴자들이 자발적으로 ‘채굴 중단’ 전략이 포함된 코드를 업데이트해야 한다. 그렇다고, 안심해서는 안 된다. 언제까지나 채굴자들이 채굴에 참여할 것이라는 낙관적 기대는 좋지 못하다. 채굴자들은 이성적이며, 언제든지 네트워크를 떠날 수 있다. BDoS를 비롯한 블록체인 공격 기법에 대응할 학계의 많은 연구가 필요한 시점이다. 명심하자. 우리는 고작 잠깐의 유예를 얻은 것이다. 박상현 『컴퓨터과학으로 배우는 블록체인 원리와 구현』 저자

조인디 logo
j o i n
d

Article Title

  • J loading image
  • O loading image
  • I loading image
  • N loading image
  • D loading image

RE:CENT