GKR Protocol
본 글에서는 Field 위에서 덧셈과 곱셈 연산을 수행하는 arithmetic circuit의 결과를 증명하는 IP인, GKR 프로토콜에 대해 알아보겠습니다.
Settings
유한체 위에서 정의된 fan-in이 2인 arithmetic circuit 를 고려하겠습니다. (Circuit 의 정의는 지난 블로그를 참고하세요.) GKR 프로토콜의 목표는 가 에게 'input 가 를 만족시킨다'는 것을 증명하는 것입니다.
먼저 가 log-space uniform 하다는 조건이 필요한데, 이는 임의의 게이트를 입력으로 받았을 때 그 neighbors와 게이트 종류 등 정보를 구할 수 있는 log-space 알고리즘이 존재한다는 가정입니다. 또한 가 input layer 부터 output layer 까지 depth 로 layered 되어있다고 가정합니다. (그렇지 않을경우 더미 게이트를 추가하여 크기가 배인 layered circuit으로 만들 수 있습니다.)
이제 의 크기 (게이트 개수)를 , depth를 , 변수 개수를 이라고 하겠습니다. 각 layer 가 개의 게이트로 이루어져 있다고 가정하고, layer 의 게이트를 부터 까지 라벨을 붙이겠습니다. 그리고 를 layer 에서 라벨을 입력으로 받아 해당 게이트의 값을 반환하는 함수로 정의하겠습니다. 또한 layer 의 게이트 에 대해 와 연결된 layer 의 두 게이트를 라고 하겠습니다. 그러면 함수를 입력 에 대해 이고 게이트 가 ADD (후자에 대해선 MULT) 일 때만 , 이외는 을 가지는 indicator function으로 정의할 수 있습니다.
Details
GKR 프로토콜에서 우리는 Sum-check를 활용하기 위해, (의 multilinear extension) 를 다음과 같은 합의 꼴으로 나타낼 것입니다:
Lemma 4.2.
Proof. 변수 에 대해 우변은 multilinear 다항식들의 합이므로 양변이 모두 multilinear 함은 자명합니다. MLE 다항식의 유일성에 의해, 양변이 모든 에 대해 값이 같다는 것만 보이면 증명이 끝납니다. 임의의 ADD 게이트 는 오직 두 개의 자식 만을 가지므로, 위 합은 에서만 살아남고 다른 모든 에서는 0이 되어 사라집니다. 즉,
이는 MULT 게이트에 대해서도 성립합니다.
처음으로 돌아가 우리는 circuit 의 output layer 에서 값을 증명해야 합니다. 그러나 이를 위해 모든 의 함숫값을 검증하는 것이 아니라, 임의의 에 대해 Lemma 4.2가 성립하는지 한번 검증하는 것으로 충분합니다! (이 방법이 sound한 이유는 Schwartz-Zippel Lemma 덕분입니다.)
이제 우리는 고정된 에 대해 합 내부의 함수
에 Sum-check 프로토콜을 적용함으로써 값을 증명할 수 있습니다. 그러나 Sum-check 프로토콜의 마지막 라운드에서 는 임의의 에 대해 를 구해야하므로 와 값을 필요로 하는데, 이 값들을 에게 요청합니다. 이때 이 두 값에 대한 증명도 필요하게 됩니다. 즉, layer 에 대한 결과값 증명이 sum-check를 적용하면서 layer 에 대한 두 개의 증명으로 환원된 것입니다!
Reducing Two Polynomial Evaluations to One
더 나아가, 우리는 에 대한 두 점에서의 증명을 오직 한 점에서의 증명으로 줄일 수 있습니다. 그 과정은 다음과 같습니다:
Subroutine Protocol: 을 , 으로 두 점을 지나는 (유일한) 직선으로 정의합니다. 이제 의 위의 restriction 를 고려하겠습니다. 그러면 는 , 를 만족하는 일변수 다항식이며, 가 multilinear 하므로 최대 차수는 의 변수 개수인 입니다. Verifier 는 임의의 를 뽑아 만을 검증합니다.
위 과정이 complete함은 자명합니다. 또한 soundness error 으로 sound한데, 그 이유는 의 차수가 최대 이므로 false 가 임의의 점에서 를 만족할 확률은 최대 이기 때문입니다. (Schwartz-Zippel Lemma)
Final iteration
위 방법을 이용하면 우리는 layer 에 대한 증명을 Sum-check + layer 에 대한 증명 으로 환원시킬 수 있습니다. 이를 반복한 뒤 마지막 layer 에서 는 값을 직접 계산해야합니다. 이 때 layer 는 input layer이므로 모두 공개되어있고, 는 MLE 함숫값 구하기 를 통해 시간에 해당 값을 직접 계산할 수 있습니다.
이제 모든 것을 종합한 GKR 프로토콜을 살펴보겠습니다.
Protocol
프로토콜 시작 시, 는 (출력 게이트 라벨을 출력값에 매핑하는 함수)와 같다고 주장하는 를 보냅니다.
는 임의의 를 선택하고 로 설정합니다. 이제 가 참이라는 것을 재귀적으로 증명합니다.
-th iteration ()
claim:
이 때 -변수 다항식 를 다음과 같이 정의합니다:
는 에게 claim을 Sum-check 프로토콜을 이용해 증명합니다. Sum-check의 마지막에서 에서 값을 구해야 할 때까지 진행합니다.
와 를 만족하는 직선 을 정의한 뒤, 가 에게 라고 주장하는 를 보냅니다. (는 차수는 최대 인 일변수 다항식) 는 와 대신 와 값을 사용해 를 계산하여 Sum-check를 마칩니다.
이제 라는 주장을 검증해야 합니다. 이를 위해 가 임의의 를 뽑아 및 로 설정한 뒤, 다음 iteration에서 에 대한 claim을 검증합니다.
Costs
Communication costs & Rounds: 는 -변수 다항식이며 각 변수에 대한 차수가 최대 2입니다. 따라서 번째 iteration의 Sum-check 프로토콜에 필요한 communication은 이고, 전체 cost는 프로토콜의 시작 때 를 전송하는데 필요한 를 포함해 field elements 입니다. 또한 전체 라운드 수는 입니다.
Soundness error: GKR의 번째 iteration에서 검증하는 는 차수가 최대 이므로 false 가 증명을 통과할 확률은 최대 입니다. 이를 번 반복하므로 적어도 한번 통과할 확률은 최대 이고 이것이 곧 GKR 프로토콜의 Soundness error입니다.
의 시간복잡도: 의 시간복잡도는 로, 마지막 iteration에서 를 계산하는데 , 각각의 sum-check 프로토콜에서 총 , 와 를 랜덤 input에서 계산하는 시간 , 맨 처음 를 계산하는 시간 이 소요됩니다. 뒤에서 살펴볼 것이지만 를 low-order으로 가정하고 로 놓으면 총 시간복잡도는 입니다.
의 시간복잡도: MatMult 프로토콜에서 사용했던 아이디어를 사용한 두 개의 최적화 방법을 살펴보겠습니다.
Method 1,
Sum-check를 적용하는 는 -변수 다항식이며 각 변수에 대한 차수가 최대 2라는 것을 확인할 수 있습니다. 따라서 MatMult와 동일하게 각 라운드 에서 다음 꼴의
총 개 점에서 함숫값만 구하면 됩니다. 임의의 점에서 의 함숫값을 구하는 것은 MLE 함숫값 구하기 테크닉으로 시간에 가능하고, 따라서 전체 시간복잡도는 으로 정리됩니다.
Method 2,
먼저 의 정의를 관찰해보겠습니다.
우리는 모든 에 대해 꼴의 개 점에서, 각 multilinear 함수들 , , 의 함숫값을 계산하면 상수 시간에 를 구할 수 있습니다. 이를 위해 MatMult 프로토콜의 Method 3에서 사용했던 점화식을 활용하겠습니다. -변수 multilinear 다항식 에 대해, 다음 점화식으로 이전 라운드의 함숫값을 이용해 현재 라운드의 함숫값을 모두 계산할 수 있습니다.
즉, 어떤 multilinear 다항식 의 에서 함숫값을 계산해두면, 그것을 초기값으로 DP를 이용해 시간에 필요한 모든 함숫값을 구할 수 있습니다.
먼저 에 대해서는 간단합니다. 초기값은 layer 의 값들이므로 알고있고, 변수 개수는 이므로 시간이 걸립니다. 이제 를 살펴보겠습니다. ( 도 동일합니다.) 는 변수 개수가 이므로 naive 하게 작성하면 시간이 들게됩니다. 이를 보완하기 위해 MatMult 프로토콜의 Method 2의 관찰을 활용해보겠습니다.
관찰. 와 는 sparse 합니다; 꼴의 점 개를 제외한 모든 점에서 입니다.
따라서, 의 MLE는 다음과 같이 에 대한 합으로 표현할 수 있습니다:
이제 모든 에 대해 값을 pre-compute 한 뒤 (이는 시간이 걸립니다), 에 대해 iterate 하면서 인 에 대해서만 값을 업데이트 해줍니다:
이 때 고정된 에 대해, 앞서 살펴본 점화식을 이용하면 모든 라운드 에서 마지막 비트가 와 겹치는 의 함숫값을 모두 구할 수 있습니다. 이 과정은 총 시간이 소요됩니다.
종합하면, 번째 iteration에서 총 시간이 걸리므로 전체 시간복잡도는
입니다.
Linear time prover,
더 나아가 의 시간을 로 linear하게 줄이는 것도 가능합니다. 다음 논문을 참고하세요. [XZZ+19]
GKR의 Cost를 정리하면 다음과 같습니다.
Communication
Rounds
time
time
Soundness error
field elements
표 4.5. GKR 프로토콜의 costs. Prove time은 구현에 따라 까지 줄일 수 있다.
Conclusion
이번에 살펴본 GKR 프로토콜은 1장에서 살펴본 VC (Verifiable Computation)의 한 예시입니다. GKR이 유용한 이유는 우리가 계산하는 많은 알고리즘은 arithmetic circuit으로 변환될 수 있고, 따라서 이들을 증명할 수 있게되기 때문입니다. 또한, GKR은 parallel computation에 강점이 있어 더욱 효율적으로 구현할 수 있습니다.
다음 글에서는 임의의 IP를 Non-interactive Proof로 변환하는 기술인 Fiat-Shamir Transform에 대해 알아보겠습니다. 감사합니다.
Last updated