보안

워뇽쿤·2022년 10월 5일
0

블록체인(BlockChain)

목록 보기
12/13
post-thumbnail

1. 블록체인 보안 특징

데이터 무결성

  • 블록체인은 합의 알고리즘을 사용해 데이터의 무결성을 보장합니다. 악의적인 노드가 참여하더라도, 합의를 통해 노드가 블록을 변조하지 못하도록 합니다.

거래 투명성

  • 퍼블릭 블록체인에서는 누구나 블록체인 네트워크에 접속하여 트랜잭션 기록을 확인할 수 있습니다.

감시 가능성

  • 블록체인은 추가만 가능한(Append-Only) 데이터베이스로, 한번 블록이 체인에 올라가면 블록에 담긴 트랜잭션이나 데이터는 수정할 수 없습니다. 이 특징은 해싱을 통해 구현됩니다.

2. 이중지불 문제

이중지불이란?

  • 디지털 현금 시스템 내에 동일한 하나의 자산이 두명의 수신자에게 동시에 전송되는 문제를 의미합니다.

이중지불을 막는 방법

  • 중앙화된 방법 (데이비드 차움의 eCash)
    eCash의 동작방식은, 사용자가 은행에 일정 금액을 입금하면, 은행이 이를 일정 개수의 숫자들로 바꿔줍니다. 이 숫자는 지폐와 같은 역할을 합니다. 사용자가 이 숫자로 상인에게 돈을 지불하면, 상인은 해당 사용자가 이 숫자를 다른 곳에 또 쓰기 전에 은행에 이 숫자에 대한 소유권을 청구합니다. 은행은 숫자에 있는 서명이 유효한지 확인한 후, 상인에게 해당 숫자의 값만큼 현금을 입금해줍니다. 사용된 숫자는 소각됩니다.

  • 탈중앙화된 방법
    이중 지불 문제에 대한 가장 혁신적인 해결책은 사토시 나카모토가 비트코인 백서를 통해 제시한 블록체인입니다.
    블록체인은 노드라고 불리는 네트워크 참여자들이 서로 동일한 데이터베이스 사본을 가지고 트랜잭션을 기록하고 감시합니다. 공개적으로 블록체인을 볼 수 있기 때문에, 이중 지불을 시도하는 트랜잭션과 같은 부정직한 행동을 쉽게 감지할 수 있습니다.
    트랜잭션이 체인에 올라가면 새로운 사용자에게 소유권이 할당되기 때문에, 코인은 이중지불 될 수 없습니다.

3. 51% 공격

51% 공격이란?

  • 51% 공격은 단일 주체나 조직이 대다수의 해시 파워를 제어하여 네트워크를 중단시킬 수 있는 공격입니다.

51% 공격 방식

  1. 공격자는 네트워크 전체 해시 파워의 50% 이상을 확보한 후, 블록을 채굴합니다. 블록을 채굴할 때는 이를 피어들에게 전파하지 않고 혼자 가지고 있습니다.
  2. 이 상태에서, 공격자들은 정상 네트워크에 트랜잭션을 발생시켜, 다른 거래소 지갑으로 송금합니다. 그리고 해당 트랜잭션이 컨펌되고 나면 자신들이 만들어둔 블록을 네트워크에 전파합니다.
  3. 정상 네트워크에 있는 블록체인보다 공격자가 만든 블록체인이 더 길기 때문에 정상 네트워크의 블록체인에서 공격자가 만든 블록체인으로 체인 재구성이 일어나고 정상 네트워크에 있는 트랜잭션 기록들이 취소됩니다. 공격자들의 입금 트랜잭션도 취소 됩니다,
  4. 공격자들은 이미 코인을 다른 곳으로 송금한 뒤이기 때문에 취소할 수 없는 상태에서 잔액은 입금 트랜잭션 이전 상태로 돌아가기 때문에 이중 지불 문제가 발생합니다.

51% 공격에 대한 대안

  • 컨펌 횟수 증가: 이중 지불 여부를 확인할 때까지 거래 확정을 늦춤으로써 51% 공격을 예방합니다. 다만 거래 처리 속도가 떨어진다는 단점이 있습니다.
  • 지연 기능: 지연 기능은 블록체인 트랜잭션을 공증하는 공증 노드를 따로 둠으로써 전체 불변성을 보장하고 트랜잭션에 보안의 두 번째 계층을 제공합니다.

4. 리플레이 공격

리플레이 공격이란?

  • 리플레이 공격(Replay Attack)이란 공격자가 보안 네트워크 통신을 가로채고, 해당 통신의 수신자로 하여금 공격자가 원하는 일을 수행하도록 하기 위해 통신을 지연시키거나 재전송하는 방식입니다.

