저자: 피터 토드
출처: https://petertodd.org/2025/coinjoin-comparison
원문은 2025년 7월에 발표되었습니다.
크루 프로젝트는 저에게 유발의 "nothingmuch" 게시글을 분석하고 답변해 달라고 요청했습니다. 이 게시글은 코그만이 중앙 집중식, 라운드 기반 익명 해제 공격에 대해 논하며, 특히 와사비 지갑에서 사용하는 와비사비 프로토콜을 표적으로 삼고 있습니다 . 코그만은 와비사비 설계에 참여했지만 "출시 전에 항의하며 떠났습니다. "
코그만은 "이 소프트웨어는 설계 목표에 근본적으로 부적합합니다. 운영자에게 개인 정보를 맡길 의향이 없다면 사용해서는 안 됩니다."라고 주장합니다. 그러나 코그만은 이러한 의견에 대한 명확한 공학적 근거를 제시하지 않았습니다. 따라서 코인조인의 기능, 코인조인이 방지하는 공격 유형, 그리고 현재 코인조인 구현체인 조인마켓과 와사비가 실제 익명 해제 공격에 얼마나 효과적으로 대응할 수 있는지에 대한 보안 분석을 수행하는 것이 중요하다고 생각합니다.
면책 조항: Kruw는 제가 평소 오픈소스 행사 컨설팅을 받을 때 받는 요율로 제 연구 시간에 대한 비용을 지불했습니다. Kruw는 가장 인기 있는 Wasabi 코디네이터를 운영하고 있습니다. 저는 개인적으로 Wasabi를 사용하고 있으며, 실제로 이 기사와 관련된 금액은 Kruw의 Wasabi 지갑에서 직접 지급받았습니다.
1. 배경
"코인조인(Coinjoin)" 개념은 그레고리 맥스웰의 2013년 논문 덕분에 널리 알려지게 되었습니다. 기본 원리는 간단합니다. 두 명 이상의 사람이 공동으로 비트코인 거래를 생성할 경우, 거래에 대한 모든 입력값이 실제로 동일한 사람의 소유가 아니기 때문에 " 입력값 소유권 확인 "이라는 휴리스틱이 제대로 작동하지 않습니다. 코인조인 거래를 구성하는 가장 간단한 방법은 이미 지불 의사가 있는 두 명 이상의 당사자가 각자의 거래 입력값과 출력값을 하나의 거래로 결합하는 것입니다. 이러한 간단한 접근 방식만으로도 약간의 비용 절감 효과를 얻을 수 있습니다. 거래 당사자들이 거래 "헤더"의 바이트를 공유함으로써 전체 거래 수수료가 줄어드는 것입니다.
하지만 이 간단한 기술은 두 가지 중요한 이유로 개인정보 보호를 희생합니다.
- 외부 관찰자는 투입과 산출의 구체적인 금전적 특성을 바탕으로 투입과 산출 간의 상관관계를 파악할 수 있는 경우가 많습니다.
- 코인조인 참여자들은 다른 코인조인 참여자들의 입력과 출력을 알 수 있습니다.
예를 들어, 다음과 같은 거래를 생각해 보세요.
| 금액을 입력하세요 | 출력(금액) |
|---|---|
| 61,836 | 53,467 |
| 98,902 | 61,736 |
| 45,235 |
이것이 매우 단순한 2자 간 코인조인 거래라고 의심된다면, 첫 번째 입력과 두 번째 출력이 동일인의 소유이며, 두 번째 입력의 자금이 첫 번째와 세 번째 출력으로 이동했을 것이라고 추측하는 것이 합리적입니다.
위 분석을 통해 우리는 두 가지 주요 위협 모델을 도출할 수 있습니다.
- 수동적 블록체인 분석 4 : 공격자는 공개적으로 이용 가능한 블록체인 데이터를 다른 데이터와 결합하여 수동적 분석을 통해 거래의 익명성을 해제하려고 시도합니다.
- 능동적(Sybil어택) 공격: 공격자는 공개적으로 이용할 수 없는 데이터를 얻기 위해 코인조인 거래에 적극적으로 참여합니다. 능동적 공격자는 수동적인 블록체인 분석도 사용할 가능성이 높습니다.
흥미롭게도, 제가 체이나리시스(Chainalysis)와 그 경쟁사들의 현직 및 전직 직원들과 나눈 개인적인 대화에 따르면, 실제 블록체인 분석은 단순한 코인조인 거래의 익명성 해제와 같은 가장 기본적인 통계 분석조차 하지 않는 경향이 있습니다. 사실, 그들은 제대로 된 통계 분석에 전혀 신경 쓰지 않습니다. 그들의 제품은 매우 비과학적이며, 주어진 출력값이 특정 활동과 관련될 확률을 계산하기보다는 직관적이고 기본적인 휴리스틱에 의존하여 출력값을 "라벨링"합니다. 심지어 체이나리시스 경쟁사의 창업자 한 명을 만났는데, 그는 저녁 식사 후 술에 취해 자신의 제품이 완전한 사기이며 실제 분석은 전혀 하지 않는다고 말했습니다. 그 제품의 진정한 목적은 경찰 체포를 위한 구실을 제공하고 거래소"자금세탁방지/고객확인" 요건을 충족하도록 돕는 것이라고 했습니다. 체이나리시스 자체도 법정에서 제품의 실제 작동 방식을 적극적으로 숨겨왔습니다. 따라서 체이나리시스의 제품이 실제로 신뢰할 수 없을 가능성이 매우 높습니다.
보수적으로 볼 때, 최근 법원 문서를 통해 체이나리시스가 토네이도 캐시 릴레이를 운영하며 토네이도 캐시 사용자 데이터를 수집하려 했다는 사실이 드러났습니다. 토네이도 캐시는 코인조인과는 매우 다른 기술이지만, 체이나리시스가 토네이도 캐시 사용자의 익명성을 해제하기 위해 선제적인 조치를 취하고 있다면, 코인조인 구현 방식의 익명성 해제에도 선제적으로 대응하고 있을 가능성이 있습니다.
(역자 주: "토네이도 캐시"는 이더 온체인 에서 운영되는 개인정보 보호 강화 서비스입니다. 사용자가 표준화된 금액을 예치하고 일정 기간 후 무기명 인증서를 사용하여 풀에서 자금을 인출하는 방식입니다.)
우리의 적들이 사기꾼인지 아닌지와는 상관없이, 우리는 그들이 실제로 능력이 있다고 가정해야 합니다.
1.1 K-익명 집합
일반적으로 개인정보 보호 도구는 "k-익명성 집합"이라는 개념을 사용하여 이를 분석합니다. k-익명성 집합이란 집합 내에서 서로 구별할 수 없는 익명성을 가진 k명의 개인으로 구성된 집합을 말합니다. 코인조인과 같은 암호화폐 앱은 여기에 자금의 출처라는 요소를 추가합니다. 특히 코인조인에서 큰 금액을 사용할 경우 이 요소가 매우 중요합니다. 금액이 클수록 k-익명성 집합의 크기가 작아지는데, 이는 해당 집합에 포함될 만큼 충분한 자금을 가진 사람이 더 적기 때문입니다.
1.2 토르
Tor 네트워크는 양파 라우팅 방식의 네트워크입니다. 코인조인(Coinjoin) 방식은 익명성을 확보하기 위해 Tor를 사용합니다. Tor 노드들이 로그를 저장하지 않겠다는 약속을 지키는 한, Tor는 가장 엄격한 위협 모델에서도 코인조인 클라이언트가 익명으로 통신할 수 있도록 해줍니다. 이는 조인마켓(JoinMarket)의 보안 모델에 중요하며, 와사비(Wasabi)의 보안 모델에는 매우 필수적입니다.
Tor는 탈중앙화된 시스템이 아닙니다 . 대량 자원봉사자들이 개별 Tor 노드를 운영하고 있지만, Tor 합의 메커니즘 자체, 즉 Tor 노드 목록은 중앙 집중식 " 디렉토리 관리 기관 "에서 관리하며, 이들은 누가 Tor 노드로 인정될지 여부를 자체적으로 결정할 수 있습니다.
2. 중요한 코인조인 방식
현재 실제로 구현되어 운영 중인 중요한 코인조이닝 방식은 단 세 가지뿐입니다. 각 방식은 완전히 다른 접근 방식을 사용하며, 저마다 장단점이 있습니다.
2.1 페이조인
페이조인(payjoin)은 송금인과 수취인이 각자 보내려는 금액을 포함하는 코인조인 거래를 생성할 수 있도록 하는 양방향 프로토콜 입니다. 이러한 거래는 송금인과 수취인의 자금이 모두 포함되기 때문에 입력 소유권 식별 휴리스틱보다 더 나은 성능을 보일 수 있습니다. 페이조인은 프로토콜이기 때문에 이미 많은 지갑에서 이를 지원하고 있으며, 다음으로 살펴볼 조인마켓(JoinMarket)과 와사비(Wasabi)를 포함한 두 가지 다른 코인조인 구현체도 지원합니다.
Bull Bitcoin 모바일 지갑은 PayJoin이 어떻게, 그리고 언제 유용하게 활용될 수 있는지 보여주는 좋은 예입니다. Bull Bitcoin 거래소 에서 개발한 이 지갑은 두 가지 핵심 문제를 해결하는 것을 목표로 합니다.
거래소 고객이 비트코인을 구매할 때마다 각 구매 건마다 UTXO가 생성됩니다. 페이조인(Payjoin)은 이전에 구매한 UTXO들을 가장 최근에 구매한 BTC와 병합할 수 있도록 해줍니다. 결과적으로, 나중에 비트코인을 사용할 때 거래에 필요한 입력값은 병합된 UTXO 하나뿐이므로 거래 수수료가 절감되고 개인정보 보호에도 도움이 됩니다.
비트코인을 매도할 때, 코인조인(coinjoin) 거래를 이용하면 기존 UTXO 하나 이상을 병합(매도하려는 UTXO와 결합)하여 거래소 수수료를 절감할 수 있습니다. 또한, 향후 페이조인(payjoin)은 결제 컷스루(pay cut-through) 기능을 지원하여 수수료를 더욱 낮출 예정입니다. 그리고 확장된 k-익명성 집합은 거래 당사자 모두에게 잠재적인 이점을 제공합니다.
(역자 주: "공개"란 거래 과정이 아무리 복잡하더라도 최종적으로는 초기 상태와 최종 상태만 공개된다는 것을 의미합니다. 예를 들어, 각자 일정 비율의 대금을 부담하는 n명의 참여자가 하나의 거래를 성사시켜야 하는 경우, 거래의 최종 결과물은 모든 당사자의 정산이 완료된 후의 최종 상태입니다. 협상 과정의 순서와 세부 사항은 거래 내역에 공개되지 않습니다.)
페이조인(payjoin)은 양자 간 계약이므로 사전 공격은 무의미합니다. 페이조인 거래 상대방은 어떤 입력과 출력이 당신에게 속하는지 항상 알고 있기 때문입니다. 또한, Sybil어택 공격(Sybil attack) 역시 의미가 없습니다. 어차피 이미 거래할 의사가 있는 상대방과 페이조인을 진행하는 것이기 때문입니다.
실제로 페이조인(payjoin) 거래는 일반적으로 " 불필요한 입력 " 휴리스틱을 기반으로 식별할 수 있습니다. 이 휴리스틱은 지갑 소프트웨어가 결제 실행에 필요한 최소한의 입력만 제공한다고 가정하여 지불자와 수취인을 추측하는 방식입니다. 하지만 일부 지갑은 UTXO 관리 및 개인 정보 보호를 위해 불필요한 입력을 추가하기도 하므로 이 가정이 항상 정확한 것은 아닙니다 . 또한 모든 페이조인 거래를 이러한 방식으로 분석할 수 있는 것은 아닙니다. 비트코인 거래소 와 일반적인 비트코인 보유자 간의 복호화 과정과 같은 거래 패턴의 차이만으로도 양측의 입력과 출력을 식별할 수 있는 경우가 있습니다. 그럼에도 불구하고 페이조인이 제공하는 수수료 절감 효과는 모든 온체인 지갑이 이를 지원해야 하는 강력한 이유입니다.
페이조인(payjoin)은 구현의 복잡성을 제외하면 뚜렷한 단점 없이 모든 온체인 지갑(코인조인 지갑 포함)의 거래 수수료를 절감해주는 명백한 이점을 제공하므로 더 이상 논의하지 않겠습니다. 온체인에서 결제하려는 대상이 코인조인 옵션을 제공하도록 하려면 페이조인을 사용하지 않을 이유가 없습니다.
2.2 조인마켓
이 프로토콜은 테이커-플레이서 프로토콜이 되는 것을 목표로 하며, 테이커는 플레이서에게 비용을 지불하여 거래의 프라이버시를 향상시킵니다. 플레이서는 거래에 입력값과 출력값을 제공하고 그에 대한 대가를 받습니다. 또한 테이커는 거래 수수료를 지불할 책임이 있습니다.
주문자가 임의의 (값의) 입력과 출력을 제공하는 경우, 입력자와 주문 수령자 모두의 입력 금액을 비교하여 쉽게 식별할 수 있으므로 개인정보 보호가 강화되지 않습니다. 따라서 주문자는 주문 수령자의 결제 출력 과 동일한 가치의 출력을 제공해야 합니다. 이러한 방식의 핵심은 거래에 동일한 가치의 여러 결제 출력을 포함시킴으로써, 이러한 출력들을 담는 k-익명성 집합을 얻을 수 있다는 것입니다.
아래는 제가 이 거래를 위해 생성한 매우 간단한 JoinMarket 거래 예시입니다. 이 거래에는 테이커 주문과 플레이스 주문이 각각 하나씩만 있으며, 거래 ID는 " 4f11…8b7d "입니다.
| 금액을 입력하세요 | 출력(금액) |
|---|---|
| 148,798 | 46,981 |
| 1,448,113 | 100,420 |
| 1,347,800 | |
| 100,420 |
언뜻 보면, 100,420 사토시 상당의 이 출력은 익명 집합 $k = 2$를 가지고 있습니다. 즉, 이러한 출력이 두 개 있는 것입니다. 하지만 당신이 첫 번째 100,420 사토시 출력을 받았다고 가정해 봅시다. 이제 당신의 지식을 시험해 보세요. 이 돈은 어디에서 온 것일까요? JoinMarket의 작동 방식에 따르면, 제가 당신에게 돈을 지불한 테이커이고, 거래의 다른 참여자는 주문을 낸 사람이라고 추측하는 것이 합리적입니다. 제가 테이커이므로 이 거래에 대한 수수료를 지불해야 하고, 주문을 낸 사람에게도 수수료를 지불해야 합니다.
이러한 가정을 바탕으로, 어떤 입력이 어떤 0을 생성하는 출력에 대응하는지 합리적으로 추측함으로써 제 입력을 쉽게 익명 해제할 수 있습니다. 간단한 산술 계산만 필요합니다.
$$
\begin{align}
148798 - 100420 - 46981 &= 1397 \
1448113 - 100420 - 1347800 &= -107
\end{align}
$$
첫 번째 입력은 매수자로부터 나온 것으로, 거래에 1397 사토시의 순 가치를 더했습니다. 두 번째 입력은 주문자로부터 107 사토시를 받았습니다. 제가 직접 거래를 했으므로 이 내용이 정확함을 확인할 수 있습니다.
주문 수수료 107 사토시와 블록 확인 수수료 698 사토시를 지불했지만, 개인 정보 보호는 전혀 나아지지 않았습니다!
이 문제는 저희의 간단한 테스트 거래에만 국한된 것이 아닙니다. 대부분의 경우, 여러 주문자가 있더라도 이 분석을 통해 매수자를 식별할 수 있습니다. 문제의 근본 원인은 JoinMarket이 시장이라는 점입니다. 매수자와 주문자는 완전히 다른 역할을 수행하므로, "매수자는 주문자에게 비용을 지불해야 한다"는 사실을 바탕으로 그들의 입력과 출력을 식별할 수 있습니다.
어떤 의미에서 JoinMarket의 경제 메커니즘은 완전한 퇴보입니다. 일반적인 시나리오, 즉 테이커가 여러 플레이스홀더에 비용을 지불하는 경우, 플레이스홀더는 모든 플레이스홀더의 k-익명성 집합을 미끼로 제공함으로써 개인정보 보호를 강화할 수 있습니다.<sup> 6</sup> 그러나 서비스에 상당한 비용을 지불하는 테이커는 일반적으로 개인정보 보호 측면에서 아무런 이점을 얻지 못합니다.
이 글을 쓰기 시작했을 때는 이 문제를 전혀 알아차리지 못했습니다. 하지만 나중에 찾아보니, JoinMarket이 처음 출시된 직후인 거의 10년 전에 bitcointalk 포럼에서 이미 이 문제가 자세히 논의되었던 것을 알게 되었습니다. 그러나 당시에는 이 문제의 중요성이 제대로 인식되지 않았던 것 같습니다.
JoinMarket은 Sybil어택 공격에 대응하기 위해 보증 채권을 사용하는 등 흥미로운 측면이 있을 수 있지만, 주요 기능은 기대에 미치지 못합니다. 따라서 이후에는 더 이상 논의하지 않겠습니다. JoinMarket이 재설계되지 않는 한 사용을 권장하지 않습니다.
2.3 와비사비 프로토콜과 와사비 지갑
와비사비(WabiSabi) 프로토콜은 와사비(Wasabi) 지갑 에서 구현된 다단계 코인조인 프로토콜입니다. 와비사비 프로토콜을 사용하는 BTCPay 서버 플러그인 도 있지만, 더 이상 유지보수되지 않습니다. 와사비 지갑 외에 다른 와비사비 구현체는 알지 못하므로, 이 글에서는 "와사비"라는 용어를 해당 프로토콜과 와사비 지갑 구현체를 통칭하는 데 사용하겠습니다. 또한, 와사비 지갑은 이전에 1.x 버전이 있었지만 현재는 사용이 중단되었으므로, 이 글에서는 최신 2.x 버전만 언급하겠습니다.
Wasabi는 여러 사용자 간의 k-익명성 집합을 구현하기 위해 금액 분해 방식을 사용합니다. Wasabi에 예치된 자금의 개인 정보는 하나 이상의 코인조인 라운드를 통해 보호됩니다. 이 라운드에서 (사용자가 지정한) 중앙 집중식 코디네이터가 여러 사용자를 조정하여 자금을 코인조인합니다.
이 글을 작성하기 위해 새로운 Wasabi 지갑을 생성하고 516,237 사토시를 입금했습니다. 그런 다음 Wasabi가 https://coinjoin.kruw.io/의 코디네이터를 사용하여 "가장 빠른 속도" 코인조인 전략으로 해당 자금을 코인조인하도록 승인했습니다. 다음은 거래 ID " 7a27…47ad "로 진행된 첫 번째 코인조인 라운드에 참여한 제 입력 및 출력 내역입니다.

