기밀(Confidential)은 내가 생각했던 의미가 아니다

기밀(Confidential)은 내가 생각했던 의미가 아니다

영어에서 번역됨

좋습니다, 솔직히 말하겠습니다: 제가 틀렸습니다. 적어도 최근까지는 틀렸습니다.

이 블로그를 오랫동안 읽어왔다면 Liquid 네트워크 상의 자산에 대해 제가 열정적으로 썼던 글들을 기억할 것입니다. L-BTC, Liquid의 USDT — 저는 여러 번 그것들을 칭찬했습니다. 저는 그곳의 거래가 기밀(confidential)이라고 썼고, 이것이 항상 감시하는 AML 분석가들과, 과거에 어떤 이유로든 '나쁜 사람들과 어울렸다'는 이유로 당신의 사토시를 동결할 수 있는 중앙화 거래소(CEX)로부터 당신을 보호한다고 썼습니다.

저는 진심으로 그렇게 믿고 있었습니다.

대부분의 지갑에서 Liquid 거래를 보내면 보통 두 개의 블록 익스플로러 링크를 받습니다: 하나는 기밀 거래를 보여주고, 다른 하나는 '언블라인드(unblinded)'된 버전을 보여줍니다. 두 번째 링크는 송금인만 볼 수 있고, 첫 번째는 익스플로러를 보는 누구나 볼 수 있습니다. 그리고 왠지 저는 '기밀'이란 말이 정확히 무엇을 의미하는지 의심해볼 생각을 하지 못했습니다. 그 링크들을 통해 정확히 무엇이 보이는지 확인해보지 않았습니다.

하지만 최근에 우리는 rabbit.io에서 또 다른 스왑을 처리하면서 일부 암호화폐를 Liquid 블록체인의 USDT로 변환했습니다. 사용자가 거래에 대한 세부사항을 요청했습니다. 저는 블록 익스플로러를 열었고 — 그때 충격을 받았습니다.

주소들 사이의 전체 상호작용 그래프가 눈앞에 드러나 있었습니다. 누가 누구에게 무엇을 보냈는지. 언제. 얼마나 자주. 주소들 사이의 관계 구조가 완전히 노출되어 있었습니다. 그리고 그 어느 것도 어떤 '기밀성'으로 숨겨지지 않았습니다.

그때 저는 제가 심각하게 오해하고 있었고 — 더 나쁘게는 — 의도치 않게 여러분을 오도했다는 것을 깨달았습니다. 죄송합니다.

Liquid는 AML 관련 남용으로부터 당신을 보호하지 않습니다. AML 모니터링 서비스가 한 번이라도 당신에게 자금을 보낸 모든 주소를 '오염(tained)'으로 분류하기로 결정하면, 다른 투명한 블록체인에서 하듯 똑같은 이유로 당신의 주소도 오염된 것으로 표시할 수 있습니다.

저는 한 형태의 기밀성과 다른 것을 혼동했습니다. 그리고 그 혼동은 중요합니다.

Liquid가 실제로 무엇을 숨기는가?

'Confidential transaction'은 Liquid의 경우 은유가 아니라 기술적으로 정확한 용어입니다. 하지만 그것은 매우 구체적인 것을 의미합니다: 금액과 자산 종류가 숨겨진다는 것. 그게 전부입니다.

다만, 제가 이해하는 데 도움이 된 비유를 하나 들자면 이렇습니다. 자세히 조사하면서 저는 Liquid를 식탁보로 덮인 테이블로 생각하기 시작했습니다. 식탁보는 접시를 가려 그 위에 무엇이 얼마나 있는지 볼 수 없게 하지만, 테이블 자체와 접시들이 그 위를 이동하는 모습은 블록 익스플로러를 통해 보는 누구에게나 완전히 보입니다.

외부 관찰자는 당신이 백 비트코인을 보냈는지 아니면 50센트어치의 USDT를 보냈는지 알 수 없습니다. 그러나 주소 A가 주소 B에게 무언가를 보냈고, 그 뒤에 B가 주소 C로부터 무언가를 받았다는 사실은 명확하게 볼 수 있습니다.

그리고 거기서 제 문제가 시작됩니다.

