116 / 736SYBIL

Sybil Attack

독립적인 여러 참여자처럼 행동하는 한 공격자

계정 백 개가 사람 백 명을 뜻하지는 않습니다. Sybil Attack은 바로 이 차이를 악용합니다. 한 공격자가 여러 참여자인 것처럼 행동하는 것입니다. 그래서 Bitcoin은 연결된 컴퓨터 수로 거래 역사를 선택하지 않습니다.

Sybil Attack은 한 공격자가 여러 신원을 통제하면서 각각 독립적인 참여자인 것처럼 내세우는 공격입니다. Bitcoin에서는 네트워크 연결을 늘리는 것만으로 채굴 능력이나 규칙을 바꿀 권한이 늘어나지 않습니다. 다만 특정 노드가 어디서 정보를 얻는지에 영향을 주는 데는 도움이 될 수 있습니다.

안나는 게시판의 추천을 보고 서비스를 고릅니다. 수십 개 계정이 칭찬하지만, 사실 모두 서비스 운영자가 관리합니다. 여러 이름의 의견이 독립적으로 일치한 것이 아닙니다. John R. Douceur는 2002년 The Sybil Attack에서 컴퓨터 네트워크의 같은 문제를 설명했습니다. 한 공격자가 여러 참여자를 가장할 수 있다는 것입니다. 이름을 만드는 일은 쉽지만, 필요한 주소와 서버(다른 기기에 서비스를 제공하는 컴퓨터), 연결을 확보하는 데는 돈과 시간이 들 수 있습니다. [1]

Bitcoin 네트워크의 피어는 프로그램과 데이터를 주고받는 상대방입니다. 페터는 여러 노드를 운영할 수 있고, 기업은 훨씬 더 많이 운영할 수 있습니다. Bitcoin은 사람마다 노드 하나를 배정하는 인명 등록부를 요구하지 않습니다. IP 주소는 프로그램이 연결할 네트워크상의 위치를 나타냅니다. 따라서 IP 주소가 다르다고 소유자도 다르다는 증거는 아닙니다. 여러 노드를 운영하는 일 자체도 공격은 아닙니다. 문제는 겉으로 보이는 독립성을 악용할 때 시작됩니다. [1] [3]

페터의 Full Node는 Bitcoin 규칙을 직접 검증하는 프로그램입니다. 여기서 서명은 비밀 숫자 값인 개인 키로 결제를 승인했다는 검증 가능한 증거를 만드는 작업입니다. 다른 사람은 그 비밀 값을 몰라도 서명을 확인할 수 있습니다. 연결된 모든 피어가 유효하지 않은 서명의 거래를 보내도 페터의 노드는 거부합니다. 같은 답변을 표로 세지 않습니다. 블록은 공동 기록에 추가하는 거래 묶음입니다. 노드는 블록 전체도 검사하여 이미 사용한 자금을 다시 쓰거나 허용되지 않은 보상을 만들지 않는지 확인합니다. 네트워크는 데이터를 전달하지만, 유효성은 보낸 사람의 인기가 아니라 노드의 규칙에 따라 판단합니다. [2] [6] [9]

서로 경쟁하는 유효한 역사 분기가 두 개 존재할 때가 있습니다. Proof of Work는 발견된 블록의 난이도에서 도출한 가중치, 즉 누적 작업량을 비교하게 해 줍니다. 채굴에는 실제 계산 시도가 필요하며 컴퓨터 이름을 바꾼다고 작업량이 늘지 않습니다. 같은 채굴 장비를 여러 신원으로 나누더라도 전체 성능은 높아지지 않습니다. 여기서는 계정 하나에 한 표라는 원칙이 적용되지 않습니다. [2] [6]

연결 천 개도 다른 사람의 비트코인을 쓰는 데 필요한 개인 키를 대신하지 못합니다. 신원을 늘리는 것만으로 발행 규칙을 깨거나 올바르게 검증하는 노드가 무효한 블록을 받아들이게 할 수도 없습니다. 그렇다고 모든 공격으로부터 안전하다는 보장은 아닙니다. 공격자는 채굴 능력을 추가로 확보하거나 프로그램의 결함을 악용할 수 있습니다. 이런 능력은 계정 수 자체와 구분해서 평가해야 합니다. [2] [9]

