EOS(1): 스팸 공격 방어방법

in kr •  2 years ago  (edited)

이 글은 제가 2017. 12. 5.에 EOS 밋업에서 발표했던 내용 중에서 일부인 스팸공격 방어방법에 관한 것입니다.

https://www.meetup.com/ko-KR/EOS-Seoul/events/245454418/

암호화폐 시스템은 채굴자에게 채굴자원, 즉 컴퓨팅능력인 계산 및 저장 능력을 빌리는 임대 시스템입니다.

그리고, 암호화폐 시스템의 구성원을 아는 것이 가장 중요합니다.

구성원은 1) 사용자, 2) 코인개발자, 3) 채굴자 그리고 분산앱(DApp) 개발자로 이루어져 있습니다.

사용자는 암호화폐 네트워크를 사용하는 사람이고, 코인 개발자는 암호화폐 소스를 제공하고, 채굴자는 암호화폐 네트워크에 채굴자원을 제공합니다.

그리고 분산앱 개발자는 스마트 계약(자율실행 계약)을 제공하고, 이를 네트워크에서 운용하는 사람입니다.

참고로, 스마트 계약을 사람들이 이해하기 쉽게 제가 자율실행 계약이라고 용어를 만들어보았습니다.

2.png

그리고, 암호화폐 이용방법은 크게 두가지로 나뉩니다.

즉, 이것이 1) 지불거래(payment)와 스마트 계약으로 나뉜다는 것을 이해하는 것이 중요합니다.

첫번째, 지불거래는 비트코인 및 라이트코인 등의 대부분의 암호화폐들이 하는 코인의 이체 거래를 위한 용도입니다.

여기서 중요한 것은 지불거래의 구성원이 사용자, 코인개발자, 채굴자로 이루어진다는 것입니다.

당연히 스마트 계약 플랫폼이 아니므로, 스마트 계약은 실행할 수 없습니다.

참고로, 비트코인에서도 if 문을 사용하여 계약을 체결하도록 하여서, 자체적으로는 이를 스마트 계약이라고 하지만, 제가 말하는 스마트 계약은 튜링완전 언어를 지원하는 암호화폐를 말합니다.

두번째, 스마트 컨트랙트 플랫폼입니다.

이것은 아래 그림과 같이, 지불 거래와 분산앱 개발 플랫폼을 동시에 수행할 수 있습니다.

구성원을 살펴보면, 지불 거래의 구성원에서 DApp 개발자가 더 포함되었다는 것이 가장 큰 특징입니다.

즉 DApp 개발자, 즉 분산앱 개발자가 더 포함되었기 때문에 채굴자원 문제가 출현하게 됩니다.

이에 대해서는 뒤에서 자세히 다루겠습니다.

그리고 이런 스마트 계약 플랫폼은 이더리움과 EOS 등의 소수의 암호화폐에 제공하고 있습니다.

3.png

채굴자원 문제를 이해하기 위해서, 먼저 지불 거래의 공격 방어 전략을 알아보겠습니다.

먼저 사용자의 공격은 비트코인의 경우, 블록사이즈 제한, 거래 출력 개수의 제한 등 다양한 제한 사항이 있습니다.

또한, 비트코인은 거래수수료를 부과하여 스팸 공격을 방어합니다.

하지만, 최근 비트코인의 거래가 늘면서, 맴풀의 거래의 수가 증가하면서, 거래수수료가 약 50 달러 이상으로 오르는 문제가 발생했습니다.

이것은 비트코인의 거래처리 속도가 낮아서 생긴 문제로, 현재 1M인 블록사이즈를 2M로 올리 등의 초당 거래 처리속도를 높여주면 바로 해결이 가능합니다.

두번째 코인 개발자 공격은 소스코드를 공개하여 방어를 합니다.

소스코드를 공개하지 않으면, 코드에 어떤 것이 심겨져 있을지 모르기 때문에 사용자가 이를 신뢰하지 않습니다.

마지막으로, 채굴자가에 의한 네트워크 공격은 합의 알고리즘이 방어를 합니다.

즉, 규칙을 따르지 않으면, 채굴자가 손해를 입도록 해서 네트워크를 방어합니다.

PoW의 '가장 긴 체인' 전략은 포크가 생겼을 때 채굴자가 두 체인에서 모두 채굴을 하는 것보다 주체인(main chain)이 될 가능성이 큰 체인에만 채굴하는 것이 훨씬 유리하기 때문에 하나의 체인이 유지되는 것입니다.

