traders_free custom_top_html:no
default debug random = 3 / 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
번호 제목 추천 수 조회 수 글쓴이 날짜
9435 BCH 기술적 분석입니다.   지지선이 무너져서 단기적으로 조정기간을 가질 것으로 예상됩니다.                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트... file 2 1304
땡글IN
2017.11.01
9434 비트코인 하드포크와 알트코인 시세... 참자ㅠㅠ   비트코인 골드의 지급 및 11월 중순 비트코인 실버 지급을 예상해서인지 암호화폐 관련 자금들이 대거 비트코인으로 쓸려 가는 느낌입니다.   비트코인 역대 최고가를 계속 갱신하고 있는 중인데... 이보다 더 상... 2 file 0 2494
태황담덕
2017.11.01
9433 코인베이스에서 비트코인 소유자들에게 segwit2x 배포한다고 메일왔네요 에어드랍이다 아니다 모르는분들 이 많은 것 같아서 뒷북올려봅니다 정확한 날짜랑 아시는분 계신가요?                 ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 ... 3 0 1510
브라운스틱
2017.11.01
9432 Bitshares 상장 소식       BitShares가 3 개의 거래소에 오늘 상장될 예정입니다.                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호... 2 file 0 1194
땡글IN
2017.11.01
9431 BTC]다시 돌아오렴 .. 버스 좀 탑시다...   담주 월욜까지 다시 돌아오렴 ... 나 좀 태우고 가라...         ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호화화폐 커뮤니티 땡... 14 file 0 2483
kenny001
2017.11.01
9430 안녕하세요 초보입니다. ㅎㅎ     이더 호재가 있어서 .. 계속 유심히 보다가 이더를 열심히 삿는데여 .   오늘 오후 6시부터 뭔가 있을듯하여서요..   과연 잘될런지..  그리고 요즘 제트캐쉬가  펌핑이 종종 되는데요? 무슨 이유라도 있는건가요... 2 0 730
긍정적인마인드
2017.11.01
9429 qtum 지갑 보내기 질문                         ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호화화폐 커뮤니티 땡글~ 땡글~ -----------------------------... 0 623
천공태자
2017.11.01
9428 이더 행사 일정 내일 맞는건가요   오후 6시라고 허던데 시차 때문에   아직 시간이 남았군요 홀딩중인데   음 고민중인데 다른분들은 어떤가요                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * ... 5 0 2606
방탄짱
2017.11.01
9427 비트렉스 기본 인증절차 안녕하세요. 아제라입니다.   비트렉스 기본 인증 받을때 CITY가 있고요. STATE OR PROVINCE이 있는데요. 시티는 도시니까 서울?이고 두번째꺼는 선택할 수가 있는데 여기서도 영어로 서울, 인천 이런식으로 되있는데... 1 0 856
아제라
2017.11.01
9426 <경>비트코인 전고점 720만원 돌파 <축> 조금전에 725만원을 찍었습니다. 이번주중으로 역사점 고점 720만원 돌파예상한 글을 쓴지 2일만에  고지를 점령했습니다~! https://www.ddengle.com/trading/3349349 자 다음 고지 800을 향하여 GOGO!              ... 5 0 2116
여수
2017.10.31
9425 품격있는 거래소     암호화폐에서 거래소의 힘은 막강합니다.  채굴자 거래소 개발자 지갑사이트(결제사) 이들이 막강파워를 가지는데 이중에서  핵심파워는 거래소와 지갑사이트로 봅니다.    이번 segwit문제도 채굴자들이 막강한 ... 3 0 1398
다현d
2017.10.31
9424 네오(NEO) 주도로 중국 암호화폐 시장이 재편성 되나?   네오(NEO), 중국 암호화폐 온체인 블록체인 아카데미 승인허가 http://www.unityinfo.co.kr/sub_read.html?uid=23507&amp;section=sc28   전 세계적으로 가상화폐가 이슈로 이번에 중국 당국에서 네오(NEO) 암호화... 4 0 2657
태황담덕
2017.10.31
9423 보통 트레이딩 컴은 cpu어떤거쓰시나요?     일단 연속 글작성 죄송합니다ㅠㅠ     비트렉스 5~6개 띄워놓고 하는데 음..콤퓨타가 똥인지 비트렉스 화면이   정지 되는군요;; 하단의 소켓 스테이터스= 슬로우(흰색) 으로 바뀌면서요ㅠㅠ     제 트레이딩 컴 ... 4 0 813
쳐키라웃
2017.10.31
9422 비트꼬인 ㅎㅎ 낼아침까지 730뚫을까요?   하드복구 공짜 코인의 힘으로 상승하는건지   안전 자산으로 생각 되어져서 인지 ㅎ   알다가도 모르겠네요 ㅎㅎ     730은 좀 그렇고 720?은 찍어줄런지 ㅎㅎ                           ------------------------... 16 0 1652
쳐키라웃
2017.10.31
9421 ㅋㅋㅋ 팔기만 하면 오르네요 모나코도 로켓타고 올라가고 ㅜㅜ 아 애증의 모나코 .. 마켓캡이 계속 올라가던데 .. 신호탄인가요 ?                     ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 ... 2 0 1290
휘리릭릭릭릭
2017.10.31
9420 네오, 퀀텀이 살짝 펌핑 되었는데 더 오를까요?   우리는 (아직) 괜찮다? ㅎㅎ   오케이코인 베이징(???), 홍콩에서 재개장하면서 퀀텀, 네오코인 만든 놈, 비트메인 관계자 등 참석했다고 되어 있네요.   저기는 뭐 베이징도 써 있고 그렇기는 한데, 듣기로는 오... 2 file 1 1910
태황담덕
2017.10.31
9419 비코 드디어 700 안착 성공하는 느낌이네요. 분위기가 잠시 솟았다 꺼지는게 아니라 오늘밤에는 안착 성공하는것 같네요.                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   ... 6 1 1379
초보초보
2017.10.31
9418 비트렉스 -> 빚섬(빚증가ㅋㅋ) 로 송금할때   어떤 코인이 제일 싸게 먹힐까요?ㅎ   현재 비트렉스엔 비트코인   약간잇는데   이것을  전송수수료 젤싼 코인으로 바꿔서 송금하는게 나을지 ( 환전수수료+전송수수료)   그냥 비트코인 그대로 송금(0.001btcㄷㄷ... 4 0 1021
쳐키라웃
2017.10.31
9417 두근두근 주말세일] 대비 총알 확보!!!   ETH/BTC/BCH/ZEC 모두 오늘 정리 완료!!!   두근두근 주말 세일 기다려 봅니다!!!                                 ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주... 39 file 0 3386
kenny001
2017.10.31
9416 DOGE, BCN 점점 가까워지나요?   0.00000003 BTC 차이까지 가까워졌습니다.   둘 다 가지고 있는데 흑.. 이러디마 ㅠㅠ                 ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판... 1 0 1175
신짜오
2017.10.31
목록
Board Pagination Prev 1 ... 687 688 689 690 691 692 693 694 695 696 ... 1163 Next
/ 1163
default debug random = 0 / type = READ / detected = READ