비트코인 개인정보 보호를 강화하는 단계별 가이드: 무음 결제

이 기사는 기계로 번역되었습니다
원문 표시

저자: 베넷

출처: https://bennet.org/learn/silent-payments-bitcoin-privacy/

"각 거래마다 새로운 키 쌍을 사용해야 합니다. 그래야 이러한 거래들이 서로 연결되어 공통 소유자를 가리키지 않도록 할 수 있습니다."

— 사토시 나카모토

비트코인 백서 에서 사토시 나카모토 동일한 주소를 재사용하는 것은 개인정보 보호를 희생해야 할 수도 있음을 암시했습니다.

예를 들어 기부금을 받기 위해 이메일 주소처럼 비트코인 ​​주소를 공개하는 것은 해당 주소로 받은 모든 결제 내역과 향후 지출 내역을 전 세계에 영구적으로 노출하는 것을 의미합니다. 특히 해당 주소가 실제 신원과 연결되어 있다면 문제는 더욱 심각해집니다. 또 다른 방법은 결제자마다 새로운 수신 주소를 생성하여 주소를 지속적으로 변경하는 것입니다. 이는 개인 정보 보호에 더 효과적이지만 다소 번거롭습니다(참고로 저는 이 과정을 자동화하는 오픈 소스 도구를 개발한 적이 있습니다 ).

오늘날, 무음 결제는 세 번째 선택지를 제공합니다. sp1 으로 시작하는 주소 를 공개하고 자유롭게 공유할 수 있습니다. 그러면 결제하는 모든 사람은 각기 다른 비트코인 ​​주소로 송금하기 때문에 수신자가 동일인물인지 알 수 없습니다. 또한, 수신자는 결제자와 상호 작용할 필요가 없습니다. 라이트닝 인보이스나 LNURL 엔드포인트는 물론 XPUB(확장 공개 키)를 제공할 필요도 없습니다.

사실, BIP-352가 최종 확정된 이후 이론적으로는 가능했던 일이지만, 업계 인프라 지원은 이제 막 시작 단계에 불과합니다. 2026년, Sparrow Wallet은 무음 결제 기능을 지원하기 시작했습니다(저는 이 데스크톱 지갑을 적극 추천합니다). 여기에 " Frigate "라는 새로운 서버 측 소프트웨어가 더해지면서 ​​무음 결제가 마침내 실용화되었습니다.

제가 작성한 단계별 튜토리얼입니다. 이 글을 전부 읽고 나면 sp1 무단이체 주소를 만들 수 있습니다.

무이자 결제는 어떻게 작동하나요?

먼저, sp1 으로 시작하는 무담보 결제 주소는 "일반적인" 비트코인 ​​주소가 아니라는 점을 알아야 합니다. 일반적인 비트코인 ​​주소는 비트코인 ​​스크립트에 해당하며, bc1q 로 시작하는 Segregated Witness 주소와 bc1p 로 시작하는 Taproot 주소가 그 예입니다. 무담보 결제 주소에도 공개 키가 포함되어 있지만 , 이러한 공개 키는 온체인 에 직접 나타나지 않습니다. 이 부분은 나중에 더 자세히 설명하겠습니다. 따라서 블록체인 익스플로러 웹사이트에서 sp1 주소를 직접 검색해서는 찾을 수 없습니다.

sp1 주소는 다음과 같은 두 가지 유형의 요소로 구성됩니다.

  • 스캔 공개 키는 귀하에게 지급된 금액을 확인하는 데 사용됩니다.
  • 돈을 지출하기 위한 공개 키입니다 .

두 개의 공개 키는 각각 고유의 개인 키를 가지고 있습니다. 이 두 개의 공개 키는 체크섬 및 sp1 접두사와 함께 공개 가능한 비공개 결제 주소를 구성합니다.

