traders_free custom_top_html:no
default debug random = 5 / type = READ / detected = READ

지난주에 다오사태를 해결을 위해 제안된 소프트 포크 솔루션이 DoS 공격 취약점하다는 점이 발견되어 포기를 했었습니다.

제안된 소프트 포크 솔루션의 주 목적이 해커가 가진 주소가 이더를 움직이는 새로운 트랜잭션을 일으키지 못하게 막는 것이었는데, 

만일 해커가 이를 역이용해, 대량의 invalid 트랜잭션을 네트워크에 쏟아부으면, 마이너들이 블럭생성을 거의 할 수 없는 상태로 만들 수 있다는 것이었습니다.

http://hackingdistributed.com/2016/06/28/ethereum-soft-fork-dos-vector/

 

이러한 DoS 공격이 가능해지는 근본적인 이유가 이더리움의 튜링완전성과 개스시스템 때문이라는 것이었습니다.

무슨말인가 하면, 

소프트포크에 의해서 다크다오가 새로운 스플릿을 하지 못하게 막혔다고 가정합시다.

그렇게 되면 다음과 같은 코드를 해커가 마이너에게 보낼 수 있습니다.

 

 

for(uint32 i=0; i < 1000000; i++)

   { sha3('some data'); // costly computation }

DarkDAO.splitDAO(...); // render the transaction invalid
 

컴퓨팅 리소스를 잡아먹는 sha3 해시함수를 루프문으로 마구 돌린다음, 마지막에 소프트포크에 의해 invalid 하게 된 DarkDao.splitDAO() 펑션을 실행하면 전체 실행이 무효가 되고 이 콜은 에러처리됩니다. 그러나 이 때 보통같으면  개스가 부과되어서 공격자가 엄청난 비용을 물어야 되는데, 이 경우는 공격자에게 개스를 물릴 수가 없습니다. 왜냐하면 개스를 물리려면, 이 트랜잭션을 블럭체인에 올려야 되는데, 이렇게 되면, 소프트포크를 업데이트 하지 않는 노드는 이 트랜잭션을 valid 하다고 판단할 것이고, 이렇게 되면, 소프트포크를 업데이트한 마이너의 데이타와 충돌이 생깁니다. 결국 하드포크를 하지 않고서는 이러한 DoS 공격에 대해 개스를 물릴 수가 없습니다.

 

결국 소프트포크를 이용한 대부분의 시도는 이더리움의 내재적 특성때문에 DoS 공격 취약점을 노출시킬 수 있다는 것이죠.

이러한 발견이 일단은 다오 사태의 빠른 해결을 기다리고 있던 커뮤니티에게는 상황을 더욱 불확실하게 하는 요인이었습니다.

 

그런데 이 문제를 좀 더 일반적인 각도에서 보자면, 이더리움의 내재적 강점으로도 볼 수 있다는 것입니다. DoS 공격의 취약을 지적한 팀은 코넬대 교수인 Emin 와 주변학생들및 다른 연구자들의 모임인데, 이러한 강점의 성격을 다음의 글로 정리했습니다.

 

http://hackingdistributed.com/2016/07/05/eth-is-more-resilient-to-censorship/

 

소프트포크가 이루고자 했던 것이 결국은 일종의 해커가 일으키는 트랜잭션을 찾아서, 이것만 필터링하는 일종의 검열(censorship) 과정인데, 이것이 DoS 공격의 위험때문에 내재적으로 사실상 불가능하다는 것입니다.

예를 만일 정부가 모든 불법 도박과 관련된 트랜잭션을 주소레벨에서 필터링해서 다 막으라는 지시를 해도, 이것을 이행할 수 있는 소프트포크적인 방법은 거의 불가능하다는 것이죠. 심지어는 대다수의 마이너들이 전부 매수되어서 필터링을 하려고 시도해도 이것에 대한 DoS 역공격때문에 마이너의 공격이 실패할 것이란 겁니다. 마이너들이 DoS 공격때문에 모든 트랜잭션을 전부 처리할 수 없는 상황이 되면, 51% 이상의 해시파워를 가지고 있어도 필터링을 할 수 없다는 이야기가 됩니다.

심지어는 비탈릭과 파운데이션, 대부분의 마이너 풀,  커뮤니티의 대다수가 동의를 했어도 소프트 포크를 할 수 없었던 것처럼 앞으로도 이더리움의 이러한 소트트포크적인 솔루션들은 작동시키기 매우 어려울 것이라는 것입니다.

 

사실 비탈릭은 이미 오래전에 검열이 불가능하거나 매우 어렵게 하는 시스템에 대해 이미 논의한 바가 있습니다.

https://blog.ethereum.org/2015/06/06/the-problem-of-censorship/

 

이미 현재의 상태만으로도 이러한 아이디어가 이미 어느정도 구현되었다는, 심지어는 자신조차도 그런 검열을 할 수 없었다는 것을 증명하고 있군요.

 

참고로 이러한 안티검열적 특성은 이더리움에 고유한 것인데, 그 이유는 위에서도 이야기했지만, 튜링완전성과 개스시스템 때문에 생기는 것입니다. 따라서 비트코인에는 적용이 되지 않습니다.

 

==============

 

자 이제 남은 것은 하드포크 뿐인데, 이것을 가능케하는 것은 결국 커뮤니티의 consensus이고 이 과정에 대해서는 다른 글로 포스팅하겠습니다.

1

atomrigs님의 서명

 

한국이더리움 사용자 그룹: https://www.facebook.com/groups/ethereumkorea/

블로그:  https://www.facten.co.kr/news/articleList.html?sc_sub_section_code=S2N13&view_type=sm

 

댓글 16
  • ?
    아침부터 좋은 정보 감사드립니다 다음 글이 또 기다려지네요
  • 유익한 정보네요 감사합니다.
  • 어렵고도 재밌네요^^감사합니다
  • ?
    네이버웹툰 연재기다리는 느낌 항상 좋은글 감사해요
  • 읽다보니 좋은 소식이군요 ^^
  • 지금은 이더리움 노드들이 새로운 트랜젝션들은 그냥 체크 없이 주르륵 전달 합니다.
    짧은 블럭 타임을 맞추기 위해 고도로 최적화 되어 있는 상태라고 알고 있는데요.
    엄밀히 얘기하면 모든 노드들이 트랜젝션을 전달하기 전에 자체적으로 무효 트랜젝션인지 검사를 하면 될거 같습니다. 물론 지금보다 부하가 커지겠지만요.
    그러면 공격자와 연결되어 있는 1차 노드만 DoS 피해를 입을 것이고, 또 이들 노드들도 계속해서 무효 트랜젝션을 보내는 공격자 노드에게 벌점을 부과해서 자체 차단시키면 될테구요.
    이더리움 재단에서는 마이닝용도 아닌데 모든 노드들이 이런 검사를 한다는걸 장기적으로 봤을때 손해라고 생각하는거 같습니다.

    뭐 어차피 똑똑한 사람들이니까 조금 있으면 더 나은 방법을 들고 나올거 같긴 합니다ㅎㅎ
  • @coincoin
    DoS 공격을 약화시기키 위한 여러가지 방법들이 논의들이 되었는데, 일부 효과는 있겠지만 현재의 방법으로서는 제대로 차단하기는 힘들겠다는 결론이었던 것 같습니다. 모든 노드들이 트랜잭션들을 릴레이 하기전에 검사를 하면, 이 노드들도 엄청난 양의 유효성 검사하느라 헤매게 될테이고, 공격자가 지속적으로 새 노드를 생성하면서 공격하면 막기가 더 힘들어지겠죠. 그리고 이더리움 2.0 이후의 대부분의 방향이 스케일링에 촛점이 맞추어져 있는데, 모든 노들들이 트랜잭션를 릴레이 하기전에 유효성 검사를 해야한다면, 전체 효율성이 너무 떨어지겠죠.
  • @atomrigs
    네~
    근데 제 생각엔 급한 불부터 끄는게 좋지 않나 싶습니다.
    지금 이더 자체의 미래가 오락가락하는데 scaling 이 뭔 의미가 있을까 싶습니다.
    다음 버젼까지만이라도 strict mode 같은걸 지갑 기본값으로 돌려서 Dos 공격을 차단하고 이후 하드포크 이후에는 다시 normal mode 로 돌린다거나 하는게 어떨까 싶기도 하네요.
    parity 는 이미 이런 종류로 3가지 모드를 두고 클라이언트 성향에 따라 돌리는 방식을 나눠놓고 있더라구요. 장기적으로 보면 이렇게 세분화하는 것도 좋아보입니다. 라즈베이파이 같은 노드라면 그냥 relay 시키고 서버급이면 strict mode 로 돌린다거나 하는 식으로요.
  • @coincoin
    DOS 공격 취약성은 소프트포크에만 해당됩니다. 하드포크를 하면 상관없습니다. 공격자가 개스비를 물어야 하니 할 수가 없죠.
    그래서 남은 옵션은 이제 하드포크 밖에 없다는 것이구요.
  • @atomrigs
    하드포크는 기술적인 문제가 아니라 정책적인 문제라서 쉽게 합의가 될지 모르겠습니다.
    DAO 풀리는 시기가 다가오고 있으니까 그 전에 마무리가 되어야 하는데 너무 촉박한거 아닌가 싶네요.
  • ?
    이해가 잘 안 됩니다. ㅠ.ㅠ
    소프트포크한 노드가 대부분이라면, 소프트포크하지 않은 노드가 쏟아내는 데이터는 invalidate되는 것 아닌가요?
    무한 루프에 빠지는 것은 소프트포크 안 한 일부 노드이고, 전체 네트웍은 별 영향을 안 받는게 아닌가요?
  • @drjoon
    invalid 가 되는지 안되는지는 미리 알 수가 없고, 코드를 돌려봐야 알게 됩니다. 주소를 가지고 필터링을 하려해도, 코드내에서 주소를 컨켓트해서 돌리면, 코드를 실행해보지 않고서는 결과를 알 수 없다는 거죠. 결국 모든 채굴 노드가 전부 이 검사를 하다 시간 다 보낸다는 겁니다.
  • ?
    @atomrigs

    1. 컴퓨팅 리소스를 잡아먹는 sha3 해시함수를 루프문으로 마구 돌린다음, 마지막에 소프트포크에 의해 invalid 하게 된 DarkDao.splitDAO() 펑션을 실행하면 전체 실행이 무효가 되고 이 콜은 에러처리됩니다.

    2. 그러나 이 때 보통같으면 개스가 부과되어서 공격자가 엄청난 비용을 물어야 되는데, 이 경우는 공격자에게 개스를 물릴 수가 없습니다. 왜냐하면 개스를 물리려면, 이 트랜잭션을 블럭체인에 올려야 되는데, 이렇게 되면, 소프트포크를 업데이트 하지 않는 노드는 이 트랜잭션을 valid 하다고 판단할 것이고, 이렇게 되면, 소프트포크를 업데이트한 마이너의 데이타와 충돌이 생깁니다.



    1번에서, 루프문을 모든 노드들이 다 실행한다? -> 정답이겠군요?

    2번에서, 소프트포크 "한 노드" vs "안 한 노드" 대결하면, "한 노드"가 훨씬 많으니 몇 블럭 정도는 혼란이 생길 수 있지만, 시간 지나면 정상을 찾아가는 것 아닌가요?

     

    그렇게 되면, 공격자가 이더를 다 소모해버리는 결과가 되어서 DAO는 폭망이군요.

     

    그럴 경우 개스 비용으로 소모된 이더는 마이너에게 돌아가나요?

  • @drjoon
    개스비용은 다오에서 나오는게 아니고, 그 명령을 실행시킨 공격자가 물어야 합니다. 따라서 개스가 차지되면 공격을 할 수가 없습니다. 소프트포크하에서는 이 개스비를 물릴 수가 없다는 것이 문제죠. 하지만 하드포크를 하면 개스비를 물리게 되고, 공격자가 그 비용을 감당해야 하니, 공격을 할 수가 없습니다.
  • ?
    금방끝날문제는 아닌둣
  • ?
    잘 읽었습니다.~
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 제목 추천 수 조회 수 글쓴이 날짜
5015 이더가 0.0142 까지 하락 했었군요. 아깝네요. ,좀 담아둘껄..   하드포크 이슈 때문에 떨어진 걸까요?     지난번에 0.0155에 좀 담아서 0.023 부근에 팔아서 꽤 짭짤 했는데,     또 하락하니 지난번 생각이 나서 안타까운 마음이 드는군요.      최소... 5 0 2595
코인캐는코쟁이
2016.07.07
이더리움은 트랜잭션 검열이 거의 불가능하다? 지난주에 다오사태를 해결을 위해 제안된 소프트 포크 솔루션이 DoS 공격 취약점하다는 점이 발견되어 포기를 했었습니다. 제안된 소프트 포크 솔루션의 주 목적이 해커가 가진 주소가 이더를 움직이는 새로운 트랜잭... 16 16 6461
atomrigs
2016.07.06
5013 [Coinone] 힐러리 클린턴: "공공 서비스에 블록체인 도입하겠다" 7월 1주차 힐러리 클린턴: &quot;공공 서비스에 블록체인 도입하겠다&quot;   지난주 초, 최저가 $620에서 시작한 비트코인은 연일 상승세를 이어 가며 순조로운 흐름을 보였습니다. 그러나 어제 아침, 저항선 $700선을 간신히... 2 file 1 3529
Coinone
2016.07.04
5012 폴리닉스 질문요  이번에 다오문제로 이더는 당분간 횡보 할듯해서 전량 매도후 빗코로 갈아탔는데 적중했네요 잘 되면 다오 손해도 벌충될꺼 같아요 그런데 이더를 다시 사고싶은데  한국은 비싸기도하지만 원하는 물량 사기도  힘들... 2 0 2528
코람데오
2016.07.03
5011 해외 거래소 질문드립니다 한국에서 비트코인을 구입한 후 해외 거래소에 비트코인을 보냈을 경우 해외 거래소에서 비트코인 판매와 구입이 가능할까요? 실제 출금은 하지 않고 비트코인을 받아놓고 달러 혹은 위안화로 바꿔놨다가 다시 비트코... 1 0 2910
cozicozi
2016.07.02
5010 블록체인 기사  괜찮은 국내 기사가 있어서 링크드립니다. 스타더스트님 사례도 있네요.. http://m.huffpost.com/kr/entry/10727922#cb 3 3526
호오라
2016.07.01
5009 이게 저의 폴로닉스 주소인가요?(비트코인) 목표는 단 하나입니닷 빗썸에서 산 비트코인을 가지고 폴로닉스로 보내어 그걸로 이더리움/알트코인을 구입하고 시세로 이익일 본후 비트로 교환하여 다시 빗썸이나 코인원으로 보낼 예정입니다만 사진에 나온것이 폴... 3 0 3086
leon43257
2016.07.01
5008 steemit 코인 현재 상황이 어떤지요? 오늘 보니 조금 시세가 오르긴 한것 같은데... 장기적으로 다른 분들은  어떻게 보고 계시는지요?   11 0 4976
바람마다
2016.06.30
5007 외국 거래소에서 자국 은행계좌 없이 비트코인 매매가 가능한가요? 예를 들면, 폴로에서 미국계좌없이 비트코인을 달러로 팔 수 있는지, 또는 반대로 그 달러로 다시 비트코인을 살 수 있는지 궁금합니다. 마찬가지로 크라켄에서 유로로 거래소 계정으로만매매가 가능한지도요. 가능하... 2 0 4347
동양무술
2016.06.30
5006 1.5:100 다오 구입자는 억울하다는 내용을 올릴까 합니다  영어동냥을 해서 글을 만들었습니다.  회원 여러분들의 사랑의 지적질을 기대해 봄니다 쉽지는않겠지만 천개나 뺏기는데 가만있을 수만 없네요 ㅠㅠ 이번에 DAO를 1.5:100비율로 이십만개를 구입한 구매자입니다. DA... 18 0 4419
코람데오
2016.06.30
5005 이더리움 다오 하드포크 프로토타입 코드 비탈릭이 제시한 하드포크 시험 코드가 pyethereum에 올라왔네요. https://github.com/ethereum/pyethereum/commit/611252b630981a93bd348cc3ed155a75ad71158b     def initialize(self, parent):         # DAO fork... 8 1 5042
atomrigs
2016.06.29
5004 안녕하세요 초보자 질문 드립니다 안녕하세요 궁금한것이 있어 질문드립니다 지금 현재 나노풀에서 채굴중인데 reported hashrate 항목이 궁금하여 질문합니다 caculated hashrateㄴ는 0이고 reported hashrate 부분만 그래프가 움직이는데 정상인지 ... 2 0 3394
중구가시키드나
2016.06.29
5003 이더리움 소프트포크 취소 마이너들의 동의로 표준시 6월30일 적용예정이던 소프트포크가 취소될 것 같습니다. 그 이유는 DOS 공격이 성공할 확률이 높아서라고 합니다. 풀과 마이너들이 소프트포크 투표를 다시 리젝트해달라는 메시지가 공식 ... 11 2 5501
atomrigs
2016.06.29
5002 중국 거래소 okcoin.cn에서 돈을 예치하는 방법 아시는 분.. okcoin.cn에서 계정까지 다 만들고 중국 건설은행 계좌 등록까지 다 마쳤습니다. 그리고 deposit 하는데 도대체 여기서부터 진도가 안나갑니다. 아래 사진에 있는 은행으로 입금 하면 되는 건가요?  한문을 몰라서 은... 2 file 0 3721
베러댄
2016.06.28
5001 [왕초보]미스트 정말 어떻게 해야 할런지 모르겠네요.... 안녕하세요? 또 다시 질문드리러 왔습니다. 도대체 미스트가 왜 이러는지 모르겠습니다. 일단 미스트로 마이월렛을 통해서 송금해서 입금하는 것 까지는 확인했습니다. 1. 상황  1) 이전에 keystor는 짜증이 나서 전... 9 0 2037
쿠당코당
2016.06.28
5000 [대왕초보]미스트관련 초보적 질문 다시 드립니다. 욕먹을 생각하고 모르는 것을 여쭤봅니다. 제가 혼자 마이닝 하다가 송금이 안돼서 10이더를 날려 먹은 놈이라...이해해 주셔요^^ 현재 상황입니다. 1. 마허플에서 코빗 송금=&gt; 확인 안되고 있음. 2. 마허플에서 마이... 4 0 1661
쿠당코당
2016.06.27
4999 필리핀 비트코인 atm기기로 출금해 보신분들 계시나요??? 아래 기사를 보면 우리나라에서 비트코인 사서...  필리핀 (coins.ph) 거래소로 비트코인 보내고... ATM기기에서 바로 출금 한다는데...  현지 통장 없이도 되나요??? 고수님들 부탁드립니다~~ 필리핀銀 ATM 450곳서... 1 0 5897
비트가이
2016.06.27
4998 Ccnix 거래소 개발하셨던분? 찾습니다.쪽지좀 주세요 0 1378
JjangGa
2016.06.27
4997 [코인원] 英 EU 탈퇴: 비트코인 가격 롤러코스터 6월 5주차 英 EU 탈퇴: 비트코인 가격 롤러코스터 지난주 비트코인은 최고가-최저가 대비 $214의 큰 변동 폭으로 롤러코스터 장세를 연출했습니다. 지난 18일, $780으로 2년 6개월 만에 최고가를 경신한 비트코인은 ... 2 file 1 2485
Coinone
2016.06.27
4996 이더리움 소프트 포크 합의 성공 다오에서 이더를 움직이는 트랜잭션들을 막는대신, 소수의 주소(화이트리스팅)만 허용해서 이더를 원래의 주인에게 돌려줄 수 있게 하는 것을 가능케 하는 소프트 포크가 채굴자들의 동의를 얻어서 통과되었습니다. ... 5 file 6 5680
atomrigs
2016.06.27
목록
Board Pagination Prev 1 ... 908 909 910 911 912 913 914 915 916 917 ... 1163 Next
/ 1163
default debug random = 0 / type = READ / detected = READ