DOI QR코드

DOI QR Code

Personal Information Management System with Blockchain Using zk-SNARK

영지식 증명을 활용한 블록체인 기반 개인정보 관리 기법

  • Received : 2018.12.27
  • Accepted : 2019.03.19
  • Published : 2019.04.30

Abstract

As the utilization value of personal information becomes higher, discussions about providing personal information are being conducted actively. One of the most common methods of providing personal information is that a group obtains a personal information with a consent of individual. However, the above method has 2 problems. First, more information is exposed than the information required by organization for utilization of personal information. Second, trusted party should provide organization with an authentication of personal information whenever they require personal information. To solve these problems, we propose a personal information management system with blockchain using zk-SNARK(zero-knowledge Succinct Non-interactive ARgument of Knowledge) for privacy. Our proposal enables individuals to guarantee reliability of their information and protect their privacy concurrently using zk-SNARK when they provid organization with their personal information. In addition, it is possible to manage the personal information data while ensuring the integrity of the data using blockchain and it is possible to share the personal information more conveniently than existing systems.

현재 개인정보의 활용가치가 높아짐에 따라, 개인정보를 제공하는 방법에 대한 논의가 활발하게 이루어지고 있다. 현재 가장 일반적인 개인정보 제공방법 중 하나로 개인정보를 활용하는 집단이 개인에게 동의를 얻어 개인정보를 사용하는 방법이 있다. 그러나 위의 방법은 두가지 문제점을 갖고 있는데, 첫째 개인정보 활용을 위해 기관에서 필요로 하는 정보 이상의 정보가 노출되고 있는점, 둘째 기업에서 개인정보를 요청 할 때마다 신뢰기관(Trusted Party)이 해당 정보에 대한 인증정보를 기업에 제공해야 하는 문제점이 있다. 위의 문제점을 해결하기 위해 본 논문에서는 zk-SNARK (zero-knowledge Succinct Non-interactive ARgument of Knowledge)기법과 블록체인을 사용하여 프라이버시 보호형 개인정보 관리기법을 제안한다. 프라이버시 보호형 개인정보 관리기법은 zk-SNARK를 통해 개인정보를 제공할 때 프라이버시를 보장하면서도 정보의 신뢰성을 보장할 수 있다. 또한 블록체인을 통해 데이터의 무결성을 보장하면서도 개인정보 데이터를 관리할 수 있으며 개인정보 공유를 기존의 인증방식보다 용이하게 수행할 수 있다.

Keywords

I. 서론

기업에서 소비자에게 제공하는 재화가 다양해짐에 따라, 소비자의 재화별 잠재수요를 파악하는 것은 필수적 요소가 되었다. 기업은 소비자에게 개인정보를 요청하여 개인정보를 수집하고 이를 분석하는 것을 통해 소비자의 잠재수요를 파악할 수 있다. 그러나 소비자는 기업이 개인정보를 수집할 때, 자신의 개인정보가 어느 정도까지 수집되는지 파악하는 것이 어려운 측면이 있으며 설령 기업에서 수집하는 개인정보 내역을 공개할지라도 기업에서 제공하는 정보 수집내역을 신뢰 하는 것이 어렵다 [1]. 즉, 기업에서 필요 이상의 개인정보를 소비자에게 요구하더라도 소비자 입장에서 이를 인지하는 것이 매우 어렵기 때문에 소비자의 개인정보가 과도하게 노출되는 문제가 발생할 수 있다.

위와 같은 과도한 정보 노출 문제를 방지하는 이상적인 정보제공 방법으로 기업에서 필요로 하는 정보만 개인이 산출하여 인증된 형태로 제공하는 것을 생각해 볼 수 있다. 예를 들어 기업에서 개인의 성인 여부 정보가 필요하다면 개인은 정확한 나이 정보를 제공할 필요 없이 성인 여부 정보만 인증된 형태로 제공하면 되는 것이다.  하지만 신뢰성 있는 정보의 제공을 위해서 정보에 대한 인증을 사용하는 경우 정보의 인증을 위해 제3의 신뢰기관이 필요하다. 그러나 개인정보를 활용할 때마다 신뢰기관에서 인증정보를 발급하는 것은 비효율적이다. 따라서 신뢰기관에 과도한 오버헤드가 부여되지 않도록 하는 새로운 개인정보 관리 방법이 필요하다.

본 논문에서는 개인이 기업에 개인정보를 제공할 때 기업이 필요한 정보만 제공하면서 신뢰기관에 부여되는 오버헤드가 많지 않도록 하는 새로운 개인정보 관리기법을 제안한다. 개인이 자신의 개인정보를 기업에게 제공할 때 개인정보 자체를 기업에 제공함과 동시에 해당정보에 대한 정확성을 신뢰기관으로부터 받아서 개인정보에 대한 신뢰성을 확보하는 방법과 달리 본 제안에서는 미리 인증된 개인정보에 대해서 개인이 실제로 개인정보를 활용할 때 기업에 필요에 맞게 정보를 가공하여 제공하는 것을 제안한다.  정보를 가공하여 제공하는 경우에도 해당 정보에 대한 정확성을 제공해야 하는데 이를 영지식 증명을 사용하여 해결하는 방법을 제안 한다 [2][3][4][5].