다음은 다른 사람들이 이 무단 결제 주소로 송금 하는 절차입니다.

  1. 발신자의 지갑 소프트웨어는 각 거래 입력 의 개인 키를 검색하고, 이를 수신자의 스캔된 공개 키 ( sp1 주소에 인코딩된 두 개의 공개 키 중 하나)와 결합하여 공유 비밀 값을 계산합니다.
  2. 이렇게 공유된 비밀 값은 수신자의 공개 키를 조정하는 데 사용되어 완전히 새로운 비트코인 ​​주소 (구체적으로는 bc1p Taproot 출력)를 생성합니다. 발신자와 수신자만이 이 주소의 출처를 알 수 있습니다.
  3. 이 탭루트 주소로 코인을 보낼 때, 외부적으로는 이것이 비공개 결제라는 태그 없지만, 수신자의 지갑은 개인 키를 스캔하여 자신에게 보내는 결제임을 확인할 수 있습니다.
 graph TD sa[发送者A] --> sp[sp1 地址] sb[发送者B] --> sp sp -.-> ta1[bc1p...q7x] sp -.-> ta2[bc1p...m4k]

수신 측 에서 지갑 소프트웨어의 역할은 이러한 결제를 식별하는 것입니다. 무음 결제의 최종 목적지(수신 주소)는 거래 입력값 (즉, 거래를 구성하는 데 사용된 UTXO)에 따라 부분적으로 결정되기 때문에 가능한 모든 수신 주소를 미리 계산할 방법이 없습니다. 대신 지갑은 블록체인을 스캔하여 수신자에게 전송될 Taproot 출력값을 찾을 수밖에 없습니다. 수신자를 찾으면 지갑은 공유 비밀 값을 사용하여 조정된 지출 개인 키를 이용해 자금을 사용할 수 있습니다.

핵심은 두 명의 발신자가 동일한 sp1 주소로 송금하더라도, 겉보기에는 서로 관련이 없어 보이는 두 개의 Taproot 출력물이 생성된다는 점입니다. 이들 출력물 사이에는 공개적인 연결이 없으며, 원래 sp1 주소로 추적할 수 없습니다. 이러한 비상관성은 양측 모두에게 개인정보 보호 측면에서 이점을 제공합니다.

암호화에 대한 더 자세한 정보를 통해 궁금증을 해소해 보세요.

무음 결제에 사용되는 암호화 기술은 "타원 곡선 디피-헬만 키 교환(ECDH)"입니다. 이 기술은 오늘날 인터넷에서 이루어지는 대부분의 암호화 통신을 보호하는 데에도 사용됩니다. ECDH를 사용하면 송신자와 수신자가 동일한 공유 비밀 값을 독립적으로 얻을 수 있으므로 양측 모두 사전 고지 없이 주소를 계산할 수 있습니다.

이미 이 글들을 읽기 시작하셨다면, 아마도 더 심층적인 설명을 찾고 계신 거겠죠. 여기서는 그 설명을 드릴 수는 없지만, 제가 가장 도움이 되었던 두 가지 자료를 추천해 드리겠습니다.

이 두 문서를 읽으신 후에 는 BIP352 사양서를 직접 읽어보시기를 권장합니다.

스캔이 왜 이렇게 어려울까요? Frigate를 사용하는 이유는 무엇일까요?

이러한 결제 내역을 찾는 데는 상당한 계산 능력이 필요합니다. 계층적 결정론적 지갑은 표준 일렉트럼 서버가 모니터링할 수 있는 고정된 주소 집합을 가지고 있습니다. 그러나 무음 결제의 경우, 관찰할 수 있는 고정된 주소가 없습니다. 각 결제는 수신자가 예측할 수 없는 새로운 파생 값을 생성합니다. 자신의 돈을 찾는 유일한 방법은 가능한 모든 거래를 확보하고, 스캔 키를 사용하여 공유 비밀 값을 반복 계산한 다음, 일치하는 항목이 있는지 확인하는 것입니다.

이러한 추가 작업은 풀 노드에서는 감당할 수 있지만(현재 널리 사용되는 노드 구현에서는 지원이 매우 제한적임), 모바일 지갑에서는 전혀 실용적이지 않습니다. 모바일 지갑은 간헐적으로만 작동하고 대역폭과 배터리 수명이 제한적이어서 풀 노드로 간주되지 않기 때문입니다.

