암호화폐 보안(2) — 암호화폐 공격 방법은 무엇이 있나요?

Liam
StealthSolution
Published in
10 min readMay 19, 2022

안녕하세요, 리암입니다.

지난 번에 우리가 블록체인, 암호화폐 지갑과 관련된 기본적인 지식을 같이 알아보았습니다.

그러면 이제 본격적으로 보안에 대한 얘기를 해봐야겠죠??(자, 시작해봅시다!!)

기본적으로 블록체인은 탈중앙화(=기존의 중앙집권형 시스템에서 벗어남)를 추구하기에 중앙집권형 시스템에서 발생할 수 있는 보안 문제를 어느정도 해결할 수 있습니다. 특히, 중앙집권형 시스템에서 관리자의 실수나 도덕적 해이로 인해 발생하는 사고를 막을 수도 있습니다.

블록체인은 블록이라고 하는 관리 대상 데이터를 소규모 참가자들이 P2P 방식을 기반으로 생성된 체인 형태의 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고, 누구나 변경의 결과를 열람할 수 있게 만들어져 있습니다. 이와 같은 특성으로 공격을 하기 위해서는 51%의 해시 레이트(트랜잭션의 발생)를 가질 수 있어야 합니다. 이렇게 보면 이론적으로는 해킹이 불가능해보입니다. 왜냐면 이 51%의 합의를 위해서는 막대한 컴퓨팅 파워(=돈, 시간 등)이 들기 때문이죠. 이것을 조금 더 블록체인쪽의 단어로 표현해보자면 블록체인의 보안 수준은 네트워크를 지원하는 해시 파워의 양에 비례한다라고 할 수 있습니다. 채굴하는 사람이 많을수록, 채굴하는 하드웨어가 강력할 수록 블록체인에 대한 공격이 더 어려워 지는거죠.

그런데 최근 이러한 특성에도 불구하고 블록체인 보안에 관련한 뉴스들이 속속 나오고 있습니다. 이러한 뉴스들이 왜 나오는지를 알아보기 위해 우리는 블록체인에는 어떤 보안적 특징이 있는지, 어떠한 공격 방식들이 블록체인의 보안성을 위협하는지 자세히 알아볼 필요가 있습니다.

블록체인 보안 특징

  1. 합의 및 불변성

블록체인에서의 보안 특징 중 제일 중요한 것을 꼽으라 한다면 합의 및 불변성입니다. 합의는 합의 알고리즘에 따라 분산된 블록체인 네트워크 노드가 네트워크의 실제 상태와 트랜잭션의 유효성에 대해 합의하는 것을 말합니다. 불변성은 이미 확인된 트랜잭션의 변경을 방지하는 블록체인의 기능입니다. 합의와 불변성을 통해 블록체인 네트워크에서 데이터를 보호하기 위한 기본 틀이 만들어 집니다. 합의 알고리즘이 시스템의 규칙을 준수하고 관련 당사자들이 네트워크의 현재 상태에 동의하도록 보장하는 반면, 불변성은 새로운 데이터 블록이 유효한 것으로 확인된 데이터와 트랜잭션을 온전하게 유지합니다.

2. 암호화 기술

블록체인은 데이터 보안을 달성하기 위해 다양한 암호화 기술을 사용합니다. 특히 블록체인 내에서 ‘해시’라고 하는 출력 값을 얻기위해 ‘해싱(해시 함수로 많이 알려져있음)’ 이라는 암호화 방식을 사용하는데요 ‘해시’는 데이터 블록의 고유 식별자로 활용합니다. 각 블록의 해시는 이전 블록의 해시와 관련되어 생성되며, 이를 통해 블록은 서로 연결되어 블록체인을 형성합니다. 또한 블록 해시는 해당 블록에 포함된 데이터에 의존하므로, 데이터를 변경하려면 블록 해시를 변경해야 합니다.

3. 크립토 이코노믹스

암호화 기술 이외에도 크립토이코노믹스(Cryptoeconomics)라 알려진 개념이 블록체인 네트워크 보안을 유지하는 역할을 합니다. 크립토이코노믹스는 분산된 블록체인 시스템 상의 노드의 행위를 모델링하고 설명합니다. 크립토이코노믹스를 통한 보안은 블록체인 시스템 노드가 악의적이거나 잘못 행동하는 것보다 정직하게 행동할 때 더 많은 인센티브를 제공하는 개념에 기반합니다. 이는 위험과 보상의 균형을 만들어 단일 그룹이나 주체가 블록체인 네트워크의 대다수의 해시레이트를 점유해 합의를 와해시키지 못하도록 보안을 제공합니다.

그러면 이제 공격 방식에 대해서 알아볼까요?

블록체인 서비스 애플리케이션 단계에서의 공격

  1. 암호화폐 지갑 탈취 공격

