닫기

기초강좌 읽기

읽기

KEEP!T 블록체인 상식사전: 블록체인 입문을 위한, 엄선된 필수 용어사전(네트워크 어택, 보안 프로토콜) [1]

작성자:     작성일시: 작성일2018-02-20 15:05:52    조회: 488회    댓글: 1
 

1. 네트워크 어택- 블록체인 레벨의 공격

 

51% 어택 (51% Attack): 가장 널리 알려진 공격이면서 가장 강력한 방식이다. 해커가 합의 의결권의 51% 이상을 점유할 경우 크게 3가지의 공격이 가능해진다. 첫째, 51% 점유기간동안 일어난 해커 본인의 전송 내역을 뒤집어 이중 지불을 할 수 있다. 둘째, 특정/모든 전송이 승인 받지 못하게 할 수 있다. 셋째, 특정/모든 채굴자가 확정 블록을 채굴하지 못하게 할 수 있다.

 

51% 이상의 의결권을 점유한다고 하더라도 할 수 없는 일들이 있다. 첫째, 타인의 전송 내역을 그들의 협조 없이 뒤집을 수는 없다. 둘째, 블록당 생성되는 보상 코인의 수를 바꿀 수는 없다. 셋째, 세상에 없던 코인을 새로 발행하거나 타인의 코인을 임의로 자신에게 송금할 수는 없다. 위와 같은 공격을 방어하기 위해서는 구성원이 풀노드를 구성해야 한다. 풀노드가 아닌 라이트노드의 경우 위와 같은 공격에도 피해를 입을 수 있는데, 이는 라이트노드가 특정 채굴자나 풀노드를 신뢰해야하기 때문이다.

 

전송 내역을 뒤집는다는 것은 해당 전송 내역이 없는 새로운 체인을 만들어 채굴을 지속해 가장 긴 메인 체인으로 만든다는 것을 말한다.

 

잃을게 없는 문제 (Nothing at Stake Attack): 지분 증명(Proof OF Stake, POS) 방식의 코인에 대해 감행할 수 있는 공격 방식이다. 블록체인 포크(fork)가 발생했을 때, 지분 증명 코인 채굴자의 우월전략은 모든 체인을 동시에 채굴하는 것이다. 대부분의 채굴자가 모든 체인을 동시에 채굴할 경우 지분 증명 코인은 이중 지불 공격에 취약해진다.
예를 들어 공격자는 본인의 코인을 타겟에 지불 한 뒤, 해당 지불 내역이 없는 새로운 체인을 임의로 포크해 만들어나갈 수 있다. 81% 이상의 지분이 메인체인과 공격자가 포크한 체인을 동시에 채굴하는 데 쓰일 경우, 공격자는 10%의 지분만 가지고도 포크한 체인을 메인체인으로 만들 수 있다. 공격자(10%)와 이중 채굴자(81%)의 합이 91%, 공격자를 제외한 채굴자의 합이 90%이므로, 이는 51% 어택에 준하는 위협이 된다.

 

롱레인지 어택(Long-Range Attack): 먼 옛날의 블록부터, 최대로는 제네시스 블록(블록체인 최초 블록)부터 시작하는 새로운 체인을 메인체인으로 만들어 이중 지불을 하고자하는 공격이다. 이와 같은 공격은 지분 증명 방식일 경우 적용이 가능하다. 지분 증명의 특성상 새롭게 블록을 계산해 이어 붙이는 것은 어려운 일이 아니므로, 소규모의 지분만 가지고도 평균 블록 생성 속도보다 빠르게 이어 붙일 수 있다. 포크한 체인이 메인체인보다 길어져 메인체인으로 인정되면, 롱레인지 어택은 성공한다.

 

그라인딩 어택(Grinding Attack): 랜덤 변수를 생성해 슬롯 리더(slot leader)를 선출하는 지분 증명 코인들에 대한 공격방식이며, Stake Grinding Attack이라고도 불린다. 슬롯 리더를 선출하기 위한 랜덤 변수를 생성하기 위해 블록체인의 헤더와 전송 내역을 이용하기도 하는데, 이 경우 마지막 블록 생성자가 미리 랜덤 변수를 계산해볼 수 있게 된다. 간단하게는 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락시키거나 포함시키는 것과, 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.

 