문헌 [2][3][4][5]등의 영지식 증명기술은 증명에 필요한 어떠한 정보도 드러내지 않고 Statement에 대한 정합성을 증명하는 기술이다. 특히, [2][3][4][5]의 경우 영지식 증명을 위해 상호작용(Interaction)이 필요 없이 간결한 증명 (Succinct) 생성이 가능하기 때문에 소비자가 효율적으로 가공데이터에 대한 증명을 생성하는 것이 가능하다.  즉, 위의 영지식 증명을 통해 소비자는 제3의 신뢰기관을 거치지 않은 채 자신의 개인정보를 드러내지 않고 개인정보를 가공한 데이터를 기업에게 신뢰성 있게 제공할 수 있다.

인증이 필요한 개인정보를 관리하는 방법으로 인증기관에서 개인정보를 서버에 각각 저장하고 개인은 위 정보를 요청해 사용하는 방법을 생각 할 수 있는데, 개인정보를 단일 기관의 서버에 저장하는 것은 서버가 악의적인 공격자에 의해 공격당해 관리권한이 탈취되면 서버 내의 정보가 조작될 수 있는 위험성이 있다. 또한 서버 내에서 개인정보를 관리할 때 데이터 공유를 위해서는 서버 전체를 다시 구축하여 정보를 복제하거나, 서버 관리자에게 데이터를 요청하여 사용해야하는데 서버 전체를 복제하는 것은 비용적 측면에서 효율적이지 않고, 현행과 같이 서버 관리자에게 데이터를 요청하여 사용하는 것은 서버관리자를 완전히 신뢰할 때 가능하다는 점에서 한계점이 있다. 따라서 가공데이터를 생성하기 위한 개인정보를 관리하기 위한 방법 중 하나로 서버가 아닌 블록체인을 활용할 수 있다.

본 논문에서는 개인정보의 조작을 방지하고 정보공유의 유용성을 위해 블록체인을 사용하여 개인정보를 공유하는 방법을 제안한다. 개인정보를 인증하는 신뢰기관은 개인정보를 해시한 값과 개인정보에 대한 암호문을 블록체인에 기록한다. 이후 기업이 개인의 개인정보를 활용할 필요가 있을 때 개인은 암호화된 개인정보를 복호화 한 후 자신의 개인정보를 기업에서 필요로 하는 정보로 가공한다. 이후 개인은 가공한 정보에 대해 증명값을 추가한다. 개인은 가공된 정보와 해당 정보에 대한 증명값을 기업에 제공하는 것을 통해 가공정보에 대한 신뢰성을 기업에게 제공할 수 있다.

본 논문은 다음과 같은 구성을 갖는다. 2장에서는 배경에 대하여 서술하고, 3장에서는 본 연구와 관련된 관련연구, 4장에서는 제안기법의 정의에 대해 서술하며 5장에서는 구체적인 제안기법에 대해 서술한다. 6장에서는 제안기법의 안전성증명에 대하여 서술하며 끝으로 7장에서는 결론을 서술한다.

II. 배경

2.1 zk-SNARK

2.1.1 zk-SNARK 개요

zk-SNARK(zero-knowledege Succinct Non-interactive ARgument of Knowledge)는 Statement의 올바름에 대하여 어떠한 비밀정보도 드러내지 않고 증명할 수 있는 기술을 뜻한다[2][3][4][5]. zk-SNARK는 영지식 증명이 가능하며 특히 생성되는 증명의 크기가 증명 수식(N)의 이하의 크기를 가진다. 또한 증명자(Prover)와 검증자 (Verifier) 간 상호작용 (Interaction)이 존재하지 않으며, 지식(Knowledge)를 가진사람만이 증명을 생성할 수 있는 특성을 가진다. zk-SNARK는 특정한 함수를 하나의 곱셈과 다수의 덧셈으로 구성되는 회로 (Circuit)로 구성하는 것을 전제로 두고 있으며, 회로데이터를 R1CS(Rank-1 Constraint System)[2][3]로 구성한 뒤 R1CS데이터를 QAP(Qaurdratic Arithmetic Program) 또는 SAP(Square Arithmetic Program)의 형태로 만들어 하나의 함수에 대한 공용변수(CRS)를 생성한다.

2.1.2 NIZK (Non-Interactive Zero-Knowledge Arguments of Knowledge) 정의 