Frigate 는 Sparrow가 제공하는 솔루션입니다. Electrum 서버 구현체로, 지갑을 풀 노드에 연결하는 데 사용되는 것과 동일한 서버이지만, 무음 결제를 감지하는 기능이 추가되었습니다. 속도 최적화가 되어 있어 타원 곡선 연산은 데이터베이스에서 처리되며 GPU를 사용하여 가속화 할 수 있습니다. 또한 트랜잭션 풀 데이터를 실시간으로 수신하므로 블록 확정 전에도 지갑에서 수신 거래를 확인할 수 있습니다.

이제 Sparrow와 2140.dev 가 공동으로 관리하는 frigate.2140.dev 서버 인스턴스를 누구나 사용할 수 있습니다. 이를 통해 자체 노드를 운영하지 않는 사용자를 포함하여 대부분의 사용자가 무음 결제를 이용할 수 있게 되었습니다. 물론, 직접 서버를 운영할 수도 있으며, 그 이점에 대해서는 나중에 자세히 설명하겠습니다.

개인 키 스캔의 민감도는 어느 정도입니까?

Frigate는 사용자에게 전송된 무단 결제를 스캔하기 위해 지갑에서 두 가지 정보, 즉 스캔용 개인 키지출용 공개 키가 필요합니다. 이러한 정보를 공개 Frigate 서버에 맡길 경우, 해당 서버는 이론적으로 무엇을 할 수 있을까요?

간단히 말해, 이 키는 sp1 주소로 전송된 모든 결제를 식별하고 해당 결제를 사용자와 연결할 수 있습니다 . 키 자체는 해당 금액을 사용할 수 없지만, 악의적이거나 해킹당한 서버는 결제 내역을 통해 사용자의 프로필을 파악할 수 있습니다. 바로 이러한 점을 방지하기 위해 무음 결제가 설계된 것입니다. 이러한 점에서 사용자가 제공하는 키는 XPUB와 유사합니다. 결제 내역을 보여주지만 자금을 이체할 수는 없기 때문입니다.

공개적으로 접근 가능한 Frigate 서버를 신뢰하는 것은 지갑이 조회하는 주소를 볼 수 있는 공개적으로 접근 가능한 Electrum 서버를 신뢰하는 것과 유사합니다. Sparrow처럼 오픈 소스 소프트웨어인 Frigate는 사용자가 전송하는 키를 메모리에 저장하여 일반 서버가 주소를 임시로 저장하는 것처럼 사용자 세션만 접근할 수 있도록 합니다. 따라서 운영자가 사용자를 속이지 않을 것이라는 신뢰가 필요합니다. (BIP-352는 보다 개인적인 모드를 지원합니다. 서버가 "조정" 데이터를 전송하면 지갑 소프트웨어가 스캔 키를 노출하지 않고 로컬에서 이를 일치시키는 방식입니다. 하지만 이 방식은 클라이언트에게 훨씬 번거롭기 때문에 Frigate는 서버 측 스캔 방식을 택했습니다.) 이러한 수준의 신뢰가 허용 범위를 넘어선다면 Frigate 서버를 직접 실행할 수도 있습니다. 하지만 그 방법은 이 글의 범위를 벗어납니다.

Sparrow에서 무음 결제 지갑을 생성하세요

자, 이제 새로운 무음 결제 지갑을 만들어 보겠습니다. 컴퓨터에 Sparrow 최신 버전(이번 업데이트 시점 기준 2.5.2 버전)이 설치되어 있어야 합니다.

지갑을 만드세요

Sparrow 소프트웨어 인터페이스를 열고 메뉴에서 파일 → 새 지갑을 선택한 다음 지갑 이름을 지정하고 생성을 시작합니다. "정책 유형" 섹션에서 "단일 서명 SP"(단일 서명 무음 결제)를 선택합니다. 앞서 설명했듯이 사용 가능한 스크립트 유형은 Taproot뿐입니다.

Sparrow에서 새 지갑을 생성할 때 스크립트 유형으로 '무음 결제'를 선택합니다.

" 키 저장소 " 섹션에서 "새 소프트웨어 지갑 또는 가져온 소프트웨어 지갑"을 클릭합니다. "니모닉 단어(BIP39)" 섹션에서 원하는 니모닉 단어 길이를 선택합니다. "새로 생성"을 클릭한 다음 지폐를 사용하여 생성된 시드 단어 세트를 적어 안전하게 보관하십시오 .

