Blockstream, 기밀 자산 출시
Elements

Blockstream, 기밀 자산 출시

Andrew Poelstra

모든 블록체인 원장의 보안에서 가장 중요한 것은 모든 거래의 두 가지 속성, 즉 거래가 모든 필수 당사자의 승인을 받고, 총 통화 공급에 영향을 미치지 않는다는 속성에 대한 공개적 검증 가능성입니다. 비트코인에서 후자의 속성은 매우 간단하게 확인할 수 있어 언급되지 않는 경우도 많습니다. 총 출력 금액과 총 입력 금액을 합하고 비교해 보면 됩니다. 그러나 Blockstream이 개발한 기밀 거래(CT)1는 이 보안 속성을 가장 중시했는데, 모든 금액은 암호화 기술로 가려져 있더라도 계속 맞아 떨어져야 하기 때문입니다.

블록체인 기술은 동일한 체인에서 여러 자산 유형을 지원하기 위해 자연스럽게 발전해왔습니다. 이를 통해 더 많은 사용자들이 동일한 체인의 보안 속성을 공유할 수 있고, 아토믹 교환에 영향을 미치는 다중 자산 거래 같은 새로운 사용 사례도 가능케 할 수 있습니다. 여러 자산 유형에 대한 지원의 활성화는 각 거래 출력을 누구나 볼 수 있는 "자산 태그"로 식별하는 것만큼 간단할 수 있습니다. 그러나 이로 인해 사용자의 재무 행동에 대한 정보가 노출될 것입니다. 자산 태그를 숨김으로써 여러 자산 유형을 지원하는 기술인 기밀 자산(CA)2,3,4은 CT의 개인정보 보호라는 장점을 기반으로 하고 블록체인 거래의 우수한 기능과 표현성을 확장합니다.

CT와 마찬가지로, 기밀 자산을 사용하면 누구나 거래가 안전한지 암호학적으로 검증할 수 있습니다. 즉, 모든 필수 당사자가 거래를 승인하고 어떤 자산도 예상치 못하게 생성 또는 파기, 변형되지 않는다는 점을 검증할 수 있습니다. 그러나 거래 참여자만이 관련된 자산 유형의 정보와 금액을 확인할 수 있습니다.

다중 자산 체인에서는 어떤 경우에 특정 유형의 자산이 생성 또는 파기될 수 있습니다. CA에서는 새로운 자산 태그와 이 자산의 특정 금액을 생성할 수 있는 발행 거래를 통해 자산이 생성 또는 파기될 수 있습니다. 이후 연관된 (그러나 별개의) 자산인 재발행 토큰에 대한 권한을 증명함으로써 재발급을 할 수 있습니다. 발행 토큰은 주어진 자산 유형과 함께 생성될 수 있는데, 해당 자산이 재발급을 지원해서는 안 되는 경우에는 생성되지 않을 수 있습니다.

발행 거래는 0으로 균형을 맞출 필요가 없다는 특이한 속성을 갖습니다. 그러나 발행 거래가 공개 금액을 발행하더라도 더 많거나 적지도 않은 정확한 이 금액이 실제로 발행되었는지 검증할 수 있습니다.

기밀 자산의 기반 기술

자산 태그 및 범위 증명

기밀 자산의 기반 기술을 설명하려면 기밀 거래의 기초를 형성하는 페더슨 커밋먼트(Pedersen commitments)부터 시작해야 합니다.

커밋먼트 = xG + aH

여기서 G는 타원 곡선의 표준 생성기이고, H는 두 번째 생성기인데 G와 관련된 이산 로그를 알 수 없습니다. 이러한 생성기는 NUMS(nothing-up-my-sleeve)라 부릅니다.

이것은 CT에서 비공개 요인 x를 통해 금액인 a 코인들에 커밋하는 것으로 설명되었습니다. 생성기 H를 a 코인이라 부르면 aH라는 용어를 대수적으로 “a 코인들”이라 읽을 수 있습니다. H가 유일한 생성기일 때 이것은 의미론적 속임수일 뿐입니다. 그러나 다른 NUMS 생성기 I를 추가하고 두 가지 커밋먼트를 고려한다고 가정하면,

커밋먼트_1 = xG + aH 커밋먼트_2 = xG + aI

이제 HI가 서로 다른 두 가지 자산을 대표한다고 볼 수 있고, 이 두 가지 커밋먼트는 같은 금액이지만 서로 다른 자산에 대한 커밋먼트라는 것을 알 수 있습니다.

이제 다음과 같이 서로 다른 자산 유형의 두 가지 입력과 두 가지 출력이 있는 완전한 거래를 고려해 봅니다.

in1 = xG + aH, H --\ /-- uG + cH, H = out1 |---| in2 = yG + bI, I --/ \-- vG + dI, I = out2

생성기가 하나뿐인 CT에서는 다음의 방정식이 필요했습니다.

out1 + out2 - in1 - in2 = 0

이는 거래가 균형을 이루는 경우에만 유지됩니다. 결과적으로, 이 동일한 방정식이 다중 자산에도 적용됩니다.

0 = out1 + out2 - in1 - in2 = (uG + cH) + (vG + dI) - (xG + aH) - (yG + bI) = (u + v - x - y)G + (c - a)H + (d - b)I