R을 Relation Generator라고 할 때, 4개의  Non-Interactive Zero-Knowledge Argume-nts of Knowledge 알고리즘 Setup, Prove, Verify, SimProve은 Perfect Completeness, Computational Soundness, Zero-Knowledge를 만족한다. 먼저 각 알고리즘의 정의는 다음과 같다.

- \((crs,r)\leftarrow Setup(R)\): \(Setup\)알고리즘은 Relation R을 입력으로 공용변수 crs와 시뮬레이션 트랩도어(Simulation Trapdoor) r를 출력한다.

- \(\pi \leftarrow Prove(crs,\phi;w)\): Prove알고리즘은 공용변수 relation R에 대한 crs와 \((\phi,w) \in R\)을 입력으로 증명 \(\pi\)를 출력한다.

- \(0/1 \leftarrow Verify(crs,\phi,\pi)\): \(Verify\)알고리즘은 공용변수 crs , 인스턴스\(\phi\) , 증명 \(\pi\)를 입력으로 증명이 맞으면 1, 올바르지 않으면 0을 출력한다.

- \(\pi \leftarrow SimProve(crs,r,\phi)\): 시뮬레이터 Simprove 는 공용변수 crs , 시뮬레이션 트랩도어(Simulation Trapdoor) r , 인스턴스 \(\phi\)를 입력으로 \(\pi\)를 출력한다.

R : Relation

crs : 공용변수(Common Reference String)

r : 트랩도어(Trapdoor)

\(\pi\) : 증명(Proof)

\(\phi\) : 인스턴스 (Instance) 

w : 위트니스(Witness)

각 알고리즘이 만족하는 특성은 다음과 같다.

-Perfect Completeness : Perfect Comple-teness는 올바른 Statement가 주어졌을 때, 위트니스(Witness)를 알고있는 증명자(Prover)는 검증식(Verify)을 항상 통과할 수 있음을 의미한다. Perfect Completeness는 다음의 확률을 만족한다.

\(\operatorname{Pr}\left[\begin{array}{l} (\operatorname{crs}, \tau) \leftarrow \operatorname{Setup}(R) ; \pi \leftarrow \operatorname{Prove}(R, c r s, \phi, w): \\ \operatorname{Verify}(R, \operatorname{crs}, \phi, \pi)=1 \end{array}\right]=1\)

이때, 트랩도어 r값은 증명자와 검증자 모두에게 드러나지 않고, 아래에 서술할 증명 시뮬레이션을 위해 사용된다.

- Perfect Zero-Knowledge : 제대로 된 인스턴스와 위트니스를 알고 Prove함수를 통해 만들어진 와 위트니스를 모르고 SimProve로 만든 \(\pi\)를 공격자 A가 구분할 수 없다. Perfect Zero- Knowledge는 다음을 만족한다.