Sparrow에서 새 지갑의 키 저장소를 설정하는 방법입니다.

백업을 제대로 완료한 후 " 백업 확인"을 클릭하세요. 백업의 무결성을 확인하기 위해 문구를 다시 입력하라는 팝업 창이 나타납니다. 확인 후 "키 저장소 가져오기"를 클릭하여 소프트웨어의 메인 인터페이스로 돌아가세요. m/352'/0'/0' 의 파생 경로를 변경하지 마세요. 오른쪽 하단의 "적용" 버튼을 클릭하면 이 지갑에 암호를 추가할지 묻는 메시지가 나타납니다.

모든 과정이 완료되면 Sparrow 지갑 앱의 메인 인터페이스로 돌아갑니다.

Sparrow에서 Silent Payments 지갑이 구성되었으며, 파생 경로는 m/352'/0'/0'입니다.

방금 " 핫 월렛 "을 생성하셨다는 점에 유의해 주십시오. 즉, 모든 개인 키가 연결된 컴퓨터에 저장됩니다. 콜드 월렛(즉, 전용 하드웨어 서명기)을 사용한 비공개 결제 송수신 지원에 대해서는 아래에서 설명드리겠습니다.

무음 결제 서버에 연결하세요

일반 비트코인 ​​노드는 무음 결제가 완료되었음을 알려줄 수 없으므로, 스패로우(Sparrow)를 사용하려면 결제를 스캔할 수 있는 서버, 즉 프리게이트(Frigate) 서버에 알려야 합니다.

소프트웨어의 " 설정 " 페이지를 열고 왼쪽의 " 서버 "를 클릭합니다. 자체 노드에서 Frigate 인스턴스를 실행하는 경우 "개인 Electrum"을 선택하고 세부 정보를 입력합니다. 그렇지 않으면 "공용 서버"를 클릭하고 frigate.2140.dev 선택하여 공용 서버를 사용합니다. "연결 테스트"를 클릭하고 성공 메시지가 나타날 때까지 기다립니다.

Sparrow가 무단 결제 스캔을 위해 Frigate 서버에 연결되도록 구성합니다.

설정 페이지를 닫고 지갑에서 " 거래 내역 " 사이드바를 여세요. " SP-Demo 지갑의 거래 내역을 불러오는 중입니다."와 같은 메시지가 표시될 수 있습니다. 일반적인 Electrum 서버가 일반 지갑을 스캔하는 데 걸리는 시간보다 조금 더 걸릴 수 있지만, 잠시 기다리면 " 로딩 완료 " 메시지가 나타납니다. 이제 개인정보 보호를 향한 여정이 시작됩니다!

안전한 결제 주소를 확보하세요

" 수신 " 사이드바를 여세요. 일반 지갑과 달리 매번 새로운 주소가 표시되는 것이 아니라, 항상 동일한 무음 결제 주소 ( sp1... 으로 시작하는 문자열)와 해당 QR 코드만 표시됩니다. 이 무음 결제 주소는 공개적으로, 반복적으로, 자유롭게 공유할 수 있습니다! 이 주소는 절대 변경할 필요가 없습니다.

Sparrow의 수신 탭에 표시되는 고정 sp1 무음 결제 주소입니다.

" 거래 내역 "과 " UTXO " 사이드바를 열어보면 일반 비트코인 ​​지갑과는 인터페이스가 약간 다르다는 것을 알 수 있습니다. 주소가 미리 생성되지 않았기 때문에 처음에는 완전히 비어 있습니다. 이 화면들은 결제를 받은 후에야 채워지기 시작합니다. 첫 번째 무음 결제를 받은 후의 모습은 다음과 같습니다.

Sparrow에서 Silent Payments 비트코인 ​​지갑의 주소 탭입니다.

Sparrow에서 Silent Payments 비트코인 ​​지갑의 UTXO 탭입니다.