HI는 모두 NUMS 점이므로, 이 방정식을 유지하는 유일한 방법은 각 개별 항이 0이고 특히 c = ab = d 인 경우입니다. 즉, 이 방정식은 자산 H의 총 금액이 입력 측과 출력 측에서 동일하고 동시에 자산 I의 총 금액이 입력 측과 출력 측에서 동일한 경우에만 유지됩니다.

이는 자연스럽게 둘 이상의 자산 태그로 확장됩니다. 실제로, 각 자산 유형마다 고유한 NUMS 생성기를 할당할 수만 있다면 서로 다른 자산 유형을 무제한으로 지원할 수 있습니다.

CT에서와 마찬가지로, 이 간단한 방정식은 실질적으로 음의 값을 갖는 출력을 허용하며 금액이 초과될 가능성이 있기 때문에 불충분합니다. CT에서처럼, 이러한 문제는 각 출력에 완전히 동일한 방식으로 범위 증명을 추가하여 해결할 수 있습니다. 유일한 차이점은 검증자가 일정한 생성기 H 대신 적절한 자산 태그를 사용해야 한다는 것입니다.

비공개 자산 태그 및 자산 전사함수 증명(Surjection Proofs)

위에서 논의된 내용은 모든 거래 출력에 NUMS 생성기 또는 연관된 자산 태그가 있고, 동일한 자산 유형의 출력은 동일한 태그를 사용할 것이라고 가정했습니다. 이는 모든 출력이 어떤 유형의 자산을 나타내는지 보여주기 때문에 Blockstream의 개인정보 보호 목표를 충족시키지 못합니다.

이러한 문제는 각 자산 태그를 다음과 같은 형식의 비공개 자산 태그로 대체하여 해결할 수 있습니다.

A = H + rG

여기서 H는 위의 자산 태그이고 r은 비밀 랜덤 값입니다. r을 아는 모든 사람은 이 태그가 어떤 자산을 나타내는지 알 수 있지만, 모르는 사람에게는 균일한 임의의 타원 곡선 점으로 보입니다. A가 있는 값에 대한 모든 커밋먼트도 H가 있는 동일한 값에 대한 커밋먼트라고 보기 때문에 거래를 입증할 때 "출력 빼기 입력은 영(0)"이라는 규칙은 다음과 같이 계속 유효합니다.

커밋먼트_A = xG + aA = xG + a(H + rG) = (x + ra)G + aH = 커밋먼트_H

이 비공개 요인의 도입은 사용자가 범위 증명을 생성하는 데는 영향을 미치지 않지만, 거래 구성 시 0으로 균형을 맞추는 데 계산을 약간 더 복잡하게 만듭니다.

하지만, 모든 비공개 자산 태그는 균일하게 무작위로 표시되는데 검증자는 기본 자산 태그가 합법적인지 어떻게 확인할 수 있을까요? "총 합이 영(0)"이라는 규칙은 남용을 방지하는 데 불충분한 것으로 밝혀졌습니다. 예를 들어, “비공개 자산 태그”를 생각해 보면,

A'= -H + rG

비공개 자산 A'의 임의의 금액은 실제로 공격자가 불법적인 자금 공급 증가를 상쇄하기 위해 사용할 수 있는 자산 H마이너스 금액과 일치할 것입니다.

이 문제를 해결하기 위해, Blockstream은 한 거래 내에서 모든 출력 자산 유형이 일부 입력 자산 유형과 동일하지만 어떤 출력이 어떤 입력에 해당하는지는 공개하지 않는 암호학적 증명인 자산 전자함수 증명을 도입합니다.

자산 전자함수 증명의 방식은 간단합니다. AB가 동일한 자산 태그 H에 커밋된 비공개 자산 태그라 할 경우,

A - B = (H + aG) - (H + bG) = (a - b)G

는 상응하는 비밀 키 a - b가 있는 서명 키가 될 것입니다. 거래 출력 out1을 고려하면, 거래의 모든 입력에 대해 키 out1 - in1, out1 - in2 등으로 링 서명(여러 가지 비밀 키 중 하나가 어떤 것인지 비밀을 유지함을 증명)을 사용할 수 있습니다. out1에 여러 입력 중 한 입력과 동일한 자산 태그가 있는 경우, 거래 서명자는 이러한 차이점 중 하나에 해당하는 비밀 키를 알고 링 서명을 생성할 수 있을 것입니다.

자산 전사함수 증명은 이러한 링 서명으로 구성됩니다.

기밀 자산 데모

DG Lab은 이러한 새로운 자산 식별자 비공개 기능을 보여주는 개발자 중심의 오픈 소스 데모를 작성했습니다.

향후 계획

대수학적으로 기밀 자산은 기밀 거래의 간단한 확장 프로그램이기 때문에, CT와 함께 사용하도록 개발된 많은 도구를 거의 그대로 CA와 사용할 수 있어 다중 자산 거래를 확실히 기밀로 처리할 수 있습니다. 이러한 기술의 예는 다음과 같습니다.

●     MimbleWimble

●     Scriptless Scripts

●       ValueShuffle

흥미로운 개발이 계속 많이 이루어지고 있어 앞으로의 발전이 더욱 기대됩니다.

참고 자료

1 기밀 거래

2 보도 자료 : Blockstream, 블록체인 기업 고객을 위한 새로운 기밀 자산 기능 출시

3 기밀 자산 백서

4  CA 시작 방법에 대한 추가 설명서 및 정보