블록체인 공격의 양상은 무엇인가요?
안녕하세요.
소중한 지식을 나눔해 주시는 블록체인 전문가님들로부터 많은 도움을 받아 감사드립니다.
전문가님들의 가르침으로 블록체인에 대한 다양한 형태의 공격들을 조금씩 이해해 가고 있습니다.
블록체인에 대한 공격들을 공격 대상에 따라서 네트워크 차원과 개인 차원으로 분류할 때 네트워크 차원의 공격들은 어떤 것들이 있는지 알고싶습니다.
블록체인 네트워크 차원의 공격에는 도스 공격, 시빌 공격, 이클립스 공격, 라우팅 공격 등이 있습니다. 우선 첫 번째로 서비스 거부(DoS) 공격이 있습니다. 도스 공격에서 공격자들은 일시적으로 과도한 스팸 트래픽을 블록체인 네트워크에서 발생시킴으로써 블록체인 네트워크에 과부하를 일으켜 트랜젝션의 처리를 장시간 지연시키거나 마비를 불러오게 할 가능성이 있습니다. 하지만 기본적으로 블록체인 네트워크는 노드 간의 직접적인 연결로 이루어진 탈중앙화된 네트워크이고 보통 네트워크 상에서 트랜젝션 수수료를 부과하고 있으므로 이러한 공격을 성공시키기에는 쉽지 않다고 할 수 있습니다.
다음으로 두 번째 시빌(Sybil) 공격이 있습니다. 이 공격은 블록체인 네트워크 상에서 실제로는 소수의(또는 단일한) 노드이지만 자신이 통제하는 임의의 악의적인 노드를 다수 생성하여 대규모 노드 그룹을 만들어 내어 블록체인 네트워크를 장악함으로써 마치 다수가 동의하는 거래 내역인 것처럼 다른 노드에게 악의적인 거래 내역을 전파하는 공격 방법이라고 할 수 있습니다. 그리고 이러한 공격을 방지하기 위해서는 신원이나 평판을 확인하는 시스템을 동원하거나, POW나 POS 합의 알고리즘에서와 같이 연산 파워나 스테이킹 수량 등을 확인하는 방법 등을 활용할 필요가 있겠습니다.
그리고 세 번째 이클립스(Eclipse) 공격이 있습니다. 이 공격은 공격 대상이 되는 정직한 노드와의 연결을 독점하고 다른 노드로부터의 정보 수신을 차단하는 네트워크 공격이라고 할 수 있습니다. 이렇게 되면 예를 들어 공격 노드인 A가 공격 대상 노드인 B와 거래를 한다고 할 때 B를 전체 네트워크로부터 격리시킨 다음 1BTC를 전송하는 정상적인 트랜젝션을 보여준 후 그 대가를 B로부터 수령하고, 다시 전체 네트워크 상에 존재하는 C에게 1BTC를 전송할 수 있게 됨으로써 이중 지불 공격이 성공하게 됩니다. 이 공격은 공격 대상 노드와 네트워크 간의 연결을 가로 막고 독점하는 것이 필요한데 이것은 공격자가 보낸 IP주소를 자신도 모르게 저장하고 있음으로 인해서 가능해 집니다. 이러한 공격을 방지하기 위해서 오프라인 상에 네트워크 접속시 안전한 IP 주소를 저장해 두는 방법이 있지만 완전하게 예방하기에는 힘들 수가 있습니다.
끝으로 네 번째 라우팅(Routing) 공격이 있습니다. 이 공격은 블록체인 네트워크 상에서 노드들의 연결 구조를 파악하여 중간 경유 지점 중 중요한 지점들을 차지함으로써 네트워크를 나누는 것으로부터 시작됩니다. 그 다음 분할된 네트워크의 두 부분 사이에 위치하여 중간에서 전파되는 트랜젝션을 가로챈 다음 거래 내역을 위, 변조하고 다시 그것을 전파함으로써 네트워크를 공격하게 됩니다. 이러한 공격을 막기 위해서는 노드들이 서로 연결된 네트워크의 구조를 지속적으로 바꿔나가는 것이 현재로서는 가장 좋은 방법이라고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.