traders_free custom_top_html:no
default debug random = 0 / 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
번호 제목 추천 수 조회 수 글쓴이 날짜
6075 폴로 랜딩 - 장투, 급상승장 다들 알고 계신데 저만 몰라서 이제야 뒷북 글인지 모르겠네요 ㅎㅎ   코인 가격이 우상향으로 오른다는 전제를 두고 장투 하면서 코인수 늘이려면 무릅에서 사서 어께에 내리고 다시 허리부터 무릅사이에서 또 사고 ... 5 0 2406
신짜오
2017.06.10
6074 와우~ 근 1년반동안 한국프리미엄이 제일 낮은것 같네요. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 4 file 0 2301
로우앤하이
2017.06.10
6073 Bter에서 비트쉐어(bts) 폴로닉스로 인출 할려고 하는데 안되어서 문의드립니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 0 1049
저우로
2017.06.10
6072 거래 사이트 등급 올리기에는 단타가 최고네요. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 8 0 1493
모방랑자
2017.06.10
6071 빗썸에서 모네로 상장된다는 소문이 도는데요. 모네로 개인지갑은 어떻게 만드나요? 모네로 코어같은 프로그램 없나요?   모네로는 개인지갑에 어떻게 자산 보유하나요? 13 0 4788
채굴꿈나무
2017.06.10
6070 예전 코페이 지갑 지금은 없어진건가요? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 3 0 618
에버누리
2017.06.10
6069 플로닉스 계정 frozen 걸려서 2차인증까지 등록하고 해제 신청해놨는데 여전히 안풀리네요 플로닉스 계정 frozen 걸려서 2차인증까지 등록하고 해제 신청해놨는데 여전히 안풀리네요   따로 어디다가 신청해야할까요?   서비스 티켓은 신청했는데 3일이 지났는데도 아직 해결이 안되고 있습니다.   조언 부탁... 3 0 1231
에버누리
2017.06.10
6068 이클 드뎌 물 들어온것 같네요.... 오랫동안 이클 주목하면서 언제 진입할지 간보고 있었는데,.. 어제 2만100원정도에 2000만 질렀습니다. 아침에 일어나서 보니 새벽에 작업 한 번 들어갔더군요. 그리고 2만 아래로 떨어졌을대 2000만 더 지르려고 보... 64 7 16306
꿀맨
2017.06.10
6067 오늘 시장이 대체적으로 출발이 좋네요 느낌이 좋아서 이른 시간부터 모니터링중인데요. 아주 좋네요... 이런날 수익내야죠...ㅎㅎ   다들 오늘 저녁에 소고기 묵읍시다~~ 19 3 1780
꿀맨
2017.06.10
6066 영어 마스터분들 해석좀해서 알려주실수있나요??도움좀주십시요ㅠㅠ https://www.reddit.com/r/siacoin/comments/6er35v/what_we_are_doing_about_poloniex_withdrawals/   현재 제상황은 1. 폴로닉스에서 비트렉스로 시아코인을 출금했습니다      Txid가 있으나 시아코인 익스플로어... 6 0 1243
Re날7H
2017.06.10
6065 이더 상승중입니다. *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 7 1 2121
그루
2017.06.10
6064 bts 계속 상승중인데 조정들어간뒤 상승인가요? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 6 file 0 1648
철수찰스
2017.06.10
6063 이거 혹시 bittrex에서 해결하신분 있으신가요? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 0 858
샤리
2017.06.10
6062 DGB는 힘이 빠지고 BTS가 독주하네요 이거 뭐 알 수 없는 알트코인의 세상   BTS는 뭐길래 이렇게 오를까요 3 1 1966
CROCE1
2017.06.10
6061 미국거래소 말고 다른 거래소 추천좀 해주세요~ 미국 거래소가 맘에 안들어서요..   다른 알트코인 트레이딩 가능한 거래소 추천해주시면 감사하겠습니다 ㅠ 폴로에서 당한거 생각하면 OTL 5 0 1627
채굴꿈나무
2017.06.10
6060 IOU중인 유망 코인 3종 - PTOY, BAT, CFI 안녕하세요, steemit에 글을 쓰고 있는 David 입니다.   최근 들어 유망한 ICO들이 많이 생겨나고 또 금방 마감해버리기도 하는데요, 그런 아쉬움을 달래기 위해 IOU라는 거래 방식을 통해 이미 펀드레이징이 끝난 코... 3 1 3626
davidchoi
2017.06.09
6059 빗썸 코인 사용중? 으로뜨는 이유가뭘까요 아무대도 사용안한 이더리움 5개가 사용중으로 되있네요.. 혹시 이런분 계신가요?? 4 0 1818
장그미이이
2017.06.09
6058 aeternity ICO 참여하신분 계신가요? *** 답변 댓글이 있을 때 글 내용 삭제시 경고 없이 계정이 정지됩니다. *** *** 개인정보가 포함된 경우 혹은 불법적인 요소의 수정은 가능합니다.*** -----------------------------------------------------------... 2 0 1372
김쌍.
2017.06.09
6057 폴로닉스에서 비트렉스로 코인을보냈는데요 폴로닉스에선 txid가나오고 완료라고 뜹니다만 비트렉스에선조회가안되고  블록체인 인포에서조차 txid조차 조회가안됩니다 그럼누구한테 따져봐야하나요?? 콩글리쉬로 또 어딘가말해야겠는데말이죠 ㄷㄷ 10 0 2245
Re날7H
2017.06.09
6056 거래소 관련해서 참 어렵네요      저도 아직 모르는게 너무 많고 배워야하지만,    거래소를 은행의 개념으로 생각하시는 분들이 너무 많고   (얼마전에 채굴 시작하시는데 윈도우 어떻게 까냐고 시디 어디다 넣냐고 하시는 분도 계시는거 보면;;... 0 1037
lenity
2017.06.09
목록
Board Pagination Prev 1 ... 855 856 857 858 859 860 861 862 863 864 ... 1163 Next
/ 1163
default debug random = 0 / type = READ / detected = READ