k-익명성 집합을 달성하기 위해 내 Wasabi 지갑은 입금된 금액을 여러 표준화된 액면가 출력 (8 )으로 분리 하고 동일한 코인조인 라운드의 다른 참가자에게 분배합니다. 예를 들어, 59,049 사토시 액면가의 내 출력은 해당 거래에 대한 59,049 사토시 액면가의 서로 다른 5개 출력 중 하나이며 약 5개의 k-익명성 집합을 형성합니다. 반면 100,000 사토시 액면가의 내 출력은 그러한 출력 14개 중 하나이며 약 14개의 k-익명성 집합 내에 위치합니다.
보시다시피, 각 출력 항목 왼쪽에 방패 모양 아이콘과 숫자가 있습니다. Wasabi는 각 UTXO에 대한 " 익명성 점수 "를 추적합니다. 이 점수는 Wasabi가 각 코인조인 라운드에서 제공할 수 있다고 판단하는 k-익명성 집합의 대략적인 크기를 측정하는 것으로, 절대적인 정확도는 아닙니다. Wasabi에서 코인에 대한 익명성 점수 목표를 설정할 수 있으며, Wasabi는 모든 (경제적으로 사용 가능한) 코인이 목표 점수에 도달할 때까지 코인조인 라운드를 지속적으로 실행합니다. 이 테스트 지갑에서는 모든 출력이 목표 점수에 도달했는지 확인하기 위해 Wasabi가 총 세 번의 코인조인 라운드를 실행했습니다.