리플레이 공격 대안

  • 세션 식별자 추가: 통신 당사자 간 일회용 토큰을 해싱한 값을 공유하여 리플레이 어택을 피합니다.
  • 일회용 비밀번호: 아주 짧은 세션 시간을 가진 비밀번호를 두 통신 당사자가 공유하여, 공격자가 가로채 재사용하지 못하도록 합니다.
  • 타임 스탬프: 네트워크 시간을 MAC와 함께 브로드캐스트하고, 타임 스탬프가 포함된 메시지를 확인하여 예상 시간 범위 내에 있는 메시지만 수락합니다.

5. 이클립스 공격

이클립스 공격이란?

  • 이클립스 공격(Eclipse Attack)은 공격자가 네트워크상의 노드를 방해하기 위한 공격으로, 정교한 공격을 준비하기 위해 네트워크에 혼란을 야기시킬 때 주로 사용합니다.

이클립스 공격 동작 방식

  • 엔지니어링 블록 레이스: 이클립스 공격 대상 노드와 공격자의 노드가 동시에 블록을 생성한 경우, 공격 대상 노드가 생성한 블록을 숨김으로써 해당 블록은 고아 블록이 되고, 자신의 블록이 네트워크에 올라갈 수 있도록 합니다.
  • 채굴 파워 분할: 공격자가 51% 공격하기 위해 네트워크의 전체 채굴 파워를 쪼갤 수도 있습니다. 이러한 방식으로 공격자의 채굴 파워가 네트워크의 쪼개진 채굴 파워보다 커지게 되면 쉽게 51% 공격을 개시할 수 있습니다.
  • N-컨펌 이중 지불: 이클립스 공격자에 의해 여러 채굴 노드들이 공격 대상이 되어 격리된 경우, 공격자는 자신의 트랜잭션을 이클립스 공격 대상인 채굴 노드에게 제공하여 블록체인에 추가하도록 합니다. 이 노드들은 이후에도 블록을 계속 생성하면서 공격자의 트랜잭션이 든 블록이 컨펌되도록 합니다. 컨펌으로 트랜잭션이 완료되면 해당 블록들을 전체 네트워크에 공유하여 고아 블록이 되도록 합니다.

이클립스 공격 대처 방안

  • 무작위 노드 선택: 노드가 피어를 랜덤으로 선택하게 하여 공격자가 공격 대상 노드를 정하기 어렵게 만듭니다.
  • 정보 저장: 노드가 다른 노드에 대한 정보를 기억하도록 하면, 해당 노드가 네트워크를 떠났다가 재접속했을 때 이전에 연결했던 정직한 노드와 연결하여 정직한 피어 관계를 지속할 수 있습니다.
  • 연결 수 늘리기: 하나의 노드에 연결된 피어의 개수를 늘리면, 노드가 정직한 노드에게 연결될 가능성 역시 커집니다.

6. 그 외 보안적 이슈

크립토 재킹

  • 크립토재킹(Cryptojacking)은 감염된 피해자의 장치를 사용해 암호화폐를 채굴하는 것을 의미합니다. 공격자는 악성 채굴 프로그램을 사용하도록 유도하여, 해당 프로그램을 실행하면 악성 프로그램에 감염되어 눈치채지 못할 만큼 시스템 자원을 이용해 채굴하게 됩니다. 감염된 피해자는 자신도 모르는 새에 채굴을 시작하고, 공격자는 피해자의 해시 파워를 사용해 채굴 보상을 받습니다.

더스팅 공격

  • 더스팅 공격(Dusting Attack)은 해커들이 아주 적은 양의 코인을 사용자의 지갑에 전송하여 사용자의 신원을 파악하는 악성 공격입니다.
    일반 사용자들의 주소로 아주 적은 양의 금액을 보내 많은 주소를 더스팅(Dusting) 합니다. 그러고 나서 해당 송금 트랜잭션과 더스팅된 지갑들의 트랜잭션을 추적합니다. 일반적으로 대부분의 개인 지갑은 출금을 위해 거래소 지갑과 연결되어 있기 때문에, 트랜잭션을 추적하다 보면, 결국 지갑을 소유한 개인이 누구인지 알 수 있습니다.

시빌 공격

  • 시빌 공격은 한 개인이 네트워크의 여러 노드를 장악하려는 악성 공격입니다. 공격자는 충분한 수의 가짜 노드를 생성하여, 기존의 신뢰할 수 있는 노드를 네트워크에서 제외합니다. 이를 통해 블록을 수신하거나 전송하는 것을 거부하거나, 다른 노드들을 네트워크에서 차단할 수도 있습니다.
    합의 알고리즘은 시빌 공격을 원천적으로 봉쇄하기보다는, 시빌 공격에 대한 비용 대비 수익보다 정상적인 채굴을 통한 비용 대비 수익을 더 크게 만들어, 시빌 공격 자체를 비효율적인 것으로 만듭니다.
profile
취미로 개발하기 @wonyongkoon

0개의 댓글