개인적인 비트코인 결제(특히 rabbit.io의 스왑과 무관한 경우)에는 저는 라이트닝 네트워크를 사용합니다. 이유는 간단합니다: 수신자는 코인의 이전 역사를 볼 수 없습니다. 그들은 그것을 '오염'되었다고 선언할 근거가 없으며, 아무것도 제공하지 않고 내 비트코인을 보류할 수 없습니다.

저는 순진하게도 Liquid가 비슷한 보호를 제공한다고 가정했습니다 — 전체 셀프 커스터디에 대한 일부 트레이드오프가 있을 수 있지만, 결제 채널을 관리하는 운영상의 복잡성 없이 말입니다.

하지만 사실은 그렇지 않았습니다.

Liquid가 아주 잘 해결하는 것은 전혀 다른 문제입니다. Liquid의 거래 기밀성은 네트워크에서 운영되는 토큰 발행자들로부터 사용자들을 남용으로부터 보호합니다.

이더리움, 트론 등 유사한 블록체인에서는 인기 있는 토큰 뒤의 스마트컨트랙트가 발행자가 모든 지갑 잔액을 볼 수 있고 필요하다면 버튼 하나로 당신의 토큰을 동결하도록 설계되어 있습니다.

Liquid에서는 발행자가 기술적으로 그것을 할 수 없습니다 — 그것이 첫 번째 포인트입니다. 설령 그들이 원한다고 해도 무의미합니다: 각 주소에 보유된 금액과 자산 종류가 숨겨져 있기 때문입니다. 발행자는 누가 얼마나 많은 토큰을 보유하고 있는지 알 수 없습니다.

이는 표적 검열에 대한 의미 있는 방어입니다. 또한 스캐머와 도둑들의 원치 않는 관심으로부터의 괜찮은 방패이기도 합니다 — 누구도 당신의 주소로 얼마의 가치가 흘러들어오는지 볼 수 없습니다.

Liquid는 그것이 설계된 문제를 해결합니다. 다만 제가 생각했던 문제를 해결하는 것은 아니었습니다. 그리고 그렇다고 해서 그 블록체인이 나쁘다는 뜻은 아닙니다 — 그것은 특화되어 있다는 뜻입니다.

'기밀'로 우리가 실제로 의미하는 것

더 나아가기 전에, 하나 분명히 합시다. 우리가 거래를 '기밀'하다고 부를 때, 우리는 정확히 무엇을 말하고 있는가?

모든 거래에는 여러 구성 요소가 있으며, 각각은 별도로 숨길 수 있습니다:

  • 금액과 자산 - 무엇의 얼마가 이전되는가.
  • 주소들 간의 관계 - 누가 누구와 상호작용했는지와 거래 그래프의 모습.
  • 정체성 - 주소와 실제 개인 또는 조직 사이의 연결.
  • 이전의 존재 자체 - 누군가 거래가 발생했는지조차 볼 수 있는가.

서로 다른 시스템은 서로 다른 부분을 기밀로 만듭니다. 그리고 이 레이어들을 분리하면 각 기술이 실제로 무엇을 보호하는지 — 그리고 무엇을 보호하지 않는지 — 훨씬 쉽게 이해할 수 있습니다.

비트코인에서의 기밀성

라이트닝 네트워크: 출처를 알 수 없는 송금

Liquid가 '얼마'와 '무엇'을 숨긴다면, 라이트닝은 '어디서'를 숨깁니다.

다른 도시에 있는 친구에게 소포를 보내고 싶다고 상상해보세요. 직접 배달하지 않습니다. 택배 기사에게 맡기고, 그가 시외버스 기사에게 전달하고, 시외버스 기사가 목적지 도시의 택시 기사에게 전달하면 택시 기사가 마침내 친구에게 배달합니다.

그 사슬의 마지막인 택시 기사는 버스 기사가 상자를 건네주었다는 것만 알 뿐입니다. 그가 원래 발송자가 당신이라는 사실은 전혀 알지 못합니다.

라이트닝에서는 이것을 어니언 라우팅이라고 부릅니다 — 토르(Tor)에서 사용되는 것과 같은 개념입니다. 수신자는 경로의 마지막 홉만 봅니다. 코인의 역사(거래 이력)는 그들에게 보이지 않습니다. AML 분석가는 분석할 만한 것이 없습니다. 왜냐하면 어떠한 거래 기록도 어느 곳에도 기록되지 않기 때문입니다.