이클립스 어택(Eclipse attacks): 하나의 노드를 대상으로 행하는 네트워크 공격이다. 블록체인 네트워크에서 노드들은 서로 다른 노드들과 통신을 하며 각자의 장부 내역을 확인 받는다. 만일 특정 노드가 통신하는 다수의 노드가 공격자의 관리 하에 있으면, 해당 노드에 대한 이클립스 어택이 가능하다. 공격자가 허위전송내역을 담은 블록을 마치 다수에게 확인 받은 것 처럼 타겟 노드에 전파시켜, 이중 지불 공격을 할 수 있다.

 

뇌물 수수 어택(Bribery Attack): 공격자와 채굴자가 뇌물과 같은 모종의 이해관계로 연합하여 행하는 네트워크 공격이다. 공격자의 목표는 채굴자를 이해관계로 묶어 51% 어택을 가능하게 하는 것에 있다. 작업 증명 코인의 경우 채굴자가 일정 이상의 지분을 가지고 있어야할 의무는 없기 때문에, 채굴자는 51% 어택으로 인한 가격 하락 리스크에서 자유롭다. 따라서 뇌물이 채굴자의 이해관계를 만족시켜줄만큼의 규모를 가진다면, 이 공격 방식은 의미를 가진다.

 

이기적 채굴(Selfish-mining): 이기적 채굴자가 채굴한 블록을 전파시키지 않고 있다가, 최대한 늦게 내보내는 채굴 전략을 뜻한다. 전파시키지 않는 동안 다음 블록 해시 문제를 미리 풀어봄으로서 채굴 확률을 높일 수 있다. 이러한 채굴 전략은 작업 증명 코인에서 두드러지며, 다른 정직한 채굴자에 비해 높은 수익을 낼 수 있다. 이는 전체적인 블록체인의 성장을 더디게 만들기 때문에 네트워크 어택의 범주에 속한다.

 

2. 네트워크 어택: 사용자 레벨의 공격

 

레이스 어택(Race Attack): 가장 흔히 알려져 있는 사용자 레벨의 공격 유형이다. 공격자는 서비스를 제공받기 위해 지불한 코인을 다시 한번 본인의 지갑으로 전송한다. 이 경우 서로 다른 전송 내역 중 하나만 승인되어 블록에 기록되는데, 만일 본인 지갑으로 전송되는 것이 승인될 경우 공격이 성공한다. 이 공격이 성공하기 위해서는 타겟(서비스 제공자)이 공격자의 0승인(confirmation)상태를 믿어야 한다.

 

핀니 어택(Finney Attack): 레이스 어택을 조금 더 발전시킨 공격 유형이다. 이 공격을 위해서는 공격자가 직접 채굴을 해야 한다. 공격자는 채굴에 성공했을 경우, 생성할 블록에 본인 코인을 본인의 지갑으로 보내는 전송 내역을 포함시킨다. 공격자는 이 블록을 네트워크에 전파시키지 않고 기다린다. 그동안 공격자는 본인 지갑으로 보내는 코인을 이용해 타겟과 서비스 거래를 시도한다. 이 때 타겟이 해당 코인의 또 다른 0컨펌 내역이 있는지 확인(레이스 어택 방어)하더라도 공격자의 의도를 파악하기 어렵다. 타겟이 0컨펌 내역을 믿고 서비스 거래를 완료하면, 공격자는 본인의 블록을 네트워크에 전파시킨다. 공격자 본인의 지갑으로 보내는 내역은 1컨펌이 되고, 타겟과 거래한 내역은 여전히 0컨펌이므로 이후 타겟과의 거래내역은 취소 된다.

 

핀니 어택은 레이스 어택보다 강력하지만, 공격자가 어느정도의 리스크를 가진다. 만일 공격자가 본인의 블록을 네트워크에 전파시키기 전에 제 3자가 블록을 채굴해버릴 경우 핀니 어택은 실패한다. 이 경우 공격자는 블록 채굴 보상만큼의 손실을 입게 된다.

 

