diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md index 125e938..6dbbb5a 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md @@ -1,17 +1,17 @@ -## BFV (Brakerski-Fan-Vercauteren) 스킴 +## BFV (Brakerski-Fan-Vercauteren) Scheme -BFV 스킴은 [[BGV]]와 유사하지만, [[Learning with Errors(LWE)]] 문제에 기반하고 있습니다. Fan과 Vercauteren이 BGV 스킴을 개선하여 제안한 것입니다. +The BFV scheme is similar to the [[BGV]] scheme but is based on the [[Learning with Errors (LWE)]] problem. It was proposed by Fan and Vercauteren as an improvement to the BGV scheme. -### 주요 구성 요소 +### Key Components -1. **비밀키 생성 (Secret Key Generation)**: 비밀키 $s$는 다항식 링 $\mathbb{Z}_q[X]/(X^N + 1)$에서 선택됩니다. -2. **공개키 생성 (Public Key Generation)**: 공개키는 $(a, b = -a \cdot s + e)$로 구성됩니다. -3. **암호화 (Encryption)**: 메시지 $m \in \mathbb{Z}_t[X]/(X^N + 1)$을 암호화하기 위해 랜덤 다항식 $r$을 선택하고, $c = (a \cdot r + e_1, b \cdot r + e_2 + \Delta \cdot m)$로 암호문을 생성합니다. -4. **복호화 (Decryption)**: 암호문 $c$를 복호화하여 $m' = \left\lceil \frac{c_2 + s \cdot c_1}{\Delta} \right\rfloor \pmod{t}$를 계산합니다. 여기서 $\Delta$는 스케일링 인자입니다. +1. **Secret Key Generation**: The secret key $s$ is chosen from the polynomial ring $\mathbb{Z}_q[X]/(X^N + 1)$. +2. **Public Key Generation**: The public key is composed of $(a, b = -a \cdot s + e)$. +3. **Encryption**: To encrypt a message $m \in \mathbb{Z}_t[X]/(X^N + 1)$, a random polynomial $r$ is selected, and the ciphertext $c = (a \cdot r + e_1, b \cdot r + e_2 + \Delta \cdot m)$ is generated. +4. **Decryption**: To decrypt the ciphertext $c$, compute $m' = \left\lceil \frac{c_2 + s \cdot c_1}{\Delta} \right\rfloor \pmod{t}$. Here, $\Delta$ is the scaling factor. -### 동형 연산 +### Homomorphic Operations -BFV 스킴도 덧셈과 곱셈에 대해 동형성을 가집니다. +The BFV scheme also supports homomorphism for addition and multiplication. -- **동형 덧셈**: $c = c' + c'' = (c'_1 + c''_1, c'_2 + c''_2)$ -- **동형 곱셈**: $c = c' \cdot c''$ +- **Homomorphic Addition**: $c = c' + c'' = (c'_1 + c''_1, c'_2 + c''_2)$ +- **Homomorphic Multiplication**: $c = c' \cdot c''$ diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md index 50d274b..369c3f4 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md @@ -1,17 +1,17 @@ -## BGV (Brakerski-Gentry-Vaikuntanathan) 스킴 +## BGV (Brakerski-Gentry-Vaikuntanathan) Scheme -BGV 스킴은 브라커스키, 젠트리, 바이쿤타나탄이 개발한 스킴으로, [[Ring Learning with Errors(RLWE)]] 문제에 기반한 동형암호 스킴입니다. +The BGV scheme, developed by Brakerski, Gentry, and Vaikuntanathan, is a homomorphic encryption scheme based on the [[Ring Learning with Errors (RLWE)]] problem. -### 주요 구성 요소 +### Key Components -1. **비밀키 생성 (Secret Key Generation)**: 비밀키 $s$는 다항식 링 $\mathbb{Z}_q[X]/(X^N + 1)$에서 선택됩니다. -2. **공개키 생성 (Public Key Generation)**: 공개키는 비밀키를 사용하여 생성되며, 두 개의 다항식 $(a, b = -a \cdot s + e)$로 구성됩니다. 여기서 $a$는 무작위로 선택된 다항식이고, $e$는 작은 잡음(오차)입니다. -3. **암호화 (Encryption)**: 메시지 $m \in \mathbb{Z}_t[X]/(X^N + 1)$를 암호화하기 위해 랜덤 다항식 $r$을 선택하고, 암호문 $c = (c_1, c_2) = (a \cdot r + e_1, b \cdot r + e_2 + m)$을 생성합니다. -4. **복호화 (Decryption)**: 암호문 $c$를 복호화하기 위해 $m' = c_2 + s \cdot c_1 \pmod{q}$을 계산합니다. 여기서 $m' \approx m$이 됩니다. +1. **Secret Key Generation**: The secret key $s$ is chosen from the polynomial ring $\mathbb{Z}_q[X]/(X^N + 1)$. +2. **Public Key Generation**: The public key is generated using the secret key and consists of two polynomials $(a, b = -a \cdot s + e)$, where $a$ is a randomly chosen polynomial and $e$ is a small noise (error). +3. **Encryption**: To encrypt a message $m \in \mathbb{Z}_t[X]/(X^N + 1)$, a random polynomial $r$ is selected, and the ciphertext $c = (c_1, c_2) = (a \cdot r + e_1, b \cdot r + e_2 + m)$ is generated. +4. **Decryption**: To decrypt the ciphertext $c$, compute $m' = c_2 + s \cdot c_1 \pmod{q}$. Here, $m' \approx m$. -### 동형 연산 +### Homomorphic Operations -BGV 스킴은 덧셈과 곱셈 모두에 대해 동형성을 가집니다. +The BGV scheme supports homomorphism for both addition and multiplication. -- **동형 덧셈**: 두 암호문 $c' = (c'_1, c'_2)$와 $c'' = (c''_1, c''_2)$에 대해 $c = c' + c'' = (c'_1 + c''_1, c'_2 + c''_2)$로 수행되며, 이는 $m = m' + m''$에 대응합니다. -- **동형 곱셈**: 두 암호문 $c' = (c'_1, c'_2)$와 $c'' = (c''_1, c''_2)$에 대해 $c = c' \cdot c'' = (c'_1 \cdot c''_1, c'_2 \cdot c''_2)$로 수행되며, 이는 $m = m' \cdot m''$에 대응합니다. \ No newline at end of file +- **Homomorphic Addition**: For two ciphertexts $c' = (c'_1, c'_2)$ and $c'' = (c''_1, c''_2)$, addition is performed as $c = c' + c'' = (c'_1 + c''_1, c'_2 + c''_2)$, which corresponds to $m = m' + m''$. +- **Homomorphic Multiplication**: For two ciphertexts $c' = (c'_1, c'_2)$ and $c'' = (c''_1, c''_2)$, multiplication is performed as $c = c' \cdot c'' = (c'_1 \cdot c''_1, c'_2 \cdot c''_2)$, which corresponds to $m = m' \cdot m''$. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md index 69b4d8f..870fd78 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md @@ -1,50 +1,52 @@ # Bootstrapping in Homomorphic Encryption -**Bootstrapping**은 암호화된 상태에서 시크릿 키를 사용하여 노이즈가 많은 암호문을 노이즈가 적은 암호문으로 변환하는 과정입니다. 이를 통해 암호화된 데이터를 동형적으로 복호화하여 노이즈를 줄이고, 추가적인 동형 연산을 가능하게 합니다. 부트스트래핑은 많은 계산 자원이 필요하며, 동형 암호화(FHE) 기술의 핵심적인 요소입니다. -## 문제: Modulus 감소 -FHE에서는 각 동형 곱셈이 Modulus를 소모하며, Modulus는 한정된 자원입니다. -Modulus가 소진되면 더 이상의 곱셈이 불가능해집니다. -부트스트래핑은 Modulus를 "리프팅"하여 이 문제를 해결합니다. +**Bootstrapping** is the process of converting a noisy ciphertext into a less noisy ciphertext using a secret key while it remains encrypted. This process allows the noise in encrypted data to be reduced through homomorphic decryption, enabling further homomorphic operations. Bootstrapping is a resource-intensive process and is a crucial component of fully homomorphic encryption (FHE) technology. -## 부트스트래핑의 정의 -$ct = (b, a) \in R_q^2$가 평문 $m \in R$을 암호화한 CKKS 암호문이라고 할 때, 부트스트래핑 $BTS : R_q^2 \to R_Q^2$는 암호문의 Modulus를 증가시키면서 기본 평문을 대략적으로 유지합니다. -즉, $BTS(ct) \in R_Q^2$는 평문 $pt' \approx pt$를 암호화합니다. +## Problem: Modulus Exhaustion + +In FHE, each homomorphic multiplication consumes some of the modulus, which is a limited resource. Once the modulus is exhausted, no further multiplications are possible. Bootstrapping solves this issue by "lifting" the modulus. + +## Definition of Bootstrapping + +Given a CKKS ciphertext $ct = (b, a) \in R_q^2$ that encrypts a plaintext $m \in R$, bootstrapping $BTS : R_q^2 \to R_Q^2$ increases the modulus of the ciphertext while approximately maintaining the original plaintext. Thus, $BTS(ct) \in R_Q^2$ encrypts a plaintext $pt' \approx pt$. + +## Steps of Bootstrapping -## 부트스트래핑의 단계 1. **Slots-to-Coefficients (StC):** -- 암호문 슬롯을 다항식 계수로 변환합니다. -- 출력: $ct' = Enc(\Delta \cdot z(X)) \in R_{q0}^2$. + - Convert ciphertext slots into polynomial coefficients. + - Output: $ct' = Enc(\Delta \cdot z(X)) \in R_{q0}^2$. 2. **Modulus Raising (ModRaise):** -- 기본 Modulus $q0$의 작은 배수를 추가하여 Modulus를 증가시킵니다. -- 출력: $ct'' = Enc(\Delta \cdot z(X) + q0 \cdot I(X))$ 여기서 $I(X) \in R$은 작은 값입니다. + - Increase the modulus by adding small multiples of the original modulus $q0$. + - Output: $ct'' = Enc(\Delta \cdot z(X) + q0 \cdot I(X))$, where $I(X) \in R$ is a small value. 3. **Coefficients-to-Slots (CtS):** -- 다항식 계수를 다시 슬롯으로 변환합니다. -- 출력: $ct''' = Enc \circ Ecd(z + (q0/\Delta) \cdot I)$. + - Convert polynomial coefficients back into slots. + - Output: $ct''' = Enc \circ Ecd(z + (q0/\Delta) \cdot I)$. 4. **Homomorphic Modular Reduction (EvalMod):** -- 추가된 배수 $I$를 제거하여 원하는 결과를 얻습니다. -- 출력: $Enc \circ Ecd(z) \in R_Q^2$ + - Remove the added multiples $I$ to obtain the desired result. + - Output: $Enc \circ Ecd(z) \in R_Q^2$. ## Modulus Raising -$ct = (b, a) \in R_q^2$가 평문 $pt \in R$을 암호화한다고 가정합니다. -$[b]_q$와 $[a]_q$를 $b$와 $a$의 대표값으로 선택합니다. -그러면 다음과 같은 관계가 성립합니다: + +Suppose $ct = (b, a) \in R_q^2$ encrypts a plaintext $pt \in R$. Let $[b]_q$ and $[a]_q$ be the representatives of $b$ and $a$. The following relationship holds: - $ [b]_q + [a]_q \cdot s \equiv_q pt $ -- 따라서, $ [b]_q + [a]_q \cdot s = pt + q \cdot I $ -- $I \in R$이며 $\|I\|_\infty \leq (h + 1)/2$입니다. -Modulus Raising을 통해 $ct$는 $pt + q \cdot I$를 암호화한 요소로 간주됩니다. +- Thus, $ [b]_q + [a]_q \cdot s = pt + q \cdot I $ +- $I \in R$, and $\|I\|_\infty \leq (h + 1)/2$. + +Through Modulus Raising, $ct$ is regarded as encrypting $pt + q \cdot I$. ## Homomorphic Discrete Fourier Transform (DFT) -DFT 매트릭스 $U$는 다음과 같이 분해할 수 있습니다: + +The DFT matrix $U$ can be decomposed as: - $ U = D_{\log(N)-1} D_{\log(N)-2} \cdots D_1 P $ -여기서 $D_i$는 버터플라이 매트릭스이며, $P$는 순열 매트릭스입니다. -효율성을 위해 정확한 DFT 대신 $P$를 제외한 비트 반전 DFT $U P^{-1}$를 사용합니다. +Where $D_i$ is a butterfly matrix, and $P$ is a permutation matrix. For efficiency, the bit-reversed DFT $U P^{-1}$, excluding $P$, is used instead of the exact DFT. ## Approximate Modular Reduction -모듈러 감소 함수를 근사하기 위해 다항식을 사용합니다. -일반적인 접근 방식은 삼각 함수와 다항식 근사 알고리즘을 사용하는 것입니다. 예를 들어: -- $ \text{Modular Reduction by 1 and } \sin(2\pi x)/2\pi $ -이 함수들은 정수 포인트 근처에서 유사하게 작동하여 Modular 1과 사인 함수 사이의 간극을 줄이는 데 도움이 됩니다. \ No newline at end of file + +Polynomials are used to approximate the modular reduction function. A common approach is to use trigonometric functions and polynomial approximation algorithms. For example: +- **Modular Reduction by 1 and** $\sin(2\pi x)/2\pi$ + +These functions operate similarly near integer points, helping to close the gap between Modular 1 and the sine function. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md index 27e6317..a8708c6 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md @@ -1,17 +1,17 @@ -## CGGI (Cheon-Gentry-Goldwasser-Ishai) 스킴 +## CGGI (Cheon-Gentry-Goldwasser-Ishai) Scheme -CGGI 스킴은 Cheon, Gentry, Goldwasser, Ishai가 제안한 스킴으로, [[Bootstrapping]]을 통해 효율성을 높인 동형암호 스킴입니다. +The CGGI scheme, proposed by Cheon, Gentry, Goldwasser, and Ishai, is a homomorphic encryption scheme that enhances efficiency through [[bootstrapping]]. -### 주요 구성 요소 +### Key Components -1. **비밀키 생성 (Secret Key Generation)**: 비밀키는 LWE 기반 문제에서 생성됩니다. -2. **공개키 생성 (Public Key Generation)**: 공개키는 비밀키와 LWE 샘플로 구성됩니다. -3. **암호화 (Encryption)**: 메시지를 암호화하여 LWE 암호문을 생성합니다. -4. **복호화 (Decryption)**: 암호문을 복호화하여 원래 메시지를 복원합니다. +1. **Secret Key Generation**: The secret key is generated based on the LWE (Learning with Errors) problem. +2. **Public Key Generation**: The public key is composed of the secret key and LWE samples. +3. **Encryption**: Encrypts messages to generate LWE ciphertexts. +4. **Decryption**: Decrypts the ciphertexts to restore the original message. -### 동형 연산 +### Homomorphic Operations -CGGI 스킴은 효율적인 부트스트래핑을 통해 복잡한 연산을 지원합니다. +The CGGI scheme supports complex operations efficiently through effective bootstrapping. -- **동형 덧셈**: LWE 샘플의 덧셈으로 수행됩니다. -- **동형 곱셈**: LWE 샘플의 곱셈으로 수행되며, 부트스트래핑을 통해 효율성을 유지합니다. \ No newline at end of file +- **Homomorphic Addition**: Performed through the addition of LWE samples. +- **Homomorphic Multiplication**: Executed through the multiplication of LWE samples while maintaining efficiency via bootstrapping. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md index 50c4638..70a5653 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md @@ -1,26 +1,35 @@ -# CKKS 암호화 기법 -## 정의 -CKKS (Cheon-Kim-Kim-Song)는 복잡한 실수 계산을 효율적으로 수행할 수 있도록 설계된 완전 동형 암호화(FHE) 기법입니다. 이는 고정밀 실수 연산을 지원하고, 다수의 데이터 요소를 한 번에 처리할 수 있는 병렬 연산 기능(SIMD)을 제공합니다. CKKS는 기계 학습과 통계학에서 주로 사용되며, 이들 분야에서의 많은 연산이 근사 연산이기 때문에 다른 암호화 방식보다 더 유리합니다. +# CKKS Encryption Scheme -## CKKS의 주요 특징 -### 인코딩과 디코딩 -- CKKS에서는 메시지를 암호화하기 전에 메시지를 복소수 벡터 형태로 인코딩합니다. 이 인코딩 과정은 메시지를 복소수 공간($CN/2$)에서 다항식 공간($R[X]/(X^N+1)$)으로 변환합니다. 인코딩 함수는 $Ecd(z) = \lfloor \Delta \cdot iDFT(z) \rceil$이며, 디코딩 함수는 $Dcd(p(X)) = \frac{1}{\Delta} \cdot DFT(p(X))$입니다. 여기서 $\Delta$는 스케일링 팩터입니다. -- 인코딩 과정 중에는 rounding errors가 발생할 수 있으며, 이를 줄이기 위해 적절한 $\Delta$ 값을 선택합니다. +## Definition -### 암호화와 복호화 -- CKKS의 암호화는 [[Ring Learning with Errors(RLWE)]] 문제를 기반으로 합니다. 메시지를 다항식 공간에서 암호화하여 사이퍼텍스트를 생성합니다. 암호화된 사이퍼텍스트는 $(b, a)$ 형태로 표현되며, 여기서 $b$와 $a$는 각각 랜덤 다항식과 에러를 포함합니다. -- 복호화는 이 사이퍼텍스트를 사용하여 원래 메시지를 복원하는 과정입니다. 복호화 함수는 $[b + a \cdot s]_{q0}$로 정의되며, 여기서 $s$는 비밀 키입니다. +The CKKS (Cheon-Kim-Kim-Song) scheme is a fully homomorphic encryption (FHE) technique designed to efficiently perform complex real number computations. It supports high-precision real number operations and provides parallel processing capabilities (SIMD) that allow multiple data elements to be processed simultaneously. CKKS is primarily used in machine learning and statistics, where many operations are approximate, making it more advantageous than other encryption schemes. -### 기본 연산 -- CKKS는 덧셈과 곱셈과 같은 기본적인 동형 연산을 지원합니다. 두 사이퍼텍스트 $(b1, a1)$와 $(b2, a2)$의 덧셈은 $(b1 + b2, a1 + a2)$로 정의되며, 곱셈은 $(b1b2, a1b2 + a2b1, a1a2)$로 정의됩니다. 이러한 연산은 암호화된 상태에서 직접 수행되며, 결과는 여전히 암호화된 상태로 유지됩니다. +## Key Features of CKKS -### Key Switching과 Relinearization -- Key Switching은 암호화된 메시지를 다른 비밀 키로 다시 암호화하는 과정입니다. 이를 통해 비밀 키의 변경 없이도 암호화된 데이터를 안전하게 공유할 수 있습니다. -- Relinearization은 사이퍼텍스트의 길이를 줄이는 과정으로, 이는 연산 중 키의 크기 증가 문제를 해결하는 데 사용됩니다. 이를 통해 연산 효율성을 유지하면서 동형 연산을 계속 수행할 수 있습니다. +### Encoding and Decoding + +- In CKKS, messages are encoded into complex vector form before encryption. This encoding process transforms messages from the complex space ($\mathbb{C}^{N/2}$) to the polynomial space ($R[X]/(X^N+1)$). The encoding function is given by $Ecd(z) = \lfloor \Delta \cdot iDFT(z) \rceil$, and the decoding function is $Dcd(p(X)) = \frac{1}{\Delta} \cdot DFT(p(X))$. Here, $\Delta$ is a scaling factor. +- Rounding errors can occur during the encoding process, and an appropriate $\Delta$ value is chosen to minimize these errors. + +### Encryption and Decryption + +- CKKS encryption is based on the [[Ring Learning with Errors (RLWE)]] problem. Messages are encrypted in the polynomial space to generate ciphertexts. The encrypted ciphertext is represented as $(b, a)$, where $b$ and $a$ include a random polynomial and an error, respectively. +- Decryption is the process of using this ciphertext to restore the original message. The decryption function is defined as $[b + a \cdot s]_{q0}$, where $s$ is the secret key. + +### Basic Operations + +- CKKS supports basic homomorphic operations such as addition and multiplication. The addition of two ciphertexts $(b1, a1)$ and $(b2, a2)$ is defined as $(b1 + b2, a1 + a2)$, and multiplication is defined as $(b1b2, a1b2 + a2b1, a1a2)$. These operations are performed directly on encrypted data, and the result remains encrypted. + +### Key Switching and Relinearization + +- Key Switching is the process of re-encrypting encrypted messages with a different secret key. This allows encrypted data to be safely shared without changing the secret key. +- Relinearization is the process of reducing the length of the ciphertext, which is used to address the problem of key size increase during operations. This allows for continued homomorphic operations while maintaining computational efficiency. ### Rescaling -- Rescaling은 곱셈 연산 후 증가한 스케일링 팩터를 줄이는 과정입니다. 이는 $\Delta^2$로 증가한 스케일링 팩터를 다시 $\Delta$ 수준으로 낮추어 계산 정확도를 유지합니다. -## 응용 분야 -- **기계 학습:** CKKS는 기계 학습에서 사용되는 다수의 연산이 근사 연산이라는 점에서 매우 적합합니다. 다수의 데이터 포인트를 병렬로 처리할 수 있어 효율성을 극대화할 수 있습니다. -- **통계 분석:** 통계학에서도 대규모 데이터셋에 대한 복잡한 실수 연산을 안전하게 수행할 수 있어 유용합니다. CKKS는 이러한 연산을 암호화된 상태에서 수행함으로써 데이터 프라이버시를 보장합니다. \ No newline at end of file +- Rescaling is the process of reducing the increased scaling factor after multiplication operations. It reduces the scaling factor, which increased to $\Delta^2$, back to the $\Delta$ level to maintain computational accuracy. + +## Applications + +- **Machine Learning:** CKKS is very suitable for machine learning, where many operations are approximate. It maximizes efficiency by processing multiple data points in parallel. +- **Statistical Analysis:** It is also useful in statistics for securely performing complex real-number operations on large datasets. CKKS guarantees data privacy by performing these operations while the data remains encrypted. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md index 169eeba..7330152 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md @@ -1,17 +1,17 @@ -## DM (Dijk-Meyer) 스킴 +## DM (Dijk-Meyer) Scheme -DM 스킴은 Dijk와 Meyer가 제안한 스킴으로, [[Learing with Errors(LWE)]] 문제를 기반으로 한 동형암호 스킴입니다. +The DM scheme, proposed by Dijk and Meyer, is a homomorphic encryption scheme based on the [[Learning with Errors (LWE)]] problem. -### 주요 구성 요소 +### Key Components -1. **비밀키 생성 (Secret Key Generation)**: 비밀키는 정수 집합에서 선택됩니다. -2. **공개키 생성 (Public Key Generation)**: 공개키는 비밀키와 LWE 샘플로 구성됩니다. -3. **암호화 (Encryption)**: 메시지를 정수로 간주하여 암호화합니다. -4. **복호화 (Decryption)**: 암호문을 복호화하여 원래 메시지를 복원합니다. +1. **Secret Key Generation**: The secret key is selected from a set of integers. +2. **Public Key Generation**: The public key is composed of the secret key and LWE samples. +3. **Encryption**: Messages are encrypted by treating them as integers. +4. **Decryption**: Ciphertexts are decrypted to restore the original message. -### 동형 연산 +### Homomorphic Operations -DM 스킴은 기본적인 동형 연산을 지원합니다. +The DM scheme supports basic homomorphic operations. -- **동형 덧셈**: 정수 덧셈을 통해 수행됩니다. -- **동형 곱셈**: 정수 곱셈을 통해 수행됩니다. \ No newline at end of file +- **Homomorphic Addition**: Performed through integer addition. +- **Homomorphic Multiplication**: Performed through integer multiplication. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md index 48b6aa3..c30f2a0 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md @@ -1,58 +1,73 @@ # Fully Homomorphic Encryption (FHE) -## 정의 -암호화된 상태에서 연산을 수행할 수 있는 암호학 기법을 의미한다. -## 사용 용도 -민감한 데이터에 대한 연산, 암호화된 모델과 함께 연산 수행. +## Definition -## 장점 -### 1. 보안성 -- 동형 암호화는 가장 안전한 프라이버시 강화 기술 중 하나로, 처음부터 끝까지 데이터를 완전히 암호화한다. -- 현재 존재하는 거의 모든 FHE 스킴들은 잘 확립된 lattice-based cryptography에 의존하며, 이는 [[Post-Quantum Cryptography]]임 +Fully Homomorphic Encryption (FHE) is a cryptographic technique that allows computations to be performed on data while it is still encrypted. -### 2. 커뮤니케이션 비용 -- [[Secure Multiparty Computation]]를 포함한 대부분의 [[Privacy Enhancing Technologies (PET)]]들은 막대한 커뮤니케이션 비용이 발생하는 반면, HE는 암호화 후와 복호화 전의 통신만 필요하다. +## Use Cases -## 단점 -### 1. 연산 비용 -- FHE의 연산 비용은 일반적인 평문 연산에 비해 보통 100배에서 10,000배 더 비싸다. +Performing computations on sensitive data and executing operations with encrypted models. -## FHE 기술의 역사 -### 초기 HE -- 동형 암호화의 개념은 1978년 Rivest, Edleman, Dertouzous에 의해 처음 제안되었으나, Gentry가 2009년에 최초로 그럴듯한 스킴을 구현하기 전까지는 존재 여부가 불확실했다. -- Gentry의 구성 청사진에는 동형 암호화를 통해 HE 연산에서 발생하는 노이즈를 새로 고치는 핵심 요소인 [[Bootstrapping]]이 포함된다. +## Advantages -### 개선 -- [[BGV]] 및 [[BFV]]와 같은 2세대 스킴은 [[Learning with Errors(LWE)]]의 링 변형(Ring Learning with Errors(RLWE))에 의존하며, 효율성을 크게 향상시켰다. -- Craig Gentry, Amit Sahai, Brent Waters는 노이즈 성장이 LWE보다 훨씬 느린 새로운 빌딩 블록을 제안했다. 이는 [[DM]] 및 [[CGGI]]와 같은 low-latancy FHE 스킴을 탄생시켰다. -- 2016년에 [[CKKS]] 스킴이 제안되었으며, 이는 RLWE 위에서 효율적인 재스케일링 연산을 도입하여 근사 연산을 본질적으로 지원한다. +### 1. Security -## 대표적인 FHE 스킴 -현재, 2세대, 3세대, 4세대 FHE 스킴이 모두 인기를 끌고 있으며, 각각 다른 강점을 가지고 있다. +- Homomorphic encryption is one of the most secure privacy-enhancing technologies, as it keeps data completely encrypted from start to finish. +- Almost all existing FHE schemes rely on well-established lattice-based cryptography, which is part of [[Post-Quantum Cryptography]]. + +### 2. Communication Costs + +- Most [[Privacy Enhancing Technologies (PET)]], including [[Secure Multiparty Computation]], incur significant communication costs, whereas HE requires communication only after encryption and before decryption. + +## Disadvantages + +### 1. Computational Cost + +- The computational cost of FHE is typically 100 to 10,000 times more expensive than regular plaintext computations. + +## History of FHE Technology + +### Early HE + +- The concept of homomorphic encryption was first proposed by Rivest, Edleman, and Dertouzous in 1978, but its existence remained uncertain until Gentry implemented the first plausible scheme in 2009. +- Gentry's blueprint includes [[Bootstrapping]], a key element that refreshes the noise in HE operations through homomorphic encryption. + +### Improvements + +- Second-generation schemes such as [[BGV]] and [[BFV]] rely on a ring variant of [[Learning with Errors (LWE)]], specifically Ring Learning with Errors (RLWE), significantly improving efficiency. +- Craig Gentry, Amit Sahai, and Brent Waters proposed new building blocks with much slower noise growth than LWE. This led to the development of low-latency FHE schemes like [[DM]] and [[CGGI]]. +- In 2016, the [[CKKS]] scheme was proposed, introducing efficient rescaling operations on RLWE to naturally support approximate arithmetic. + +## Representative FHE Schemes + +Currently, second-generation, third-generation, and fourth-generation FHE schemes are all popular, each with different strengths. | Name | Generation | Ciphertext Format | Message Type | | --------------- | ---------- | ----------------- | ------------ | | [[BGV]]/[[BFV]] | 2 | RLWE | Integer | | [[CGGI]]/[[DM]] | 3 | LWE | Bit(s) | | [[CKKS]] | 4 | RLWE | Real | -- 기본 암호문 형식은 FHE 스킴의 중요한 특성이다. LWE 기반 스킴과 RLWE 기반 스킴은 각각 지연 시간과 처리량 측면에서 우수하다. -## FHE에서의 부트스트래핑 (Bootstrapping in FHE) +- The base ciphertext format is an important characteristic of FHE schemes. LWE-based schemes and RLWE-based schemes excel in latency and throughput, respectively. -모든 기존 FHE 스킴은 LWE 또는 그 변형에 기반하며, 이는 노이즈 개념을 가지고 있다. 동형 연산을 진행할수록 노이즈가 누적되어 너무 커지면 추가 연산을 수행할 수 없게 된다. 부트스트래핑은 암호문을 동형으로 복호화하여 노이즈를 새로 고친다. 부트스트래핑은 많은 동형 서브 연산을 포함하므로, 일반적으로 FHE의 가장 시간이 많이 소요되는 단계이다. +## Bootstrapping in FHE -| Scheme | Number of slots | Bootstrapping time | +All existing FHE schemes are based on LWE or its variants, which involve the concept of noise. As homomorphic operations progress, the noise accumulates and, if it becomes too large, further operations cannot be performed. Bootstrapping homomorphically decrypts the ciphertext to refresh the noise. Since bootstrapping includes many homomorphic sub-operations, it is generally the most time-consuming step in FHE. + +| Scheme | Number of Slots | Bootstrapping Time | | --------------- | --------------- | ------------------ | | [[BGV]]/[[BFV]] | 32768           | 35.5s              | | [[CGGI]]/[[DM]] | 1 | 6.49ms          | | [[CKKS]] | 65536         | 13.0s              | -- 최신 부트스트래핑 성능 (1 스레드 CPU 기준). + +- Latest bootstrapping performance (based on single-threaded CPU). ### Index + - [[Bootstrapping]] - [[BGV]] - [[BFV]] - [[CGGI]] - [[DM]] - [[CKKS]] -- [[fhEVM]] \ No newline at end of file +- [[fhEVM]] \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md index 070640c..bcd3858 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md @@ -1,50 +1,50 @@ ->[!Info] -> 저희 프로젝트는 블록체인과 관련된 암호학을 다루는 범위로 하고 있습니다. 따라서 EVM에 대한 추가적인 자료가 필요하다면, 외부 링크를 참고해주세요: https://ethereum.org/ko/developers/docs/evm/ +> [!Info] +> Our project focuses on cryptography related to blockchain. Therefore, if you need additional information about the EVM, please refer to this external link: [Ethereum EVM Documentation](https://ethereum.org/ko/developers/docs/evm/) -# fhEVM: 블록체인에서 기밀 스마트 계약 실행 +# fhEVM: Confidential Smart Contract Execution on Blockchain -블록체인에는 항상 딜레마가 있었습니다: 애플리케이션과 사용자 데이터를 온체인에 두어 모두가 볼 수 있게 하거나, 오프체인에 두어 프라이버시는 지키지만 계약 조합성을 잃는 것입니다. 이 문제는 금융과 의료처럼 높은 프라이버시가 요구되는 영역에서 큰 장애물로 작용해왔습니다. 그러나 [[Fully Homomorphic Encryption]] 기술 덕분에 Zama의 fhEVM은 암호화된 데이터에서 기밀 스마트 계약을 실행할 수 있게 해주며, 프라이버시와 조합성을 모두 보장합니다. +Blockchain has always faced a dilemma: keeping applications and user data on-chain for everyone to see or off-chain to preserve privacy but lose contract composability. This issue has been a significant barrier in areas requiring high privacy, such as finance and healthcare. However, thanks to [[Fully Homomorphic Encryption]], Zama’s fhEVM allows confidential smart contract execution on encrypted data, ensuring both privacy and composability. -## 블록체인에 FHE가 적용되어야 하는 이유 +## Why Apply FHE to Blockchain -블록체인은 탈중앙성과 투명성을 바탕으로 높은 보안을 제공합니다. 그러나 이러한 투명성 때문에 모든 정보가 퍼블릭하게 공개되므로, 블록체인에서 사용할 수 있는 정보는 제한적입니다. 사용자의 민감한 정보가 필요한 거래 내역이 있다면, 블록체인을 이용할 때 사용자들이 원치 않더라도 민감 정보가 온체인에 기록되어 프라이버시를 지키지 못합니다. 이 때문에 금융, 의료 등의 프라이버시 보호가 중요한 영역에서 블록체인의 활용에 한계가 있습니다. 예를 들어, 전통 금융시장을 이용하던 사용자 입장에서는 자신이 보유한 자산의 양이 누구에게나 공개된다는 것이 부담이 될 수 있습니다. 또한, 금융 거래가 미리 노출되어 MEV를 노리는 빌더들에게 프런트 러닝, 백러닝의 위험에 노출될 수 있습니다. +Blockchains provide high security based on decentralization and transparency. However, due to this transparency, all information is publicly disclosed, limiting the data that can be used on the blockchain. When transactions require sensitive user information, using blockchain means that sensitive information is recorded on-chain, compromising privacy. This presents limitations for blockchain applications in fields where privacy is crucial, such as finance and healthcare. For example, users accustomed to traditional financial markets may find it burdensome that the amount of assets they hold is publicly visible. Furthermore, financial transactions exposed prematurely can be at risk of front-running and back-running by builders looking to exploit MEV (Miner Extractable Value). -## 기존 솔루션의 한계 +## Limitations of Existing Solutions -프라이버시 문제를 해결하기 위해 일부 정보는 오프체인에 기록하거나, [[Zero-Knowledge Proofs]] 를 사용하기도 합니다. 그러나 이 방법들은 완벽한 해결책이 될 수 없습니다. 두 방법 모두 오프체인에서 연산을 해야 한다는 한계가 있으며, 이는 트랜잭션의 원자성을 보장하지 않고 스마트 계약의 조합성을 해치게 됩니다. 따라서 온체인에 모든 데이터를 기록하면서도 프라이버시를 지킬 수 있는 방법이 필요하며, 그 답이 바로 FHE입니다. +To address privacy issues, some information is recorded off-chain, or [[Zero-Knowledge Proofs]] are used. However, these methods are not perfect solutions. Both approaches have limitations as they require computations to be performed off-chain, which does not guarantee transaction atomicity and undermines the composability of smart contracts. Therefore, a method that can keep all data on-chain while maintaining privacy is necessary, and FHE offers that solution. -## FHE가 프라이버시 문제를 해결하는 방법 +## How FHE Solves Privacy Issues -FHE를 사용하면 온체인 데이터가 암호화되어 기록되기 때문에 개인의 거래 기록이 퍼블릭하게 공개되지 않습니다. 그러나 연산 자체는 공정하게 이루어졌음을 보장하기 때문에, 블록체인의 장점을 그대로 유지하면서도 개인정보를 보호할 수 있습니다. 예를 들어, 내가 얼마를 누구에게 송금했는지 모두가 알 수 없고, 거래 당사자만 알 수 있게 할 수 있으며, 특정 지갑의 잔고를 검색하는 것도 불가능하게 됩니다. +By using FHE, on-chain data is recorded in an encrypted form, so personal transaction records are not publicly disclosed. However, it guarantees that computations are performed fairly, allowing the blockchain to retain its advantages while protecting personal information. For example, it can ensure that no one knows how much you transferred to whom, except for the transaction parties, and make it impossible to search the balance of a particular wallet. -## Zama의 fhEVM 소개 +## Introduction to Zama's fhEVM -Zama는 블록체인에 FHE를 적용하는 선도 기업으로, fhEVM을 개발했습니다. Zama는 현재 TFHE-rs, Concrete, Concrete ML, fhEVM 등 4개의 주요 제품을 보유하고 있습니다. 그 중 fhEVM은 EVM에서 가능한 모든 기능을 FHE를 사용하여 구현한 제품입니다. fhEVM은 evmos 기반으로 TFHE-rs를 활용하여 개발되었으며, Solidity를 그대로 사용할 수 있습니다. 현재 fhEVM은 버전 0.4(2024.07 기준)까지 출시되었습니다. +Zama is a leading company applying FHE to blockchain and has developed the fhEVM. Zama currently offers four main products: TFHE-rs, Concrete, Concrete ML, and fhEVM. Among these, fhEVM implements all functions possible on the EVM using FHE. Developed using TFHE-rs based on Evmos, fhEVM allows the use of Solidity as is. As of July 2024, fhEVM has been released up to version 0.4. -### fhEVM의 작동 원리 +### How fhEVM Works -1. **Global Public Key**: fhEVM은 글로벌 Public Key를 사용하여 데이터를 암호화하고, FHE를 이용해 연산을 수행합니다. Public Key를 사용함으로써 다른 사용자 및 스마트 계약과의 상호작용에서 이점을 얻습니다. 복호화에 사용되는 Private Key는 여러 Validator들의 승인이 필요하여 보안을 유지할 수 있습니다. +1. **Global Public Key**: fhEVM uses a global public key to encrypt data and perform computations using FHE. By using the public key, advantages are gained in interactions with other users and smart contracts. The private key used for decryption requires the approval of multiple validators, ensuring security. -2. **제출 요구 사항**: fhEVM을 사용하기 위해 사용자는 두 가지를 제출해야 합니다: - - 암호화된 데이터. - - 암호화되기 전 데이터의 존재를 증명하는 Zero-Knowledge Proof (ZKP). +2. **Submission Requirements**: To use fhEVM, users need to submit two things: + - Encrypted data. + - A Zero-Knowledge Proof (ZKP) demonstrating the existence of the data before encryption. -3. **복호화 방법**: - - **Public Decryption**: 암호화 및 ZKP 제출 후 Validator들이 검증하고 암호화된 데이터를 온체인에 올립니다. 연산 결과는 Validator들이 복호화하여 공개합니다. - - **Private Decryption**: 결과를 혼자 확인하고 싶을 때는 새로운 키 쌍을 생성하여 Public Key를 제공하고, Validator들이 결과 데이터를 새로운 Public Key로 암호화하여 전달합니다. 사용자는 Private Key로 이를 복호화하여 확인합니다. +3. **Decryption Methods**: + - **Public Decryption**: After submitting encrypted data and ZKP, validators verify and upload the encrypted data on-chain. Validators decrypt and reveal the computation results. + - **Private Decryption**: If you wish to view the results privately, generate a new key pair, provide the public key, and validators will encrypt the result data with the new public key and deliver it. The user can decrypt it with their private key to check. -### 사용 사례 +### Use Cases -#### Encrypted ERC-20 토큰 +#### Encrypted ERC-20 Tokens -기존 ERC-20 토큰은 지갑 잔액과 거래 내역이 공개됩니다. FHE를 활용하면 이러한 정보가 비공개로 유지되면서도 간편한 송금 기능을 유지할 수 있습니다. fhEVM에서는 `euint` 데이터 타입을 사용하여 데이터를 암호화하여 저장할 수 있습니다. +Existing ERC-20 tokens have publicly visible wallet balances and transaction histories. By leveraging FHE, such information can remain private while retaining easy transfer functionality. In fhEVM, data can be encrypted and stored using the `euint` data type. -##### 코드 예시 +##### Code Example ```solidity pragma solidity ^0.8.0; -import "TFHE.sol"; // Zama의 TFHE 컨트랙트 가져오기 +import "TFHE.sol"; // Import Zama's TFHE contract contract EncryptedERC20 { euint public totalSupply; @@ -59,20 +59,17 @@ contract EncryptedERC20 { function checkBalance(address owner) public { euint encryptedBalance = balance[owner]; - // 재암호화 및 복호화 과정 + // Process for re-encryption and decryption } } ``` #### Blind Auctions -Blind Auction에서는 입찰 금액이 입찰자 외에는 비공개됩니다. 이 과정을 통해 공정한 경쟁을 보장하고 입찰 금액의 조기 노출을 방지합니다. +In a blind auction, bid amounts are kept private from everyone except the bidder. This process ensures fair competition and prevents premature disclosure of bid amounts. -##### 작동 방식 +##### How It Works -1. **입찰 제출**: 사용자는 암호화된 입찰 금액과 ZKP를 제출합니다. -2. **2단계 - 공개**: 모든 입찰이 완료되면, `dIhaveHIghest()`를 통해 가장 높은 입찰 금액을 확인합니다. 가장 높은 입찰자는 상품을 클레임하고, 나머지는 입찰 금액을 반환받습니다. -3. **마무리**: 경매 주최자는 가장 높은 입찰 금액을 가져갑니다. - -### Reference -Crypto meets Crypto: FHE for Blockchain (하) 편 \ No newline at end of file +1. **Bid Submission**: Users submit encrypted bid amounts along with a ZKP. +2. **Reveal Phase**: After all bids are submitted, the highest bid amount is determined using `dIhaveHighest()`. The highest bidder claims the item, and others receive their bids back. +3. **Conclusion**: The auction host receives the highest bid amount. \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md index 22c2155..b1a693c 100644 --- a/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md +++ b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md @@ -1,15 +1,15 @@ # Secure Multiparty Computation (MPC) -## 정의 -Secure Multiparty Computation (MPC)은 여러 당사자가 각자의 입력값을 사용하여 공동 계산을 수행하면서도 해당 입력값을 완전히 비공개로 유지할 수 있게 하는 암호화 프로토콜입니다. MPC에서는 각 참가자의 데이터가 비공개로 유지되며, 어떤 당사자도 다른 당사자의 데이터를 접근할 수 없습니다. 이 프로토콜은 최종 결과만을 공개하고 중간 과정을 전혀 노출하지 않으면서 계산 결과의 정확성을 보장합니다. +## Definition +Secure Multiparty Computation (MPC) is a cryptographic protocol that allows multiple parties to perform joint computations using their individual inputs while keeping these inputs completely private. In MPC, each participant's data remains confidential, and no party can access the data of another. This protocol ensures the accuracy of the computation results by revealing only the final outcome without disclosing any intermediate steps. -## 사용 사례 -MPC의 주요 응용 중 하나는 서로 다른 데이터 소유자로부터 데이터를 안전하게 집계하는 것입니다. 예를 들어, 여러 조직이 공동 데이터 분석을 수행하거나 다양한 데이터셋에서 통찰을 도출해야 할 때, MPC를 사용하여 각 당사자의 데이터가 과정 중에 비공개로 유지되도록 할 수 있습니다. 이는 특히 헬스케어, 금융, 공동 연구와 같이 데이터 프라이버시가 중요한 시나리오에서 유용합니다. MPC를 사용함으로써 조직들은 데이터 프라이버시와 보안을 손상시키지 않고 협력하고 귀중한 통찰을 도출할 수 있습니다. +## Use Cases +One of the primary applications of MPC is the secure aggregation of data from different data owners. For example, when multiple organizations need to perform joint data analysis or derive insights from various datasets, MPC can be used to ensure that each party's data remains private throughout the process. This is particularly useful in scenarios where data privacy is crucial, such as healthcare, finance, and collaborative research. By using MPC, organizations can collaborate and derive valuable insights without compromising data privacy and security. -## 장점 -1. **프라이버시 보장:** MPC는 민감한 데이터가 비공개로 유지되도록 하며, 계산은 개별 입력값을 노출하지 않고 수행됩니다. -2. **데이터 보안:** 데이터가 평문으로 노출되지 않으므로 데이터 유출과 침해를 방지할 수 있습니다. -3. **규제 준수:** MPC는 데이터 보호 규정을 준수하도록 도와주며, 민감한 데이터가 공유되거나 공개되지 않도록 보장합니다. -4. **협력적 분석:** 여러 단체가 자신들의 독점 데이터를 손상시키지 않고 데이터 분석 프로젝트에 협력할 수 있습니다. +## Advantages +1. **Privacy Assurance:** MPC ensures that sensitive data remains private, with computations carried out without exposing individual inputs. +2. **Data Security:** As data is not exposed in plaintext, it helps prevent data breaches and leaks. +3. **Regulatory Compliance:** MPC aids in complying with data protection regulations, ensuring that sensitive data is not shared or exposed. +4. **Collaborative Analysis:** Multiple entities can collaborate on data analysis projects without compromising their proprietary data. ### Index \ No newline at end of file diff --git a/content/i18n/ko/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md b/content/i18n/ko/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md index c5ff537..9e5a6c7 100644 --- a/content/i18n/ko/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md +++ b/content/i18n/ko/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md @@ -1,5 +1,5 @@ >[!Info] -> [[Privacy Enhancing Technologies (PET)]] explains advanced cryptographic methods designed to protect user privacy. It covers technologies such as zero-knowledge proofs, secure multi-party computation, and homomorphic encryption. +> [[Privacy Enhancing Technologies (PET)]] 섹션에서는 사용자 프라이버시를 보호하기 위해 설계된 고급 암호화 방법을 설명합니다. 여기에는 영지식 증명(Zero Knowledge Proofs), 안전한 다자간 연산(Secure Multiparty Computation), 동형 암호화(Fully Homomorphic Encryption)와 같은 기술이 포함됩니다. - [[Fully Homomorphic Encryption]] diff --git a/content/i18n/ko/Privacy Enhancing Technologies (PET)/Zero Knowledge Proofs/Commitment Scheme/Polynomial theorem.md b/content/i18n/ko/Privacy Enhancing Technologies (PET)/Zero Knowledge Proofs/Commitment Scheme/Polynomial theorem.md index 1577d73..e54d417 100644 --- a/content/i18n/ko/Privacy Enhancing Technologies (PET)/Zero Knowledge Proofs/Commitment Scheme/Polynomial theorem.md +++ b/content/i18n/ko/Privacy Enhancing Technologies (PET)/Zero Knowledge Proofs/Commitment Scheme/Polynomial theorem.md @@ -1,48 +1,55 @@ - **Alice wants to prove:** +**Alice는 다음을 증명하고자 합니다:** + $$ u,v,w \in 𝔽_p,\; u_i * v_i = w_i \ \forall i \in [0, n) $$ -Intuitive approach: Show all computations of each cases in every $i$ -→Not succinct -### 1. Lagrange Interpolation +직관적인 접근 방법: 모든 $i$에 대한 각 경우의 계산을 보여줍니다. → 간결하지 않음 + +### 1. 라그랑주 보간법 ->**Lagrange Interpolation :** For $x_i, y_i$ with $i \in [0, n)$ and $x_i \ne x_j \; \forall \; i\ne j$, there is a unique polynomial $f$ of degree less than $n$ such that $f(x_i) = y_i \; \forall \; i \in [0,n)$ -> -→ In general case, takes $O(n\log^2n)$ via Divide & Conqure + FFT +> **라그랑주 보간법 (Lagrange Interpolation):** $x_i, y_i$가 $i \in [0, n)$이고 $i \ne j$일 때 $x_i \ne x_j$인 경우, 차수가 $n$보다 작은 유일한 다항식 $f$가 존재하여 $f(x_i) = y_i \; \forall \; i \in [0,n)$입니다. +> +> 일반적인 경우, 분할 정복과 FFT를 사용하여 $O(n\log^2n)$의 시간이 소요됩니다. -Let’s make Interpolated polynomials of each variables: +각 변수에 대해 보간 다항식을 만들어 보겠습니다: $$ U(x_i) = u_i,\; V(x_i) = v_i,\; W(x_i) = w_i $$ -In $𝔽_p$, we can use the case of $x_i = \omega^i, \; \omega^n = 1$. (→ $O(n\log n)$ via FFT) +$𝔽_p$에서는 $x_i = \omega^i, \; \omega^n = 1$인 경우를 사용할 수 있습니다. (→ FFT를 사용하여 $O(n\log n)$) -We can make each polynomials $U, V,W$: +각 다항식 $U, V, W$를 만들 수 있습니다: -$$ U(\omega^i)= u_i,\; V(\omega^i)= u_i,\; W(\omega^i)= w_i $$ +$$ U(\omega^i)= u_i,\; V(\omega^i)= v_i,\; W(\omega^i)= w_i $$ -Now, what we gotta prove is : $U(\omega^i)*V(\omega^i)-W(\omega^i) = (x^n-1)Q(x)$ +이제 우리가 증명해야 할 것은: $U(\omega^i)*V(\omega^i)-W(\omega^i) = (x^n-1)Q(x)$ 입니다. $\because U(\omega^i)*V(\omega^i) = W(\omega^i)$ + $U(\omega^i)*V(\omega^i)-W(\omega^i) \equiv 0 \mod{ (x-\omega^0)(x-\omega^1)...(x-\omega^{n-1})}$ + $U(\omega^i)*V(\omega^i)-W(\omega^i) \equiv 0 \mod{(x^n-1)}$ + $U(\omega^i)*V(\omega^i)-W(\omega^i) = (x^n-1)Q(x)$ -### 2. Schwartz-Zippel Lemma -$P \in 𝔽[x_1,...,x_n]$ is a non-zero polynomial with total degree $d$ over finite field $𝔽$. If $r_1,r_2, ..., r_n$ are i.i.d. randomly selected from $𝔽$, then +### 2. 슈워츠-지펠 보조정리 (Schwartz-Zippel Lemma) + +$P \in 𝔽[x_1,...,x_n]$는 유한 필드 $𝔽$에서 차수가 $d$인 비영 다항식입니다. $r_1,r_2, ..., r_n$이 $𝔽$에서 독립적으로 랜덤하게 선택된 경우, + $$ P_r[P(r_1,r_2,...,r_n) = 0] \le {d\over |𝔽|} $$ -Therefore, it suffices to select random $t \in 𝔽$ and check : +따라서, 랜덤 $t \in 𝔽$을 선택하고 다음을 확인하는 것으로 충분합니다: $$ U(t)*V(t)-W(t) = (t^n-1)Q(t) $$ -By the way, we don’t want interactions between the prover and verifier. So, the prover gotta give the $t$ value with polynomials at once, but the prover may modify the equation which can hold the $t$ value even if it is not the identical equation. -The verifier can convince when the prover make the $t$ value with the hash of the polynomials. -→ The probability of cheating with hash value is negligible : Fiat-Shamir heuristic +참고로, 증명자와 검증자 간의 상호작용을 원하지 않습니다. 따라서, 증명자는 다항식의 해시로 $t$ 값을 생성해야 하며, 증명자가 식을 수정하여 동일하지 않은 식이어도 $t$ 값을 유지할 수 있습니다. + +검증자는 증명자가 다항식의 해시로 $t$ 값을 생성했을 때 설득될 수 있습니다. +→ 해시 값으로 속일 확률은 무시할 수 있습니다: 피아트-샤미르 휴리스틱 (Fiat-Shamir heuristic) -### 3. Polynomial Commitment Schemes (PCS) +### 3. 다항식 커밋먼트 방식 (Polynomial Commitment Schemes, PCS) -- Commit: $f \rightarrow C(f)$ (binding and hiding, so that the verifier cannot know the exact $f$ and prover cannot change the $f$) -- Prove: Generate proof $\pi$ such that $f(x) = y$ -- Verify: Verify $f(x) =y$ given $x,y,C(f), \pi$. +- 커밋(Commit): $f \rightarrow C(f)$ (바인딩 및 숨김, 검증자가 정확한 $f$를 알 수 없고 증명자가 $f$를 변경할 수 없음) +- 증명(Prove): $f(x) = y$인 증명 $\pi$ 생성 +- 검증(Verify): $x,y,C(f), \pi$가 주어졌을 때 $f(x) =y$ 검증 -### 4. Adding ZK +### 4. ZK 추가 -Adding random points to interpolate $U,V,W$ on, or adding random multiples of $x^n-1$ works in PLONKish. It depends on which SNARK system to use. \ No newline at end of file +PLONKish에서 $U, V, W$를 보간하는 데 랜덤 포인트를 추가하거나 $x^n-1$의 랜덤 배수를 추가합니다. 사용하려는 SNARK 시스템에 따라 다릅니다. \ No newline at end of file