Computer Science/Blockchain

[Blockchain] Zero-Knowledge Proof (ZKP)

Henry Cho 2025. 3. 10. 05:27

포스트 난이도: HOO_Lead


# ZKP란

요즘 글의 논리성과 연구나 개발에 있어서 근본적인 문제점에 대해서 시간 투자를 많이 하다 보니 "내가 글 쓰는 작가인가"라는 착각이 들기도 한다. 그렇다 보니 가면 갈수록 개발자 브로들이 무엇에 대해서 고민이 많고 무엇을 궁금해할 지에 대해서 생각이 잘 나지 않는다. 그래서 이번 포스트는 내가 관심을 가지고 있는 ZKP에 대해서 간략하게 소개하면서 이야기를 나눌까 한다.

 

ZKP에 대해서 이야기를 나누기 앞서서, 블록체인에서 말하는 합의 알고리즘이라고 하는 증명 방식들은 사실 이미 오래전부터 수학적이나 컴퓨터에서 다뤄왔던 증명들이다. 마치 "오 이건 블록체인에서만 사용되는 새로운 방식이야!"라고 하기보다는 블록체인을 적용하기 위해서는 각 상황에 맞는 증명 방법이 필요한데 여러 고민을 하다가 나름 심플하면서도 적용했을 때 자동으로 검증과 추적이 가능한 증명 방식들을 합의 알고리즘 형태로 만들어 사용하는 것이다.

 

이제는 LLM 시대이지만 이전까지 핫하고 지금은 대중화된 Segmentation, 즉 Computer vision 분야도 보면 사람이 시각적으로 판단하는 방식을 참고해서 다양한 기능들을 만들었고 해당 기능들을 표준화된 라이브러리를 통해서 사용하고 있다. 현재의 블록체인 아직 과도기로써 완전한 형태의 표준화된 라이브러리가 나오지 않았기에 여러가지 알고리즘 방식들이 나오고 있는 셈이다.

 

본론으로 돌아와서 ZKP 또한 새로운 개념은 아니다. 이미 1980년대부터 학술 페이퍼 (Goldwasser et al., 1989)에서 공개되었으며, 마치 fuzzy  logic을 blockchain에 적용한 거와 비슷하다고 생각하면 된다. 물론 해당 증명을 블록체인에 담아서 특정 applicaiton에 적용했는가?에 대해서 안되어 있었고 이 부분에 있어서 "아니 이게 Novelty 하잖아?"가 돼 셈이다. 한마디로 해당 증명이 새로운 방식이었으나 블록체인과 더불어 Data management 부분에 있어서 사용하기에 꽤 괜찮은 녀석으로 나온 것이다.

 

ZKP에 대해서 한줄평을 하자면, "Zero-Knowledge Proofs (ZKP) let someone prove they know or own something without revealing what it is." 라고 말할 수 있다. 이게 무슨 소리냐면 블록체인에 ZKP를 사용할 경우 모든 정보에 대해서 확인할 필요 없이 최소한의 기준만 가지고 검증이 가능하다는 말이다.


# 검증에 미친 ZKP

ZKP의 핵심은 블록체인 안의 데이터가 확실한지를 비교하는 다른 증명과정들과 다르게 해당 데이터가 맞아, 틀려만 검증하는 것에 특화되어 있다. 다른 말로 하면 모든 데이터를 공개하기가 좀 껄끄러운데 그럼에도 블록체인을 통해서 데이터 투명성을 유지해야 하는 경우에 아주 적합한 녀석이 바로 Zero-Knowledge Proofs인 ZKPs인 것이다.

 

ZKP의 특징은 검증에 필요한 결과가 맞으면 되지 중간의 과정에 대해서 깊이 관여하지 않는다는 것이다. 아래의 ZKP를 설명할때 대표적으로 사용되는 그림을 참고하면 이해하기가 훨씬 수월하다.


Fig.1. Sourced by Wikipedia, https://en.wikipedia.org/wiki/Zero-knowledge_proof

https://en.wikipedia.org/wiki/Zero-knowledge_proof

 

Zero-knowledge proof - Wikipedia

From Wikipedia, the free encyclopedia Proving validity without revealing other data In cryptography, a zero-knowledge proof is a protocol in which one party (the prover) can convince another party (the verifier) that some given statement is true, without c

en.wikipedia.org