이것이 바로 제가 개인 거래에 필요로 했던 것입니다. 그래서 저는 개인적인 거래에 라이트닝을 사용합니다.

단점이 하나 있습니다: 결제 채널의 개설과 종료는 비트코인 블록체인에 기록됩니다. 하지만 그것들은 단지 처음과 마지막 거래일 뿐입니다 — 그 사이에 오갈 수 있는 수십, 수백, 심지어 수천 건의 결제는 기록되지 않습니다.

사일런트 페이먼트: 하나의 수신자, 많은 보이지 않는 주소들

공인(퍼블릭) 인물들은 큰 문제에 직면합니다. 만약 그들이 기부나 지불을 위해 일반 비트코인 주소를 공개하면, 누구나 블록 익스플로러를 열어 해당 주소로 자금이 몇 번 보내졌는지와 현재 얼마를 보유하고 있는지 볼 수 있습니다. 마치 은행 카드 번호가 낯선 사람들에게 계좌 명세서를 모두 보여주는 것과 같습니다.

사일런트 페이먼트는 이를 우아하게 해결합니다.

  • 저는 하나의 '사일런트 주소'를 공개합니다.
  • 당신은 그것을 지갑에 붙여 넣어 저에게 송금합니다.
  • 당신의 지갑은 영리한 수학적 트릭을 수행합니다: 내 공개키와 당신의 키를 사용해 완전히 새롭고 고유한 일회용 주소를 생성합니다.
  • 그 주소는 저에게 속하지만 — 저도 미리 알 수 없습니다. 그리고 공개된 내 사일런트 주소와 되돌려 연결될 수 없습니다.

금액은 여전히 보입니다 — 이것은 일반 비트코인 거래일 뿐입니다. 하지만 주소를 게시한 공개 정체성과 특정 수신 결제 사이의 연결은 숨겨집니다.

유사한 프라이버시 방식이 최근 Stellar 네트워크에서 제안되었습니다.

Ark: 비트코인을 위한 용해 풀

Ark는 비트코인 위에 구축된 비교적 새 프로토콜로, 활발히 개발 중입니다. 그것은 라이트닝과 비슷한 것을 제공하려고 하지만, 사용자가 채널을 관리할 필요가 없도록 합니다.

개별 결제 채널 대신, 모든 참가자가 자신이 기여한 만큼의 코인을 공유 풀에 예치하면서 자신의 기여분에 대한 통제권은 유지합니다. 당신은 코인을 냄비에 던집니다 — 그것들은 수천 개의 다른 코인 사이에 녹아 듭니다.

누군가에게 지불하고 싶을 때, 운영자에게 풀 내부의 다른 참가자에게 특정 금액을 재할당하라고 지시합니다. 수신자가 풀의 일부가 아니라면 운영자는 자금을 인출하여 지정된 주소로 보냅니다. 운영자는 당신의 요청을 거부할 수 없습니다.

그 결과, 당신이 원래 예치한 코인과 친구가 결국 받는 코인은 가시적인 온체인 흔적으로 연결되지 않습니다. 연결이 끊깁니다.

처음 보면 믹서와 유사해 보이지만, 그 주된 목적은 예치와 인출 사이의 연결을 끊는 것이 아닙니다. 핵심 기능은 풀 내부의 내부 전송 — 운영자에 대한 청구권의 재할당입니다. 이것들은 즉시적이고 저렴하며 중앙화 거래소 내부 이체와 매우 비슷합니다.

핵심 차이점은, CEX 운영자와 달리 Ark 운영자는 당신의 자금을 동결할 수 없다는 점입니다.

기밀성 관점에서 이것은 또한 내부 CEX 이체와 유사합니다: 운영자는 모든 것을 보고, 외부 관찰자는 아무것도 볼 수 없습니다 — 심지어 이체가 발생했다는 사실조차도요.

Shielded CSV: 수신자가 혼자 검증한다