벡터76 어택(Vector76 Attack): 1 승인 상태를 믿는 타겟에 대한 공격 유형이다. 이 공격 역시 공격자가 직접 채굴을 해야 한다. 공격자는 채굴에 성공했을 경우, 생성할 블록에 본인의 코인을 타겟에게 보내는 전송내역을 포함시킨다. 공격자는 이 블록을 네트워크에 전파시키지 않고, 제 3자가 블록을 채굴할 때까지 기다린다. 제 3자의 블록에는 공격자->타겟으로의 전송 내역이 포함되지 않는다. 제 3자가 채굴에 성공하는 즉시 공격자는 타겟에 본인 블록이 생성되었음을 알린다. 타겟이 공격자의 블록을 제 3자의 블록보다 먼저 수신하고 이를 믿게 될 경우, 공격자의 전송 내역은 1승인 상태가 된다. 한편, 블록체인에서 공격자의 체인과 제 3자의 체인은 포크 상태가되어 경쟁하게 된다. 만일 공격자의 체인이 패배하여 제 3자의 체인이 메인체인이 되면, 공격자의 전송내역은 포함되지 않았으므로 1승인 상태였던 전송내역은 무효가 된다.

 

공격자 입장에서 백터76 어택은 핀니 어택의 헷지 전략이라고 볼 수 있다. 공격자의 체인이 승리하여 공격이 실패하더라도, 공격자는 채굴 보상을 지급받을 수 있다. 공격자의 체인이 패배할 경우, 이번에는 채굴 보상을 받을 수 없지만 타겟에 대한 공격은 성공한다. 공격 성공으로 인한 이익이 채굴 보상보다 클 경우, 공격자는 어떤 경우에도 이익을 취할 수 있다.

 

리플레이 어택(Replay Attack): 포크가 일어나 블록체인이 분리되더라도 지갑 전송내역이 모든 체인에 동일하게 적용되는 것을 의미한다. 이를 악용하면 타겟에 대한 공격이 가능하다. 먼저 공격자는 악의적으로 포크한 체인을 통해 타겟에게 코인을 전송한다. 타겟은 새롭게 코인을 받았다 생각하고 이 코인을 다른 지갑에 전송한다. 이 때 타겟의 코인은 메인 체인과 포크 체인 모두에서 전송되게 된다. 반면 공격자는 메인 체인을 통해 코인을 전송하지 않았다. 이후 포크체인이 누락되면, 타겟 입장에서는 보낸 코인만 있고 받은 코인은 없게 된다.

 

3. 보안 프로토콜

 

지분 증명(Proof Of Stake): 지분 증명은 작업 증명(Proof Of Work)에 비해 51% 어택에 더 강한 합의 프로토콜이라고 평가받는다. 51% 어택과 같은 블록체인 레벨의 공격이 성공하면 네트워크 신뢰성이 떨어지고, 이는 높은 확률로 코인 가격 하락으로 이어진다. 지분 증명 채굴자는 필연적으로 해당 코인을 보유해야하기 때문에 본인 지분 가치의 하락이라는 리스크를 안고 공격에 참여해야한다. 반면, 작업 증명의 채굴자는 해당 코인을 보유할 의무가 없기 때문에 51% 어택 위험에 상대적으로 더 노출되어 있다.

 

위임 증명(Delegated Proof Of Stake): 위임 증명은 잃을게 없는 문제(이중 채굴)과 그라인딩 어택에 대해 어느정도 내성을 갖는 합의 프로토콜으로 평가 받는다. 이중 채굴의 경우, 상대적으로 채굴자의 수가 적기 때문에 네트워크 구성원들이 감시하기 용이하다. 일부 위임 증명의 경우, 위임자(delegator/witness)들이 번갈아가며 균일한 블록 생성 기회를 갖기 때문에 그라인딩 어택에서 자유롭다.

 

캐스퍼(Casper): 캐스퍼는 이더리움이 지향하는 합의 프로토콜이다. 이 프로토콜은 지분 증명 채굴 역시 작업 증명처럼 기회비용을 갖도록 만든다. 작업 증명 채굴자는 잘못된 체인을 선택했을 경우 보상 없이 전기세만 소진된다는 기회비용을 갖는다. 캐스퍼의 경우 포크가 일어났을 때, 채굴자가 잘못된 체인을 선택할 경우 (혹은 선택한 체인이 경쟁에서 패배할 경우) 네트워크 합의에 따라 지분이 삭감된다. 따라서 채굴자가 이중 채굴을 선택할 경제적 유인이 줄어들게 된다. 다만, 지분 삭감은 과도한 패널티라는 의견도 있다.

 