위의 링크를 통해 들어가면 ZKP에 대해서 설명이 되어 있다. 다만 다 읽기에 귀찮기 때문에 간략하게 Fig.1의 그림을 설명해보겠다. 일단 그림에 나와 있듯이 페기와 빅터라는 친구가 있다고 가정했을 때, 못된 빅터는 밖에서 가만히 기다리고 착한 페기는 어두운 동굴 안에 들어가 비밀의 방을 찾는다. 못된 빅터의 최종 목적은 비밀의 방을 가기 위한 마법의 주문을 알고 싶지만 페기는 마법의 주문을 알려주기가 싫다. 하지만 페기는 거짓말쟁이가 되기 싫어서 비밀의 방이 있다는 존재를 보여주고 싶다. 이때 빅터에게 마법의 주문을 알려주지는 않지만 비밀의 방의 존재를 보여줘서 거짓말쟁이가 아니라는 걸 입증하려고 한다. 여러 번의 패턴을 통해서 검증이 이뤄지고 확률적으로 효율성 또한 높다는 증명도 중요하지만 ZKP를 블록체인에 적용하려는 궁극적인 목적 중 하나는 "비밀의 단어"를 알려주지 않고도 "비밀의 방"에 대한 존재를 다른 사람에게 알려서 입증해낼 수 있다는 것이다.


# 효율성의 극대화

데이터가 가진 신뢰성부터 여러 Uncertaintiy 문제들을 블록체인을 통해서 향상시킬 걸 알면서도 연구 외적으로 Indsutry에서 적용하기 어려운 이유는 효율성의 한계점이라고 본다. 현재의 Indsutry 블록체인의 경우 "투명성"과 "추적성"을 내세워 기존에 있는 블록체인 방식을 application 하는 것에만 초점이 맞춰져 있는데 사실상 현실에서 적용이 어려운 셈이다. 특정 경우에 있어서 당연히 기존에 존재하는 합의 알고리즘 방식이 충분히 사용되는데 만족스러운 결과를 산출해 낼 수 있지만 모든 상황에 적용하기에는 어렵다는 것이다. 블록체인이 거래내역을 보장하기 위해서 사용이 될 수도 있지만 사용자 간의 활동을 투명하게 보장하기 위해서도 사용될 수 있고, 또는 데이터 자체의 투명성을 보장하기 위해서도 사용이 될 수 있기 때문이다.

 

예를 들어서 여러 Entitiies들이 합쳐져 있는 블록체인 기반의 데이터 트랜잭션이나 공급망 등과 같은 시스템을 개발하여 사용한다고 했을때, 각 관련자들이 가지고 있는 기술이나 공유하기 껄끄러운 데이터까지도 해당 블록체인에 넣어달라고 요청을 한다면 기분 좋게 "Yes"를 외치기가 어렵다. 또는 IPFS라고 해서 외부의 데이터베이스를 따로 두긴 하지만 결과적으로 관련자들이 지속적으로 해당 IPFS에 데이터를 업로드를 하고 해싱을 받아서 추적성을 유지해줘야하는데 솔직히 말해서 너무 귀찮다는 것이다. 만약에 계산 모델링이나 머신러닝 시스템을 통해서 가공해야되는 데이터가 있으면 이때 데이터가 지속적으로 투명성을 유지할 수 있는가?에 대해서는 의문점이 남기 마련이다. 궁극적으로는 현재의 블록체인 시스템이 가진 가장 큰 문제점은 비용과 효율성을 어떻게 유지하냐는 것이다. 그게 암호화화폐의 용도에서 벗어나 데이터 관리나 실질적인 물자에 대한 관리 용도로 사용이 된다면 말이다.

 

따라서 내가 말하는 ZKP의 효율성은 데이터 트랜잭션이 많으면서도 데이터가 변하거나 트랜잭션되는 과정까지도 모두 기록할 필요가 없는 내가 알고 있는 데이터 또는 기록이 맞는지에 대한 검증만이 필요하다면 Scalability와 Integration을 향상할 수 있는 증명 방식인 셈이다. 물론 여기에는 "On-chain으로 하면 아직도 scalability issue가 있는데요?"라고 하거나 "off-chain의 경우 zkp를 어떻게 유지하죠?"라는 등의 어려움이 남겨져 있는 건 사실이다. 왜냐하면 Computer vision처럼 아직 블록체인의 표준화된 하나의 common api나 라이브러리가 부족하기 때문이다. 그래서 내 연구가 표준화되어 쉽게 누구나 사용할 수 있는 프로토타입을 만들었고 실제 케이스에 적용하는 연구를 진행 중에 있다.

 

결과적으로 내 연구 외에도 ZKP는 참으로 재미있는 녀석이기에 우리 브로들과 간단하게 이야기를 나누고 싶어 포스팅을 하게 되었다.

 

언제든지 연구 협력 및 이야기를 나누는 것을 환영합니다. 이번 4월에도 한국 세미나 일정이 있어 방문할 예정이니 관심있는 브로는 따로 알려주시면 감사하겠습니다.


 

728x90