\(\begin{array}{l} \operatorname{Pr}[(c r s, \tau) \leftarrow \operatorname{Setup}(R) ; \pi \\ \quad \leftarrow \text { Prove }(R, c r s, \phi, w): A(R, c r s, \tau, \pi)=1 \\ \quad \quad= \\ \operatorname{Pr}[(c r s, \tau) \leftarrow \operatorname{Setup}(R) ; \pi \\ \quad \leftarrow \text { Sim Prove }(R, \tau, \phi): A(R, c r s, \tau, \pi)=1] \end{array}\)

- Computational Soundness :

LR을 R에 속하는 위트니스에 부합하는 Statement로 구성된 Language라고 할 때 다음의 확률을 만족하고 이때 e이 negligible이면 Computationally Sound하다고 정의한다.

\(\operatorname{Pr}\left[\begin{array}{l} (\operatorname{crs}, \tau) \leftarrow \operatorname{Setup}(R) ;(\phi, \pi) \leftarrow A(R, c r s): \\ \phi \notin L_{R} \text { and } \text {Verify}(R, c r s, \phi, \pi)=1 \end{array}\right]<\varepsilon\)

2.2 Blockchain

블록체인[6][7][8][9]은 거래정보를 기록한 원장을 특정기관의 중앙서버가 아닌 P2P네트워크에 분산하여 거래참가자가 공동으로 관리하는 기술이다. 블록체인은 거래정보가 담긴 각각의 블록을 해시함수를 사용하여 연결한다. 블록체인 내의 블록이란 블록체인의 원소 개념으로 각각의 블록은 블록헤더와 거래정보 및 부가정보로 구성된다. 블록체인은 읽기 및 쓰기 권한을 제한하는 정도에 따라 공개블록체인과 사설블록체인으로 분류될 수 있는데, 본 논문에서 사용하는 블록체인은 읽기권한이 모두에게 주어져 있지만 쓰기 권한은 개인정보를 인증하는 제3의 신뢰기관에게 주어지는 제한적 공개 블록체인을 가정한다.

2.3 Encryption

본 논문에서는 사용자가 필요한 시점에 자신의 정보를 도출할 수 있도록 자신의 개인정보를 암호화하여 블록체인 내에 보관한다. 암호화 알고리즘은 다음과 같은 알고리즘으로 구성된다.

\((pk,sk)\leftarrow Setup(k)\) : 안전변수 k를 입력으로 비밀키 sk와 pk공개키 를 출력한다. 본 논문에서는 각 개인별로 공개키와 비밀키를 갖는 것을 가정한다.

\(CT \leftarrow Enerypt(pk,M)\): 공개키 pk. 메시지 M을 입력으로 암호문 CT를 출력한다.

\(M \leftarrow Decrypt(sk,CT)\)   : 비밀키 sk, 암호문 CT를 입력으로 암호문에 대한 복호문 M을 출력한다.

본 논문에서는 개인별로 다른 암호화키 및 복호화 키를 가지는 것을 가정하며 이에 따라 에 대한 ID공개키와 비밀키를 pkID, skID로 정의한다.

또한 본 논문에서 사용하는 암호화 알고리즘 (Setup, Enerypt, Decrypt)는 Semantic Security를 만족함을 가정한다. 본 논문에서 정의하는 Semantic Security는 다음과 같다.

- Semantic Security

A가 다항시간의 알고리즘일 때 다음의 확률이 negligible의 확률을 갖는다. 즉, 공격자가 Ciphertext로부터 메세지를 구분할 수 있는 확률은 negligible 이다.

\(\left|\operatorname{Pr}\left[\begin{array}{l} (p k, s k) \leftarrow \operatorname{Setup}(k) ;\left(m_{0} m_{1}\right) \leftarrow A(p k) \\ b \leftarrow\{0,1\} ; C \leftarrow \text {Encrypt}\left(p k, m_{b}\right) ; b^{\prime} \leftarrow A(p k, C): b=b^{\prime} \end{array}\right]-\frac{1}{2}\right|<\varepsilon\)

III. 관련연구

3.1 Zerocash

제로캐시(Zerocash)는 zk-SNARK를 사용한 응용 중 가장 먼저 상용화된 응용이다[8]. 제로캐시는 가장 널리 사용되고 있는 비트코인(Bitcoin)의 프라이버시 문제를 보완하기 위해 제안되었다. 비트코인의 모든 거래는 공개된 탈중앙화 블록체인에 기록되기 때문에, 사용자의 모든 거래정보가 모두에게 공개된다. 따라서 비트코인은 구조상 프라이버시 문제를 벗어날 수 없다. 하지만 제로캐시는 zk-SNARK를 기반으로한 DAP 기법(Decentra-lized Anonymous Payment Scheme)을 통해 사용자들이 정보를 노출하지 않고도 직접적인 거래를 할 수 있도록 하였다. 제로캐시는 사용자의 비밀정보에 대해 일방향연산을 수행하고 연산결과에 대하여 증명값을 추가함으로써 익명블록체인을 구현하였다. 즉 제로캐시의 익명거래는 zk-SNARK를 사용함으로써 사용자의 비밀정보를 드러내지 않고 각 사용자의 거래가 유효하다는 것을 증명할 수 있기 때문에 사용자들은 각 거래의 자금출처, 목적지, 거래금액을 숨긴 채 거래할 수 있게 되었다.

3.2 Hawk

이더리움 등 수많은 탈중앙화 암호화폐기반의 스마트 계약 시스템들은 제 3의 신뢰기관 없이 사용자들이 안전한 거래를 할 수 있도록 하였다[7]. 이는 블록체인을 활용한 암호화폐가 단순 화폐의 역할 뿐만 아니라 더욱 다양한 역할을 가질 수 있게 하였다. 하지만 모든 거래내역이 블록체인에 공개되어 있어 거래 프라이버시가 결여된 스마트 계약 시스템이라는 한계점을 가진다. 따라서 이러한 방법에서는 사용자의 개인정보가 블록체인을 통해 전파되고, 블록체인에 기록되기 때문에 개인정보를 전혀 보호할 수 없다. 이를 해결하기 위해 Hawk는 스마트 계약의 과정을 공개하지 않는 방법을 제안하였다[10]. Hawk에서는 계약에 필요한 연산이 공개되지 않지만 계약 과정을 증명할 수 있는 zk-SNARK를 통해 거래의 타당성을 증명 할 수 있다. 이를 통해 Hawk에서는 사용자의 비밀정보가 블록체인에 노출되지 않도록 스마트 계약 연산을 수행할 수 있다.

3.3 Accountable privacy for decentralized anonymous payments

Accountable privacy for decentralized anonymous payments는 기존의 블록체인을 활용한 탈중앙화 암호화폐와 탈중앙화 암호화폐 기반의 스마트 계약 시스템들의 문제점이었던 사용자의 프라이버시를 보호하면서, 자금세탁과 같은 금융범죄에 암호화폐가 악용되는 것을 막기 위한 연구이다[11]. 제로캐시는 zk-SNARK를 기반으로 사용자들이 비밀적으로 직접거래를 가능하게 하였지만, 이는 정부기관 및 수사기관 역시 추적 및 조회를 할 수 없기 때문에 자본세탁 등의 범죄에 악용될 수 있다. 이는 결국 현금과 다를바가 없기 때문에 Accountable privacy for decentralized anonymous payments는 새로운 DAP(Decentralized Ano-n-ymous Payment)을 설계하여 네트워크 참여자의 프라이버시를 보장하면서 거래정책(Transa-ction Policy)을 강제하였다. 새로운 DAP system은 zk-SNARK 기법을 활용하여 모든 거래의 사용자 프라이버시를 보장하고 모든 거래가 거래정책을 준수하도록 강제하였다. 이를통해 Accou-nta-ble privacy for decentralized anony-mous payments는 탈중앙화 스마트계약 시스템의 네트워크에 참여하는 모든 사용자들이 특정한 거래정책을 준수하도록 강제함으로써 사용자들의 프라이버시를 지킴과 동시에 익명 블록체인이 범죄에 악용되는 것을 막을 수 있게 하였다.

IV. 개인정보 증명 블록체인

본 장에서는 제안하는 알고리즘을 정의하고, 알고리즘이 만족하는 안전성을 정의한다. 알고리즘은 크게 3개의 개체에 의해 수행된다.

제안 알고리즘에는 3개의 개체(Entity)가 존재함을 가정한다. 첫 번째 개체는 개인정보를 블록체인에 기록하는 신뢰기관(Trusted Party), 두 번째 개체는 개인정보를 기업의 필요에 맞게 가공하고 증명을 생성하는 개인(Individual Entity), 마지막으로 개인으로부터 받은 가공데이터를 검증하는 기업(Corporation)이 있다. 신뢰기관은 개인 혹은 공공기관이 될 수 있으며, 여러 신뢰기관에서 한 개인에 대한 정보를 암호화하여 인증된 형태로 블록체인에 기록하는 상황을 가정한다. 이후 개인은 블록체인에 기록된 자신의 개인정보를 기업이 요구하는 정보로 가공하여 기업에게 제공한다. 개인은 기업에게 정보를 제공하는 과정에서 zk-SNARK를 사용하며, 사용하는 zk-SNARK를 VC(Verifiable Compu-ting)로 표기한다. 또한 본 논문의 제안기법에서 사용하는 블록체인은 읽기권한은 모두에게 주어져 있지만 쓰기 권한은 다수의 신뢰기관에게 제한되어 있는 블록체인을 가정한다.

4.1 개인정보 증명 블록체인 정의

개인정보 증명 블록체인은 다음과 같이 구성된다.

ChainSetup(k) : 신뢰기관(Trusted Party)에 의해 수행되는 알고리즘이며 안전변수 를 입력으로 블록체인의 초기 블록(Genesis)을 생성하며, 블록체인의 접근권한 및 블록 등록권한을 설정한다.

Register(ID,info,pkID) : 신뢰기관이 ID와 ID에 대한 개인정보 info, 암호화를 위한 암호키 pkID를 입력으로 info를 pkID로 암호화한 CT , info를 해시 연산한 h와 ID를 출력하고 블록체인에 기록한다. 이때 기록되는 CT,info,h를 tx로 정의한다. 

Setup(f) : 신뢰기관이 개인정보를 활용하는 함수f를 입력으로 증명 및 검증에 사용되는 ekf와 vkf를 생성하여 출력한다.

ProvePI(tx,skID,ekf,f) : 개인(Individual Entity)에 의해 수행되는 알고리즘으로 ID,CT,h로 구성된 tx , 암호문을 복호화하기 위한 skID, 함수 f에 대한 증명 키 ekf와 함수 f를 입력으로 함수 f에 대한 출력값 t와 수 f를 올바르게 수행했다는 것을 증명하는 \(\pi\)를 출력한다.

VerifyPI(vkf,tx,t,\(\pi\)) : 기업(Corporation)에서 수행하는 알고리즘이며 Prove에서 출력한 \(\pi\)와 검증키 vkf, 개인정보 해시h , 함수결과 값 t를 입력으로 \(\pi\)를 검증한다. 검증결과가 맞으면 1, 아니면 0을 출력한다. 

JBBHCB_2019_v29n2_299_f0001.png 이미지

Fig. 1. Construction of our proposal

4.2 개인정보 증명 블록체인 안전성 정의

본 논문에서 제안하는 개인정보 증명 블록체인 기법은 다음 3가지 안전성을 만족한다.

1) 완전성(Completeness): 블록체인에 기록된 개인정보를 입력으로 올바른 정보 가공 과정을 통과한 출력에 대한 증명은 항상 검증식을 통과한다.