이것은 매우 중요한 개념이고, 반드시 이해해야 할 개념이므로 이해가 안되시면 아래 링크의 글을 읽으시기 바랍니다.

https://steemit.com/kr/@loum/3

이런 PoW원리를 적용한 만든 초기의 PoS는 채굴확률을 계산능력에 따라 분배하는 대신 지분율, 즉 코인의 개수의 비율에 따라 분배하는 것이었습니다. 이것은 피어(Peer) 코인이 최초로 적용했습니다.

하지만, 초기 PoS에서는 포크나면, 체인이 하나로 합쳐지지 않는 현상이 발생했으며, PoW에서는 이런 현상이 전혀 발생하지 않는 특이한 현상이었으며, 이를 Nothing at Stake, 즉 무손해 현상이 발생했습니다.

즉, 무손해라는 것은 포크가 났을 때 채굴자가 두 체인에 모두 베팅을 해도 채굴자에게는 전혀 손해가 되지 않고, 포크가 난 체인에 모두 투표(베팅)을 하는 것이 채굴자에게 유리하기 때문에 포크가 하나로 합쳐지지 않는데서 유래한 이름입니다.

이런 단점을 개선하기 위해서 현재 PoS 합의 알고리즘은 예치금을 예치한 후에 채굴을 할 수 있도록 했고, 예치금의 인출로 일정기간, 예로 한달, 후에 인출이 되도록 해서 네트워크를 공격한 채굴자에게 손해가 나도록 해서 하나의 체인을 유지하도록 하는 전략을 사용하고 있습니다.

즉 합의 알고리즘은 경제적인 원리로 하나의 체인을 유지하는 원리를 사용하는 것입니다.

결론적으로 지불 거래에서 공격자들의 공격에 대한 방어가 잘 작동하고 있으며, 여기에서는 채굴자원 문제가 발생하지 않습니다.

참고로, 비트코인의 경우 평균적으로 약 10^20의 블록 계산을 반복해야지 하나의 블록을 찾을 수 있을 정도로 많은 계산을 합니다.

4.png

이제 채굴자원 문제가 발생하는 스마트 계약에 대한 공격에 대해서 알아보겠습니다.

스마트 계약 공격 방법은 분산앱으로 많은 계산 또는 저장소 , 즉 채굴자원을 요구하여 채굴자를 공격하는 것입니다.

이와같이 분산앱(DApp)을 통한 공격이 암호화폐 네트워크를 새롭게 위험하게 할 수 입습니다.

5.png

이와 관련하여, 이더리움의 스팸방어 전략을 먼저 알아보고, 스마트 컨트랙트와 관련된 이더리움의 블록당 가스제한에 대해서 알아보겠습니다.

먼저 이더리움의 스팸 공격은 기본적으로 가스, 즉 수수료를 부과하여 방어합니다.

하지만 수수료가 높아지면, 공격 가능성은 좋아지지만, 거래 수수료가 많이 부과되어 사용성이 나빠지는 상반관계(trade-off)가 있기 때문에 결코 좋은 방법이라고 할 수는 없습니다.

이더리움의 거래수수료는 아래의 수식과 같습니다.

거래 수수료 = gas * gasPrice

여기서 gas는 아래의 표와 같이 채굴자원의 부담에 따라 그 가격이 이미 코드에 포함되어 있다는 것이 중요합니다.

예로, 블록체인에 읽기와 쓰기를 예로들면, 블록체인에 쓰기 가격이 읽기의 가격보다 훨씬 비쌉니다.

그 이유는 쓰기는 블록체인에 데이터를 기록하는 것이므로, 물리적인 저장공간이 필요하지만 읽기는 단지 블록체인서 데이터를 읽어오기 때문에 추가로 저장공간이 필요하지는 않기 때문입니다.

이와달리, gasPrice는 채굴자들이 결정하므로, 항상 변할 수 있으며, 네트워크에서 처리할 거래량이 많아지면 gasPrice는 점점 높아지게 됩니다.

하지만, gas 는 결정되어 있기 때문에 시간이 점점 지난 후에 특정 채굴자원이 이전보다 훨씬 싸게 되는 경우가 발생합니다.

공격자는 이와 같이 채굴자원이 싸고 채굴자원을 많이 사용하는 명령어를 사용하여 네트워크를 공격하게 됩니다.

6.png