이것은 매우 새로운 아이디어로 아직 연구 단계에 있습니다. 하지만 매우 간단히 설명할 수 있습니다.

  • 일반적인 블록체인은 어떻게 작동하는가? 앨리스는 공개적으로 세계에 알립니다: '나는 밥에게 천 사토시를 보낸다!' 모두가 그것을 보고, 검증하고, 기록합니다.
  • Shielded CSV는 어떻게 작동할까? 앨리스는 밥에게 비공개 메시지를 보냅니다: '나는 너에게 천 사토시를 보낸다. 내가 그걸 가지고 있었고 올바르게 사용했다는 증거가 여기 있다. 스스로 검증해라.' 나머지 세상에는 앨리스가 거래 자체를 게시하는 대신, 그녀가 자금을 보유했고 올바르게 사용했다는 암호학적 증거만 게시됩니다. 이는 그녀가 그것을 다시 사용할 수 없다는 것을 의미합니다.

얼마를 보냈고 누구에게 보냈는지에 대한 모든 정보는 앨리스에서 밥으로 직접 전송됩니다. 수신자는 전송의 내용을 세계에 드러내지 않고 그것을 검증합니다. 보다 정확히 말하면, 네트워크는 거래가 유효하다는 것만 검증하고, 수신자는 거래가 실제로 무엇을 포함하는지 검증합니다.

블록체인은 이중 지불을 방지하는 데 필요한 최소한의 암호학적 흔적만을 저장합니다. 거래에 관여하지 않았다면, 당신은 그 거래에 대해 아무것도 알 수 없습니다 — 단지 어떤 UTXO가 소멸되었다는 사실만 알게 됩니다.

거래의 정당성에 대한 zk-증명만을 블록체인에 저장하는 유사한 모델은 거의 10년 가까이 Zcash 네트워크에서 성공적으로 운영되어 왔습니다.

다른 암호화폐에서의 기밀성

MimbleWimble: 주소가 없는 블록체인

비트코인 밖으로 나가 봅시다. 여기에서 개발자들은 거래 그래프 문제를 훨씬 더 급진적인 방식으로 다뤘습니다.

전통적 블록체인에서는 주소와 금액과 명확한 거래 구조를 봅니다: 이것이 입력이고 이것이 출력이며 그들 사이의 연결입니다.

MimbleWimble(Grin과 Beam에서 사용)은 주소가 전혀 없습니다. 눈에 보이는 금액조차 없습니다. 오직 입력과 출력만 있으며 그 크기는 숨겨져 있습니다.

블록이 형성될 때, 그것은 각 입력과 출력 사이의 명백한 연결이 있는 개별 거래들을 포함하지 않습니다. 대신 블록은 다음을 포함합니다:

  • 블록에 포함된 모든 입력의 완전한 목록,
  • 블록에서 생성된 모든 출력의 완전한 목록,
  • 그리고 전체 잔액이 올바르다는 수학적 증명.

누가 누구에게 코인을 보냈는지에 대한 기록은 없습니다. 더구나, 한 거래의 출력이 그 출력의 부모 거래가 포함된 같은 블록 내에서 소비된다면, 그 중간 입력과 출력은 블록체인 기록에서 완전히 사라집니다.

외부 관찰자는 단지 일부 코인이 소멸되고 새로운 코인이 생성되었다는 것만 봅니다.

그러나 거래는 블록에 포함되기 전에 이를 처리하는 네트워크 노드들에게는 기밀이 아닙니다. 거래가 네트워크에 퍼지는 동안에는 입력과 출력 사이의 연결이 보입니다. 누군가가 블록 포함 이전의 거래 전파를 적극적으로 모니터링한다면 그래프의 일부를 재구성할 수 있을지도 모릅니다.

라이트코인의 MWEB: 실제로는 존재하지 않는 주소들

라이트코인 네트워크는 MimbleWimble 확장 블록(MWEB)이라는 확장을 구현했습니다. 이것은 Grin이나 Beam처럼 별도의 MimbleWimble 체인이 아니라, 메인 블록체인에 내장된 추가 레이어입니다.

코인은 다음과 같이 할 수 있습니다:

  • 일반 UTXO에서 MWEB로 이동,
  • MWEB 내부에서 사용,
  • 그리고 이후 표준 라이트코인으로 다시 인출.

어떤 면에서는 이것은 비트코인의 Ark와 유사하지만 단일 운영자가 없다는 점이 다릅니다. '운영자'는 네트워크 노드들이고, 물론 블록에 입력과 출력을 포함시키는 채굴자들입니다.

사용자 편의를 위해 라이트코인의 MWEB 구현은 주소 기능을 포함합니다. 주소처럼 보이는 친숙한 문자열이 있고, 블록체인은 거래가 'MWEB 주소'로 보내졌을 때 이를 이해합니다.

