[블록미디어 함지현 기자] 프라이버시 코인 지캐시(ZEC)가 월가의 주목을 받는 이유는 JP모건과 같은 든든한 파트너 때문이지만, 기술 자체가 매력적인 것도 무시할 수 없다. 지캐시는 거래 내용을 숨길 수 있는 디지털자산(가상자산)이다. 누가 누구에게 얼마를 보냈는지 공개하지 않고도 거래가 정상이라는 사실을 확인할 수 있다.

여기서 한 가지 궁금증이 생긴다. 거래 내용을 숨기면 같은 돈을 두 번 쓰는 ‘이중지불(double spending)’도 몰래 할 수 있는 것 아닐까. 지캐시는 이 문제를 여러 암호 기술을 함께 사용해 해결한다. 핵심은 돈의 정체는 숨기되, 이미 쓴 돈인지와 가짜로 불어난 돈인지는 확인할 수 있게 만드는 것이다.

지캐시의 돈은 공개되지 않는 ‘노트’에 담긴다

일반적인 블록체인에서는 디지털자산이 얼마나 발행됐고 언제 사용됐는지를 비교적 쉽게 확인할 수 있다. 반면 지캐시의 이른바 ‘실드(Shielded) 거래’에서는 돈의 금액과 받는 사람 같은 정보가 공개되지 않는다.

대신 지캐시는 노트의 내용을 그대로 보여주지 않고 ‘노트 커밋먼트(note commitment)’라는 암호화된 표시만 블록체인에 남긴다. 노트 커밋먼트는 ‘봉인된 상자’에 비유할 수 있다. 상자 안의 내용은 숨겨져 있지만, 한 번 봉인된 뒤에는 이를 다른 내용으로 바꿀 수 없어 해당 정보가 처음 약속한 상태로 유지됐음을 확인할 수 있다.

일반적인 블록체인에서는 특정 자산의 사용 여부가 공개되기 때문에 같은 자산을 다시 쓰면 쉽게 들킨다. 이와 달리 지캐시가 어떤 노트를 사용했는지 그대로 공개하면 거래를 서로 연결할 수 있게 돼 프라이버시가 약해진다.

사용자가 어떤 노트를 쓰면, 그 노트 자체를 공개하는 대신 그 노트에서 만들어진 고유한 값을 하나 공개한다. 이것이 널리파이어다. 쉽게 말하면 돈을 사용할 때 ‘사용 완료 도장’을 하나 만들어 공개하는 것이다. 어떤 돈을 사용했는지와 소유주에 대한 정보는 숨긴 채 도장만 보여준다. 같은 돈을 다시 사용하려 하면 동일한 도장이 다시 나타나기 때문에 네트워크는 이중지불 시도임을 알아챌 수 있다. 이미 등장한 널리파이어가 다시 나오면 해당 거래는 거부된다.

이렇게 지캐시는 어떤 돈을 썼는지는 숨기면서도 같은 돈을 두 번 쓰는 것은 막는다.

그렇다면 또 다른 문제가 생긴다. 어떤 노트를 사용하는지 공개하지 않는다면 네트워크는 그 사람이 정말로 그 돈을 가지고 있는지 어떻게 확인할까.

사용자는 자신이 실제로 존재하는 노트를 가지고 있고, 그 노트를 사용할 권한이 있으며, 거래 규칙을 지켰다는 사실을 수학적으로 증명한다. 그러면서도 금액이 얼마인지, 어떤 노트인지 등은 공개하지 않는다. 자신이 가진 돈을 보여주는 대신 그 돈을 쓸 자격이 있다는 것만 증명하면 되는 셈이다.

누군가 몰래 10 ZEC를 20 ZEC로 늘리려 한다면?

이중지불을 막았다고 모든 문제가 끝나는 것은 아니다. 거래 금액까지 숨겨져 있다면 누군가 10 ZEC를 쓰면서 몰래 20 ZEC를 만들어낼 수도 있기 때문이다.

이를 막기 위해 지캐시는 ‘가치 커밋먼트(value commitment)’와 ‘바인딩 서명(binding signature)’을 사용한다.

가치 커밋먼트는 실제 금액을 보여주지 않고도 그 금액을 암호학적으로 고정하는 장치다. 이 역시 봉투에 비유할 수 있다. 봉투 안에 적힌 숫자는 볼 수 없지만, 봉투를 열지 않고도 여러 봉투의 숫자 합이 맞는지는 확인할 수 있다.

예를 들어 10 ZEC를 가지고 10 ZEC를 보내는 거래라면 계산이 맞는다. 반면 10 ZEC만 가지고 있으면서 20 ZEC를 만들어 보내려고 하면 계산이 맞지 않는다. 실제 금액은 공개하지 않으면서도 거래 전후의 계산이 맞는지를 확인해, 누군가 거래 과정에서 없던 ZEC를 새로 만들어내는 것을 막는 것이다.

즉, 금액은 숨기되 들어온 가치보다 더 많은 가치가 생기지는 않았는지 확인한다.

여기에 바인딩 서명은 이런 계산 관계를 거래에 묶어 “입력보다 더 많은 돈을 새로 만들 수 없다”는 규칙을 강제한다. 가치 커밋먼트와 바인딩 서명으로 인해 계산이 맞지 않으면 정상적인 서명을 만들 수 없고 거래는 거부된다.

지캐시는 세 가지를 확인한다

결국 지캐시의 실드 거래가 진행되기 위해선 세 가지 관문을 통과해야 한다.

  • “이미 한 번 쓴 돈은 아닌가? (이중지불)” ➤ 널리파이어
  • “실제로 존재하는 돈이고, 네가 쓸 권한이 있는가?” ➤ 영지식 증명
  • “거래하면서 몰래 돈을 불리지는 않았는가?” ➤ 가치 커밋먼트·바인딩 서명

비트코인은 공개된 거래 장부를 통해 어떤 돈을 썼는지 보여주면서 이중지불을 막는다. 반면 지캐시는 어떤 돈인지는 숨기면서도 이미 사용한 돈인지 아닌지는 증명하는 방식을 사용한다.

즉 프라이버시를 위해 검증을 포기하는 것이 아니라 검증에 꼭 필요한 정보만 공개하고 나머지는 숨기는 것이 지캐시 기술의 핵심이다. 만약 지캐시의 핵심 기술인 검증 시스템 자체에 취약점이 있다면 어떻게 될까? 이 문제를 해결하는 방법은 시리즈 세번째 기사에서 다룬다.