블록체인 네트워크를 공격할 수 있는 방법은 어떤것이 있나요?
블록체인 네트워크를 공격할 수 있는 방법들이 여러가지가 있을 것 같은데요
어떤 방법들을 사용해서 네트워크에 공격을 가할 수 있는지 알고 싶습니다.
블록체인 네트워크 차원의 공격에는 도스 공격, 시빌 공격, 이클립스 공격, 라우팅 공격 등이 있습니다. 우선 첫 번째로 서비스 거부(DoS) 공격이 있습니다. 도스 공격에서 공격자들은 일시적으로 과도한 스팸 트래픽을 블록체인 네트워크에서 발생시킴으로써 블록체인 네트워크에 과부하를 일으켜 트랜젝션의 처리를 장시간 지연시키거나 마비를 불러오게 할 가능성이 있습니다. 하지만 기본적으로 블록체인 네트워크는 노드 간의 직접적인 연결로 이루어진 탈중앙화된 네트워크이고 보통 네트워크 상에서 트랜젝션 수수료를 부과하고 있으므로 이러한 공격을 성공시키기에는 쉽지 않다고 할 수 있습니다.
다음으로 두 번째 시빌(Sybil) 공격이 있습니다. 이 공격은 블록체인 네트워크 상에서 실제로는 소수의(또는 단일한) 노드이지만 자신이 통제하는 임의의 악의적인 노드를 다수 생성하여 대규모 노드 그룹을 만들어 내어 블록체인 네트워크를 장악함으로써 마치 다수가 동의하는 거래 내역인 것처럼 다른 노드에게 악의적인 거래 내역을 전파하는 공격 방법이라고 할 수 있습니다. 그리고 이러한 공격을 방지하기 위해서는 신원이나 평판을 확인하는 시스템을 동원하거나, POW나 POS 합의 알고리즘에서와 같이 연산 파워나 스테이킹 수량 등을 확인하는 방법 등을 활용할 필요가 있겠습니다.
그리고 세 번째 이클립스(Eclipse) 공격이 있습니다. 이 공격은 공격 대상이 되는 정직한 노드와의 연결을 독점하고 다른 노드로부터의 정보 수신을 차단하는 네트워크 공격이라고 할 수 있습니다. 이렇게 되면 예를 들어 공격 노드인 A가 공격 대상 노드인 B와 거래를 한다고 할 때 B를 전체 네트워크로부터 격리시킨 다음 1BTC를 전송하는 정상적인 트랜젝션을 보여준 후 그 대가를 B로부터 수령하고, 다시 전체 네트워크 상에 존재하는 C에게 1BTC를 전송할 수 있게 됨으로써 이중 지불 공격이 성공하게 됩니다. 이 공격은 공격 대상 노드와 네트워크 간의 연결을 가로 막고 독점하는 것이 필요한데 이것은 공격자가 보낸 IP주소를 자신도 모르게 저장하고 있음으로 인해서 가능해 집니다. 이러한 공격을 방지하기 위해서 오프라인 상에 네트워크 접속시 안전한 IP 주소를 저장해 두는 방법이 있지만 완전하게 예방하기에는 힘들 수가 있습니다.
끝으로 네 번째 라우팅(Routing) 공격이 있습니다. 이 공격은 블록체인 네트워크 상에서 노드들의 연결 구조를 파악하여 중간 경유 지점 중 중요한 지점들을 차지함으로써 네트워크를 나누는 것으로부터 시작됩니다. 그 다음 분할된 네트워크의 두 부분 사이에 위치하여 중간에서 전파되는 트랜젝션을 가로챈 다음 거래 내역을 위, 변조하고 다시 그것을 전파함으로써 네트워크를 공격하게 됩니다. 이러한 공격을 막기 위해서는 노드들이 서로 연결된 네트워크의 구조를 지속적으로 바꿔나가는 것이 현재로서는 가장 좋은 방법이라고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.
안녕하세요. 블록체인 네트워크 공격 방법에 대하여 답변드리겠습니다.
블록체인 네트워크 공격은 단순 대량의 더미 트랜젝션 공격을 통해 블록체인 네트워크를 마비시키기도 하지만 대부분의 블록체인 네트워크 공격(해킹)은 구조적 취약점을 노린 이중지불(51%) 형태로 시행하게 됩니다.
트랜젝션 공격은 시행하는 측의 비용적 부담이 커서 잘 시행하지 않습니다.
이중지불이란?
동일할 암호화폐로 한번의 거래로 두 번이상 거래되는 현상을 말합니다.
즉, A가 1Aha를 B와 C에게 동일한 거래 내역을 보내게 되고 승인 대기(팬딩) 상태 노드의 네트워크를 차단(거랜내역을 인근노드에게 전파 차단)하게 됩니다. 이때 51%의 블록체인 네트워크 점유율을 가지고 있는 A가 B에게 1Aha에 대한 거래완료 후 조작된 블록을 생산하게 하게 된 후 다시 네트워크를 연결하여 인근 노드에게 전파를 하게 됩니다.
이렇게 되면 49%의 점유율을 가진 노드에도 블럭이 생산(정상거래 완료) 되지만 51% 점유율을 가진 A가 더 높은 힘에 의해 49%의 점유율을 가진 쪽의 블럭은 취소되고 51%의 점유율을 가진 A쪽이 정상적인 블록으로 인정받게 됩니다.
이렇게 되면 이미 49%의 노드쪽의 거래도 완료되고, 차후에는 51%의 노드쪽의 거래도 완료되게 되어 이중지불 상태가 되게됩니다.
이클립스 어택(Eclipse Attack)이란?
악의적인 노드가 블록체인 네트워크에 허위로 작성된 전송 내역을 담긴 블록을 다수의 노드에게 검증 받은 것처럼 하여 타겟노드에 전파하여 이중지불을 발생하게 하는 공격을 말합니다.
IP주소와 노드 아이디를 기억하여 하나의 주소에서 여러 개의 키를 사용 하지 못하게 해야하만 가능합니다. 또한 내역을 전송 받을 시 인근 특정 노드와 연결(협력)하여 단독으로 처리하지 않도록 방지하여야 합니다.
마지막으로 시간을 이용한 공격시에는 노드의 서버 시간 동기화를 주기적으로 확인해야 합니다.
Nothing at Stake Attack란?
지분증명에서 사용되는 이중지불공격의 일종으로 일명 "손해보지 않는 공격" 이라는 뜻을 가지고 있습니다.
공격자가 이중지불을 발생시키기 위해 만든 기존 블록 외 새 블록을 추가로 전파하게 되면 포크가 발생하게 됩니다. 이때 블록 중 정상적인 블록을 인정받기 위한 투표를 실시하게 되고 두가지 중 하나만 인정 받아도 정상적인 거래가 성립됩니다.
즉, 약간의 팬딩(거래 대기)을 이용하여 두가지의 트랜젝션(거래)을 발생시켜 그 중 하나만 인정받아도 이익이 되는 상황을 말합니다.
쉽게 말해 A에 사용되는 거래를 위해 트랜잭션을 실행하고 팬딩이 시작되면 거래가 완료되기 전에 다른 거래를 B에게 거래를 신청합니다. 그런 경우 실제 거래가 두가지가 신청되고 둘 중 하나만 인정받아도 실제 거래가 성립되게 됩니다.
Nothing at Stake Attack에는 "Long Range Attack"과 "Short Range Attack"이 존재합니다.
Long Range Attack이란?
+ 포크된 상태에서 올바른 블록을 검증하기 위해 투표를 할 경우 많은 지분을 가지고 있는
노드가 거짓 블록을 옮바른 블록인 것 처럼 계속해서 체인에 연결되도록 조작하여
올바른 블록을 검증한 노드들에게 손해를 보게 하는 공격입니다.
Short Range Attack이란?
+ 포크된 상태에서 지분을 많이 가지고 있는 공격자의 결정에 의해 둘 중 하나의 블록만
인정받게 되기 때문에 지분이 상대적을 낮은 정상적인 노드들은 어느쪽이 올바른
블록인지를 알 수 없어 두 곳 모두 검증하지 않으면 손해를 보게 되는 상황을 말합니다.
리플레이 어택(Replay Attack)이란?
특정 블록체인이 하드포크(별도의 체인)되면서 발생되는 이중지불 공격의 일종입니다.
하드포크가 발생될 경우 동일한 거래내역이 분할된 다른 블록체인에도 존재하게 되어 두 체인에 동일 거래가 이루어지는 문제를 말합니다.
이를 방지하기 위해 원본 거래내역에 리플레이 방지 코드를 삽입하여 이중지불 문제를 해결하게 됩니다.
레이스 어택(Race Attack)이란?
일종의 이중지불 공격으로 동일한 거래사항을 2번 이상 각각 다른 곳으로 거래를 연달아 신청 후 트랜잭션 전파 되는 과정에서 충돌이 발생하여 하나의 거래는 성공하고, 나머지 거래는 취소되어 되돌아오는 구조적 문제를 이용한 공격입니다.
즉, 동일한 거래를 하나는 A와 B에게 연달아 전송하지만 해당 블록체인 시스템의 트랜잭션 처리 결함으로 A의 거래는 승인이되고, B의 거래는 취소되어 되돌아오게 되어 한번에 두가지의 거래가 승인되는 문제를 말합니다.
그라인딩 어택(Grinding Attack)이란?
PoS방식은 특정 기준에 부합할 경우 블록을 생성할 권한을 얻게 되는데 특히 지분이 많을 수록 블록을 생성할 권한 얻을 수 있는 확률이 높아지게 됩니다.
블록을 생성할 확률을 높이기 위해 변수를 미리 계산하여 블록을 생성할 확률을 얻을 때까지 전송내역을 누락시킵니다.
그런 후 예측한 근거를 통해 지분(코인)을 사전에 확보여 블록을 생성할 권한을 높이는 방법을 말합니다.
즉, PoS검증방식에서 블록을 생성할 권한을 얻기 위해 사용되는 공격입니다.
이를 방지하기 위해서는 코인토싱(Coin Tossing) 프로토콜을 사용하게 됩니다. (에이다가 이 방식을 사용하고 있습니다.)
뇌물수수 공격(Bribery Attack)이란?
노물수수 공격은 51% 공격의 일종으로 공격자는 블록체인 채굴권을 가지고 있는 자에게 뇌물을 주어 채굴권(블록생성)을 획득하게 되고 이를 통해 거짓 블록을 생성하여 정상적인 채굴자에게 피해를 주는 공격을 말합니다.
즉, 뇌물을 이용하여 다수의 블록생성의 권한을 획득 후 51%의 넘는 채굴권을 통해 공격자 의지대로 거짓 블록을 생성하여 해당 블록체인 네트워크에 피해를 입히는 공격을 말합니다.
이기적인 채굴(Selfish Mining)이란?
채굴한 블록결과를 다른 노드에게 공개하지 않고 일정기간 혼자만 알고 있다가 주변 노드에게 전파하는 행위를 말합니다.
이런 경우 다른 경쟁자가 채굴에 성공했다 하더라도 먼저 생성된 블록이 인정되게 되기 때문에 정상 채굴자들의 전력을 낭비하여 전체 블록체인 네트워크의 채산성을 방해하는 행위를 말합니다.
따라서 블록체인 네트워크의 정상적인 운영을 방해하는 악의적인 행위로 볼 수 있습니다.
< 그 외 공격 방법 >
더스팅(Dusting)이란?
아주 작은 단위의 암호화폐를 보내 상대편의 사용처를 추적하여 해당 정보를 얻음으로써 개인활동 정보를 획득하여 익명성을 저해시켜 행위를 말합니다.
즉, 블록체인의 특징인 "기록"을 추적할 수 있기 때문에 상대편의 트랜잭션을 정보를 추적하여 사용내역을 확보하고 이로 인해 개인활동에 대한 정보를 수집하게 됩니다.
따라서 개인정보가 노출될 수 있습니다.
더스팅 공격은 트렌젝션의 기록을 추적하는 방식이기 때문에 익명성을 보장하는 다크코인을 활용하여 추적을 방지할 수 있습니다.
다중서명 지갑 해킹(Parity's Multi Signature Wallet) 이란?
멀티시그를 사용하는 지갑의 컨트렉트 기술의 패리티 보안 취약성을 이용해 권한을 탈취하는 행위를 말합니다.
실제 사례로 이더리움 블록체인에서 해커가 다중서명 기능의 패리티 보안 취약점을 이용하여 권한을 탈취 후 일부코드를 삭제하여 약 50만개(약 1,685억원) 이더리움이 사용불가 상태 발생(강제동결)하기도 하였습니다.
감사합니다.