From 1d17a0a98e91fc1ef1fcaa229c6418179e439acc Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 08:24:56 +0900 Subject: [PATCH 1/5] Add HE docs --- .../Homomorphic Encryption.md | 58 +++++++++++++++++++ .../Secure Multiparty Computation.md | 15 +++++ 2 files changed, 73 insertions(+) create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md new file mode 100644 index 0000000..8f3922d --- /dev/null +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md @@ -0,0 +1,58 @@ +# Homomorphic Encryption (HE) +## 정의 +암호화된 상태에서 연산을 수행할 수 있는 암호학 기법을 의미한다. + +## 사용 용도 +민감한 데이터에 대한 연산, 암호화된 모델과 함께 연산 수행. + +## 장점 +### 1. 보안성 +- 동형 암호화는 가장 안전한 프라이버시 강화 기술 중 하나로, 처음부터 끝까지 데이터를 완전히 암호화한다. +- 현재 존재하는 거의 모든 FHE 스킴들은 잘 확립된 lattice-based cryptography에 의존하며, 이는 [[Post-Quantum Cryptography]]임 + +### 2. 커뮤니케이션 비용 +- [[Secure Multiparty Computation]]를 포함한 대부분의 [[Privacy Enhancing Technologies (PET)]]들은 막대한 커뮤니케이션 비용이 발생하는 반면, HE는 암호화 후와 복호화 전의 통신만 필요하다. + +## 단점 +### 1. 연산 비용 +- FHE의 연산 비용은 일반적인 평문 연산에 비해 보통 100배에서 10,000배 더 비싸다. + +## FHE 기술의 역사 +### 초기 HE +- 동형 암호화의 개념은 1978년 Rivest, Edleman, Dertouzous에 의해 처음 제안되었으나, Gentry가 2009년에 최초로 그럴듯한 스킴을 구현하기 전까지는 존재 여부가 불확실했다. +- Gentry의 구성 청사진에는 동형 암호화를 통해 HE 연산에서 발생하는 노이즈를 새로 고치는 핵심 요소인 [[Bootstrapping]]이 포함된다. + +### 개선 +- [[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 위에서 효율적인 재스케일링 연산을 도입하여 근사 연산을 본질적으로 지원한다. + +## 대표적인 FHE 스킴 +현재, 2세대, 3세대, 4세대 FHE 스킴이 모두 인기를 끌고 있으며, 각각 다른 강점을 가지고 있다. + +| 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) + +모든 기존 FHE 스킴은 LWE 또는 그 변형에 기반하며, 이는 노이즈 개념을 가지고 있다. 동형 연산을 진행할수록 노이즈가 누적되어 너무 커지면 추가 연산을 수행할 수 없게 된다. 부트스트래핑은 암호문을 동형으로 복호화하여 노이즈를 새로 고친다. 부트스트래핑은 많은 동형 서브 연산을 포함하므로, 일반적으로 FHE의 가장 시간이 많이 소요되는 단계이다. + +| Scheme | Number of slots | Bootstrapping time | +| --------------- | --------------- | ------------------ | +| [[BGV]]/[[BFV]] | 32768           | 35.5s              | +| [[CGGI]]/[[DM]] | 1 | 6.49ms          | +| [[CKKS]] | 65536         | 13.0s              | +- 최신 부트스트래핑 성능 (1 스레드 CPU 기준). + +### Index +- [[Bootstrapping]] +- [[BGV]] +- [[BFV]] +- [[CGGI]] +- [[DM]] +- [[CKKS]] +- [[fhEVM]] \ 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 new file mode 100644 index 0000000..22c2155 --- /dev/null +++ b/content/Privacy Enhancing Technologies (PET)/Secure Multiparty Computation/Secure Multiparty Computation.md @@ -0,0 +1,15 @@ +# Secure Multiparty Computation (MPC) + +## 정의 +Secure Multiparty Computation (MPC)은 여러 당사자가 각자의 입력값을 사용하여 공동 계산을 수행하면서도 해당 입력값을 완전히 비공개로 유지할 수 있게 하는 암호화 프로토콜입니다. MPC에서는 각 참가자의 데이터가 비공개로 유지되며, 어떤 당사자도 다른 당사자의 데이터를 접근할 수 없습니다. 이 프로토콜은 최종 결과만을 공개하고 중간 과정을 전혀 노출하지 않으면서 계산 결과의 정확성을 보장합니다. + +## 사용 사례 +MPC의 주요 응용 중 하나는 서로 다른 데이터 소유자로부터 데이터를 안전하게 집계하는 것입니다. 예를 들어, 여러 조직이 공동 데이터 분석을 수행하거나 다양한 데이터셋에서 통찰을 도출해야 할 때, MPC를 사용하여 각 당사자의 데이터가 과정 중에 비공개로 유지되도록 할 수 있습니다. 이는 특히 헬스케어, 금융, 공동 연구와 같이 데이터 프라이버시가 중요한 시나리오에서 유용합니다. MPC를 사용함으로써 조직들은 데이터 프라이버시와 보안을 손상시키지 않고 협력하고 귀중한 통찰을 도출할 수 있습니다. + +## 장점 +1. **프라이버시 보장:** MPC는 민감한 데이터가 비공개로 유지되도록 하며, 계산은 개별 입력값을 노출하지 않고 수행됩니다. +2. **데이터 보안:** 데이터가 평문으로 노출되지 않으므로 데이터 유출과 침해를 방지할 수 있습니다. +3. **규제 준수:** MPC는 데이터 보호 규정을 준수하도록 도와주며, 민감한 데이터가 공유되거나 공개되지 않도록 보장합니다. +4. **협력적 분석:** 여러 단체가 자신들의 독점 데이터를 손상시키지 않고 데이터 분석 프로젝트에 협력할 수 있습니다. + +### Index \ No newline at end of file From b3ceb7503fb5070524a63311aae72fb4275e42d7 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 08:35:15 +0900 Subject: [PATCH 2/5] Add CKKS docs --- .../Homomorphic Encryption/BFV.md | 0 .../Homomorphic Encryption/BGV.md | 0 .../Homomorphic Encryption/Bootstrapping.md | 0 .../Homomorphic Encryption/CGGI.md | 0 .../Homomorphic Encryption/CKKS.md | 26 +++++++++++++++++++ .../Homomorphic Encryption/DM.md | 0 .../Homomorphic Encryption/fhEVM.md | 0 7 files changed, 26 insertions(+) create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md create mode 100644 content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md new file mode 100644 index 0000000..e69de29 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md new file mode 100644 index 0000000..e69de29 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md new file mode 100644 index 0000000..e69de29 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md new file mode 100644 index 0000000..e69de29 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md new file mode 100644 index 0000000..50c4638 --- /dev/null +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CKKS.md @@ -0,0 +1,26 @@ +# CKKS 암호화 기법 +## 정의 +CKKS (Cheon-Kim-Kim-Song)는 복잡한 실수 계산을 효율적으로 수행할 수 있도록 설계된 완전 동형 암호화(FHE) 기법입니다. 이는 고정밀 실수 연산을 지원하고, 다수의 데이터 요소를 한 번에 처리할 수 있는 병렬 연산 기능(SIMD)을 제공합니다. CKKS는 기계 학습과 통계학에서 주로 사용되며, 이들 분야에서의 많은 연산이 근사 연산이기 때문에 다른 암호화 방식보다 더 유리합니다. + +## 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$ 값을 선택합니다. + +### 암호화와 복호화 +- CKKS의 암호화는 [[Ring Learning with Errors(RLWE)]] 문제를 기반으로 합니다. 메시지를 다항식 공간에서 암호화하여 사이퍼텍스트를 생성합니다. 암호화된 사이퍼텍스트는 $(b, a)$ 형태로 표현되며, 여기서 $b$와 $a$는 각각 랜덤 다항식과 에러를 포함합니다. +- 복호화는 이 사이퍼텍스트를 사용하여 원래 메시지를 복원하는 과정입니다. 복호화 함수는 $[b + a \cdot s]_{q0}$로 정의되며, 여기서 $s$는 비밀 키입니다. + +### 기본 연산 +- CKKS는 덧셈과 곱셈과 같은 기본적인 동형 연산을 지원합니다. 두 사이퍼텍스트 $(b1, a1)$와 $(b2, a2)$의 덧셈은 $(b1 + b2, a1 + a2)$로 정의되며, 곱셈은 $(b1b2, a1b2 + a2b1, a1a2)$로 정의됩니다. 이러한 연산은 암호화된 상태에서 직접 수행되며, 결과는 여전히 암호화된 상태로 유지됩니다. + +### Key Switching과 Relinearization +- Key Switching은 암호화된 메시지를 다른 비밀 키로 다시 암호화하는 과정입니다. 이를 통해 비밀 키의 변경 없이도 암호화된 데이터를 안전하게 공유할 수 있습니다. +- Relinearization은 사이퍼텍스트의 길이를 줄이는 과정으로, 이는 연산 중 키의 크기 증가 문제를 해결하는 데 사용됩니다. 이를 통해 연산 효율성을 유지하면서 동형 연산을 계속 수행할 수 있습니다. + +### Rescaling +- Rescaling은 곱셈 연산 후 증가한 스케일링 팩터를 줄이는 과정입니다. 이는 $\Delta^2$로 증가한 스케일링 팩터를 다시 $\Delta$ 수준으로 낮추어 계산 정확도를 유지합니다. + +## 응용 분야 +- **기계 학습:** CKKS는 기계 학습에서 사용되는 다수의 연산이 근사 연산이라는 점에서 매우 적합합니다. 다수의 데이터 포인트를 병렬로 처리할 수 있어 효율성을 극대화할 수 있습니다. +- **통계 분석:** 통계학에서도 대규모 데이터셋에 대한 복잡한 실수 연산을 안전하게 수행할 수 있어 유용합니다. CKKS는 이러한 연산을 암호화된 상태에서 수행함으로써 데이터 프라이버시를 보장합니다. \ 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 new file mode 100644 index 0000000..e69de29 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md new file mode 100644 index 0000000..e69de29 From 64563e2dcf165506e9d47f7b1002faa7c8a34a54 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 08:49:14 +0900 Subject: [PATCH 3/5] Add Bootstrapping docs --- .../Homomorphic Encryption/Bootstrapping.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md index e69de29..69b4d8f 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Bootstrapping.md @@ -0,0 +1,50 @@ +# Bootstrapping in Homomorphic Encryption +**Bootstrapping**은 암호화된 상태에서 시크릿 키를 사용하여 노이즈가 많은 암호문을 노이즈가 적은 암호문으로 변환하는 과정입니다. 이를 통해 암호화된 데이터를 동형적으로 복호화하여 노이즈를 줄이고, 추가적인 동형 연산을 가능하게 합니다. 부트스트래핑은 많은 계산 자원이 필요하며, 동형 암호화(FHE) 기술의 핵심적인 요소입니다. + +## 문제: Modulus 감소 +FHE에서는 각 동형 곱셈이 Modulus를 소모하며, Modulus는 한정된 자원입니다. +Modulus가 소진되면 더 이상의 곱셈이 불가능해집니다. +부트스트래핑은 Modulus를 "리프팅"하여 이 문제를 해결합니다. + +## 부트스트래핑의 정의 +$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$를 암호화합니다. + +## 부트스트래핑의 단계 +1. **Slots-to-Coefficients (StC):** +- 암호문 슬롯을 다항식 계수로 변환합니다. +- 출력: $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$은 작은 값입니다. + +3. **Coefficients-to-Slots (CtS):** +- 다항식 계수를 다시 슬롯으로 변환합니다. +- 출력: $ct''' = Enc \circ Ecd(z + (q0/\Delta) \cdot I)$. + +4. **Homomorphic Modular Reduction (EvalMod):** +- 추가된 배수 $I$를 제거하여 원하는 결과를 얻습니다. +- 출력: $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$의 대표값으로 선택합니다. +그러면 다음과 같은 관계가 성립합니다: +- $ [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$를 암호화한 요소로 간주됩니다. + +## Homomorphic Discrete Fourier Transform (DFT) +DFT 매트릭스 $U$는 다음과 같이 분해할 수 있습니다: +- $ U = D_{\log(N)-1} D_{\log(N)-2} \cdots D_1 P $ + +여기서 $D_i$는 버터플라이 매트릭스이며, $P$는 순열 매트릭스입니다. +효율성을 위해 정확한 DFT 대신 $P$를 제외한 비트 반전 DFT $U P^{-1}$를 사용합니다. + +## Approximate Modular Reduction +모듈러 감소 함수를 근사하기 위해 다항식을 사용합니다. +일반적인 접근 방식은 삼각 함수와 다항식 근사 알고리즘을 사용하는 것입니다. 예를 들어: +- $ \text{Modular Reduction by 1 and } \sin(2\pi x)/2\pi $ +이 함수들은 정수 포인트 근처에서 유사하게 작동하여 Modular 1과 사인 함수 사이의 간극을 줄이는 데 도움이 됩니다. \ No newline at end of file From 25d0156cd08057ee678268fc94b1bd8069396f9c Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 08:57:24 +0900 Subject: [PATCH 4/5] Add BFV, BGV, CGGI, DM docs --- .../Homomorphic Encryption/BFV.md | 17 +++++++++++++++++ .../Homomorphic Encryption/BGV.md | 17 +++++++++++++++++ .../Homomorphic Encryption/CGGI.md | 17 +++++++++++++++++ .../Homomorphic Encryption/DM.md | 17 +++++++++++++++++ 4 files changed, 68 insertions(+) diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md index e69de29..125e938 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BFV.md @@ -0,0 +1,17 @@ +## BFV (Brakerski-Fan-Vercauteren) 스킴 + +BFV 스킴은 [[BGV]]와 유사하지만, [[Learning with Errors(LWE)]] 문제에 기반하고 있습니다. Fan과 Vercauteren이 BGV 스킴을 개선하여 제안한 것입니다. + +### 주요 구성 요소 + +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$는 스케일링 인자입니다. + +### 동형 연산 + +BFV 스킴도 덧셈과 곱셈에 대해 동형성을 가집니다. + +- **동형 덧셈**: $c = c' + c'' = (c'_1 + c''_1, c'_2 + c''_2)$ +- **동형 곱셈**: $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 e69de29..50d274b 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/BGV.md @@ -0,0 +1,17 @@ +## BGV (Brakerski-Gentry-Vaikuntanathan) 스킴 + +BGV 스킴은 브라커스키, 젠트리, 바이쿤타나탄이 개발한 스킴으로, [[Ring Learning with Errors(RLWE)]] 문제에 기반한 동형암호 스킴입니다. + +### 주요 구성 요소 + +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$이 됩니다. + +### 동형 연산 + +BGV 스킴은 덧셈과 곱셈 모두에 대해 동형성을 가집니다. + +- **동형 덧셈**: 두 암호문 $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 diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md index e69de29..27e6317 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/CGGI.md @@ -0,0 +1,17 @@ +## CGGI (Cheon-Gentry-Goldwasser-Ishai) 스킴 + +CGGI 스킴은 Cheon, Gentry, Goldwasser, Ishai가 제안한 스킴으로, [[Bootstrapping]]을 통해 효율성을 높인 동형암호 스킴입니다. + +### 주요 구성 요소 + +1. **비밀키 생성 (Secret Key Generation)**: 비밀키는 LWE 기반 문제에서 생성됩니다. +2. **공개키 생성 (Public Key Generation)**: 공개키는 비밀키와 LWE 샘플로 구성됩니다. +3. **암호화 (Encryption)**: 메시지를 암호화하여 LWE 암호문을 생성합니다. +4. **복호화 (Decryption)**: 암호문을 복호화하여 원래 메시지를 복원합니다. + +### 동형 연산 + +CGGI 스킴은 효율적인 부트스트래핑을 통해 복잡한 연산을 지원합니다. + +- **동형 덧셈**: LWE 샘플의 덧셈으로 수행됩니다. +- **동형 곱셈**: LWE 샘플의 곱셈으로 수행되며, 부트스트래핑을 통해 효율성을 유지합니다. \ 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 e69de29..169eeba 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/DM.md @@ -0,0 +1,17 @@ +## DM (Dijk-Meyer) 스킴 + +DM 스킴은 Dijk와 Meyer가 제안한 스킴으로, [[Learing with Errors(LWE)]] 문제를 기반으로 한 동형암호 스킴입니다. + +### 주요 구성 요소 + +1. **비밀키 생성 (Secret Key Generation)**: 비밀키는 정수 집합에서 선택됩니다. +2. **공개키 생성 (Public Key Generation)**: 공개키는 비밀키와 LWE 샘플로 구성됩니다. +3. **암호화 (Encryption)**: 메시지를 정수로 간주하여 암호화합니다. +4. **복호화 (Decryption)**: 암호문을 복호화하여 원래 메시지를 복원합니다. + +### 동형 연산 + +DM 스킴은 기본적인 동형 연산을 지원합니다. + +- **동형 덧셈**: 정수 덧셈을 통해 수행됩니다. +- **동형 곱셈**: 정수 곱셈을 통해 수행됩니다. \ No newline at end of file From 6090c403ecf3949166ddb7fb70bc7a59de19f677 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 09:09:17 +0900 Subject: [PATCH 5/5] Add fhEVM docs --- ...ion.md => Fully Homomorphic Encryption.md} | 2 +- .../Homomorphic Encryption/fhEVM.md | 78 +++++++++++++++++++ .../Privacy Enhancing Technologies (PET).md | 2 +- 3 files changed, 80 insertions(+), 2 deletions(-) rename content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/{Homomorphic Encryption.md => Fully Homomorphic Encryption.md} (98%) diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md similarity index 98% rename from content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md rename to content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md index 8f3922d..48b6aa3 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Homomorphic Encryption.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/Fully Homomorphic Encryption.md @@ -1,4 +1,4 @@ -# Homomorphic Encryption (HE) +# Fully Homomorphic Encryption (FHE) ## 정의 암호화된 상태에서 연산을 수행할 수 있는 암호학 기법을 의미한다. diff --git a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md index e69de29..070640c 100644 --- a/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md +++ b/content/Privacy Enhancing Technologies (PET)/Homomorphic Encryption/fhEVM.md @@ -0,0 +1,78 @@ +>[!Info] +> 저희 프로젝트는 블록체인과 관련된 암호학을 다루는 범위로 하고 있습니다. 따라서 EVM에 대한 추가적인 자료가 필요하다면, 외부 링크를 참고해주세요: https://ethereum.org/ko/developers/docs/evm/ + +# fhEVM: 블록체인에서 기밀 스마트 계약 실행 + +블록체인에는 항상 딜레마가 있었습니다: 애플리케이션과 사용자 데이터를 온체인에 두어 모두가 볼 수 있게 하거나, 오프체인에 두어 프라이버시는 지키지만 계약 조합성을 잃는 것입니다. 이 문제는 금융과 의료처럼 높은 프라이버시가 요구되는 영역에서 큰 장애물로 작용해왔습니다. 그러나 [[Fully Homomorphic Encryption]] 기술 덕분에 Zama의 fhEVM은 암호화된 데이터에서 기밀 스마트 계약을 실행할 수 있게 해주며, 프라이버시와 조합성을 모두 보장합니다. + +## 블록체인에 FHE가 적용되어야 하는 이유 + +블록체인은 탈중앙성과 투명성을 바탕으로 높은 보안을 제공합니다. 그러나 이러한 투명성 때문에 모든 정보가 퍼블릭하게 공개되므로, 블록체인에서 사용할 수 있는 정보는 제한적입니다. 사용자의 민감한 정보가 필요한 거래 내역이 있다면, 블록체인을 이용할 때 사용자들이 원치 않더라도 민감 정보가 온체인에 기록되어 프라이버시를 지키지 못합니다. 이 때문에 금융, 의료 등의 프라이버시 보호가 중요한 영역에서 블록체인의 활용에 한계가 있습니다. 예를 들어, 전통 금융시장을 이용하던 사용자 입장에서는 자신이 보유한 자산의 양이 누구에게나 공개된다는 것이 부담이 될 수 있습니다. 또한, 금융 거래가 미리 노출되어 MEV를 노리는 빌더들에게 프런트 러닝, 백러닝의 위험에 노출될 수 있습니다. + +## 기존 솔루션의 한계 + +프라이버시 문제를 해결하기 위해 일부 정보는 오프체인에 기록하거나, [[Zero-Knowledge Proofs]] 를 사용하기도 합니다. 그러나 이 방법들은 완벽한 해결책이 될 수 없습니다. 두 방법 모두 오프체인에서 연산을 해야 한다는 한계가 있으며, 이는 트랜잭션의 원자성을 보장하지 않고 스마트 계약의 조합성을 해치게 됩니다. 따라서 온체인에 모든 데이터를 기록하면서도 프라이버시를 지킬 수 있는 방법이 필요하며, 그 답이 바로 FHE입니다. + +## FHE가 프라이버시 문제를 해결하는 방법 + +FHE를 사용하면 온체인 데이터가 암호화되어 기록되기 때문에 개인의 거래 기록이 퍼블릭하게 공개되지 않습니다. 그러나 연산 자체는 공정하게 이루어졌음을 보장하기 때문에, 블록체인의 장점을 그대로 유지하면서도 개인정보를 보호할 수 있습니다. 예를 들어, 내가 얼마를 누구에게 송금했는지 모두가 알 수 없고, 거래 당사자만 알 수 있게 할 수 있으며, 특정 지갑의 잔고를 검색하는 것도 불가능하게 됩니다. + +## Zama의 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 기준)까지 출시되었습니다. + +### fhEVM의 작동 원리 + +1. **Global Public Key**: fhEVM은 글로벌 Public Key를 사용하여 데이터를 암호화하고, FHE를 이용해 연산을 수행합니다. Public Key를 사용함으로써 다른 사용자 및 스마트 계약과의 상호작용에서 이점을 얻습니다. 복호화에 사용되는 Private Key는 여러 Validator들의 승인이 필요하여 보안을 유지할 수 있습니다. + +2. **제출 요구 사항**: fhEVM을 사용하기 위해 사용자는 두 가지를 제출해야 합니다: + - 암호화된 데이터. + - 암호화되기 전 데이터의 존재를 증명하는 Zero-Knowledge Proof (ZKP). + +3. **복호화 방법**: + - **Public Decryption**: 암호화 및 ZKP 제출 후 Validator들이 검증하고 암호화된 데이터를 온체인에 올립니다. 연산 결과는 Validator들이 복호화하여 공개합니다. + - **Private Decryption**: 결과를 혼자 확인하고 싶을 때는 새로운 키 쌍을 생성하여 Public Key를 제공하고, Validator들이 결과 데이터를 새로운 Public Key로 암호화하여 전달합니다. 사용자는 Private Key로 이를 복호화하여 확인합니다. + +### 사용 사례 + +#### Encrypted ERC-20 토큰 + +기존 ERC-20 토큰은 지갑 잔액과 거래 내역이 공개됩니다. FHE를 활용하면 이러한 정보가 비공개로 유지되면서도 간편한 송금 기능을 유지할 수 있습니다. fhEVM에서는 `euint` 데이터 타입을 사용하여 데이터를 암호화하여 저장할 수 있습니다. + +##### 코드 예시 + +```solidity +pragma solidity ^0.8.0; + +import "TFHE.sol"; // Zama의 TFHE 컨트랙트 가져오기 + +contract EncryptedERC20 { + euint public totalSupply; + euint public burnable; + mapping(address => euint) public balance; + + function transfer(address to, euint amount) public { + require(balance[msg.sender].lte(amount), "Insufficient balance"); + balance[msg.sender] = balance[msg.sender].sub(amount); + balance[to] = balance[to].add(amount); + } + + function checkBalance(address owner) public { + euint encryptedBalance = balance[owner]; + // 재암호화 및 복호화 과정 + } +} +``` + +#### Blind Auctions + +Blind Auction에서는 입찰 금액이 입찰자 외에는 비공개됩니다. 이 과정을 통해 공정한 경쟁을 보장하고 입찰 금액의 조기 노출을 방지합니다. + +##### 작동 방식 + +1. **입찰 제출**: 사용자는 암호화된 입찰 금액과 ZKP를 제출합니다. +2. **2단계 - 공개**: 모든 입찰이 완료되면, `dIhaveHIghest()`를 통해 가장 높은 입찰 금액을 확인합니다. 가장 높은 입찰자는 상품을 클레임하고, 나머지는 입찰 금액을 반환받습니다. +3. **마무리**: 경매 주최자는 가장 높은 입찰 금액을 가져갑니다. + +### Reference +Crypto meets Crypto: FHE for Blockchain (하) 편 \ No newline at end of file diff --git a/content/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md b/content/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md index c83a461..c5ff537 100644 --- a/content/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md +++ b/content/Privacy Enhancing Technologies (PET)/Privacy Enhancing Technologies (PET).md @@ -2,7 +2,7 @@ > [[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. -- [[Homomorphic Encryption]] +- [[Fully Homomorphic Encryption]] - [[Secure Multiparty Computation]] - [[Differential Privacy]] - [[Federated Learning]]