이클립스 공격
IT위키
더 많은 작업
이클립스 공격(Eclipse Attack)은 공격자가 특정 노드의 피어 연결을 모두 자기 노드로 채워 그 노드를 나머지 P2P 네트워크에서 고립시키고, 그 노드가 보는 블록과 거래 정보를 마음대로 걸러 내는 네트워크 계층 공격이다.
블록체인 노드는 중앙 서버 없이 이웃 노드(피어) 몇 개와 연결해 블록과 거래를 주고받는다. 한 노드가 연결하는 피어 수는 정해져 있으므로, 공격자가 그 자리를 전부 차지하면 피해 노드는 공격자가 보여 주는 세상만 보게 된다. 해가 달에 가려지듯 진짜 네트워크가 가려진다고 해서 이클립스(일식)라는 이름이 붙었다.
2015년 하일먼(Heilman) 등은 충분한 IP 주소를 가진 공격자가 비트코인 노드로 드나드는 연결을 독점할 수 있음을 보였다. 이렇게 고립시킨 노드는 N번 확인 뒤의 이중 지불, 이기적 채굴, 블록체인의 악의적 분기 같은 채굴·합의 공격의 발판이 된다.[1] 2018년 연구는 이더리움에서는 IP 주소 하나씩을 가진 호스트 두 대만으로 피해 노드의 들어오고 나가는 연결을 모두 독점해, 피해 노드의 블록체인 보기를 걸러 내거나 그 연산력을 다른 공격에 끌어 쓸 수 있음을 보였다. 원인은 이웃 탐색에 쓰는 Kademlia 방식이었고, 대책 일부가 geth 1.8에 들어갔다.[2]
- 공격자가 많은 IP 주소나 노드 신원을 준비한다
- 피해 노드의 피어 주소 목록을 공격자 주소로 채운다(주소 광고를 반복해 목록을 오염시킨다)
- 피해 노드가 재시작하거나 연결을 다시 맺을 때 공격자 노드에만 연결되게 한다
- 피해 노드에 일부 블록·거래만 전달하거나 가짜 체인을 보여 준다
- 이중 지불 - 고립된 상인 노드에 거래 하나를 확정된 것처럼 보이고, 실제 네트워크에는 같은 코인을 쓴 다른 거래를 퍼뜨린다 → 이중 지불
- 채굴력 낭비·탈취 - 고립된 채굴자가 이미 버려진 체인 위에서 일하게 하거나, 그 연산력을 공격자 체인에 보태게 한다
- 전파 지연·검열 - 특정 거래나 블록이 피해 노드에 닿지 않게 한다
- 피어 주소를 고를 때 무작위성을 높이고, 같은 IP 대역에서 오는 주소 비중을 제한한다
- 바깥으로 나가는 연결 수를 늘리고, 재시작 뒤에도 이전에 믿던 피어 일부와 다시 연결한다(앵커 연결)
- 오래된 피어 주소를 함부로 지우지 않아 목록이 공격자 주소로 갈아 치워지지 않게 한다[1]
| 공격 | 겨냥하는 계층 | 핵심 |
|---|---|---|
| 이클립스 공격 | P2P 네트워크(연결) | 한 노드의 피어를 공격자로 채워 고립시킨다 |
| 51% 공격 | 합의 | 전체 해시 파워(또는 지분)의 과반을 쥐고 체인 선택을 좌우한다 |
| 시빌 공격 | 신원·투표 | 가짜 신원을 대량으로 만들어 투표·평판을 장악한다 |
| 이중 지불 | 거래 | 같은 자산을 두 번 쓴다. 다른 공격의 목적이 되는 결과이다 |
- 이클립스 공격을 하려고 가짜 노드를 많이 만들 수 있어 시빌 공격과 겹쳐 보이지만, 시빌 공격은 전체 시스템의 다수결을, 이클립스 공격은 특정 노드 하나의 시야를 노린다는 점이 다르다
- 이클립스 공격은 해시 파워 과반이 없어도 된다. 51% 공격과의 가장 큰 차이이다
- ↑ 1.0 1.1 Ethan Heilman, Alison Kendler, Aviv Zohar, Sharon Goldberg, 「Eclipse Attacks on Bitcoin's Peer-to-Peer Network」, IACR ePrint 2015/263(USENIX Security 2015), https://eprint.iacr.org/2015/263, 확인일: 2026-11-04.
- ↑ Yuval Marcus, Ethan Heilman, Sharon Goldberg, 「Low-Resource Eclipse Attacks on Ethereum's Peer-to-Peer Network」, IACR ePrint 2018/236, https://eprint.iacr.org/2018/236, 확인일: 2026-11-04.