2) 무결성(Soundness) : 블록체인에 기록되지 않은 값으로 증명을 생성하거나(Invalid Input Case), 올바르지 않은 정보 가공과정을 통해 생성된 출력으로 생성한 증명(Invalid Output Case)이 검증식을 통과할 확률이 매우 낮다.

3) 데이터 프라이버시(Data Privacy)

블록체인에 기록된 암호화된 정보로부터 출력되는 가공된 정보와 증명값으로 추가적인 정보를 얻을 수 없다.

V. 제안 기법

제안기법은 Fig.1과 같은 과정으로 수행된다. 초기에 개인 혹은 개인정보 인증기관이 개인정보 와 해시 계산에 필요한 을 암호화하여 블록체인에 기록하며 이후 개인정보 활용 시 개인정보 증명을 위해 개인정보를 해시한 \(H(ID||info||r)\)를 암호문 CT와 함께 블록체인에 기록한다. 여기서 r은 해시의 안전성을 위해 추가한 랜덤변수를 의미한다. 또한 개인별로 다른 r이 부여된다. 이후 개인정보를 활용하는 시점이 되면, 개인은 개인 수행 부분에서 암호문을 복호화한 후 얻은 개인정보info 와 ID를 입력으로 개인정보 활용을 위한 함수f를 수행한다. 그리고 함수 수행결과에 대한 증명을 위해 블록체인에서 개인정보의 해시데이터를 가져와서 증명의 입력으로 사용한다. 이때 증명함수에서는 두 가지를 증명하는데 첫 번째는 입력으로 사용하는 \(H(ID||info||r)\)값이 실제 값을 통해 만든 값인지 증명하고, 두 번째로는 함수결과 t에 대하여 info값을 통해 만든 값인지 증명한다. 요약하면 증명함수에서는 함수 수행결과 t와 개인정보 해시데이터 \(H(ID||info||r)\)를 입력으로 수행결과에 대한 증명을 출력한다. 증명생성이 완료되면 개인은 개인정보 활용 기관에 자신의 증명과 함수 수행결과를 제출하여 이에 대한 신뢰성을 보장받을 수 있다. 자세한 알고리즘은 Fig. 2-2.와 같다.