블록체인 시스템에서 암호화폐는 블록체인의 분산원장에 분산되어 있습니다. 우리가 지난 포스팅에서 얘기했던 것처럼 암호화폐 지갑에는 암호화폐가 들어있는게 아니라 암호화폐의 주인임을 증명할 수 있는 증명서가 들어있죠. 따라서 암호화폐 지갑을 공격한다는 것은 시스템을 직접적으로 공격하는 것은 아니며 암호화폐 소유자의 개인 인증을 위한 비밀 키의 탈취를 통해 암호화폐의 정보를 위변조하는 개념입니다. 주로 지갑 소프트웨어에 랜섬웨어와 같은 악성코드를 감염시켜 특정 주소의 자산을 동결시키거나 각 지갑의 주소를 생성하는 비밀 키를 탈취하여 위조한 주소를 생성, 배포함으로써 공격대상이 보유한 암호자산을 다른 지갑으로 옮기는 등의 공격을 진행합니다.

2. 이중지불 공격

이중지불,, 두 번 지불한다 라는 거죠!? 보통 블록체인 합의 알고리즘이 각 트랜잭션을 처리하고 검증하는데 걸리는 시간 간격을 이용하여 공격을 수행하며, 블록체인 내부의 프로토콜이 하드포크 되었을 때 부득이하게 기존 체인과 신규 체인 간의 암호화폐 지갑 주소의 인증키 중복 현상을 이용하는 방법을 사용하기도 합니다. 이러한 이중 지불 공격은 P2P 네트워크의 노드 51%를 장악하는 방식으로 구체화되어 합의 알고리즘을 무력화시킬 수 있는 공격을 수행하게 됍니다. 참고로, 암호화폐의 대표격인 비트코인은 제3자의 개입 없이 이중지불 문제를 해결함으로써 원본 가치의 전달, 즉 디지털 정보가 화폐로서의 역할을 수행할 수도 있겠다라는 가능성을 열게 되었습니다.

3. 채굴 악성코드 감염

자주 발생하는 채굴 악성코드 감염 사례는 크립토재킹(crypto jacking) 입니다. 인터넷을 사용하는 일반 사용자가 자신도 모르는 사이 자신의 PC에 채굴 소프트웨어가 설치되어 감염된 PC가 특정 암호화폐를 채굴한 뒤 채굴된 암호화폐를 악성코드 유포자의 지갑으로 지속적으로 전송하게 하는 공격입니다. 이는 직접적인 금전적 피해보다는 컴퓨팅파워를 도난당하므로 컴퓨터의 성능저하를 유발할 수 있습니다. 유사하게 웹 크립토재킹도 있는데요 이는 특정 웹사이트에 악성 자바스크립트 코드를 심어놔 사용자가 웹사이트에 접속하는 순간 별도의 동의없이 소프트웨어가 설치되어 도용되다가 웹사이트에서 빠져나오면 채굴 도용이 중단되는 방식입니다.

블록체인 메인넷의 소프트웨어를 구성하는 스마트 컨트랙트 단계에서의 공격

  1. 재진입 공격

스마트 컨트랙트의 코드 중에서 재귀 함수에 의한 취약점을 이용하는 공격입니다. 쉽게 말해 암호화폐의 인출과 같은 거래를 신청한 뒤 이전 거래의 종료 이전에 동일한 새로운 거래를 다시 반복 요청하는 방식으로 UTXO 정보를 2번 사용하게 되는 상황을 악의적으로 발생시키는 개념입니다. 한 번의 거래가 합의 및 검증되는 시간적 간격을 이용하게 되면 이전 거래에서의 잔고 차감이 이루어지기도 전에 새로운 신청에 대한 잔고 확인이 실행되게 되고, 이전 거래에 의한 잔고 차감이 이루어지기 전인 현재의 잔고를 기준으로 다시 거래가 이루어짐으로써 이중거래가 발생하게 됩니다.

2. 리플레이 공격

블록체인 환경에서의 리플레이 공격은 하드포크된 기존 블록체인 시스템 내에서 유효성을 인정받은 트랜잭션이 새로운 블록체인 시스템의 스마트 컨트랙트에 입력되면 각각의 시스템의 인증키를 동일하게 사용하기 때문에 유효성을 인정받아 정해진 절차(송금, 출금)를 수행하게 되는 특성을 악이용하는 공격 방식입니다.(네 알고계시는 그 리플레이 공격이라고 생각하셔도됍니다)

공격자는 공격 대상이 하드포크되기 전의 기존 블록체인 시스템 내에서 거래를 수행하는 중간 단계에서 데이터를 가로챈 뒤 가로챈 원본 데이터 그대로를 별도의 복호화 과정을 수행하지 않은 채로 하드포크되어 새롭게 생성된 블록체인 시스템에서 재전송함으로써 사용자가 의도하지 않은 거래를 실행시킵니다. 이러한 공격이 수행되면 사용자가 원하지 않는 거래를 지속적으로 발생시킬 수 있어 정당한 거래를 할 수 없도록 만들며 사용하지 않은 자산을 의도적으로 낭비시킬 수 있습니다.

3. 잔고증액 공격