코인 토싱(Coin Tossing): 조작 불가능하고 믿을 수 있는 랜덤 변수의 생성을 위한 프로토콜이며, 카르다노의 우로보로스 프로토콜이 채택한 방식이다. 코인 토싱은 불특정 다수의 참여자가 서로의 정보를 공평하고, 배신의 위험 없이 안전하게 교환할 수 있게 하는 프토콜이다. 이를 랜덤 변수 생성에 적용하면 네트워크 참여자가 각자가 만든 랜덤 변수를 안전하게 교환할 수 있게 된다. 랜덤 변수가 무결하고, 조작이 불가능하면 지분 증명 코인은 그라인딩 어택으로부터 자유롭다.

 

타임스탬프(Time Stamp): 롱레인지 어택을 막기 위해 지분 증명 코인에 적용된 변수이다. 블록 생성자는 블록의 해쉬 계산을 위해 타임스탬프(당시 시간)을 사용한다. 공격자가 만들어낸 포크 체인이 메인 체인을 따라잡더라도, 채굴자는 포크 체인의 공격을 타임스탬프를 보고 방어할 수 있다.

 

[출처] https://steemit.com/coinkorea/@keepit/1mc2k-keep-t

  추천 0   비추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 밴드로 보내기

댓글목록

 

전체: 118개 (1/4페이지)
기초강좌 목록
제목 글쓴이 조회 추천 비추천 날짜
  글 작성하고 후원을 받아보세요!! 106 0 0 03-23
ICO를 위해선 반드시 필요한 마이이더월렛 생성법!! 72 0 0 06-12
거래소 선택을 위한 팁 [1] 180 2 0 06-01
영상으로 쉽게 이해하는 암호화폐 기초 강의-1 입니다. 147 0 0 05-24
마진거래 A TO Z :: 마진 거래 용어 알아보기(1) [2] 478 1 0 05-07
가상화폐에 처음 입문하신 분들이 꼭 알아야 할 5가지 사실 [8] 604 0 0 03-30
한국과학기술기획평가원 KISTEP 에서 발간한 블록체인 문서입니다. [1] 222 0 0 03-23
디지털 재화의 소유권과 블록체인 ( 블럭체인 초보 상식) [8] 239 1 0 03-07
>>  KEEP!T 블록체인 상식사전: 블록체인 입문을 위한, 엄선된 필수 용어사전(네트워크 어택, 보안 프로토콜) [1] 489 0 0 02-20
약 8원하는 추천 코인 RDD 코인 [3] 556 0 1 02-19
NEO 보유시 GAS 자동 지급 거래소 [4] 276 0 0 02-18
Kucoin 보유시 일일 배당수익 [1] 261 0 1 02-18
비트렉스에서 저가 코인 찾기 [1] 314 0 0 02-17
비트렉스에서 빠르게 사고 파는 방법 258 0 0 02-17
쿠코인 배당 않나올때 조치방법 [1] 227 0 0 02-17
100원 미만 알트코인 소개 321 0 0 02-16
쿠코인(KCS) 구매방법 195 0 0 02-16
배당주는코인 KuCoin Shares (KCS) 소개 179 0 0 02-16
코인익스체인지에서 0.1원, 1원 코인 사는 방법 [1] 299 1 0 02-05
0.1원, 1원짜리 코인 살수 있는 곳 [1] 672 0 0 02-05
★암호화폐로 진정 미래를 여는 방법 (사견) [10] 374 1 0 02-02
마스터노드를 리눅스로 돌려보자 03 469 0 0 01-31
이더델타를 알아보자 [4] 509 0 0 01-29
ICO로 적자난 코인들 [19] 650 1 0 01-23
성공한 ICO 코인들 [14] 636 1 0 01-23
NEO 코인으로 돈버는 또다른 방법 [14] 426 0 0 01-22
처음 시작하시는 투자자들을 위한 암호화 화폐 투자 원칙(?)입니다. [44] 843 9 0 01-18
2018년 1월 17일 오후 8시 20분 폭락 지속장 업비트/바이낸스 실시간 비교 [13] 278 1 0 01-17
마스터노드를 돌려보자 02 [8] 405 0 0 01-16
마스터노드를 돌려보자 01 [8] 374 0 0 01-15
코인 용어 속어사전(지속 업데이트) [34] 533 5 0 01-15
보고 따라만 하면 되면 바이낸스 거래소 사용법 총정리 [19] 352 2 0 01-15
Pos 지갑을 돌려보자 [24] 439 7 0 01-11
암호화폐(비트코인/알트코인) 투자/거래시 나오는 주요 용어 정리 [53] 480 12 0 01-11
해외 가상화폐 거래소 이용시 구글 OTP 사용법 [34] 460 14 0 01-09