Sparrow 소프트웨어에 이 지갑을 로드할 때마다 서버는 사용자에게 전송된 무단 결제를 검색합니다. " 거래 내역 " 및 " UTXO " 페이지에 표시되는 결제는 블록체인 관점에서 볼 때 일반 결제와 완전히 동일합니다. 블록체인 온체인 에서 보면 아무런 차이가 없기 때문입니다. 이러한 결제는 일반적인 Taproot 출력일 뿐이며, 사용자의 지갑만 이를 사용자에게 전송된 결제로 인식할 수 있습니다.

자, 이것으로 결제 수령에 대한 논의를 마치겠습니다. 그럼 이제 무음 결제 주소로 결제금을 보내는 방법을 알아볼까요?

결제는 무음 결제 주소로 보내주세요.

sp1 주소로 송금하는 기능 은 수금하는 기능보다 더 강력하게 지원됩니다. Sparrow 외에도 BlueWallet , Wasabi , Nunchuk , Cake 와 같은 소프트웨어 지갑에서도 사일런트 결제를 지원합니다. Silentpayments.xyz 페이지에서 자세한 호환성 표를 확인할 수 있습니다.

Sparrow에서 무음 송금을 보내는 방법을 설명드리겠습니다. 측면에 있는 " 보내기 " 버튼을 클릭하고, 알고 있는 다른 사람의 sp1 주소를 복사하여 붙여넣은 다음, 보낼 금액과 거래 수수료를 입력하고 " 거래 생성"을 클릭합니다. 거래 생성 페이지에서 수신자가 여전히 sp1 주소로 표시되는 것을 확인할 수 있습니다.

Sparrow에서 무음 결제 주소로의 거래를 구성하는 방법.

하지만 스패로우는 거래에 서명하고 전송한 후 코인이 전송된 실제 탭루트 주소( bc1p 로 시작)를 표시합니다.

Sparrow를 사용하여 전송되는 비공개 결제입니다.

이 페이지 뒤에서 Sparrow는 이미 이 글의 첫 번째 섹션에서 설명한 송신자의 수학적 연산을 수행했습니다. 즉, 거래의 다양한 입력값과 수신자의 공개 키를 사용하여 일회성 Taproot 출력값을 도출하고 최종 거래를 브로드캐스팅했습니다. mempool.space 웹사이트에 접속해 보면 일반적인 Taproot 결제처럼 보일 것입니다. 이는 완전히 은밀한 결제로 감지할 수 없으며, 여러분이 알고 있는 sp1 주소와도 연결될 수 없습니다.

하드웨어 서명기와 관련된 한 가지 주목할 만한 사항은 출력 대상이 입력값에 따라 달라진다는 점입니다. 따라서 서명 과정에서 지갑은 입력된 개인 키를 사용하여 ECDH 연산을 수행해야 합니다. 소프트웨어에 저장된 개인 키의 경우 이 과정은 간단합니다. 그러나 개인 키가 기기 외부로 유출되지 않도록 설계된 콜드 월렛의 경우, 이는 완전히 새로운 호환성 문제를 야기합니다. 이 문제는 다음 장에서 자세히 다룰 것입니다.

하드웨어 서명자 및 냉장 보관

하드웨어 지원은 무음 결제 도입을 늦추는 주요 장애물입니다.

송금인 측에서는 Bitbox 에 큰 찬사를 보냅니다. Bitbox는 sp1 주소로 결제를 전송하는 것을 완벽하게 지원하는 최초의 하드웨어 서명기 제조업체입니다. PSBT 파일( BIP 375 )을 통해 무선으로 격리된 Coldcard 서명기가 비공개 결제 거래에 서명하는 것이 가능할 것으로 생각되지만 , 아직 직접 확인하지는 못했습니다. 확인되는 대로 이 페이지를 업데이트하겠습니다.

게다가 다른 제공업체의 사용자들은 상황이 더 좋지 않습니다. Trezor, Ledger 및 Blockstream Jade 서명 생성기 사용자는 여전히 비공개 결제 주소로 결제를 보낼 수 없습니다 .

그렇다면 결제 수령은 어떻게 될까요 ? 제 튜토리얼을 따라 하셨는데 하드웨어에서 키를 가져오려고 하면 다음과 같은 메시지가 표시될 겁니다.