JBBHCB_2019_v29n2_299_f0002.png 이미지

Fig. 2-1. Variable definition

ChainSetup에서는 신뢰기관(Trusted Party)이 개인정보를 등록하기 위한 블록체인의 초기블록을 생성하는 과정이며, 안전변수 k를 입력으로 블록체인의 Genesis Block을 출력한다. 이후 모든 개인정보는 ChainSetup으로부터 생성된 블록체인에 기록된다.

Register에서는 개인의 ID와 개인정보 info, 암호문을 생성하기 위한 공개키 pkID를 입력으로 개인의 ID, 개인정보를 암호화한 암호문 CT, 개인정보를 해시 연산한 h를 블록체인에 기록한다. 이때 해시 h에는 선택공격 안전성을 위한 랜덤 r이 입력으로 사용된다. 또한 ID,CT,h 를 tx라 정의한다.

개인이 새로운 정보를 등록할 때에는 새롭게 정보를 암호화하고 또 다른 해시를 생성하여 등록하며 개인정보를 가져오는 것은 최신의 블록에서 가져오는 것을 가정한다.

Setup에서는 함수f를 입력으로 Relation R을 정의하고 NIZK의 SetupVC를 호출하여 개인정보를 활용하기 위한 증명을 생성하기 위한 ekf와 증명을 검증하기 위한 vkf를 생성한다. Setup은 개인이 아닌 신뢰기관에서 생성하는 것을 가정한다. 

ProvePI는 개인이 수행하는 함수인데, tx,skID,ekf,f를 입력으로 하며 증명생성 이전에 블록체인에서 가져온 개인정보 암호문 CT를 복호화 하여 개인정보 info와 랜덤변수 r을 얻는다. 이후 개인은 ID와 info를 입력으로 함수 f에 대한 결과 값 t를 얻는다. 결과 값 t를 얻고 나면 개인은  ekf,f를 로  crs두고 tx,t를 인스턴스 \(\phi\)로 zk-SNARK의 Prove함수 ProveVC를 수행하여 증명 \(\pi\)와 함수 결과 값 t를 출력한다. 이때 에서는 t=f(ID,info), h = H(ID||info||r), 을 확인하며 이에 대한 증명을 생성한다. 

JBBHCB_2019_v29n2_299_f0003.png 이미지

Fig. 2-2. Our specific construction

