KR102553775B1 - 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 - Google Patents
연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 Download PDFInfo
- Publication number
- KR102553775B1 KR102553775B1 KR1020210010040A KR20210010040A KR102553775B1 KR 102553775 B1 KR102553775 B1 KR 102553775B1 KR 1020210010040 A KR1020210010040 A KR 1020210010040A KR 20210010040 A KR20210010040 A KR 20210010040A KR 102553775 B1 KR102553775 B1 KR 102553775B1
- Authority
- KR
- South Korea
- Prior art keywords
- protocol
- vector
- proof
- zero
- length
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Communication Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템을 제안한다. 본 발명에서 제안하는 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템은 블록체인 및 딥러닝에서 프라이버시를 보호하면서 수치 데이터에 대한 연산 검증에 활용되는 범위증명 및 연산의 유효성을 검증하기 위한 산술회로에 대한 영지식 증명에서 두 벡터의 내적관계를 증명할 때 증명 크기를 감소시키거나 또는 검증자의 연산 부담을 감소 시키기 위한 목적에 따라 BP(Bulletproofs)에 그룹간 페어링 연산을 결합하여 영지식 증명을 수행한다.
Description
본 발명은 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템에 관한 것이다.
블록체인의 가장 큰 장점 중 하나는 탈 중앙화라고 불리우는 개념으로 중앙화된 기관이 존재하지 않은 채로 전자화폐 개념을 구현할 수 있다는 것이다. 다만, 일반적인 블록체인 기반 암호화폐에는 사용자, 거래내역, 잔고 등이 투명하게 공개 장부에 기록이 되어 사용자 프라이버시가 제한을 받는다는 단점이 있다. 이를 해결해준 것이 zk-SNARK로, 사용자 프라이버시를 크게 개선할 수 있는 영지식 증명 프로토콜이다. 다만, zk-SNARK의 가장 큰 단점은 신뢰도 설정(trusted setup)이라는 초기화 과정을 신뢰할 수 있는 기관이 수행해야한다는 것으로, 탈중앙화라는 블록체인의 기본 이념과는 상충되는 기법이고, 이과정을 없애는 것이 최근 몇 년간 중요한 이슈이다.
신뢰도 설정이 없는 영지식 증명방식에는 여러 가지가 있다. 그 중에서 Bulletproofs는 스탠포드 대학 연구팀이 주축이 되어 설계한 영지식 프로토콜 방식으로, 신뢰도 설정 과정이 없이 증명의 크기를 로그(logarithm) 크기로 유지할 수 있다는 것이 가장 큰 장점이다. 다만, 여전히 신뢰도 설정이 필요한 zk-SNARK에 비해서는 증명의 크기가 크다는 단점을 가지고 있다.
따라서, 블록체인을 활용한 암호화폐의 거래금액 및 잔고를 드러내지 않는 장부의 작성 및 검증과, 클라우드 서버를 활용한 연산처리에서 연산결과에 대한 무결성 증명 및 검증에 있어서, 특정 가중 내적에 대한 영지식 증명 프로토콜을 기초로 하는 짧은 길이의 영지식 증명 프로토콜을 필요로 한다.
본 발명이 이루고자 하는 기술적 과제는 내적관계를 이용한 영지식 증명 BP(Bulletproofs)의 2가지의 응용인, 블록체인 및 딥러닝에서 프라이버시를 보호하면서 수치 데이터에 대한 연산검증에 활용되는 핵심 암호기술인 범위증명(Range proofs) 및 연산의 유효성을 검증하기 위한 산술회로에 대한 영지식증명(Zero knowledge argument for Arithmetic circuit)에 있어서, 많은 증명을 제한된 용량에 담아야하는 블록체인에서 활용할 경우 증명의 크기가 작은 것이 선호되며 이때 BP대신 사용하기 위한 Protocol 2를 제안하고, 또한 검증자의 연산 능력이 제한되어 있어 연산 속도가 느린 경우에는 연산에 걸리는 시간을 짧게 하기 위한 Protocol 3을 제안하여 검증자의 연산 부담을 줄이고자 한다.
일 측면에 있어서, 본 발명에서 제안하는 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템은 블록체인 및 딥러닝에서 프라이버시를 보호하면서 수치 데이터에 대한 연산 검증에 활용되는 범위증명 및 연산의 유효성을 검증하기 위한 산술회로에 대한 영지식 증명에서 두 벡터의 내적관계를 증명할 때 증명 크기를 감소시키거나 또는 검증자의 연산 부담을 감소 시키기 위한 목적에 따라 BP(Bulletproofs)에 그룹간 페어링 연산을 결합하여 영지식 증명을 수행한다.
본 발명에서 제안하는 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템은 복수의 증명을 미리 정해진 용량의 블록체인에서 활용할 경우 증명 크기를 감소시키기 위해 BP에 그룹간 페어링 연산을 결합한 Protocol 2를 포함하고, 상기 Protocol 2는, 반복횟수를 감소시키기 위해 길이가 인 두 벡터의 내적 관계를 길이가 인 두 벡터의 내적관계를 나타내는 문제로 환원하고, 반복횟수가 줄어들 때 환원 과정에서 발생하는 증명 크기 증가 문제를 해결하기 위해 페어링 연산을 통해 증명 크기를 압축하여 전달하며, 압축된 정보에 대한 유효성 검증을 위해 aAggMEA 프로토콜을 보조 프로토콜로 사용한다.
Protocol 2에서 증명자가 복수의 쌍의 MEA(Multi-Exponent Argument) 관계식을 만족해야 하고, 복수의 쌍의 MEA 관계식 각각을 증명을 하지 않고 한번에 검증하기 위해 aAggMEA 프로토콜을 이용하며, 상기 aAggMEA 프로토콜은, 검증자가 랜덤값 를 증명자에게 보내는 단계(step 1); 증명자가 랜덤값 에 기초하여 m개의 MEA 인스탠스(instance)에 값을 순차적으로 곱하는 단계(step 2); 및 ProdMEA 프로토콜을 수행하는 단계(step 3)를 포함한다.
ProdMEA 프로토콜은 증명자가 내적 페어링 곱연산을 수행하여 을 검증자에게 보내는 단계(Step 1); 검증자가 랜덤값 를 증명자에게 보내는 단계(Step 2); 1/2 길이의 벡터로 업데이트 하는 단계(Step 3); 및 벡터의 길이가 1이 될 때까지 ProdMEA 프로토콜을 반목하는 단계(Step 4)를 포함한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템은 BP의 검증자의 연산량이 벡터의 길이에 비례한다는 문제점을 보완하여 검증자의 연산 부담을 감소 시키기 위해 페어링 연산을 결합한 Protocol 3을 사용하고, 상기 Protocol 3는 증명자의 비밀정보(witness)의 길이가 인 벡터( 행렬의 행벡터)이고, 외적 페어링 곱연산(Outer Paring Product)을 사용하여 상기 행벡터를 하나의 원소로 하여 Protocol 3을 수행한 후 마지막에 모아진 행벡터에 대해서 BP를 수행한다.
본 발명의 실시예들에 따르면 내적관계를 이용한 영지식 증명 BP(Bulletproofs)의 2가지의 응용인, 블록체인 및 딥러닝에서 프라이버시를 보호하면서 수치 데이터에 대한 연산검증에 활용되는 핵심 암호기술인 범위증명(Range proofs) 및 연산의 유효성을 검증하기 위한 산술회로에 대한 영지식증명(Zero knowledge argument for Arithmetic circuit)에 있어서, 많은 증명을 제한된 용량에 담아야하는 블록체인에서 활용할 경우 증명의 크기가 작은 것이 선호되며 이때 BP대신 사용하기 위한 Protocol 2를 제안하고, 또한 검증자의 연산 능력이 제한되어 있어 연산 속도가 느린 경우에는 연산에 걸리는 시간을 짧게 하기 위한 Protocol 3을 제안하여 검증자의 연산 부담을 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 연산 표기를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 두 벡터간의 연산의 정의를 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 Protocol 2를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 aAggMEA(Augmented aggregation of multi-exponentiation argument)를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 ProdMEA(Product of Multi-Exponentiation Argument)를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 내적 곱연산(Inner-Product)을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 Protocol 3을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 두 벡터간의 연산의 정의를 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 Protocol 2를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 aAggMEA(Augmented aggregation of multi-exponentiation argument)를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 ProdMEA(Product of Multi-Exponentiation Argument)를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 내적 곱연산(Inner-Product)을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 Protocol 3을 설명하기 위한 도면이다.
연산결과를 증명 및 검증하는 영지식 증명은 어떠한 정보를 공개하지 않으면서 연산을 통해 정보를 알고 있다는 것을 증명하는 기술로 블록체인, 클라우드에서 프라이버시를 보호한 채로 처리하는데 사용된다. 대표 기술로는 미국 Stanford, 영국 UCL, 블록체인 관련 기업 Blockstream이 공동으로 설계한 BP(Bulletproofs)가 있다.
본 발명에서는 내적관계를 이용한 영지식 증명 BP(Bulletproofs)의 2가지의 응용인, 블록체인 및 딥러닝에서 프라이버시를 보호하면서 수치 데이터에 대한 연산검증에 활용되는 핵심 암호기술인 범위증명(Range proofs) 및 연산의 유효성을 검증하기 위한 산술회로에 대한 영지식증명(Zero knowledge argument for Arithmetic circuit)에 있어서, 많은 증명을 제한된 용량에 담아야하는 블록체인에서 활용할 경우 증명의 크기가 작은 것이 선호되며 이때 BP대신 사용하기 위한 Protocol 2를 제안하고, 또한 검증자의 연산 능력이 제한되어 있어 연산 속도가 느린 경우에는 연산에 걸리는 시간을 짧게 하기 위한 Protocol 3을 제안하여 검증자의 연산 부담을 줄이고자 한다.
범위증명을 간단하게 설명하면, 증명자가 가지고 있는 수치 데이터를 공개하지 않은 채 해당 데이터가 특정 범위 내에 있다는 사실을 증명하는 것이며 범위증명을 구성할 때 BP가 핵심 아이디어로 사용된다. 산술회로에 대한 영지식증명은 산술회로 검증을 내적관계를 보이는 문제로 변환 후 BP를 이용하여 이를 달성한다.
Protocol 2와 Protocol 3는 BP 대신에 사용할 수 있는 프로토콜이며 각각의 장점이 있다. 많은 증명을 제한된 용량에 담아야하는 블록체인에서 활용할 경우 증명의 크기가 작은 것이 선호되며 이때 BP대신 Protocol 2를 사용하여 효율적으로 사용될 수 있다. 또한 검증자의 연산 능력이 제한되어 있어 연산 속도가 느린 경우에는 연산에 걸리는 시간을 짧게 하기 위해 Protocol 3을 활용하여 검증자의 연산 부담을 줄이는 방향으로 적용 할 수 있다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
직접 수행한 연산결과에 대해 외부 사용자에게 증명하고, 외부에서 수행된 연산결과에 대해 검증하는 기술은 다양한 산업에서 사용이 가능하다. 영지식 증명이란, 증명자()와 검증자()간에 증명하고 검증하는 프로토콜로써 아래의 세 가지를 만족해야한다:
다음으로, 본 발명의 실시예에 따른 영증명 방법을 설명하기 위한 표기법에 대하여 설명한다.
는 소수(prime), 는 길이를 나타낸다 하자. 제안하는 프로토콜에서, 몇몇 집합들과 그것들에 대한 몇몇 이진 연산들을 사용한다. 는 오더(order) 의 그룹을, 는 정수 모듈로 의 유한체를, 는 를 각각 나타내도록 한다. 그룹 에 대해서 은 -차원 곱의 그룹을 나타내며, 유한체 에 대해서 은 차원 의 벡터 공간을 나타낸다. 는 에 대한 행과 열이 있는 행렬 집합을 나타낸다. 카테시안 곱 집합 의 요소는 굵은 글자로 표시된다.
위에서 정의한 집합 중에서 몇몇 이진 연산자에 대한 표기법을 정의한다. 2개의 벡터 의 경우, 와 사이의 내적은 로 정의되며, 로 표시되기도 한다. 와 사이의 요소별 곱(아다마르 곱)은 , 즉 이다. 및 의 경우, 다중-거듭제곱(multi-exponentiation) 는 에 의해 표시된다. 스칼라 와 벡터 의 경우 스칼라 곱은 즉, 로 표시된다.
본 발명은 내적관계를 이용하여 연산 결과를 증명 및 검증하는 영지식 증명 시스템, BP를 개선한 것이며 BP의 기본 아이디어에 그룹간의 페어링 연산을 접목시켜 보다 효율적인 영지식 증명을 구성하였다.
본 발명에서 제안하는 BP의 2가지의 응용은, 기존의 BP대비 증명의 크기를 줄인 Protocol 2 및 검증자의 연산량을 줄인 Protocol 3을 제안한다.
기존의 BP는 길이가 인 두 벡터의 내적관계를 보이는 문제를 길이가 인 두 벡터의 내적관계를 보이는 문제로 환원(reduction)하는 것이 핵심 아이디어이며, 벡터의 길이가 1이 될 때까지 환원과정을 거친 뒤, 벡터의 길이가 1이 된 상태에서 내적관계를 검증하는 것으로 구성된다. BP는 의 증명크기와 의 검증자 연산량을 가진다.
Protocol 2는 길이가 인 두 벡터의 내적관계를 길이가 인 두 벡터의 내적관계를 보이는 문제로 환원시켜 반복횟수(round 횟수)를 줄이는 것으로부터 시작한다. Protocol 2는 반복횟수가 줄어들긴 하지만 각 라운드마다 환원 과정에서 생기는 증명들의 크기가 커지는 문제점이 있다. 이러한 문제점을 해결하기 위해 페어링을 통해 압축하여 증명의 크기를 줄인 상태로 보내며 압축된 정보에 대한 유효성 검증을 위해 aAggMEA 프로토콜을 보조 프로토콜로 사용한다. 최종적으로는 의 증명크기를 달성한다.
Protocol 3은 BP의 단점 중 하나인, 에 비례하는 검증자의 연산량을 개선하는데 초점이 맞춰져 있다. Protocol 3은 외적 페어링 곱연산(Outer-Paring product) 기법을 이용해 길이의 그룹 벡터 연산을 길이의 그룹 벡터 연산과 길이의 그룹벡터 연산으로 나누는 방법을 사용하여 검증자의 연산량 을 달성한다.
Protocol 2, Protocol 3 모두 BP와 같이 내적관계를 증명하는 프로토콜로써 범위증명(Range Proofs), 산술회로를 위한 영지식 증명으로 활용될 수 있으며 증명 크기를 줄이는 것이 중요한 곳에서는 Protocol 2를, 검증자의 연산 부담을 줄이기 위해서는 Protocol 3을 각각의 목적에 맞게 사용할 수 있다.
본 발명의 설명에 앞서 먼저 실시예에 따른 수학적 구조 및 집합에 관하여 설명한다.
는 이진 선형적인(bilinear) 맵핑(mapping) 을 가지는 집합들이며 는 페어링 연산을 나타낸다. 본 설명에서 알파벳 소문자 는 의 원소로, 알파벳 대문자 는 의 원소로 표기할 것이다.
도 1은 본 발명의 일 실시예에 따른 연산 표기를 나타낸다.
도 1을 참조하면, 기본적으로 벡터는 유한체(field)의 벡터와 그룹의 벡터를 생각할 수 있다. 유한체의 벡터에 대한 스칼라 연산은 도 1의 1. 과 같이 표기하고 그룹 벡터에 대한 스칼라 지수연산은 2. 와 같이 표기한다. 또한 정해진 그룹원소에 대해서 유한체 벡터를 지수에 얹는 표기를 사용하고, 이것은 각 컴포넌트들이 주어진 그룹원소에 대해서 지수를 취하는 꼴로 쓰여지며 3. 과 같이 표기한다.
도 2는 본 발명의 일 실시예에 따른 두 벡터간의 연산의 정의를 나타내는 도면이다.
먼저 두 그룹 벡터에 대해서 컴포넌트 끼리 연산하여 그룹벡터를 만드는 연산을 생각할 수 있다. 이것은 도 2(Component-wise operation)에 명시된 표현을 따른다. 이후에 두 벡터간의 연산을 통해 하나의 값을 만드는 내적 연산을 정의할 것이다. 도 2의 1.은 유한체 벡터들끼리의 일반적인 내적연산을 나타내며, 2. 는 그룹벡터와 유한체 벡터들간의 다중 지수연산(multi-exponentation)을 나타낸다. 3. 은 두 그룹벡터 사이에서 이루어지는 연산으로서, 각 컴포넌트마다 페어링을 한 후 페어링 값들을 다 곱하여 하나의 그룹원소로 만드는 연산이고 이를 내적 페어링 곱연산(inner paring product)이라 부른다.
도 3은 본 발명의 일 실시예에 따른 Protocol 2를 설명하기 위한 도면이다.
BP와 다르게 Protocol 2는 길이가 인 벡터를 개의 동일한 길이의 벡터로 분해한 뒤 프로토콜을 진행한다. 증명자는 서로 다른 에 대해서 를 생성한다. 이때 의 개수는 총 개이며, 들을 사전적 순서(lexiographic order)로 나열하여 길이가 인 벡터 를 만들고, 미리 정해놓은 과 내적 페어링 곱연산을 통해 그룹 원소 로 만들어 검증자에게 보낸다(Step 1). 이후 검증자가 증명자에게 랜덤값 를 보내고(Step 2), 랜덤값을 받은 증명자는 검증자가 들을 모르는 검증자가 를 업데이트 할 수 있도록 를 계산 후 보내주며(Step 3), 이후에는 길이 벡터의 내적관계로 환원하기 위해 길이의 벡터 와 그룹원소 를 업데이트 하고 증명자는 추가로 를 업데이트 하고(Step 4), 이후에 증명자와 검증자는 각각 , 를 상태 정보에 업데이트 후, 업데이트 한 벡터 들을 이용하여 또 다시 프로토콜을 수행한다. 해당 프로토콜을 길이가 벡터의 길이가 1이 될 때 까지 반복한다(Step 5).
벡터의 길이가 1이 되었을 때(), 증명자는 가지고 있는 를 검증자에게 보낸 후 검증자는 해당 벡터들이 관계식을 만족하는지 확인하고 그 이후에 상태정보들에 대한 검증을 aAggMEA를 통해 검증하여 모든 검증을 통과하면 증명을 수락(Accept)한다.
도 4는 본 발명의 일 실시예에 따른 aAggMEA(Augmented Aggregation of Multi-Exponentiation Argument)를 설명하기 위한 도면이다.
Protocol 2를 진행하면서 증명자는 여러 쌍의 MEA 관계식을 보여야한다. 이때, 각자 증명을 하지 않고 aAggMEA 프로토콜을 이용하여 한번에 모아서 처리를 하게 된다.
aAggMEA는 복수의 MEA를 한번에 모아서 수행하는 프로토콜이다. aAggMEA의 시작은 검증자가 랜덤값 를 증명자에게 보내는 것으로 시작되며(step 1), 증명자는 받은 에 기초하여 m개의 MEA 인스탠스(instance)에 값을 순차적으로 곱한 후(step 2), ProdMEA 프로토콜을 수행한다(step 3). 다시 말해, aAggMEA 프로토콜은 ProdMEA 프로토콜을 포함하는 프로토콜이다. aAggMEA가 보이고자 하는 관계식은 다음과 같다:
도 5는 본 발명의 일 실시예에 따른 ProdMEA(Product of Multi-Exponentiation Argument)를 설명하기 위한 도면이다.
ProdMEA는 하기 식에 대한 지식 증명 프로토콜이다:
MEA 관계식과 비교하면 각각의 MEA 인스탠스 ()가 만족해야 하는 관계식 을 모두 곱한 형태가 ProdMEA의 관계식이다. 각각의 관계식을 곱한 형태를 검증해도 되는 이유는 이전에 aAggMEA 프로토콜 초반에서 검증자가 랜덤한 값을 증명자에게 보내기 때문에 증명자는 기존의 비밀정보와는 다른 정보로 검증자를 속일 수 없다.
증명자는 내적 페어링 곱연산을 진행하여 을 검증자에게 보내고(Step 1), 검증자가 랜덤값 를 증명자에게 보낸 뒤(Step 2), 1/2 길이의 벡터로 업데이트 하여(Step 3) 벡터의 길이가 1이 될 때까지 진행한다(Step 4). 길이가 1이 되면() 증명자는 을 검증자에게 보낸 후 검증자는 해당 원소들을 이용해 페어링 연산을 하여 해당 증명을 검증한다. 여기서 ProdMEA의 증명 크기는 매 라운드마다 보내는 로 인해 생기는 개의 원소와 마지막에 검증자가 보내는 개의 원소의 크기의 합이 된다. 즉, 이라고 할 수 있다. aAggMEA에서 ProdMEA 이전에 증명자가 별도로 검증자에게 보내주는 메시지가 없으므로 aAggMEA의 증명 또한 이 됨을 알 수 있다. Protocol 2에서 aAggMEA가 적용되는 상황을 고려하면 의 복잡도에서 N에 해당하는 값은 2n(2n-1)이고 은 라운드 횟수, 즉 Protocol 2의 벡터의 길이 N에 대해서 이 되므로 Protocol 2에서 aAggMEA로 인해 생기는 증명의 크기는 라고 할 수 있다. Protocol 1과 마찬가지로 GBP로 인해 생기는 증명의 크기는 이므로 Protocol 2의 증명의 크기는 가 된다. 여기서 으로 설정하면 해당 값은 이 되며 증명의 크기를 에서 로 유의미하게 줄였음을 확인할 수 있다. 이에 따라, 검증자의 연산량이 다소 증가하지만, 한 라운드에 여러개의 벡터를 업데이트 하는 반면, 각각의 벡터의 길이가 그만큼 작기 때문에 서로 상쇄되어 검증자의 연산량은 여전히 임을 확인할 수 있다.
도 6은 본 발명의 일 실시예에 따른 내적 곱연산(Inner-Product) 및 외적-페어링 곱연산(Outer-Paring Product)을 설명하기 위한 도면이다.
Protocol 3을 설명하기 앞서 추가적인 표기법에 대해 설명이 필요하다. 먼저 길이가 인 벡터에 대한 내적관계를 보이는 것이 목적이며 의 벡터를 의 원소, 즉 행렬 형태로 생각을 할 것이다. 따라서 두 벡터의 내적을 표현할 때 에 대응되는 인덱스와 에 대응되는 인덱스를 병기하여 표현할 것이다. 또한 외적-페어링 곱연산(Outer-Paring Product)을 정의하고, 페어링을 이용하여 길이가 m, n인 벡터 를 가지고 행렬을 만드는 방법이다. 텐서 곱연산(Tensor Product)과 유사하다고 할 수 있다.
도 7은 본 발명의 일 실시예에 따른 Protocol 3을 설명하기 위한 도면이다.
Protocol 3은 BP의 검증자의 연산량이 벡터의 길이 에 비례한다는 단점을 보완하기 위한 프로토콜로 페어링 연산의 성질을 이용한다. Protocol 3에서 증명자가 보이고자 하는 관계식은 다음과 같다:
여기서 증명자의 비밀정보(witness)는 길이가 인 벡터( 행렬)이다. 기존의 BP에서는 길이가 인 를 사용하고 매 라운드마다 검증자가 에 비례하는 만큼 업데이트를 해줘야 하지만 Protocol 3은 외적 페어링 곱연산(Outer Paring Product)을 사용하여 해당 과정을 각 행벡터들을 하나의 원소로 생각하며 진행한 후 마지막에 모아진 행벡터에 대해서 BP를 진행하는 방식으로 구성된다.
Protocol 3의 Step 1부터 Step 4까지의 과정은 을 업데이트 하는 방법만 다르고 나머지 과정은 BP와 동일하다. 증명자가 외적 페어링 곱연산을 이용하여 길이가 인 벡터 와 인 벡터 를 가지고 행렬을 구성하여 본인의 비밀정보 를 지수에 얹어 에 담는 것이 핵심이다. 마지막에 일 때 증명자와 검증자는 벡터를 비밀정보로 하여 BP를 진행한다. 검증자의 연산량을 살펴보게 되면 첫 번째 과정에서 만큼의 의 지수연산이 필요하고 두 번째 과정에서 만큼의 지수 연산이 필요하다. 으로 설정하면 Protocol 3의 검증자 연산량은 만큼의 지수연산으로 귀결된다. Protocol 3에서 증명의 크기는 이 되어 증명의 크기가 BP에 비해 유의미하게 커지지 않음을 확인할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (13)
- 블록체인 및 딥러닝을 이용하는 영지식 증명에 있어서 프라이버시를 보호하면서, 범위증명 및 연산의 유효성을 포함하는 수치 데이터에 대한 연산 검증을 위한 산술회로에 대하여, 영지식 증명에서 미리 정해진 길이를 갖는 두 벡터의 내적관계를 증명할 때 증명 크기를 감소시키거나 또는 검증자의 연산 부담을 감소 시키기 위한 목적에 따라 BP(Bulletproofs)에 그룹간 페어링 연산을 결합하여 영지식 증명을 수행하고,
범위증명, 연산의 유효성 및 두 벡터의 내적관계를 포함하는 복수의 증명을 미리 정해진 용량의 블록체인에서 활용할 경우 증명 크기를 감소시키기 위해 BP에 그룹간 페어링 연산을 결합한 Protocol 2를 사용하고,
상기 Protocol 2는,
반복횟수를 감소시키기 위해 길이가 인 두 벡터의 내적 관계를 길이가 인 두 벡터의 내적관계를 나타내는 문제로 환원하고,
반복횟수가 줄어들 때 환원 과정에서 발생하는 증명 크기 증가 문제를 해결하기 위해 페어링 연산을 통해 증명 크기를 압축하여 전달하며,
압축된 정보에 대한 유효성 검증을 위해 aAggMEA 프로토콜을 보조 프로토콜로 사용하는
영지식 증명 및 검증 방법. - 제1항에 있어서,
상기 Protocol 2는,
길이가 인 벡터를 개의 동일한 길이의 벡터로 분해하고, 증명자는 서로 다른 에 대해서 그룹원소 를 생성하고-여기서 의 개수는 총 개이며, 들을 사전적 순서(lexiographic order)로 나열하여 길이가 인 벡터 를 생성함-, 미리 정해진 벡터 과 내적 페어링 곱연산을 통해 그룹 원소 를 생성하여 검증자에게 보내는 단계(Step 1) -여기서, 는 오더(order) 의 그룹을 나타내고, 는 이진 선형적인(bilinear) 맵핑(mapping) 을 가지는 집합들이며 는 페어링 연산을 나타냄-
를 포함하는 영지식 증명 및 검증 방법. - 제2항에 있어서,
검증자가 증명자에게 랜덤값 를 보내는 단계(Step 2);
랜덤값을 받은 증명자는 상기 들을 모르는 검증자가 그룹원소 를 업데이트하는데 필요한 그룹 원소 를 계산한 후 보내는 단계(Step 3);
길이 벡터의 내적 관계로 환원하기 위해 길이의 벡터 와 그룹원소 를 업데이트 하고 증명자는 추가로 를 업데이트 하는 단계(Step 4); 및
증명자와 검증자는 각각 그룹 원소 , 를 상태 정보에 업데이트 후, 업데이트 한 벡터 들을 이용하여 다시 Protocol 2을 수행하고, 벡터의 길이가 1이 될 때까지 Protocol 2를 반복하는 단계(Step 5)
를 포함하는 영지식 증명 및 검증 방법. - 제4항에 있어서,
Protocol 2에서 증명자가 복수의 쌍의 MEA(Multi-Exponent Argument) 관계식을 만족해야 하고, 복수의 쌍의 MEA 관계식 각각을 증명을 하지 않고 한번에 검증하기 위해 aAggMEA 프로토콜을 이용하며,
상기 aAggMEA 프로토콜은,
검증자가 랜덤값 를 증명자에게 보내는 단계(step 1);
증명자가 랜덤값 에 기초하여 m개의 MEA 인스탠스(instance)에 값을 순차적으로 곱하는 단계(step 2); 및
ProdMEA 프로토콜을 수행하는 단계(step 3)
를 포함하는 영지식 증명 및 검증 방법. - 블록체인 및 딥러닝을 이용하는 영지식 증명에 있어서 프라이버시를 보호하면서, 범위증명 및 연산의 유효성을 포함하는 수치 데이터에 대한 연산 검증을 위한 산술회로에 대하여, 영지식 증명에서 미리 정해진 길이를 갖는 두 벡터의 내적관계를 증명할 때 증명 크기를 감소시키거나 또는 검증자의 연산 부담을 감소 시키기 위한 목적에 따라 BP(Bulletproofs)에 그룹간 페어링 연산을 결합하여 영지식 증명을 수행하고,
BP의 검증자의 연산량이 벡터의 길이에 비례한다는 문제점을 보완하여 검증자의 연산 부담을 감소 시키기 위해 페어링 연산을 결합한 Protocol 3을 사용하고,
상기 Protocol 3는,
증명자의 비밀정보(witness)의 길이가 인 벡터( 행렬의 행벡터)이고, 외적 페어링 곱연산(Outer Paring Product)을 사용하여 상기 행벡터를 하나의 원소로 하여 Protocol 3을 수행한 후 마지막에 모아진 행벡터에 대해서 BP를 수행하는
영지식 증명 및 검증 방법. - 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210010040A KR102553775B1 (ko) | 2021-01-25 | 2021-01-25 | 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210010040A KR102553775B1 (ko) | 2021-01-25 | 2021-01-25 | 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220107420A KR20220107420A (ko) | 2022-08-02 |
KR102553775B1 true KR102553775B1 (ko) | 2023-07-10 |
Family
ID=82845987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210010040A KR102553775B1 (ko) | 2021-01-25 | 2021-01-25 | 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102553775B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240103462A (ko) | 2022-12-27 | 2024-07-04 | 주식회사 크립토랩 | 페어링 연산에 의존하지 않으면서 효율적으로 수행 가능한 연산 결과를 증명 및 검증하는 영지식 증명 프로토콜 시스템 |
CN116049619B (zh) * | 2022-12-28 | 2023-08-04 | 声龙(新加坡)私人有限公司 | 针对marlin零知识证明协议的矩阵计算装置、方法及设备 |
CN116349199A (zh) * | 2023-01-04 | 2023-06-27 | 声龙(新加坡)私人有限公司 | 零知识证明验证方法、装置、终端及存储介质 |
KR102595354B1 (ko) | 2023-02-07 | 2023-10-30 | 주식회사 지크립토 | 영지식증명을 갖는 블록체인 기반의 전자투표시스템 및 방법 |
-
2021
- 2021-01-25 KR KR1020210010040A patent/KR102553775B1/ko active IP Right Grant
Non-Patent Citations (2)
Title |
---|
Benedikt Bunz 외 5명. "Bulletproofs: Short Proofs for Confidential Transactions and More." 2018 IEEE symposium on security and privacy (SP). IEEE (2018.)* |
Jiangxiao Zhang 외 4명. "Fair Multiple-bank E-cash in the Standard Model." Cryptology ePrint Archive (2014).* |
Also Published As
Publication number | Publication date |
---|---|
KR20220107420A (ko) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102553775B1 (ko) | 연산 결과를 증명 및 검증하는 페어링 기반 영지식 증명 프로토콜 시스템 | |
US20210256165A1 (en) | Protecting parallel multiplication operations from external monitoring attacks | |
EP3707623A1 (en) | System for simplifying executable instructions for optimised verifiable computation | |
Pinto | An introduction to the use of zk-SNARKs in blockchains | |
WO2016046949A1 (ja) | 楕円曲線スカラー倍演算方法 | |
JP2020514853A (ja) | スクリプトサイズ及びオペコードリミットに対するセキュリティベース制限を維持しながらブロックチェーン上の複雑な機能を有効するためのコンピュータにより実現されるシステム及び方法 | |
US20210344510A1 (en) | Computer-implemented system and method including public key combination verification | |
CN113434886B (zh) | 联合生成用于安全计算的数据元组的方法及装置 | |
US10855443B2 (en) | Protecting polynomial hash functions from external monitoring attacks | |
CN114187000B (zh) | 用于分散私钥的签名方法、设备、存储介质及处理器 | |
WO2024173599A2 (en) | Systems and methods for state minimization and unlinkable transactions | |
CN111262707B (zh) | 数字签名方法及验证方法、设备、存储介质 | |
US11681498B2 (en) | Neural network arithmetic processing device and neural network arithmetic processing method | |
KR20210151179A (ko) | 블록체인 트랜잭션에서 지식 증명을 위한 컴퓨터 구현된 방법 및 시스템 | |
KR102372111B1 (ko) | 영지식 증명 기반 블록체인 가상머신 검증 시스템 | |
KR102410269B1 (ko) | 연산 결과를 증명 및 검증하는 효율적인 영지식 증명 프로토콜 시스템 | |
CN110505226B (zh) | 基于伽罗华环上形式矩阵的传输信息加密方法及装置 | |
KR20240103462A (ko) | 페어링 연산에 의존하지 않으면서 효율적으로 수행 가능한 연산 결과를 증명 및 검증하는 영지식 증명 프로토콜 시스템 | |
US20160170937A1 (en) | Calculation device, calculation method, and program | |
KR102519490B1 (ko) | 영지식 증명 기반 블록체인 가상머신의 검증방법 | |
EP4280539A1 (en) | Calculating method using zero-knowledge proof-friendly one-way function, and apparatus for implementing the same | |
KR102690974B1 (ko) | 효율적으로 사용자 탈퇴 기능을 제공하는 익명 크리덴셜 인증 장치 및 방법 | |
US20240171401A1 (en) | Method for calculating using an one-way function effienct in a zero knowledge proof, and apparatus implementing the same method | |
KR102398543B1 (ko) | 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신 | |
US11509460B2 (en) | Apparatus and method for performing matrix multiplication operation being secure against side channel attack |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |