이클립스 공격이란 무엇인가요?
HomeArticles

이클립스 공격이란 무엇인가요?

고급
2mo ago
6m

목차


이클립스 공격은 악의적인 행위자가 네트워크 상의 노드를 방해하기 위해 선택하는 비교적 간단한 공격 방법입니다. 이름에서 알 수 있듯, 이는 일반적인 혼란을 야기하거나, 보다 정교한 공격을 준비하기 위해 피어투피어 네트워크 참여자의 시야를 가리는 것입니다.

이클립스 공격은 표면적으로는 시빌 공격과 유사해 보일 수 있습니다. 두 공격에는 특정 유사점이 존재하지만-네트워크에 가짜 피어와 함께 악의적인 행위자가 넘쳐남-최종 목표는 전혀 다릅니다. 이클립스 공격이 단일 노드를 대상으로 삼는 반면, 시빌 공격은 프로토콜 시스템 네트워크 전반을 공격하도록 설계되어 있습니다.

해당 개념은 2015년 비트코인 피어투피어 네트워크에 대한 이클립스 공격이라는 논문에서 논의되었습니다. 보스턴 대학과 히브리 대학의 연구원들이 발간한 논문에는, 증가하는 이클립스 공격에 대한 실험 결과와 함께 이에 대처하기 위한 보호 조치들이 수록되어 있습니다.


이클립스 공격은 어떻게 이뤄지나요?

비트코인 마이너가 새로운 블록을 생성하기 위해서는 특화된 장비가 필요하지만, 마이닝을 하지 않는 (또는 풀) 노드는 최소 연상 능력만으로도 쉽게 운영될 수 있습니다. 이는 비트코인의 탈중앙화에 도움이 되는데, 누구나 저사양 기기를 통해 노드를 운영할 수 있기 때문입니다. 소프트웨어는 주변의 피어들과 동기화된 트랜잭션 데이터베이스를 유지하여, 네트워크가 동일한 상태를 유지할 수 있게 합니다.

많은 노드가 대역폭 문제를 경험합니다. 소프트웨어를 실행하는 장치는 무척 많지만, 비트코인 소프트웨어의 제한된 설정(최대 125개까지만 연결 가능) 때문에 일반적인 장치는 이에 직접적으로 연결할 수 없습니다.

이클립스 공격을 통해 악의적인 행위자는 공격 대상이 자신이 통제하는 노드에 접속하도록 합니다. 공격자는 대상에게 자신의 IP 주소가 쇄도하도록 하며, 피해자는 소프트웨어를 재시작해 이에 접속할 가능성이 커집니다. 강제로 재시작을 가능하게 할 수도 있으며 (대상에 대한 디도스(DDoS) 공격을 통해), 공격자는 재시작이 시작될 때까지 가만히 기다릴 수도 있습니다. 

이후, 이상한 낌새를 알아차리지 못한 피해자는 기존 네트워크를 볼 수 없는 악의적인 노드에 연결되고, 공격자는 가짜 데이터를 채워 넣을 수 있습니다.


이클립스 공격의 결과

공격자가 네트워크로부터 하나의 피어를 떼어내기 위해 자원을 소비하는 데는 그럴만한 이유가 있을 것입니다. 하나의 노드가 잠식되면 연속적인 공격들이 더욱 쉽게 이뤄질 수 있습니다.


0-컨펌 이중 지불

누군가 컨펌(confirmations)이 없는 트랜잭션을 받아들인다면, 이중 지불 위험에 처하게 됩니다. 트랜잭션은 전송되었을 수 있지만, 블록에 포함되기 전까지는 (그렇게 블록체인에 기록되기 전까지는), 전송자는 다른 곳에서 동일한 자금을 사용하는 새로운 트랜잭션을 쉽게 만들어낼 수 있습니다. 만약, 새 트랜잭션의 수수료가 더 높다면, 마이너는 기존의 트랜잭션을 무효화하고 이를 블록에 포함시킬 것입니다. 

일부 기업과 개인들은 이러한 0-컨펌 트랜잭션을 수용하게 됩니다. 고급 차량 판매상인 밥의 경우를 예로 들어 보겠습니다. 밥은 앨리스가 자신의 노드에 이클립스 공격을 가했다는 것을 알지 못하고, 앨리스가 고급 스포츠 카를 구매했을 때 아무런 의심을 하지 않습니다. 앨리스는 트랜잭션을 생성하고, 밥은 이를 네트워크에 전송합니다. 결제가 진행되고 있다고 확신한 밥은 키를 건네고 앨리스는 빠르게 자리를 뜹니다.