VerifyPI 는 기업이 수행하는 함수이며,  증명키vkf , ID,CT,h의 집합인 tx, 함수에 대한 출력t , 증명\(\pi\) 를 입력으로 vkf, f를 crs로 두고  tx,t를 인스턴스 \(\phi\)로 VerifyVC를 수행하여 ProveVC에서 생성한 증명 \(\pi\)를 검증하고 검증결과가 1이면 검증값을 return하고 검증결과가 0이면 \(\perp\)을 return한다.

VI. 안전성 증명

1) 완전성(Completeness) : ProvePI함수 내의 ProveVC의 입력 h는 해시 함수를 통해 생성되어 같은 입력에 대해 항상 같은 출력을 얻기 때문에 올바른 info에 대하여 항상 같은 h를 얻는다.

또한 함수 f에 대하여 입력이 h이고 출력이 t임을 증명하는 \(\pi\)는 완전성을 만족하는 zk-SNARK 알고리즘 \(Prove \)VC로부터 생성되어 완전성을 보장할 수 있고 위의 \(\pi\)가의 출력으로 사용되기 때문에 ProvePI알고리즘 역시 완전성을 만족할 수 있다.

2) 무결성(Soundness) :증명\(\pi\) 의 조작이 불가함은 제안 알고리즘에서 사용하는 zk-SNARK의 무결성에 기반하며, \(\pi\)의 입력으로 사용되는 h의 조작불가능성은 기반하고 있는 블록체인의 무결성에 기반 한다. 즉, 함수 f에 대하여 입력이 h이고 출력이 O임을 증명하는 \(\pi\)는 계산적 무결성(Computational Soundness)을 만족하는 zk-SNARK 알고리즘Provevc로부터 생성되어 계산적 무결성을 보장할 수 있고 위의 \(\pi\)가 ProvePI의 출력으로 사용되기 때문에 ProvePI 알고리즘 역시 계산적 무결성을 만족한다.

3)데이터 프라이버시(Data Privacy) : 블록체인에 기록된 암호문 의 비밀성은 암호문CT을 생성하는 암호화 기법의 선택 평문공격 안전성(CPA-security)에 기반하기 때문에 암호문 CT로부터 다른 비밀정보 info1과  info2 구분할 수 있는 확률이 매우 낮으며(negligible probability) 또한 블록체인에 기록된 해시 값으로부터 개인정보 info값을 도출하는 것은 사용하는 해시의 일방향성(Onewayness)에 기인하여 매우 낮은 확률을 가진다. 또한  소비자가 생성한 증명 \(\pi\)로부터 개인정보 info값이 드러날 확률은 사용하는 증명 알고리즘의 영지식성(Zero-Knowledge)에 기반 하여 매우 낮은 확률을 지닌다. 따라서 위의 세 가지 경우를 고려했을 때, 암호문과 가공데이터, 증명으로부터 추가적인 개인정보 값이 드러날 확률이 매우 낮다. 이를 구체화하면 다음의 식과 같다.

Aenc를 두 개의 암호문으로부터 메시지를 구분하는 공격자, Ahash를 해시 값으로부터 해시의 입력값을 도출하는 공격자, Axk를 실제 프로토콜을 통해 생성한 증명과 시뮬레이션을 통해 생성한 증명을 구분하는 공격자라고 가정했을 때, advCPA를 Aenc가 공격을 성공할 확률, advhash를 Ahash가 공격을 성공할 확률, advzk를 Azk가 공격을 성공할 확률이라고 가정하면 advCPA의 확률은 본 논문에서 제안하는 암호화 기법의 Semantic Security에 의해 negligible이며, advhash의 확률은 해시 함수에서 제공하는 일방향성에 의해 negligble이다. 또한 advzk의 확률은 Azk공격자가 a와 b의 확률을 구분할 확률에 수렴한다. 

a) \(\begin{array}{l} \operatorname{Pr}\left[(\operatorname{crs}, \tau) \leftarrow \operatorname{Setup}_{V C}(R)\right. \\ \pi \leftarrow \text {Prove}_{V C}(R, \text {cs}, \phi, w): A(R, \operatorname{crs}, \tau, \pi)=1 \end{array}\)

b) \(\begin{aligned} &\text { b) } \operatorname{Pr}\left[(c r s, \tau) \leftarrow \operatorname{Setup}_{V C}(R)\right.\\ &\left.\pi \leftarrow \text {Sim Prove}_{V C}(R, \tau, \phi): A(R, c r s, \tau, \pi)=1\right\} \end{aligned}\)