하지만 이러한 주소들은 사용자 인터페이스 수준에만 존재합니다. MWEB 블록 내부에는 주소가 없고 오직 입력과 출력의 집계된 목록만 있습니다.

Monero: '나는 스파르타쿠스다!'

I am Spartacus

본질적으로 그것이 Monero의 작동 방식입니다.

당신이 거래를 보낼 때, 지갑은 당신의 코인을 블록체인의 여러 다른 무관한 과거 출력들과 혼합하여 미끼(decoy)로 사용합니다. 외부 관찰자의 관점에서는 그 거래는 그 그룹의 어느 구성원이 시작했을 수도 있습니다.

동시에 Monero는 일회용 스텔스 주소를 사용해 수신자를 숨깁니다: 각 결제마다 고유한 주소가 생성되고(사일런트 페이먼트와 유사한 정신), 수신자의 공개 주소와 연결될 수 없습니다. 거래 금액 또한 숨겨집니다.

이는 현재 온체인 기밀성의 가장 공격적인 형태입니다. 그래서 규제기관들이 Monero를 꺼리는 이유입니다.

하지만 '가장 공격적'이 곧 '가장 미래에 안전하다'는 뜻은 아닙니다. 블록체인 기록 자체는 불투명하더라도 존재합니다. 언제가서는 새로운 분석 기법이 등장해 그 기록에서 더 많은 정보를 추출할 수 없다는 보장은 없습니다.

이러한 잠재적 위험은 거래 기록 자체가 온체인에 전혀 존재하지 않는 라이트닝 네트워크와 같은 시스템과 Monero를 구분합니다.

사실, Supertestnet이라는 유명한 비트코인 애호가는 몇 달 동안 도전을 진행해 왔습니다: 그는 Monero 사용자들에게 라이트닝을 통해 자신에게 결제를 보내라고 요청하고, 대가로 동등한 금액을 Monero로 되돌려줍니다. 그런 다음 각각의 발신자가 수신자에 대해 얼마나 많은 정보를 알 수 있는지를 비교하라고 초대합니다. 흥미롭게도 그는 때때로 Monero 블록체인에 기록된 제한된 데이터에서 민감한 정보를 일부 추출하는 데 성공합니다.

결론: 보편적 기밀성은 존재하지 않는다

모든 것을 간단한 그림으로 정리해 봅시다.

표적 발행자 검열이나 금융 감시로부터 자신을 보호하고 싶은가? 그렇다면 Liquid가 당신의 도구입니다. Liquid는 이 일을 매우 잘 합니다. 테더는 Liquid에서 당신의 USDT 잔액을 볼 수 없고 동결할 수 없으며, 스캐머들은 어떤 주소가 피싱 공격 대상으로 가치가 있는지 알 수 없습니다.

코인의 출처를 숨기고 AML 남용으로부터 자신을 보호하고 싶은가? 라이트닝 네트워크를 선택하세요. 수신자는 자금이 어디서 왔는지 볼 수 없습니다.

공개 정체성과 수신 거래가 연결되는 것을 막기만 하면 되는가? 비트코인에서 사일런트 페이먼트나 Stellar의 유사한 솔루션을 사용하세요.

아무도 거래 그래프 자체를 보지 못하게 하기를 원하는가? MimbleWimble(Grin, Beam, Litecoin), Ark, 또는 Zcash를 살펴보세요.

오늘 당장 모든 것 — 발신자, 수신자, 금액, 그래프까지 — 을 숨기고 싶고, 미래의 분석이 일부를 풀어낼 위험이 조금 있어도 괜찮은가? 그럴 경우 Monero가 답입니다.

다음에 올 것을 기다리는 중인가? Shielded CSV를 주시하세요.

각 기술은 특정 위협 모델을 해결하도록 설계되었습니다. 드라이버로 나사를 박지 못한다고 망치 탓을 하는 것은 말이 되지 않습니다. Liquid는 그것이 구축된 목적을 정확히 수행합니다. 다만 제가 생각했던 문제를 해결하는 것이 아니었고 — 추천하기 전에 그것을 이해할 시간을 갖지 않았습니다.

이제는 이해했습니다. 그리고 이 글이 여러분이 그것을 이해하는 데 도움이 되었기를 바랍니다.