Trezor 기기를 Sparrow에 연결하여 무음 결제 지갑을 생성하는 과정에서 오류가 발생했습니다.

기기 식별 오류(저는 Trezor T가 아닌 Safe 3에 연결되어 있습니다)는 차치하고라도, 이 오류 메시지는 정확합니다. 콜드 월렛으로는 아직 사일런트 결제를 받을 수 없습니다. 앞서 설명드린 것처럼, sp1 주소를 사용하여 결제를 받는 것은 공개 키 파생 경로를 변경하는 것만큼 간단 하지 않습니다 . 수신 결제를 감지하려면 월렛이 스캔 개인 키를 보유하고 거의 모든 거래에서 입력 공개 키에 대해 ECDH를 실행해야 합니다. 하드웨어 서명기는 개인 키를 노출하지 않도록 설계되었습니다. BIP352는 스캔 키 노출을 허용하지만(스캔만 가능하고 지출은 불가능함), 이를 위해서는 별도의 펌웨어 지원이 필요합니다.

요약하자면, 대부분의 사람들은 핫월렛에서 소액을 개인적으로 수령한 후, 일반 핫월렛을 사용하는 것처럼 더 큰 금액을 콜드월렛으로 이체하는 방식으로 시작할 수 있습니다. 다만, 대다수의 하드웨어 서명 장치 사용자는 아직 sp1 주소로 결제를 보낼 수 없다는 점을 이해하셔야 합니다.

무이자 할부 결제가 아직 당신에게 충분히 성숙한 방식이 아니라면

무음 결제는 완전히 새로운 개념입니다. 앞서 언급한 단점들 때문에 여러분의 필요에 맞지 않을 수도 있다는 점은 충분히 이해합니다. 바로 그런 이유로 저는 서버리스 기부금 수령 소프트웨어를 개발했습니다. 주소가 지속적으로 변경되는 방식은 비트코인 ​​결제를 수락하는 신뢰할 수 있는 방법이며, 모든 지갑과 호환되고 개인정보를 침해하지 않습니다.

직접 시도해 보세요

이 가이드를 읽은 후 무음 결제에 대해 더 자세히 알아보는 가장 좋은 방법은 직접 시도해 보는 것입니다. 다만 주의할 점은 무음 결제의 기술적 사양은 아직 비교적 새로운 기술이므로 실제 자금으로 테스트할 때는 각별히 주의해야 한다는 것입니다.

만약 사일런트 결제와 호환되는 지갑이 없고, 프로토콜 자체를 시험해보고 싶다면 Silent Amulet을 고려해 볼 만합니다. Silent Amulet은 브라우저에서 단일 HTML 파일로 실행되는 완전한 기능을 갖춘 BIP-352 지갑입니다. 서버에 스캔 키를 전송하지 않고도 로컬 스캔을 위해 자체 Blindbit 인덱서에 연결하도록 설정할 수도 있습니다. 이는 2절에서 언급한 더욱 안전한 개인 정보 보호 모드입니다.

아래 QR 코드를 스캔하여 지갑 소프트웨어가 sp1 주소를 파싱할 수 있는지 테스트할 수 있습니다.

제 무음 결제 주소의 QR 코드입니다. 스캔하여 지갑을 테스트해 보세요.

이 가이드가 유용하다고 생각하시고 호환되는 지갑을 가지고 계시다면, 이 가이드 웹사이트 운영을 위해 소액이라도 사토시 기부를 부탁드립니다. 지갑에서 사일런트 결제를 지원하지 않는 경우, 신뢰할 수 있는 세그리에이티드 위트니스(Segregated Witness) 지갑이나 라이트닝 페이먼트(Lightning Payment)를 통해 기부하실 수도 있습니다.

저는 Sparrow 지갑에 기부하는 것도 추천합니다. Sparrow 지갑은 단 한 명의 개발자가 관리하는 최고의 비트코인 ​​프로젝트 중 하나이며, 완전 무료 오픈 소스입니다.

읽어주셔서 감사합니다. 툰총 씨에게 행운을 빕니다.

(위에)

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트