즉, 실제 비밀정보 ProveVC에서 위트니스 w를 가지고 생성되는 증명 \(\pi\)와 시뮬레이터  SimProveVC를 통해 생성되는 증명 가 같은 분포(Distribution)를 가질 때 두 확률이 같은 확률을 지니는데, 제안기법에서 사용하는 (Verifiable Computation)증명함수는 Perfect Zero-Knowledge를 만족하고 ProveVC를 통해 생성된 증명 \(\pi\)는 랜덤화 되어 있는 값이고 SimProveVC를 통해 생성되는 증명 역시 랜덤변수이기 때문에 같은 분포를 가져 실제 증명값과 시뮬레이터를 통해 생성된 증명을 구분할 확률은 0이다. 따라서 \(a d v_{C P A}, a d v_{h a s h}, a d v_{z k}\)의 확률을 모두 더한 확률은 negligible의 확률을 지닌다. 즉, 함수의 출력 로부터 개인정보 에 대하여 얻어내는 공격자 API가 공격을 성공할 확률 advPI는 다음의 확률을 가진다.

\(a d v_{P I} \leq a d v_{C P A}+a d v_{h a s h}+a d v_{z k}\)

따라서 본 논문에서 제안하는 알고리즘의 데이터 프라이버시의 공격확률은 negligible의 확률을 갖는다.\(\)

VII. 결론

본 제안에서는 zk-SNARK를 통해 개인이 개인정보를 활용함에 있어 자신의 프라이버시를 보호함과 동시에 개인정보에 대한 신뢰성을 얻을 수 있음을 보였다.또한 개인정보를 블록체인에 암호화 하여 기록하기 때문에 데이터 관리에 있어 무결성을 보장할 수 있다.

 또한 여러기관이 하나의 블록체인에 개인정보를 암호화하여 기록하고 개인이 필요한 시점에 블록체인에서 인증된 데이터를 받아 가공하여 기업에 제공하고, 기업은 블록체인의 데이터와 개인으로부터 받은 증명을 통해 가공데이터의 신뢰성을 확보할 수 있다. 블록체인에 데이터를 기록하기 때문에 신뢰기관, 개인, 기업 간 데이터 공유가 용이한 장점을 지니고 있다.

본 제안의 한계점으로 현재 개인이 개인정보 데이터를 갱신하면, 데이터의 갱신 여부가 블록체인에 기록될 수 밖에 없는데 이는 개인정보가 자주 바뀌는 사람의 프라이버시를 침해할 수 있는 가능성이 존재한다.  따라서 데이터 갱신 여부를 드러내지 않고 개인정보를 제공할 수 있는 방법에 대해 향후연구가 필요하다고 사료된다.

* 본 연구는 과학기술정보통신부(No.2016-6-00599, 함수 서명 설계기법 및 응용기술 연구, No.2017-0-00661,영상 정보 프라이버시 침해 방지 및 인증기법, No.2018-0-01369, O2O 서비스를 위한 무자각 증강인증 및 프라이버시가 보장되는 블록체인 ID 관리 기술 개발)의 재원으로 정보통신기획평가원(Institute for Information & communications Technology Promotion)의 지원과 교육부(2017R1A2B4009903,2016R1D1A1B03934545)의 재원으로 한국연구재단(National Research Foundation of Korea) 이공분야기초연구사업의 지원과 과학기술정보통신부(2017R1A4A1015498)의 재원으로 한국연구재단(National Research Foundation of Korea)이공분야기초연구사업의 지원을 받아 수행된 연구임.

References

  1. Jones William, "Personal information management," Annual review of information science and technology 41.1 , pp.453-504, 2007. https://doi.org/10.1002/aris.2007.1440410117
  2. Parno, Bryan, et al, "Pinocchio: Nearly practical verifiable computation," 2013 IEEE Symposium on Security and Privacy. IEEE, 2013.
  3. Groth Jens, "On the size of pairing-based non-interactive arguments," Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2016.
  4. Groth Jens, Mary Maller, "Snarky signatures: Minimal signatures of knowledge from simulation-extractable snarks," Annual International Cryptology Conference. Springer, Cham, 2017.
  5. Groth Jens, et al, "Updatable and universal common reference strings with applications to zk-SNARKS," Annual International Cryptology Conference. Springer, Cham, 2018.
  6. Nakamoto Satoshi, "Bitcoin: A peer-to-peer electronic cash system," 2008.
  7. Wood Gavin, "Ethereum: A secure decentralised generalised transaction ledger," Ethereum project yellow paper 151, pp. 1-32, 2014.
  8. Sasson, Eli Ben, et al, "Zerocash: Decentralized anonymous payments from bitcoin," 2014 IEEE Symposium on Security and Privacy (SP). IEEE, 2014.
  9. Zyskind Guy, Oz Nathan, "Decentralizing privacy: Using blockchain to protect personal data," Security and Privacy Workshops (SPW), 2015 IEEE. IEEE, 2015.
  10. Kosba Ahmed, et al, "Hawk: The blockchain model of cryptography and privacy-preserving smart contracts," 2016 IEEE symposium on security and privacy (SP). IEEE, 2016.
  11. Garman, Christina, Matthew Green, and Ian Miers, "Accountable privacy for decentralized anonymous payments," International Conference on Financial Cryptography and Data Security, Springer, Berlin, Heidelberg, 2016.