아래는 실제로 2016.9.월에 발생한 이더리움의 스팸공격을 보여줍니다.

비탈릭은 이 공격을 mispriced op. codes라고 표현했습니다.

즉, 앞에서 말한 것과 같이 특정 명령어의 가격이 상대적으로 싸졌고 이 명령어를 이용한 공격이었습니다.

당시 이더리움 네트워크의 블록생성은 약 2-3배 정도 느려졌고, 이 공격은 EXTCODESIZE라는 명령어를 계속 사용한 공격이었습니다.

EXTCODESIZE는 계정 코드의 크기를 리턴하는 명령어었습니다.

이때문에 당시 이를 해결하기 위한 방법으로 gas를 채굴자의 투표로 결정하자는 논의가 있었습니다.

7.png

이번에는 이더리움에서 부자공격자의 공격을 방어하기 위한 블록당 가스 제한(gasLimit, Hl)을 보여줍니다.

이것은 블록에 포함될 수 있는 거래 및 스마트 계약에 의한 블록당 총 가스량을 제한하는 것입니다.

따라서 이것은 비트코인의 블록 크기를 1MB로 제한하는 것과 유사한 기능을 합니다.

하지만, 이더리움의 블록당 가스제한은 블록당 1/2024, 즉 0.0976%씩 변화가 가능합니다.

이런 제한들 때문에 이더리움은 많은 계산이 필요한 스마트 계약의 사용이 제한이 될 수 있습니다.

8.png

그러면, 이런 스팸 방법을 피할 수 있는 EOS의 스팸 공격 방어 방법은 사용자의 코인 지분량에 따라 채굴자원을 분배하는 획기적 방법을 선보였습니다.

따라서, 이 방법을 사용하면 스팸공격 가능성은 거의 없다고 할 수 있습니다.

이와 함께 더욱 중요한 내용인 스마트 계약과 관련하여, 채굴자에게 채굴자원 확장을 가하는 방법은 다음 글에서 알려드리겠습니다.

즉 EOS의 혁신성은 1) 채굴자원의 분배를 코인지분량에 따라 하고, 2) DApp 사용량이 증가할 때 채굴자에게 채굴자원을 확장하는 수단을 가지고 있다는 것입니다.

이 체굴자원 확장 문제는 매우 중요하지만, 거의 알려지지 않은 문제입니다.

9.png

아래는 본인이 Ledger저널에 제출했던 논문의 번역본을 보여줍니다.

이것은 이더리움의 보안에 관한 논문으로, 스마트 계약의 공격방어 방법을 제시했고, 그 방법으로 예치금을 도입하는 방법을 제시했습니다.

참고로, 합의 알고리즘의 예치금은 채굴자들의 공격을 방어하기 위한 목적으로 사용됩니다.

10.png

다음 글은 EOS의 특징과 EOS에서 채굴자에게 채굴자원확장 압력을 가하는 방법을 알아보겠습니다.


* 밋업 자료

  1. 쉽게 이해하는 블록체인 기술(1): https://steemit.com/kr/@loum/1
  2. 쉽게 이해하는 블록체인 기술(2): https://steemit.com/kr/@loum/6knvph-2
  3. 쉽게 이해하는 블록체인 기술(3): 합의 알고리즘: https://steemit.com/kr/@loum/3
  4. EOS(2): 채굴자원 확장문제: https://steemit.com/kr/@loum/eos-2
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
@loum님 안녕하세요. 개부장 입니다. @mastertri님이 이 글을 너무 좋아하셔서, 저에게 홍보를 부탁 하셨습니다. 이 글은 @krguidedog에 의하여 리스팀 되었으며, 가이드독 서포터들로부터 보팅을 받으셨습니다. 축하드립니다!

정말 좋은 글입니다. EOS가 이런 부분에선 정말 획기적이지요.
다만 인터넷으로 따지면 한 쪽은 망 중립성이 유지된 것이고, 한 쪽은 망 중립성이 배제된 것인데... 어느 쪽이 승리할지는 모르겠네요.
요즘으로 따지면 후자도 나쁘지 않아 보입니다.

헉...이런 정보가~
집에 가서 찬찬히 읽어보겠습니다. 감사드립니다.

좋은 글 감사합니다! @홍보해

크 잘 정리된 글 감사합니다!!!

very well post

으아 제 짧은 지식으로 이해하긴 너무 어렵네요 다시 몇번씩 읽어봐야 겠어요