중요한 점은 익명성 점수가 다른 참여자들의 총 가치 입력 및 출력 구성을 고려한다는 것입니다. 예를 들어, ef4a…62d3 거래에서 저는 의도적으로 참여 사용자 수가 적은 덜 이슈 코디네이터를 사용했습니다. 다른 참여자가 부족했기 때문에 Wasabi는 제 출력에 대한 익명성 점수를 1로 계산했습니다.

Wasabi는 중앙 집중식 코디네이터를 사용하기 때문에, 이슈 코디네이터를 이용한다면 수백 개의 입력과 출력을 가진 대규모 코인조인 거래를 쉽게 구현할 수 있습니다. 대부분의 코인 종류는 겉보기에 동일해 보이는 출력이 십여 개 이상 존재합니다. 이 경우, 비교적 낮은 수수료로 비교적 큰 익명성 집합을 확보할 수 있어 Wasabi는 매우 비용 효율적입니다. JoinMarket과 달리, 코디네이터를 제외한 모든 참여자가 동등하게 참여하기 때문에, 입력과 출력을 익명성 집합의 고유 확률인 k를 초과하는 확률로 일치시키는 수동적 블록체인 분석 공격을 수행할 수 있는 (알려진) 방법이 없습니다.
2.3.1 라운드 구조 및 암호화
중앙 집중식 코디네이터를 사용하여 위의 모든 것을 달성하는 한 가지 방법은 각 참여자가 코인조인에 사용할 입력과 출력을 코디네이터에게 직접 알리는 것입니다. 그러면 코디네이터는 요청된 모든 입력과 출력을 포함하는 트랜잭션을 구성하여 참여자들이 서명하도록 할 수 있습니다. Wasabi가 이러한 방식으로 작동한다면 최종 코인조인 트랜잭션은 수동적인 블록체인 분석에 대한 저항력을 갖게 될 것입니다. 둘째로, 각 라운드에 참여하는 참여자 대량 가정하면, 참여자가 소거법을 통해 어떤 입력과 출력이 다른 참여자에게 속하는지 판별하는 것이 매우 어려워집니다.
하지만 조정자가 비밀(입력과 출력 간의 관계)을 지킬 것이라는 믿음이 있어야 합니다. 바로 그 점이 문제입니다. 양쪽 모두 분명한 이유가 있습니다. 우리는 조정자가 비밀을 모르는 것을 선호할 뿐만 아니라, 정직한 조정자라면 비밀에 대해 전혀 알지 못하는 것을 선호할 것입니다.
Wasabi는 다단계 프로토콜을 통해 이 문제를 해결합니다. 참여자는 익명 통신 메커니즘(예: Tor)을 통해 여러 개의 신원을 사용합니다. 자세한 내용은 이 설명서를 참조하십시오. 하지만 여기서는 다음 네 단계로 요약하겠습니다.
- 입력 등록: 참가자는 운영자에게 사용할 입력 방식을 알려주고, 각 라운드에 고유한 차우 미안 전자화폐 토큰(입력 방식마다 하나씩)을 받습니다. 참가자는 이 단계에서 "앨리스"와 같은 가명을 사용하며, 일반적으로 Tor 네트워크를 이용하여 익명성을 확보합니다.
- 출력 등록: 참여자는 새로운 신원(예: 새로운 Tor 연결)을 사용하여 입력 토큰을 전송하여 이번 코인조인 라운드에 표시되기를 원하는 출력을 등록합니다.
- 서명: 이제 담당자가 전체 거래를 구성했으며, 각 참가자는 해당 거래에 서명합니다. 이 단계에서는 "참가 등록" 단계에서 사용된 신원 정보가 재사용됩니다.
- 인증 단계: 모든 참여자가 서명하지 않으면 CoinJoin은 서명에 성공한 참여자들을 대상으로 재시도합니다. 서명하지 않은 참여자의 코인은 DoS 공격의 비용을 증가시키기 위해 일시적으로 블랙리스트에 추가됩니다.
여기서 개인정보 보호는 입력 및 출력 등록 단계에서 서로 다른 두 개의 신원(세트)을 사용하고, 라운드별로 발행되는 전자화폐와 유사한 토큰을 사용함으로써 보장됩니다. 코디네이터가 주도하는 분석에 대한 개인정보 보호는 Tor에 크게 의존합니다. 코디네이터가 Tor 연결의 익명성을 해제할 수 있다면, 코디네이터는 입력과 출력을 연관시킬 수 있기 때문입니다.
3. 다자간 코인조인 방식에 대한 공격
이 글에서는 Wasabi에서 사용하는 전자화폐 유사 토큰의 암호화 기술이 올바르게 구현되고 사용되고 있다고 가정합니다. 이 가정이 잘못되었다고 주장하는 사람은 아직 알지 못합니다. 따라서 우리는 코디네이터 블라인드 방식의 다자간 코인조인 보안 모델과 Kogman이 Wasabi를 비판한 내용에 대해 더 자세히 살펴보겠습니다.
3.1 Sybil어택 공격
조정자가 입력과 출력을 연결할 수 없다면, 위의 코인조인 방식은 익명성을 해제할 수 있을까요? 물론입니다! " Sybil어택 공격 "을 사용할 수 있습니다. 공격자가 코인조인 라운드에 대량 참여자 정보를 성공적으로 "압도"하여, 코인조인 라운드에서 유일한 실제 사용자( 다른 모든 참여자는 공격자가 제어)만을 공격 대상으로 삼을 수 있다면, 공격자는 간단한 제거 과정을 통해 코인조인 라운드의 익명성을 해제할 수 있습니다.
이 공격은 누구나 익명으로 참여할 수 있는 개방형 다자간 코인조인 시스템 유형에 근본적으로 결함이 있습니다.<sup> 9 </sup> 사실, 이 공격은 이론적으로 모네로(Monero)나 지캐시(Zcash)와 같은 시스템에도 적용될 수 있습니다. 유일한 문제는 그러한 공격에 드는 비용이 얼마나 될 것인가 하는 것입니다.
Kruw 코디네이터를 사용하는 일반적인 Wasabi Round 10 거래는 약 25,000 vB 크기이며 약 50,000 사토시의 수수료가 발생합니다. 현재 환율로 환산하면 약 50달러입니다. 또한 Wasabi는 매일 수십 건의 코인조인 라운드를 진행합니다.
피해자를 고립시키기 위해 각 코인조인 라운드에 수많은 입력과 출력을 쏟아붓는 직접적인 Sybil어택 공격을 시도하는 공격자는 거래 수수료로 매일 수천 달러에서 수만 달러에 달하는 비용을 지출할 수 있습니다. 더욱이, 각 라운드에서 수백만 달러 상당의 BTC가 코인조인되는 점을 고려하면, 설득력 있는 공격을 위해서는 공격을 시뮬레이션하기 위해 수백만 달러 상당의 BTC를 확보해야 할 것입니다.
그러한 공격이 실제로 일어나고 있다는 증거는 없습니다. 물론 어떤 정부나 단체도 공개적으로 그러한 공격을 자행하고 있다고 주장한 적이 없으며, 블록체인 분석 업계 종사자들과의 개인적인 대화에서도 그러한 공격에 대한 이야기는 전혀 들어본 적이 없습니다.
아이러니하게도, 만약 그러한 공격이 발생한다면, 공격 대상이 아닌 코인조인 참여자들의 개인정보 보호가 (적어도 일시적으로는) 오히려 강화 될 수도 있습니다. 이는 일부 주체들이 단순히 데이터를 (적어도 일시적으로는) 자신들만 보유하기 위해 코인조인을 실행하는 데 대량 자원을 투자하고 있음을 의미합니다.
3.2 Sybil어택 의 표적 공격
그렇다면 Sybil어택 공격은 더 저렴해질 수 있을까요? 아마도 조정자가 개입한다면 가능할지도 모릅니다. 이 부분에서는 발화 순서의 일관성이 유지된다고 가정하고, 다음 부분에서는 발화 순서의 일관성을 유지할 수 없는 경우를 논의하겠습니다.
(역자 주: 여기서 "일관성"은 분산 시스템의 맥락에서 이해해야 합니다. 즉, 프로세스가 끝날 때 모든 참여자가 동일한 결과를 얻는 것을 의미합니다.)
모든 다자간 코인조인 방식은 일종의 입력 등록 메커니즘과 "라운드"를 사용합니다. 공격자(조정자 포함)가 서로 다른 사용자가 서로 다른 라운드에 참여하도록 유도할 수 있다면, Sybil어택 공격을 훨씬 저렴하게 실행할 수 있습니다. 예를 들어, 공격자가 하나 이상의 코인을 포함하는 코인 집합을 추적하여 해당 코인 집합이 코인조인에 참여할 때까지 계속 시도한다고 가정해 보겠습니다. 모든 코인조인 라운드에 Sybil어택 공격을 가하는 대신, 해당 코인이 사용되는 코인조인 라운드만 공격하는 것이 더 효율적입니다.
Wasabi에서 코디네이터의 협조 없이 공격자는 코인조인 라운드에 반복적으로 참여한 후, 목표 입력이 없는 라운드를 발견하면 연결을 끊는 방법밖에 없습니다. Wasabi는 블랙리스트 메커니즘을 사용하기 때문에, 이 공격에는 대량 의 코인이 필요합니다. 공격에 사용할 수 없는 라운드에 참여하면 일부 코인이 블랙리스트에 등록되어 이후 라운드에서 사용할 수 없게 되기 때문입니다.
와사비(Wasabi) 거래 한 건당 비용이 매우 높기 때문에, 이러한 공격이 성공하더라도 막대한 대가를 치러야 합니다. 위의 제 거래에서 Sybil어택 공격자는 저를 익명 해제하고 격리하기 위해 140달러의 수수료를 지불해야 하며, 코인조인 라운드에 참여하기 위해서는 100만 달러 상당의 비트코인 여러 그룹을 확보해야 합니다.
더욱이, 이 공격은 획득하는 정보와 차단/탐지의 용이성 사이에 본질적인 상충 관계를 수반합니다. 공격자가 Sybil어택 공격을 지속적으로 실행하여 각 라운드에 실제 사용자 한 명만 남게 된다면, 해당 코디네이터 위치에서의 모든 코인조인 활동을 파괴하게 됩니다. 이는 매우 의심스러운 상황입니다! 반대로, 목표 코인이 아닌 코인을 사용하는 라운드도 성공한다면, 목표 코인을 사용하는 라운드에도 목표 코인이 아닌 지갑이 포함되게 되어 이 공격으로 얻을 수 있는 정보가 줄어듭니다.
협력자의 협조가 있다면 이러한 유형의 공격은 훨씬 적은 자본으로 훨씬 더 높은 성공률을 보일 수 있습니다. 우선, 공격자가 목표 대상이 코인조인하려는 모든 코인을 알고 있다고 가정해 보겠습니다.
공격자는 각 라운드에 참여하여 자신이 보유한 Sybil어택 코인을 입력값으로 등록합니다. 다른 참가자들이 목표 코인이 아닌 코인을 등록하면 공격자는 참여를 철회하고, 결과적으로 Sybil어택 코인이 없는 정상적인 라운드가 진행됩니다. 공격자가 조정자와 "협력"하기 때문에 이러한 Sybil어택 코인은 블랙리스트에 등록 되지 않고 재사용될 수 있습니다.
다른 참여자들이 목표 코인을 등록하면, 코디네이터는 Sybil어택 코인을 제외한 다른 코인 들이 같은 라운드에 참여하는 것을 막습니다. 목표 코인이 아닌 참여자들의 관점에서 보면, 이는 코디네이터의 동작에 일시적인 오류가 발생한 것처럼 보입니다. 목표 코인이 즉시 등록되어 "성공적인" 라운드가 되거나, (목표 코인이 아닌 코인이 먼저 참여한 경우) 속성 확인 라운드 후에 코인조인이 성공합니다. 어느 경우든 최종 거래에는 Sybil어택 공격자와 목표 코인만 참여하게 되므로, 거래의 익명성을 쉽게 해제할 수 있습니다.
이러한 공격은 설득력 있는 코인조인 라운드를 구성하는 데 여전히 많은 비용이 들지만, 공격자는 입력과 출력에 대한 거래 수수료를 지불해야 합니다. 그러나 블랙리스트가 더 이상 장애물이 아니므로 훨씬 적은 자금으로도 실행이 가능하며, 블랙리스트가 다른 참여자에게 공개될 경우 악의적인 코디네이터와 공모한 공격을 탐지하는 것이 훨씬 쉬워집니다.
3.3 코인조인 실패 후 주소 재사용
이상적으로는 주소는 절대 재사용되어서는 안 됩니다. 거의 모든 지갑 소프트웨어와 마찬가지로 Wasabi는 결정론적 지갑 모델을 사용합니다. 즉, 주소는 시드 구문으로부터 결정론적으로 생성됩니다. 그러나 문제는 " 빈 주소 제한 "에 있습니다. 이는 지갑 소프트웨어가 시드 구문으로부터 지갑을 재구성할 때 잔액 스캔을 중단하기 전에 허용하는 연속된 빈 주소 대기열의 길이를 의미합니다.
현재, 코인조인 라운드가 완전히 실패할 경우(귀속 단계에서도 유효한 트랜잭션을 생성할 수 없는 경우), Wasabi는 이후 코인조인 시도에서 동일한 출력 주소를 사용합니다.
그렇다면 공격자는 이로부터 무엇을 알 수 있을까요? 두 명 이상의 (실제) 참가자가 있는 라운드가 실패했다고 가정해 보겠습니다. 라운드 진행 동안 코디네이터와 모든 참가자는 모든 참가자가 공통적으로 원하는 입력과 출력을 알고 있습니다. 개별 참가자가 원하는 입력과 출력(상관관계)은 참가자가 여러 명이기 때문에 k-익명성 집합으로 보호됩니다.
이제 라운드가 실패한 후 하나 이상의 참가자가 다음 코인조인 라운드에 참여한다고 가정해 보겠습니다. 이전 라운드에 참여했던 참가자 그룹과 완전히 동일한 그룹이 다음 라운드에 참여하려는 경우가 아니라면, 주소 재사용으로 인해 k-익명성 집합이 깨집니다. 현재 라운드의 입력과 출력이 이전 실패한 라운드의 입력 및 출력과 겹치면 동일한 참가자가 참여하고 있다는 의미이며, 이는 해당 참가자의 익명성을 해제할 수 있게 합니다.
이 결함을 해결하는 방법은 라운드 실패 후 주소를 재사용하지 않는 것입니다. 현재 실패한 라운드 이벤트에서 주소를 태그 공개 풀 리퀘스트(PR)가 있습니다. 그러나 이것이 null 주소 제한과 어떻게 상호 작용할지는 불분명합니다.
이 문제는 " 무음 결제 " 기반 기술을 사용하여 해결할 수 있을 것입니다. 이 방식을 사용하면 코인조인 라운드의 새로운 출력 주소가 거래 입력값(그리고 nLockTime 필드)으로부터 결정론적으로 생성되어, 라운드 실패 횟수와 관계없이 지갑 복구가 보장됩니다. 하지만 이 접근 방식의 단점은 Wasabi 결정론적 지갑의 시드 구문이 다른 모든 지갑과 호환되지 않는다는 것입니다. 즉, Wasabi 지갑 내 에서만 자금을 복구할 수 있습니다.
마지막으로, Wasabi 클라이언트는 RRC 호출을 통해 코인조인 라운드 내에서 직접 결제를 전송하는 기능을 지원합니다. 이 기능은 별도의 트랜잭션을 전송하지 않으므로 거래 수수료를 절감할 수 있습니다. 그러나 이 기능은 우리가 논의 중인 문제점을 내포하고 있습니다. 코인조인 라운드가 실패한 후, 이러한 직접 결제는 새로운 주소로 되돌아가지 않고 재시도됩니다. 더욱이, 이 기능은 RPC를 통해서만 접근 가능하고 그래픽 사용자 인터페이스(GUI)에 노출되지 않는 상위 수준 기능일 뿐만 아니라, GUI는 코인조인 내 직접 결제의 익명성에 대한 어떠한 설명도 제공하지 않습니다.
3.3.1 공유 소유권 입력 세트 공개
주소 재사용을 방지한다고 해서 두 번째(약간 더 작은) 정보 유출 문제가 해결되는 것은 아닙니다. 공격자는 동일 소유자에게 속한 여러 코인에 대한 정보를 얻을 수 있습니다. Wasabi는 효율성을 위해 종종 단일 코인조인 라운드에서 여러 입력값을 사용합니다. 따라서 공격자는 서로 다른 코인이 동일 소유자에게 속한다는 통계적 증거를 확보할 수 있습니다. 여러 코인을 한 번에 사용하는 코인조인 방식에서 이 문제를 완전히 해결할 수 있는 방법은 아직 불분명합니다.
3.3.2 무효 라운드를 통한 정보 추출
더 리스크 하지만 잠재적으로 더 많은 정보를 얻을 수 있는 공격 방법은 코디네이터가 완전히 잘못된 입력을 사용하여 실제 앨리스 수가 많지 않은데도 앨리스가 많은 것처럼 가장하는 것입니다. 이러한 공격이 리스크 이유는 Wasabi 프로토콜에서 참여자들은 최적의 코인 액면가 선택에 필요한 출력 등록 단계 이전에 해당 라운드의 모든 입력을 알고 있기 때문입니다. 최신 UTXO 세트에 접근할 수 있는 참여자는 이러한 사기를 감지할 수 있습니다. 그러나 현재 Wasabi 클라이언트는 UTXO 세트에 대한 접근 권한을 전제로 하지 않으므로 이러한 사기를 자동으로 감지할 수 없습니다.
턴 실패를 이용한 공격과 비교했을 때, 무효 턴 공격의 장점은 악의적인 코디네이터가 의도된 입력과 의도된 출력 간의 관계에 대한 더 나은 통계 정보를 더 낮은 비용으로 얻을 수 있다는 점입니다. 그러나 주소 재사용 문제가 해결되면, 학습된 매칭 관계가 사실상 무용지물이 되기 때문에 이러한 유형의 공격은 효과가 떨어집니다.
3.4 공격 라운드 일관성
앞서 언급했듯이 코인조인 라운드에서 Sybil어택 공격이 발생할 가능성은 항상 존재하지만, 공격자는 성공적인 라운드(채굴된 거래)에 대한 수수료를 지불해야 하므로 공격 비용이 매우 높을 것으로 예상됩니다.
하지만 만약 이 비용을 지불하지 않아도 된다면 어떨까요?
만약 코디네이터가 서로 다른 라운드의 참가자들이 동일한 유효한 거래에 서명하도록 유도할 수 있다면, 코디네이터는 다른 참가자들의 유동성을 재사용하여 각 참가자에게 Sybil어택 공격을 가할 수 있습니다. Wasabi는 라운드를 식별하기 위해 해당 라운드에 관련된 모든 값을 해싱 하여 생성된 256비트 "라운드 ID"를 사용합니다. 중요한 것은 입력 등록 단계의 시작 시간과 코디네이터의 신원 정보입니다. 이 두 가지 정보만으로도 라운드를 고유하게 식별할 수 있습니다. 또한, 모든 라운드 설정이 이 라운드 ID에 해싱되므로, 라운드 ID가 일관되게 유지된다면 코디네이터는 각 라운드의 설정이 다르더라도 행동 차이를 통해 참가자를 익명화할 수 없습니다.
코인조인 과정에서 Wasabi 클라이언트는 주기적으로 모든 라운드의 상태를 요청합니다. 그런 다음, 클라이언트가 특정 라운드에 참여하기로 결정하면 해당 라운드의 ID를 사용하여 코디네이터와 상호 작용합니다 . 라운드가 가득 찬 경우와 같은 특정 상황에서는 여러 라운드가 병렬로 진행될 수 있으며, 코디네이터는 각 클라이언트에게 서로 다른 라운드 ID를 알릴 수 있습니다.
입력 등록 단계에서 모든 Alice는 자신의 입력에 대한 BIP-322 소유권 인증서를 코디네이터에게 전송합니다. 이러한 소유권 인증서는 라운드 ID에 할당되어 다른 라운드에서 재사용되는 것을 방지합니다. 마지막으로, 서명 전에 코디네이터는 각 클라이언트에게 모든 입력에 대한 소유권 인증서를 제공합니다. 클라이언트는 이러한 소유권 인증서를 받은 후 이를 검증합니다 .
Kogman이 지적하는 문제는 소유권 증거만 검증하는 것으로는 불충분하다는 점입니다. 해당 소유권 증거가 증명하고자 하는 트랜잭션 입력의 스크립트 공개 키( scriptPubKey )와 실제로 일대일로 대응하는지 여부도 검증해야 합니다. Wasabi 클라이언트는 유효한 UTXO 집합에 접근할 수 있다고 가정하지 않으므로 소유권을 직접 검증하지 않습니다.
만약 여기서 멈춘다면, 소유권 증명 메커니즘은 "가짜" 소유권 증명으로 속을 수 있습니다. 즉, 실제(증거 생성) 공개 키가 소유권 증명이 입증하려는 거래 입력의 스크립트 공개 키와 일치하지 않는 경우입니다.
그러나 코그만은 탭루트 서명이 어떻게 작동하는지 고려하지 못했습니다. 탭루트 입력의 서명은 트랜잭션에 포함된 모든 입력 스크립트의 공개 키를 보장하므로, 소유권 증명이 위조될 경우 결국 서명이 무효화되어 트랜잭션이 무효화됩니다. 이는 앞서 3.3.2절에서 논의한 바와 같이, 무효 입력 공격의 또 다른 형태입니다.
현재 Wasabi는 Taproot 주소가 아닌 다른 입력도 지원합니다. 이는 과거 많은 서비스들이 Bech32m(Taproot) 주소를 비교적 늦게 도입했기 때문입니다. 다행히 공격자가 아닌 다른 사용자가 Wasabi 라운드에서 Taproot 주소를 입력으로 사용하는 한, 모든 입력에는 유효한 소유권 증명이 있어야 합니다. 즉, 라운드 일관성을 이용한 Sybil어택 공격을 성공시키려면 악의적인 코디네이터는 해당 라운드의 모든 Taproot 주소만큼의 실제 유동성을 보유하고 (수수료의 동일한 비율을 지불해야 함) Taproot 주소를 제공하지 않은 클라이언트만 공격할 수 있습니다.
왜냐하면 정직한 노드는 라운드 ID에 한 번만 서명하기 때문입니다. 한 라운드에 앨리스 참가자가 세 명(애덤스, 브라운, 터너) 있다고 가정해 보겠습니다. 터너는 탭루트 입력을 두 개 이상 가지고 있고, 나머지 두 참가자는 탭루트가 아닌 입력만 가지고 있다고 가정합니다.
이번 라운드에서 유효한 거래가 이루어지려면 코디네이터는 애덤스와 브라운에게 터너로부터 받은 정확하고 유효한 소유권 증명을 제공해야 합니다. 하지만 코디네이터가 이 과정을 완료하면, 기술 지원 담당자는 모든 앨리스 참여자에게 동일한 라운드 ID만 부여할 수 있게 되어, 모든 앨리스 참여자가 동일한 라운드 ID로 출력을 등록하게 되므로 Sybil어택 공격 시도를 차단할 수 있습니다. 모든 앨리스 유동성은 전체 익명성 집합에 기여하게 됩니다.
Taproot 입력은 여러분의 입력이기도 하다는 점에 유의해 주세요. 코인조인 라운드에 Taproot 입력을 하나 이상 제공한 경우, 해당 라운드의 모든 정직한 유동성이 동일한 라운드 ID에 기여하게 됩니다. Bech32m(Taproot) 주소로의 결제는 이제 널리 지원되므로 Wasabi에서 기본적으로 Taproot 입금 주소를 생성하는 것이 좋습니다. 하지만 버전 2.6.0 현재 Wasabi는 이를 지원하지 않습니다. 그럼에도 불구하고, 출력 주소가 Taproot 주소일 확률은 50%이며, 이는 대부분의 코인조인을 보호합니다. 많은 유동성 공급자가 최소 하나 이상의 Taproot 주소를 등록하려고 시도하기 때문입니다.
3.5 k-익명 통신 특성 집합
앞서 Kogman은 GitHub 이슈 에서 등록 지연 문제를 제기했습니다. Kogman은 이러한 비판에 대한 명확한 엔지니어링 근거를 제시하지는 않았지만, 다음과 같은 점을 추론할 수 있습니다. 즉, 여러 단계에서 신원 분리를 통해 익명성을 달성하려는 모든 다자간 코인조인 방식에서는 k-익명성 통신 특성 집합이 중요하다는 것입니다.
Tor는 고정 길이 릴레이 셀을 통한 라우팅으로 TCP 스트리밍과 유사한 익명화 기능을 제공한다는 점을 기억하십시오. 이제, 동일한 코인조인 라운드에 참여하는 모든 참가자 중에서 여러분의 인터넷 연결 속도가 가장 느리다고 가정해 보겠습니다. 즉, 여러분의 인터넷 연결 속도는 k-익명성 집합을 갖지 못합니다. 이는 실제로 가능합니다. 코디네이터는 데이터 상호 작용의 특정 타이밍을 통해 이러한 특성을 감지하고, 입력 및 출력 등록 단계에서 이 특성을 관찰하여 입력과 출력을 비익명화할 수 있습니다.
Wasabi가 궁극적으로는 완전히 무작위화된 타이밍 특성을 가진 원자적 패키지 교환을 통해 모든 통신이 이루어지는 순수 패키지 기반 데이터 익명성 체계로 전환될 수 있다면 이상적일 것입니다. 하지만 안타깝게도 Tor와 유사한 신뢰도를 가진, 널리 사용되는 그러한 체계는 아직 존재하지 않습니다. Wasabi는 무작위화된 지연 시간 사용을 늘림으로써 현재 상황을 어느 정도 개선할 수 있을 것입니다. 그러나 완전한 패키지 기반 통신 체계가 없는 상황에서는 k-익명성 집합을 최대화하기 위해 비교적 일반적인 인터넷 연결 유형을 통해 Wasabi를 사용하는 것이 최선일 수 있습니다. 마찬가지로, 참여자가 많아질수록 k-익명성 집합이 커지기 때문에 이 문제는 라운드별로 개선될 수 있습니다.
Kogman은 이 문제와 관련된 또 다른 버전을 지적합니다. 직렬화와 역직렬화 사이에는 미묘한 차이가 있다는 것입니다. Wasabi는 JSON 직렬화를 사용하는데, 이는 악명 높을 정도로 모호하고 구현마다 약간씩 다릅니다. 다시 말해, k-익명 집합은 정확히 동일한 직렬화 방식을 사용하는 참여자의 수에 따라 결정됩니다. 이러한 미묘한 차이로 인해 코디네이터가 입력과 출력을 연관시킬 수 있게 될 수도 있습니다.
다행히 Wasabi는 일반적으로 사용되는 구현체가 하나뿐이므로 실제로는 문제가 되지 않을 수 있습니다. 그러나 Wasabi는 궁극적으로 완전히 명확하고 엄격한 바이너리 직렬화 프로토콜로 전환해야 합니다.
4. 결론
Wasabi는 개선해야 할 부분이 많지만, 현재로서는 CoinJoin에 참여하는 데 있어 가장 좋은 선택임은 분명합니다. PayJoin을 지원하는 지갑들은 칭찬받아 마땅합니다. 송금인과 수취인(각자의 지갑 소프트웨어) 모두 PayJoin을 지원하는 경우 상당한 이점을 제공하기 때문입니다. 하지만 JoinMarket을 추천하고 싶은 마음은 있지만, 블록체인 온체인 자금의 출처에 대한 단서를 남기는 것은 매우 위험한 실수이며, 높은 리스크 치르더라도 신뢰를 배신하려는 위험한 코디네이터를 고용하는 것보다 훨씬 더 큰 위험입니다.
你想想吧:你会更希望承担一个实体可能不值得信任、并且TA 可以找出一种方法来绕过Wasabi 的密码学保护的리스크吗?还是说,你情愿故意在区块链内将元数据广播给整个世界,使得现在和未来的任何人 都能用它来去匿名化你呢?
虽然受信任的 协调员是不受欢迎的;但能够 信任你的协调员,也是一种双重保障。如果Kruw 即使想要也不能去匿名化我的coinjoin 交易,那当然是好事。但是,在此之上,如果有一个人类层面的好理由,认为他不会这样做,也是好事。
JoinMarket은 첫 번째 기준에서 실패합니다. 일반적인 사용 환경에서 수수료 지불 부족으로 인해 많은 거래가 익명성을 잃을 수 있습니다. 두 번째 기준에서도 실패하는데, 거래 상대방을 선택하는 데 전적으로 경제적 요인과 확률에 의존하기 때문에 여유 자금이 있는 악의적인 행위자라면 누구나 거래 상대방이 되어 사용자의 익명성을 파괴할 수 있습니다. 이는 마치 Tor가 탈중앙화 될 경우 악의적인 행위자를 막을 인적 요소가 없어 보안이 취약 해지는 것과 유사합니다. 사용자의 활동 내역이 기록되지 않을 것이라는 보장이 없기 때문입니다.
코그만의 과장된 행동은 우리가 해서는 안 될 행동의 좋은 예입니다. ... (역자 주: 이 문단은 등장인물의 평판에 대한 내용만 다루고 있으므로 번역하지 않았습니다.)
기술은 결코 완벽하지 않습니다. 저는 Wasabi만 사용하는 것이 아닙니다. CoinJoin을 통해 코인을 연결한 후 라이트닝 채널을 개설하고 라이트닝 네트워크를 통해 자금을 사용하는 방식을 선호합니다. 이 두 가지 방식은 완전히 다른 개인정보 보호 기술을 활용하므로, 두 가지 모두 실패할 경우에만 개인정보가 침해될 위험이 있습니다.
5. 각주
1. [bitcoindev]는 중앙 집중식 코인조인 방식(Wasabi 및 Samourai)에 대한 익명성 해제 공격을 재차 강조합니다 . (2024년 12월 21일 14:16, Yuval Kogman) 로컬 아카이브(OTS) 도 참조하세요 .
2. Kogman 也批评了现已死去的Samourai 钱包软件所用的Whirlpool 协议。我们不会在这篇文章中讨论这个协议,因为Samourai 钱包一直在有意变得非常不安全:它会默认泄露用户的xpub(拓展公钥)。 ↩
3. 그레고리 맥스웰의 기사 " CoinJoin: Real-World Bitcoin Privacy "와 그의 이전 게시물 " I taint rich! "는 코인조인이라는 개념을 널리 알렸습니다. 하지만 코인조인이라는 아이디어는 그보다 훨씬 전인 2011년 에도 언급된 적이 있으며, 맥스웰은 발명에 대한 어떤 권리도 주장하지 않았습니다. "코인조인"이라는 이름에 대해서는 맥스웰이 개인적으로 저에게 좋은 이름을 지어달라고 부탁했고, 저는 그 결과에 매우 만족합니다 !
4. Chainalysis 는 미국에 본사를 둔 블록체인 분석 회사입니다. 여기서 "Chainalysis"는 이러한 유형의 활동을 포괄적으로 지칭하는 용어로 사용됩니다 .
5. 예를 들어, 저는 사라 메이클존의 2013년 저서 * A Fistful of Bitcoins: Characterizing Payments Among Men with No Name *에서 사용된 클러스터링 기법이 블록체인 분석 회사에서 자주 사용된다는 이야기를 개인적으로 들었습니다. 그러나 해당 논문에 설명된 방법은 순전히 경험적 분석일 뿐, 정확한 통계적 확률 분석이 아니며, 애초에 그러한 목적으로 설계된 것도 아닙니다 .
6. 주문자들의 수수료 전략이 크게 다를 경우, 후속 거래에서 수수료 차이로 인해 익명성이 해제될 수 있으므로 실제로 이러한 문제가 발생할 수 있습니다. 하지만 JoinMarket은 수수료를 어느 정도 무작위화하여 이러한 문제를 완화합니다.
7. GingerWallet은 Wasabi 지갑의 중앙 코디네이터가 폐쇄되었을 당시 Wasabi 지갑의 소스 코드를 포크하기도 했습니다. 하지만 GingerWallet은 개발이나 사용이 활발하지 않은 것으로 보이므로 더 이상 자세히 다루지는 않겠습니다.
8. 5000, 6561, 8192, 10000, 13122, 16384, 19683, 20000, 32768, 39366, 50000, 59049, 65536, 100000, 118098, 131072, 177147, 200000, 262144, 354294, 500000, 524288, 531441, 1000000, 1048576, 1062882, 1594323, 2000000, 2097152, 3188646, 4194304, 4782969, 5000000, 8388608, 9565938, 10000000, 14348907, 16777216, 20000000, 28697814, 33554432, 43046721, 50000000, 67108864, 86093442, 100000000, 129140163, 134217728, 200000000, 258280326, 268435456, 387420489, 500000000, 536870912, 774840978, 1000000000, 1073741824, 1162261467, 2000000000, 2147483648, 2324522934, 3486784401, 4294967296, 5000000000, 6973568802, 8589934592, 10000000000, 10460353203, 17179869184, 20000000000, 20920706406, 31381059609, 34359738368, 500000000000, The values 62762119218, 68719476736, 94143178827, 100000000000 및 137438953472 사토시는 공통 값을 분해하는 데 필요한 평균 UTXO 수를 최소화하기 위해 신중하게 선택 되었습니다 .
9. 폐쇄형 코인조인 방식은 코인조인 참여자를 알려진 개체의 범위로 제한함으로써 Sybil어택 공격을 방지할 수 있습니다 .
10. 와사비 라운드에 대한 통계는 Wabisator , LiquiSabi 및 기타 프로젝트에서 수집 및 공개되었습니다 .
11. 이는 최악의 시나리오입니다. 공격자가 대상이 코인조인에 참여하려는 모든 코인을 알지 못하는 경우, 일부 코인이 입력 등록 단계에서 알 수 없는 이유로 등록되지 않아 공격 사실이 드러나게 됩니다 .



