Week 4: Plonk 이해하기
4주차에는 Plonk를 이해하는 시간을 가져 보았습니다.
저는 주로 "Plonk by Hand" 문서를 따라가며 이해하려고 노력했습니다. 이 과정에서 배경지식이 필요했던 부분들을 정리해 보았습니다.
아래 문서를 읽고 이해하기 위한 배경 지식이 되겠습니다.
https://research.metastate.dev/plonk-by-hand-part-1/?source=post_page-----79347dc0a32---------------------------------------
1. 유한체 (확장) | Finite Field (Extension)
Q. 유한체 확장(Finite Field Extension)이란 무엇인가요?
Fp 또는 GF(p)
두 표현을 혼용하지만, 대부분 첫 번째 방식을 사용합니다. 두 번째 표기는 갈루아 필드(Galois Field)라고도 합니다.
유한체 확장(Finite field extension)은 작은 필드에 새로운 원소를 추가하여 더 큰 필드를 만드는 과정을 의미합니다. 이때 결과로 만들어진 구조 역시 필드의 모든 속성을 만족해야 합니다. 이 개념은 수학과 암호학의 여러 분야, 특히 타원 곡선 및 대수 기하학 연구에서 필수적입니다.
유한체의 기초
-
유한체 (Finite Field): 갈루아 필드라고도 불리는 유한체는 유한한 수의 원소를 포함하는 필드입니다. 가장 일반적인 유한체는 Fp 또는 GF(p)로 표기하며, 여기서 p는 소수입니다. 이 필드는 정확히 p개의 원소, 즉 {0,1,2,…,p−1}를 포함하며, 덧셈과 곱셈 연산은 모듈러 p 연산((modp))으로 수행됩니다.
-
필드의 속성 (Field Properties): 필드는 덧셈과 곱셈이라는 두 가지 연산을 갖춘 집합으로, 다음 속성들을 만족합니다.
- 닫힘 (Closure): 필드 내의 임의의 두 원소에 대한 덧셈 또는 곱셈의 결과는 다시 그 필드 안에 있습니다.
- 결합법칙 (Associativity): 덧셈과 곱셈에 결합법칙이 성립합니다.
- 교환법칙 (Commutativity): 덧셈과 곱셈에 교환법칙이 성립합니다.
- 분배법칙 (Distributivity): 곱셈은 덧셈에 대해 분배법칙이 성립합니다.
- 항등원 (Identity Elements): 덧셈에 대한 항등원(0)과 곱셈에 대한 항등원(1)이 존재합니다.
- 역원 (Inverses): 모든 원소는 덧셈에 대한 역원을 가지며, 0이 아닌 모든 원소는 곱셈에 대한 역원을 가집니다.
필드 확장이란?
필드 Fq의 필드 확장(field extension) Fqk는 Fq를 부분 필드로 포함하는 더 큰 필드를 만드는 것을 의미합니다. 이 과정에는 Fq의 원소만으로는 표현할 수 없는 새로운 원소들이 추가됩니다. 여기서 q는 보통 소수 p의 거듭제곱인 pm 형태이며, k는 확장의 차수(degree)입니다.
유한체 확장
유한체 Fq에 대한 유한체 확장 Fqk는 qk개의 원소를 갖는 더 큰 필드입니다. 필드 Fqk는 Fq의 모든 원소와 추가적인 원소들을 포함하며 다음을 만족합니다.
- Fqk에서의 덧셈과 곱셈 연산은 여전히 정의되며 필드의 속성을 만족합니다.
- Fqk는 Fq와 추가된 새 원소들을 모두 포함하는 가장 작은 필드입니다.
예시
q=p=3이라고 가정해 봅시다. F3={0,1,2}는 3개의 원소를 갖는 유한체입니다.
- 유한체 확장 F32는 32=9개의 원소를 갖는 필드가 됩니다. 이 새로운 필드는 F9로 표기되며, F3 내에서는 해를 찾을 수 없는 다항 방정식을 만족하는 새로운 원소와 F3 원소들의 조합으로 구성됩니다.
예를 들어, F9를 만들기 위해 F3 상에서 기약 다항식(irreducible polynomial)인 x2+1=0의 해가 되는 새로운 원소 α를 도입할 수 있습니다. 그러면 α2=−1이 성립하며, F3에서는 −1≡2(mod3)이므로 α2=2가 됩니다. 이 필드 F9는 a,b∈F3인 모든 선형 결합 a+bα로 구성됩니다.
필드 확장의 활용
유한체 확장은 수학과 암호학의 여러 중요 분야에서 활용됩니다.
- 타원 곡선 (Elliptic Curves): 타원 곡선 암호에서 연산은 종종 유한체 확장 상에서 수행됩니다. 예를 들어, 페어링 기반 암호(pairing-based cryptography)는 페어링을 정의하고 계산하기 위해 유한체의 확장을 사용합니다.
- 다항식 인수분해 (Polynomial Factorization): 유한체 확장을 통해 기존 필드 Fq에서는 해를 갖지 않는 다항식을 인수분해할 수 있습니다.
- 오류 정정 부호 (Error-Correcting Codes): 리드-솔로몬 부호(Reed-Solomon codes)와 같은 특정 오류 정정 부호는 유한체의 확장을 사용하여 구성됩니다.
요약
유한체 확장 Fqk는 더 작은 유한체 Fq로부터 만들어진 qk개의 원소를 포함하는 더 큰 필드입니다. 이 개념을 통해 수학자와 암호학자들은 타원 곡선 암호나 코딩 이론과 같은 고급 응용 분야에 필수적인 더 복잡한 구조와 연산을 다룰 수 있습니다.
2. 타원 곡선에서의 점 두 배 연산 | Elliptic Curve Point Doubling
PLONK 프로토콜의 맥락에서 타원 곡선을 다룰 때, 방정식 y2=x3+3은 바이어슈트라스 형태(Weierstrass form)의 타원 곡선을 정의합니다. 이 방정식은 곡선 위의 모든 점 (x,y)가 이 관계를 만족함을 의미합니다.
타원 곡선에서의 점 두 배 연산
타원 곡선에서 점 두 배 연산을 수행한다는 것은, 주어진 점 P=(x1,y1)에 대해 2P=(x3,y3)를 찾는 것을 의미합니다. 이 새로운 점을 계산하는 데 있어 점 P에서의 접선의 기울기 m이 매우 중요합니다. 기울기 m을 구하는 공식은 서로 다른 두 점을 더하는 경우와 한 점을 두 배 하는 경우에 따라 다릅니다.
점 두 배 연산의 경우:
- 타원 곡선의 일반형: y2=x3+ax+b
- 주어진 곡선: y2=x3+3 (여기서 a=0, b=3)
점 P=(x1,y1)에서의 접선의 기울기 m은 타원 곡선 방정식을 미분하여 유도합니다.
-
타원 곡선 방정식 미분하기:
y2=x3+3⟹2ydxdy=3x2
여기서 도함수 dxdy는 점 P에서의 접선의 기울기 m을 의미합니다.
-
m에 대해 풀기:
m=dxdy=2y3x2
기울기 m은 왜 중요한가?
기울기 m은 점 두 배 연산 후의 새로운 점의 좌표를 계산하는 데 사용되기 때문에 매우 중요합니다. 주어진 점이 P=(x1,y1)일 때, 기울기는 다음과 같습니다.
- m=2y13x12
이 기울기는 두 배가 된 점 2P의 새로운 좌표 (x3,y3)를 찾는 데 사용됩니다.
x3=m2−2x1
y3=m(x1−x3)−y1
보충 1 : 미분 과정 상세 설명: y2=x3+ax+b 미분하기
타원 곡선 방정식 y2=x3+3과 점 두 배 연산에 사용되는 기울기 공식 m=2y3x2의 유도 과정을 단계별로 살펴보겠습니다.
우리는 타원 곡선 방정식에서 시작합니다.
y2=x3+3
우리의 목표는 이 방정식을 x에 대해 미분하여 곡선 위의 임의의 점 (x,y)에서의 접선의 기울기를 구하는 것입니다.
-
양변을 x에 대해 미분하기:
좌변 y2을 x에 대해 미분하기 위해 연쇄 법칙(chain rule)을 사용합니다. 연쇄 법칙에 따르면, 함수 u(y)가 있고 y가 x의 함수일 때 다음과 같습니다.
dxd[y2]=dyd(y2)⋅dxdy
y2을 y에 대해 미분하면 2y이므로, 좌변의 미분 결과는 다음과 같습니다.
dxd(y2)=2y⋅dxdy
-
우변 x3+3을 x에 대해 미분하기:
우변은 x3과 상수 3으로 구성됩니다. x3의 도함수는 다음과 같습니다.
dxd(x3)=3x2
상수 3의 도함수는 0입니다.
dxd(3)=0
따라서 우변의 미분 결과는 다음과 같습니다.
dxd(x3+3)=3x2
-
양변의 도함수를 같다고 놓기:
이제 좌변의 도함수와 우변의 도함수를 동일하게 둡니다.
2y⋅dxdy=3x2
-
dxdy (기울기 m)에 대해 풀기:
dxdy를 구하기 위해 양변을 2y로 나눕니다.
dxdy=2y3x2
이 도함수 dxdy는 타원 곡선 위의 점 (x,y)에서의 접선 기울기 m을 나타냅니다.
결론
표현식 m=2y3x2는 타원 곡선 방정식 y2=x3+3을 x에 대해 미분하여 직접 유도된 것입니다. 이 기울기 m은 곡선 위의 한 점 P=(x,y)를 두 배로 늘릴 때 새로운 좌표 (x3,y3)를 찾기 위한 점 두 배 공식에 사용됩니다.
보충2 : 점 두 배(Point Doubling) 공식의 유도 과정
1. 왜 (x2,y2)가 아닌 (x3,y3)를 사용할까요? (기하학적 접근)
이 표기법은 점 두 배 연산이 사실 점 덧셈 연산의 특별한 경우이기 때문에 발생합니다.
-
일반적인 점 덧셈 (P+Q): 서로 다른 두 점 P(x1,y1)와 Q(x2,y2)를 더하려면, 두 점을 통과하는 직선을 긋습니다. 이 직선은 타원 곡선과 제3의 점에서 만나게 되는데, 이 점을 R′이라고 합시다. 우리가 찾는 합 P+Q는 이 R′을 x축에 대해 대칭시킨 점 R(x3,y3)입니다. 이 과정에서 3개의 점(P,Q,R′)이 관여하므로, 결과 점의 좌표에 첨자 '3'을 사용하는 것이 자연스럽습니다.
-
점 두 배 연산 (P+P): 점 두 배는 Q가 P와 같아지는 극한의 상황입니다. 즉, P(x1,y1)와 Q(x2,y2)가 한 점으로 수렴합니다.
- 두 점을 지나는 선은 한 점에서의 **접선(tangent line)**이 됩니다.
- 이 접선은 점 P(x1,y1)에서 곡선과 만나고, 곡선과 교차하는 또 다른 한 점이 생깁니다. 이 점을 R′이라고 합시다.
- 우리가 찾는 결과 2P는 바로 이 R′을 x축에 대해 대칭시킨 점입니다. 이 점을 (x3,y3)라고 부릅니다.
결론적으로, 점 덧셈 공식 P(x1,y1)+Q(x2,y2)=R(x3,y3) 과의 표기 일관성을 위해 점 두 배의 결과도 (x3,y3)로 표기합니다. 중간에 있는 점 Q(x2,y2)가 P(x1,y1)와 같아졌다고 생각하면 왜 x2가 "생략"되는지 이해하기 쉽습니다.
2. x3=m2−2x1는 어떻게 유도되나요? (대수적 접근)
이 공식은 **"타원 곡선과 직선은 최대 3개의 점에서 만난다"**는 원리를 대수적으로 풀어서 나온 결과입니다.
1단계: 연립방정식 세우기
우리는 두 방정식의 교점을 찾고 있습니다.
- 타원 곡선 방정식: y2=x3+ax+b (일반형으로 설명하겠습니다.)
- 점 P(x1,y1)에서의 접선 방정식: y=m(x−x1)+y1
2단계: y를 소거하여 x에 대한 3차 방정식 만들기
접선 방정식을 타원 곡선 방정식에 대입하여 y를 소거합니다.
(m(x−x1)+y1)2=x3+ax+b
이제 좌변을 전개합니다.
m2(x−x1)2+2m(x−x1)y1+y12=x3+ax+b
m2(x2−2x1x+x12)+2m(x−x1)y1+y12=x3+ax+b
점 P(x1,y1)는 타원 곡선 위의 점이므로, y12=x13+ax1+b가 성립합니다. 이 식을 위 방정식에 대입하여 y12을 소거합니다.
m2(x2−2x1x+x12)+2m(x−x1)y1+(x13+ax1+b)=x3+ax+b
이제 모든 항을 한쪽으로 넘겨서 x에 대한 내림차순으로 정리하면 다음과 같은 3차 방정식을 얻게 됩니다.
x3−m2x2+⋯=0
(나머지 x항과 상수항은 복잡하지만, 우리는 x2의 계수만 필요하므로 생략합니다.)
3단계: 근과 계수의 관계(비에트의 정리) 적용하기
위 3차 방정식의 세 근(roots)은 타원 곡선과 접선이 만나는 점들의 x좌표입니다.
- 접선은 점 P(x1,y1)에서 곡선에 "접하므로" 이 점은 중근(double root)이 됩니다. 따라서 두 개의 근이 x1입니다.
- 나머지 한 근이 우리가 찾고자 하는 교점의 x좌표이며, 이 좌표를 x3라고 부릅니다.
따라서 이 3차 방정식의 세 근은 x1,x1,x3 입니다.
근과 계수의 관계에 따르면, 3차 방정식 x3+Ax2+Bx+C=0의 세 근의 합은 −A 입니다.
우리가 만든 방정식 x3−m2x2+⋯=0에서 x2의 계수는 −m2 입니다. 따라서 세 근의 합은 다음과 같습니다.
세 근의 합=−(x²의 계수)
x1+x1+x3=−(−m2)
2x1+x3=m2
4단계: x3에 대해 풀기
이제 x3에 대해 정리하면 우리가 원하는 공식을 얻게 됩니다.
x3=m2−2x1
이것이 점 두 배 연산에서 새로운 x좌표를 구하는 공식의 유도 과정입니다. 점 덧셈 공식 x3=m2−x1−x2에서 x2 대신 x1을 대입한 것과 결과가 정확히 일치하는 것을 볼 수 있습니다.
3. 임베딩 차수 (Embedding Degree), r∣pk−1을 만족하는 가장 작은 k
임베딩 차수(Embedding degree)는 타원 곡선 암호학에서 중요한 개념으로, 특히 페어링 기반 암호(BLS, KZG와 같은 프로토콜)의 보안을 논할 때 핵심적인 역할을 합니다. 부분군의 위수 r과 임베딩 차수 k에 대한 공식 r∣pk−1의 의미를 자세히 살펴보겠습니다.
타원 곡선과 유한체 배경
소수 p에 대해 정의된 유한체 Fp 상의 타원 곡선 E를 생각해 봅시다. 이때 r은 타원 곡선 위 점들의 부분군(subgroup)의 위수(order), 즉 그 부분군에 속한 점들의 개수입니다.
임베딩 차수 k
임베딩 차수 k는 다음 조건을 만족하는 가장 작은 양의 정수입니다.
r∣pk−1
이는 r이 pk−1을 나눈다는 의미이며, 모듈러 연산으로 표현하면 pk≡1(modr)과 같습니다.
임베딩 차수가 왜 중요한가?
임베딩 차수는 타원 곡선에서의 이산 로그 문제(DLP)가 유한체에서의 이산 로그 문제로 얼마나 쉽게 변환될 수 있는지를 측정하기 때문에 중요합니다. 유한체에서의 이산 로그 문제의 난이도는 해당 필드 Fpk의 크기에 따라 달라집니다. 임베딩 차수가 작다는 것은 문제가 더 작은 유한체로 옮겨질 수 있음을 의미하며, 이는 타원 곡선의 암호학적 보안을 약화시킬 수 있습니다.
r∣pk−1의 의미
- 부분군의 위수 r (Order r of the subgroup): 위수 r은 타원 곡선 E(Fp) 위의 총 점의 개수의 약수입니다. 보통 r은 소수이거나 소수의 거듭제곱입니다.
- 필드 Fpk (Field Fpk): Fpk는 Fp의 유한체 확장입니다. Fpk의 크기는 pk입니다.
- 조건 r∣pk−1 (Condition r∣pk−1): 이 조건은 확장 필드 Fpk 안에 위수가 r인 곱셈 부분군이 존재함을 보장합니다. 페어링은 이 곱셈 부분군으로 사상(mapping)되기 때문에, 이 조건이 만족되어야 페어링을 정의할 수 있습니다. 즉, p를 k제곱하고 1을 뺀 결과가 r로 나누어떨어지는 k가 존재해야 합니다.
임베딩 차수 k를 결정하는 방법
- k값을 1부터 순차적으로 증가시키며 pk−1 계산하기: k=1부터 시작하여 r이 pk−1을 나누는 가장 작은 k를 찾을 때까지 k를 계속 증가시킵니다.
- 나눗셈 확인하기: 각 k에 대해, (pk−1)(modr)=0인지, 즉 pk−1을 r로 나눈 나머지가 0인지 확인합니다.
예시
소수 p=5이고 부분군의 위수 r=3이라고 가정해 봅시다. 임베딩 차수 k를 찾아보겠습니다.
- k값을 순차적으로 증가시키며 pk−1을 계산합니다.
- k=1일 때: p1−1=51−1=4이고, 4는 3으로 나누어떨어지지 않습니다.
- k=2일 때: p2−1=52−1=24이고, 24는 3으로 나누어떨어집니다.
- r=3이 24를 나누므로, 3∣5k−1을 만족하는 가장 작은 k는 2입니다.
따라서 이 경우 임베딩 차수 k는 2입니다.
요약
임베딩 차수 k는 타원 곡선 부분군의 위수 r이 pk−1을 나누도록 하는 가장 작은 정수입니다. 이 개념은 페어링 기반 암호에서 타원 곡선의 보안을 이해하는 데 매우 중요합니다. r∣pk−1을 만족하는 가장 작은 k를 찾음으로써 이산 로그 문제가 잠재적으로 축소될 수 있는 가장 작은 필드 확장 Fpk를 결정하게 됩니다.
Understanding r∣pk−1
- Order r of the subgroup: The order r is a divisor of the total number of points on the elliptic curve E(Fp). It is usually a prime number or a power of a prime.
- Field Fpk: Fpk is a finite field extension of Fp. The size of Fpk is pk.
- Condition r∣pk−1: This condition ensures that there is a point on the elliptic curve over Fpk that has order r. In other words, there exists a number k such that when you raise p to the power k, and subtract 1, the result is divisible by r.
How to Determine the Embedding Degree k
- Compute pk−1 for successive values of k: Start from k=1 and keep increasing k until you find the smallest k for which r divides pk−1.
- Check divisibility: For each k, check if pk−1 modulo r is equal to zero, i.e., (pk−1)modr=0.
Example
Let's say we have a prime p=5 and a subgroup order r=3. We want to find the embedding degree k.
- Compute pk−1 for successive values of k:
- For k=1: p1−1=51−1=4, which is not divisible by 3.
- For k=2: p2−1=52−1=24, which is divisible by 3.
- Since r=3 divides 24, the smallest k for which 3∣5k−1 is k=2.
Therefore, the embedding degree k is 2 in this case.
Summary
The embedding degree k is the smallest integer such that the order r of the elliptic curve subgroup divides pk−1. This concept is crucial for understanding the security of elliptic curves in pairing-based cryptography. By finding the smallest k that satisfies r∣pk−1, you determine the smallest field extension Fpk where the discrete logarithm problem can potentially be reduced.
무한점(O)의 시각적 이해: P+(−P)=O
아래 그림은 점 P와 그 역원인 −P를 더할 때 무한점이 어떻게 나타나는지를 보여줍니다.
그림 해설
-
점 P와 역원 -P
- 타원 곡선 위의 임의의 점 P(x,y) 가 있습니다.
- 이 점을 x축에 대해 정확히 대칭시킨 점이 바로 P의 덧셈에 대한 역원(inverse)인 −P(x,−y)입니다.
-
두 점을 잇는 수직선
- 타원 곡선 덧셈 규칙에 따라, P와 −P를 더하려면 두 점을 잇는 직선을 그어야 합니다. 그림에서 보듯이 이 선은 수직선이 됩니다.
-
제3의 교점은 어디에?
- 일반적인 경우, 두 점을 이은 직선은 곡선과 제3의 교점에서 만납니다.
- 하지만 이 수직선은 일반적인 (x,y) 평면 위에서는 곡선과 더 이상 만나지 않습니다. 선은 그저 위아래로 무한히 뻗어 나갈 뿐입니다.
-
무한점(O)의 등장
- 바로 이 지점에서 수학자들은 '약속'을 합니다. "모든 수직선은 무한히 먼 위쪽과 아래쪽 끝에서 단 하나의 가상의 점, 즉 무한점(O)에서 만난다"고 정의합니다.
- 따라서 P와 −P를 잇는 수직선은 무한점(O)에서 타원 곡선과 만나는 것으로 간주합니다.
이것이 바로 P+(−P)=O 라는 타원 곡선 덧셈의 핵심 규칙이 성립하는 이유입니다. 무한점은 이처럼 덧셈 연산의 결과가 항상 곡선 위에 있도록 보장해 주는, 보이지 않지만 필수적인 '마침표'와 같은 역할을 합니다.