42dot에서는 모빌리티 사용자에게 새로운 유형의 모틸리티 경험을 제공하기 위한 블록체인 플랫폼을 개발하고 있습니다. 영지식 증명은 42dot이 생각하고 있는 블록체인의 중요한 기술적인 기반 중 하나 입니다. 이에 영지식 기술이 무엇이고 그것이 어떻게 동작하는지 그리고 42dot의 블록체인에 영지식 증명 기술이 어떻게 사용되고 나아가서는 SDV와 모빌리티 서비스에 어떻게 적용될 수 있는지 간단히 이야기 하려고 합니다.
1. 영지식 증명이란?
영지식 증명(Zero-knowledge proof, ZKP)은 증명자(prover)가 검증자(verifier)에게 자신의 주장(statement)이 사실임을 증명하는데 사용되는 암호화 기술이라고 할 수 있으며, 증명자는 자신의 주장을 증명하기 위해서 검증자에게 자신의 주장에 관한 어떤 정보도 제공(유출)하지 않으며, 검증자는 증명자의 주장에 대한 어떤 정보도 알지 못한 상태에서 검증을 수행하게 수행하게 됩니다.
예를 들어, A는 B에게 자신이 천만원이 있다고 증명하고 싶다고 가정해 보겠습니다. 가장 쉬운 방법은 A가 B에게 천만원이라는 돈을 실제로 보여주거나, 자신의 통장 잔고 증명서를 보여주는 것입니다. 하지만 이는 영지식 증명이 아닙니다. A의 주장을 뒷받침하는 명확한 정보를 B에게 전달하기 때문입니다. 영지식 증명에서 A는 자신이 가지고 있는 돈과 관련된 정보를 전혀 제공하지 않은 상태에서 증명을 할 수 있어야 하고, B 또한 A가 가지고 있는 돈과 관련된 어떤 정보도 없이 A의 주장이 사실인지 검증할 수 있어야 합니다.
또 다른 예를 들면, A는 편의점에서 담배나 술을 사려고 합니다. 편의점 판매원 B는 A가 성인인지 의심스럽다면 A가 성인인지 여부를 확인해야 합니다. 일반적으로 B는 A에게 주민등록증과 같은 신분증을 요구하게 됩니다.즉, B는 신분증을 보고 A가 담배나 술을 살 수 있는 권한이 있는지 확인하는 것입니다. 이때, A는 신분증을 보여주지 않고 자신이 성인인지를 증명할 수는 없을까요? 이와 같은 경우에 영지식 증명을 사용한다면 A는 신분증을 보여주지 않고 자신이 성인이라는 것을 증명할 수 있습니다.
블록체인에 대한 예를 들면, A가 B에게 가상 자산을 보내려고 합니다. 가상 자산이 전달되는 트랜잭션에 영지식 증명을 적용한다면 가상 자산을 송신하는 A와 그것을 수신하는 B의 프라이버시를 보호하면서 트랜잭션이 정당하다는 것을 증명할 수 있습니다.
이처럼 영지식 증명에서는 증명자가 자신의 주장과 관련된 정보 노출을 배제시키면서 자신의 주장을 증명할 수 있기 때문에 사용자의 프라이버시가 중요한 부분에 사용될 수 있습니다.
영지식 증명이 무엇이고 어떻게 가능한지를 설명할 때 가장 흔하게 볼 수 있는 예가 알리바바의 동굴(Ali Baba cave) 문제입니다. 즉, 앨리스(Alice)와 밥(Bob)이 있을때, 밥은 자신이 동굴 안에 있는 문을 열 수 있는 열쇠가 있다는 것을 증명하고 싶습니다. 증명 과정은 다음과 같은 과정으로 진행됩니다.
이때 중요한 부분은, 밥은 자신이 열쇠가 있다는 사실을 증명하기 위해서 앨리스에게 열쇠를 보여 주지 않고 증명 과정이 수행된다는 것입니다.
1.1 영지식 증명의 구성 요소
영지식 증명(이후 부터는 ZKP와 혼용해서 사용)은 다음과 같은 세 가지 구성 요소로 이루어집니다.
• 증명자(prover) : 자신의 주장이나 진술을 증명하고자 하는 주체
• 검증자(verifier) : 증명자의 주장이나 진술이 맞는지 검증하는 주체
• 주장 또는 진술(statement) : 증명자가 검증자에게 증명하고자하는 내용
1.2 영지식 증명은 어떤 경우에 사용할 수 있을까?
영지식 증명은 다양한 경우에 사용될 수 있으며, 적용할 수 있는 몇 가지 예를 들면 다음과 같습니다.
• 인증(로그인) : 어떤 사이트나 시스템에 대한 인증(로그인)이 필요할때 인증 정보(패스워드)를 입력하지 않고 해당 인증 정보(패스워드)를 소유하고 있다는 것을 증명함으로써 인증을 수행할 수 있습니다.
• 온라인 투표 : 영지식 증명은 온라인 비밀 투표에서 사용할 수 있습니다.(영지식 증명을 이용한 블록체인 기반의 온라인 비밀 투표 시스템인 zkVoting인 CES 2023에서 기술 혁신상을 수상하기도 하였습니다.)
• 자격 증명 : 영지식 증명을 통해서 어떤 정보도 노출하지 않고 단지 자격이 있는지를 검증할 수 있습니다.
• 블록체인 : 블록체인의 트랜잭션 데이터에 영지식 증명을 적용하면 트랜잭션에 포함되는 민감 정보를 은닉(hiding)시킬 수 있습니다. 즉, 프라이버시를 위해서 거래(트랜잭션)의 익명성을 제공(shielded/confidential transaction)할 수 있고 블록체인에 저장되는 데이터의 용량을 줄일 수 있습니다. 또한, 블록체인의 scalability 향상을 위한 목적으로 많이 사용(zk-rollup)되고 있습니다.
• 데이터 프라이버시 : 사용자의 민감 정보(개인 정보, 금융 정보 등)를 노출하지 않고 증명할 수 있는 용도로 사용될 수 있습니다.
• 지식에 대한 증명 : 어떤 문제의 답을 알고 있다고 증명하거나, 어떤 정보를 알고 있거나 어떤 데이터를 가지고 있다고 증명하는데 사용될 수 있습니다.
2. 영지식 증명이 이루어지는 과정
영지식 증명은 다음과 같은 함수 f가 있을때, 증명자는 함수의 결과를 true로 만드는 입력 값을 가지고 있다는 것을 증명하는 것이고 검증자는 증명자의 입력 값에 의해서 만들어지는 함수의 결과가 true인지 false인지 판단하는 것이라고 정의할 수 있습니다.
f(x, w) = true/false
함수 f에 입력되는 x는 public input이고 w는 private입니다. 이해를 돕기 위해서, 증명자는 자신의 은행 잔고가 1000원 보다 많다(사실, 증명자의 은행 잔고는 2000원 입니다)는 사실을 자신의 은행 잔고를 노출시키지 않고 검증자에게 증명하고 싶다고 가정해 보겠습니다. 이를 함수 f로 표현하면,
f(1000,2000) = true
이때, 1000은 public input인 x가 되고, 2000은 private input인 w가 됩니다. 2000은 검증자에게 노출되어서는 안되는 입력 값이기 때문에 private input이라고 부르며 또 다른 용어로는 witness라고도 합니다. 결국, 증명자는 x가 주어졌을 때 함수 f의 결과를 true로 만드는 w를 알고 있다는 것을 증명하는 과정이라고 할 수 있습니다.
함수 f를 프로그래밍 코드로 표현하면 다음과 같습니다.
function f(x, w) {
return (x < w);
}
영지식 증명 과정을 논리적인 관점에서 보면 크게 3 단계로 이루어집니다.
2.1 1단계 : 키 생성 단계
키 생성(key generation)은 다음과 같이 정의된 함수 G에 의해서 수행된다고 정의할 수 있습니다.
G(f, λ) = (pk, vk)
f : program code / circuit
λ : random secret parameter
pk : proving key
vk : verification key
함수 G는 검증자가 수행하며, 함수 G의 결과로 만들어진 pk는 증명자에게 공유해줍니다. 기본적으로 키 생성은 주어진 f에 대해서 한번만 수행되어야 합니다.
2.2 2단계 : 증명 데이터 생성 단계
증명 데이터(proof) 생성은 다음과 같이 정의된 함수 P에 의해서 수행된다고 정의할 수 있습니다.
P(pk, x, w) = proof
pk : proving key
x : public input
w : private input (witness)
proof : proof data
함수 P는 증명자가 수행하며, 키 생성 단계에서 만들어진 pk와 x, w를 이용해서 증명 데이터(proof)를 생성합니다. 그리고 함수 P의 결과로 만들어진 증명 데이터는 검증자에게 전달됩니다.
2.3 3단계 : 검증 단계
증명 데이터(proof)를 검증하는 것은 다음과 같이 정의된 함수 V에 의해서 수행된다고 정의할 수 있습니다.
V(vk, x, proof) = true/false
vk : verification key
x : public input
proof : proof data
함수 V는 검증자가 수행하며, 증명자가 전달한 증명 데이터(proof)를 이용해서 함수 V의 결과가 true인지 false인지 확인하는 것입니다. 즉, 검증자는 증명자만 알고 있는 w를 모른 상태에서 검증을 수행하는 것입니다. 만일, 결과가 true라면 f(x,w)의 결과가 true라는 의미가 되고 검증자는 증명자의 주장이 맞다고 확신할 수 있습니다.
3. zk-SNARK
zk-SNARK는 “zero-knowledge Succinct Non-Interactive Argument of Knowledge”의 약자이며, 이름에서 유추할 수 있듯이 non-interactive ZKP이며 증명 데이터가 간결(succinct)한 것이 특징이며 가장 많이 사용되는 Scheme입니다.
zk-SNARK가 구체적으로 어떻게 수행되는지에 대해서는 링크의 페이지에서 자세히 설명하였으며 해당 페이지를 참고하길 바랍니다.
4. 42dot의 영지식 증명과 블록체인 그리고 SDV, 모빌리티
42dot에서는 블록체인 뿐만 아니라 SDV(software-defined vehicle)와 모빌리티 서비스에 영지식 증명 기술을 적용하여 인증, 자격 증명, 데이터 프라이버시, 지식에 대한 증명을 제공할 예정입니다. 즉, 다음과 같은 영역에 영지식 증명 기술을 적용할 수 있습니다.
4.1 인증 (authentication)
• 블록체인이나 클라우드 서비스에 대한 자동차 자체 또는 모빌리티 서비스 사용자의 인증을 영지식 증명을 이용하여 제공할 수 있습니다.
• 자동차 내부의 ECU 간의 상호 인증에 적용할 수 있습니다.
• SDV OS와 상호 작용하는 SDV app간의 인증에도 적용할 수 있습니다.
4.2 자격 증명 (authorization)
• 영지식 증명을 통해서 자동차/모빌리티 서비스 사용자의 민감한 정보의 노출없이 자격의 유무를 검증할 수 있는 기능을 제공합니다.
• DID의 VC/VP 안에 있는 proof data를 영지식 증명 데이터로 대체하여 정보 노출없이 검증 가능하도록 만들 수 있습니다.
• 사용자가 FoD의 특정 기능을 영지식 증명을 이용하여 구독 여부를 검증할 수 있습니다.
4.3 익명성 (anonymity)
사이트나 시스템에 대한 로그인이 필요할때 인증 정보(패스워드)를 입력하지 않고 해당 인증 정보(패스워드)를 소유하고 있다는 것을 증명함으로써 익명으로 로그인 (즉, 익명으로 서비스를 이용)을 수행할 수 있는 기능을 제공합니다.
4.4 데이터 프라이버시
개인 정보 보호 강화를 위해서 사용자의 민감 정보(개인 정보, 금융 정보 등)를 노출하지 않고 해당 정보의 내용을 증명할 수 있는 기능을 제공합니다.
4.5 지식에 대한 증명
어떤 정보를 알고 있거나 어떤 데이터를 가지고 있다고 증명하여 신뢰할 수 있는 데이터 공유 주체인지 판단할 수 있는 기능을 제공합니다.
이와 같은 기능들은 민감한 데이터에 대한 privacy-preserving과 네트워크, 서비스에 대한 authentication/verification, anonymity를 제공하게 될 것입니다. 따라서, 영지식 증명은 42dot이 추구하는 새로운 유형의 모빌리티 서비스 경험을 가능하게 만들기 위한 중요한 요소 기술이라고 할 수 있습니다.
윤근용 | Blockchain Platform (Tech Lead)
새로운 유형의 모빌리티 경험을 제공하기 위한 블록체인 플랫폼을 개발하고 있습니다.