특정 블록체인 시스템의 스마트 컨트랙트에 암호화폐 잔액이 0이 아닌 경우에만 거래를 실행하는 조건이 있다고 가정할 경우, 공격자가 공격 대상의 계정 주소에 강제로 일정한 금액을 송금하여 잔액을 증가시킨 다음, 원래 실행할 수 없었던 거래를 강제로 실행시키는 공격 방식입니다.

블록체인 네트워크에 대한 공격

  1. 51% 장악공격

블록체인 시스템에 대한 공격 방식 중 가장 대표적인 공격 방식으로, 노드 해시파워의 51%를 장악하는 공격 방식입니다. 전체 참여 노드의 51%가 특정 거래 요청에 대하여 검증 및 승인이 있을 경우 해당 거래로 인해 생성된 블록은 정상적으로 유효성을 가진 블록으로 인정하는 원리를 이용합니다. 이 51%를 차지하기 위한 공격에는 시빌 공격(sybil attack)과 밸런스 공격(balance attack)이 있습니다. 시빌 공격 방식은 블록체인 네트워크 내부에 허위의 채굴 노드를 공격자가 임의로 생성하여 51%를 장악하는 방식, 밸런스 공격은 노드가 다른 채굴노드보다 압도적으로 우위에 있는 채굴 성능 또는 보유 지분 등을 기반으로 공격자가 생성한 체인 이외의 블록은 무효화 되도록 유도하는 공격 방식입니다.

2. 허위 정보 전파 공격

허위 정보 전파 공격, 또는 이클립스 공격(eclipse attack)은 공격자 주변의 노드들에게 허위 블록정보를 지속적으로 전파함으로써 주변 노드의 핵심파워를 낭비하게 되거나 허위 블록으로 거래를 수행하도록 하는 공격이다. 이러한 공격을 통해 노드의 51% 이상에게 허위 정보를 제공하여 잘못된 거래를 지속하게 하거나 허위 거래를 통해 공격자에게 암호화폐를 송금하게 하는 등의 공격을 수행할 수 있습니다.

3. 이기적 채굴 독점

채굴을 완료하였지만 해당 채굴 결과를 네트워크에 전파하지 않고 숨겨두고 있다가 다른 노드들의 네트워크 점유율이 공격자의 점유율을 넘어서려고 할 때 쌓아둔 블록을 네트워크에 전파함으로써 채굴 보상을 독점할 수 있는 공격 유형이다. 이는 합의 네트워크의 신뢰도 및 참여 의지를 저하시킵니다.

4. 블록보류 공격

블록보류 공격은 채굴한 블록을 공개하지 않는 행위로 이기적 채굴독점과 유사합니다. 블록보류 공격도 해시파워가 다른 노드들보다 우위에 있을 경우 채굴 완료된 블록을 전파하지 않고 다음 블록을 계속 채굴해 나가는 방식을 활용합니다. 공격자가 자신이 숨겨둔 블록의 길이를 길게 유지해 둔 뒤 특정 시점에서 암호화폐 인출을 실행하고 이후 한 번에 숨겨둔 블록을 공개하게 되면 인출 거래를 실행한 정당한 블록체인은 공격자가 숨겨둔 블록보다 길이가 짧기 때문에 거래 내역이 사라지게 되고 거래가 무효화되면서 차감된 암호화폐가 다시 돌아오는 개념입니다.

5. 디도스 공격

블록체인의 합의 알고리즘은 트랜잭션을 검증하는데 일정한 시간이 필요합니다. 이러한 네트워크의 특성에 따라 무한히 반복되는 동일한 또는 무작위의 허위 트래픽이 네트워크에 진입하게 되면 정당한 트랜잭션의 시간이 무한히 증가하기 때문에 정해진 서비스를 제공할 수 없게 됩니다. 블록체인의 스마트 컨트랙트에서는 조건이 마지막 자동으로 실행한다는 점을 이용함으로써 매우 다양한 방법으로 디도스 공격을 만들어 낼 수 있다.

6. DNS/BGP 하이재킹

DNS 및 BGP 하이재킹은 암호자산을 송금하기 위한 목적지 지갑의 주소를 허위로 위조하여 기재하거나 경로 중간에 탈취함으로써 일반 사용자가 공격자가 만든 가짜 시스템을 정식 웹사이트 혹은 정식 페이지로 착각하게 만들어 접속하게 한 다음 위조된 서버 위치에서 중요 정보를 공격 대상자 스스로가 입력하게 만들거나 공격 재상자의 특정 반응을 통해 주요 정보를 유출시키는 일종의 피싱 기법입니다.

휴… 엄청 길었습니다. 오늘 알아본 공격 특성들이 굉장히 많습니다. 비트코인과 비교할 때, 알트 코인들은 자신들의 블록체인을 보호할 해시 파워를 상대적으로 적게 갖고 있을 확률이 높습니다. 그렇게 때문에 사용자분들의 각별한 주의와 관리가 필요합니다.

오늘 포스팅은 여기서 마치겠습니다.

감사합니다.

암호화폐 보안(1) — 왜 암호화폐 지갑이라고 하나요?

--

--