페터의 노드로 돌아가 봅시다. 공격자는 알려진 주소 목록을 채우고 연결을 차지하려 할 수 있습니다. 나머지 네트워크로 통하는 관련 경로를 모두 통제하면 블록을 숨기고 불완전하거나 뒤늦은 상황만 보여 줄 수 있습니다. 이런 고립을 Eclipse Attack이라고 합니다. Sybil Attack은 이를 도울 수 있지만, 공격자 신원이 많다고 고립에 성공한 것은 아닙니다. 받은 데이터를 검증하는 것과 누군가 숨긴 데이터의 존재를 아는 것은 다릅니다. [3] [5] [8]

Bitcoin Core는 여러 방어 수단을 조합합니다. 자동으로 외부 연결을 선택할 때 네트워크의 다양성을 추구하고, 알려진 주소를 그룹으로 나누어 한 출처가 선택 전체를 쉽게 지배하지 못하게 합니다. feeler라는 짧은 시험 연결로 다른 피어에 접속할 수 있는지도 확인합니다. 이 장치들은 공격을 어렵게 하지만 서버마다 실제 소유자를 확인하거나 고립 방지를 보장하지는 않습니다. 구현은 계속 발전하며, 여기의 자료는 Bitcoin Core 29.0을 보여 줍니다. [4] [7] [8]

IP 주소나 Tor 서비스 주소는 프로그램에 접속할 곳을 알려 줍니다. 반대편에 새롭고 독립적인 사람이 있다는 인증은 아닙니다. 한 운영자가 많은 주소를 가질 수 있고, 여러 사용자가 공인 IP 주소나 네트워크 경로 일부를 공유할 수도 있습니다. Tor는 연결의 프라이버시에 도움이 되지만 주소 자체로 피어의 독립성을 증명하지 않습니다. 메시지를 전달하는 일과 Bitcoin 역사 선택의 가중치는 서로 다른 문제입니다. [3] [4]

Proof of Work는 가짜 다수 문제의 중요한 부분을 해결하지만 모든 통신 위험을 해결하지는 않습니다. 참여자끼리 직접 데이터를 교환하는 P2P 네트워크는 트래픽 공격, 감시, 메시지 은폐에 노출될 수 있습니다. 따라서 연결 관리와 자원 소비 제한도 방어에 포함됩니다. 보안은 공격자가 실제로 무엇을 통제하는지에 달려 있습니다. 이름뿐인지, 네트워크 경로나 계산 능력인지, 또는 이들을 함께 갖고 있는지를 봐야 합니다. [1] [5] [6]

외부에서 접속할 수 있는 노드 수는 사람 수나 규칙에 대한 투표 결과가 아닙니다. 노드가 정보를 어디서 얻고 무엇을 직접 검증하는지도 중요합니다. 자신의 Full Node로 받은 블록을 검증할 수 있지만 나머지 네트워크와의 연결은 필요합니다. 지갑은 비트코인을 받고 보내는 앱이나 기기입니다. 지갑이 다른 사람의 서버를 쓴다면, 다른 곳에 노드가 많다는 사실만으로 그 의존성이 없어지지 않습니다. 접점이 많다고 독립성이 자동으로 높아지는 것은 아닙니다. [1] [3] [9]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. 다음 항목에서도 이 글을 참조합니다 Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.

DOC · 001John R. Douceur — The Sybil Attack1차 출처 DOC · 002Satoshi Nakamoto — Bitcoin whitepaper1차 출처 DOC · 003Bitcoin Developer Guide — P2P Network문서 DOC · 004Bitcoin Core v29.0 — Peer connections문서 DOC · 005Heilman et al. — Eclipse Attacks on Bitcoin1차 출처 DOC · 006The Bitcoin Backbone Protocol1차 출처 DOC · 007Bitcoin Core v29.0 — Address manager문서 DOC · 008Bitcoin Optech — Eclipse attacks문서 DOC · 009Bitcoin Core v29.0 — Block validation문서
개정일: 1차 출처 우선 · 투자 조언이 아닙니다