당연히 트랜잭션은 네트워크에 전송되지 않았습니다. 밥은 그저 앨리스의 악의적인 노드에 이를 전달했을 뿐, 이를 정직한 노드에 전달하지 못했습니다. 해당 거래가 불확실한 상태로 남아 있는 동안, 앨리스는 (진짜) 네트워크에서 동일한 자금을 다른 당사자나 자신의 주소에 사용합니다. 밥과의 초기 트랜잭션을 결국에 확인할 수 있을 것이지만, 이미 사용된 해당 코인은 거부될 것입니다.


N컨펌 이중 지불

N컨펌 이중 지불은 0-컨펌 이중 지불과 비슷하지만, 더 많은 준비가 필요합니다. 많은 기업들은 결제를 유효 처리하기 전, 특정 횟수의 승인을 기다립니다. 이를 우회하기 위해, 공격자는 마이너와 상인 모두에게 이클립스 공격을 해야 합니다. 상인에게 주문할 준비를 마친 공격자는 (이클립스 공격을 한) 마이너에게 트랜잭션을 전송합니다. 트랜잭션은 승인되고 블록체인에 포함됩니다. 하지만 이는 대다수가 참여하고 있는 네트워크가 아닙니다. 마이너가 차단되었기 때문입니다.

이제 공격자는 해당 블록체인을 상인에게 전달하고, 상인은 트랜잭션이 승인되었다고 믿으며 상품을 전달합니다. 이클립스 공격을 당한 노드가 진짜 네트워크에 다시 합류하게 되면, 작업을 진행하던 본래의 네트워크의 블록체인에 의해, 해당 노드의 블록체인이 유효한 것으로 간주했던 블록은 고아가 됩니다(51% 공격과 유사점이 있음).


마이너 경쟁 약화

이클립스 공격을 당한 노드는 자신이 네트워크에서 분리되었다는 사실을 의식하지 못하고 계속 작동할 것입니다. 마이너는 프로토콜의 정해진 규칙을 따라 계속 블록을 채굴할 것이지만, 추가된 블록은 정직한 피어들과 동기화 되는 과정에서 폐기될 것입니다.

이론적으로 주요 마이너에 대한 대규모 이클립스 공격을 통해 51% 공격이 가능할 수 있습니다. 현재 비트코인 해싱 파워의 절반 이상을 차지하려면, 가장 많은 자원을 가진 공격자에게도 상당히 많은 추가 비용이 듭니다. 해싱 파워가 ~80TH/s이라면, 공격을 시도하기 위해서는 40TH/s 이상이 더 필요합니다. 

해싱 파워가 10명의 당사자에게 분산되어 있는(각 당사자는 8TH/s 씩 보유) 시나리오에서, 공격자는 이러한 당사자들을 네트워크에서 분리시킴으로써 51% 공격의 필요 조건을 상당히 낮출 수 있습니다. 만약 5명의 당사자가 제외된다면 다음 블록을 찾기 위한 경쟁에서 40TH/s가 줄어들게 되고, 공격자가 이를 통제하기 위해서는 20TH/s가 조금 넘는 해싱 파워만 있으면 됩니다.

이클립스 공격을 통한 또 다른 방해 행위로는 이기적 마이닝을 위해 노드를 조작하거나, 다음 블록을 찾기 위한 마이너들의 경쟁을 조작하는 것입니다.


대처 방법

충분한 IP 주소가 있다면 공격자는 어떤 노드라도 분리시킬 수 있습니다. 이를 방지하기 위한 가장 간단한 방법은 노드 운영자가 들어오는 연결을 차단하고, 특정 노드(다른 피어들에 의해 화이트리스트로 지정된 노드 등)로만 나가는 연결을 허용하는 것입니다. 그러나 연구 논문이 지적하듯, 모든 참여자가 이러한 방법을 채택할 경우, 새로운 노드가 네트워크에 참여할 수 없게 될 것입니다.

저자들은 비트코인 소프트웨어를 조금 수정할 것을 제안하며, 논문이 출간된 이후로 이들 중 일부가 통합되었습니다. 새 연결 지점 임의 선택 및 저장 주소 용량 증대와 같은 약간의 코드 수정을 통해 이클립스 공격에는 더 많은 비용이 들게 됩니다.


마치며

이클립스 공격은 피어투피어 네트워크 수준에서 진행됩니다. 공격이 독립적으로 진행될 경우, 골칫거리가 될 수 있습니다. 이클립스 공격의 목표는 대상에게 더 큰 재정적 피해를 입히거나, 마이닝 영역에서 공격자가 이득을 보려는 것입니다.

실제로 이클립스 공격을 통한 심각한 피해는 아직 없지만, 네트워크 내부의 통합적인 대책 강구에도 불구하고 여전히 위험이 존재합니다. 비트코인과 다른 암호화폐에 가해지는 대부분의 공격들과 마찬가지로, 이에 대비하는 가장 강력한 방법은 악의적인 당사자들이 이를 시도할 엄두를 내지 못할 정도로 많은 비용이 들게 하는 것입니다.