-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
๋ฐ์ ์ฌ
committed
Aug 20, 2023
1 parent
680b0a2
commit f5b2f60
Showing
1 changed file
with
113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
--- | ||
layout: post | ||
title: "Multi Key Homomorphic Encryption - 1" | ||
date: 2023-08-20 19:00:00 | ||
author: cs71107 | ||
tags: [cryptography] | ||
--- | ||
|
||
# Introduction | ||
|
||
์ ๋ฒ [๊ธ](https://infossm.github.io/blog/2023/07/23/MPHE/)์์, Multi Party HE์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช ์ ํ์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ Multi Key HE์ ๋ํด์ ๊ฐ๋จํ ์ค๋ช ํ๋ ๊ธ์ ์ฐ๋ ค๊ณ ํฉ๋๋ค. | ||
|
||
์ด๋ฒ์ ๊ธฐ์ค์ผ๋ก ํ ๋ ผ๋ฌธ์ [์ฌ๊ธฐ](https://eprint.iacr.org/2019/524)์์ ๋ณด์ค ์ ์์ผ๋ฉฐ, ์ ์๋ค์ ์ด๋ฆ์ ๋ฐ์ CDKS scheme์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ๋ ผ๋ฌธ์์๋ ๊ธฐ๋ณธ์ ์ธ Multi Key HE์ ๋ํ ์ค๊ณ๋ฅผ ๋ฐํ์ผ๋ก, BFV, CKKS์ ์ ์ฉ์์ผ Multi Key BFV, Multi Key CKKS ์ญ์ ์ค๋ช ํ๊ณ ์์ผ๋, ์ด๋ฒ ๊ธ์์๋ ์์ง CKKS๋ฅผ ์์ธํ ์ค๋ช ํ ์ ๋ ์๊ณ , ์ ์ฉ๋ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ผ๋ฏ๋ก, Multi Key HE์ ๊ตฌ์กฐ์ ๋ํด์๋ง ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค. | ||
|
||
์ ๋ฒ ๊ธ์ introduction์์๋ ์ค๋ช ํ์ง๋ง, remind๋ฅผ ์ํด์ ๋ค์ ์ฐ์๋ฉด, ๊ธฐ์กด HE์๋ ํฐ drawback์ด ์๋๋ฐ, ๊ทธ๊ฒ์ secret key๊ฐ ํ๋๋ก ๊ณ ์ ๋ผ ์๊ณ , ๊ทธ๋ ๊ธฐ ์ํด์ ์ฌ๋ฌ party๊ฐ ์ด๊ธฐ์ secret key๋ฅผ ์ด๋ป๊ฒ๋ ์์ ํ๊ฒ '์' ๊ณต์ ํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ด๋ ค์ด ๋ฌธ์ ์ ๋๋ค. | ||
|
||
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, HE๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ฒ ๋ฉ๋๋ค. | ||
|
||
์ฒซ ๋ฒ์งธ ๋ฐฉํฅ์ Multi Party HE (Threshold) ๋ฐฉ์์ผ๋ก, ์์ํ ๋ Party๋ค์ set์ด ์์ผ๋ฉด secret key๋ฅผ ๋๋์ด ๊ฐ์ง๋ ๋ฐฉ์์ ๋๋ค. ํ๋์ secret key์ ๋ํด public key๋ฅผ ์์ฑํ์ฌ openํ๋ฉฐ, ๋ฐ๋ผ์ ์ฌ์ค์ key generation ์ดํ์๋ ํ๋์ key์ ๋ํ scheme์ฒ๋ผ ๋์ํฉ๋๋ค. ์ ๋ฒ ๊ธ์์ ์ค๋ช ํ ๋ฐฉ์์ด ๋ฐ๋ก ์ด ๋ฐฉ์์ ๋๋ค. | ||
|
||
๋ ๋ฒ์งธ๋ ๋ฐฉํฅ์ Multi Key HE ๋ฐฉ์์ผ๋ก, ๊ฐ๊ฐ์ Party๊ฐ ๊ณ ์ ์ secret key๋ฅผ ์์ฑํ๊ณ , ๊ทธ์ ๋์๋๋ public key๋ฅผ open ํฉ๋๋ค. evaluation์ด ์งํ๋จ์ ๋ฐ๋ผ์, ciphertext์ ๊ธธ์ด๊ฐ ๋ฌ๋ผ์ง๋ฉฐ, decrypt๋ฅผ ํ๊ธฐ ์ํด ciphertext์ associate๋ ๋ชจ๋ party์ secret key๊ฐ ํ์ํฉ๋๋ค. | ||
|
||
๋ ๋ฒ์งธ ๋ฐฉํฅ์ด ์ด ๊ธ์์ ์ค๋ช ํ Multi Key HE ๋ฐฉ์์ ๋๋ค. ์์ผ๋ก ๊ฐ๋จํ๊ฒ MKHE๋ก ์ค์ฌ ์ฐ๊ฒ ์ต๋๋ค. | ||
|
||
|
||
# Backgrounds | ||
|
||
## Notation | ||
|
||
์ด ๊ธ์์๋ ๋ ผ๋ฌธ์์ ์ฌ์ฉํ Notation์ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ธ์ ๊ด๋ จ๋ ๊ฒ๋ค์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. | ||
|
||
- ๋จผ์ , $\textbf{u}, \textbf{v}$์ฒ๋ผ ๊ตต์ ์๋ฌธ์๋ค์ vector๋ฅผ ๋ํ๋ ๋๋ค. | ||
- ๊ทธ๋ฆฌ๊ณ , $\langle \textbf{u} , \textbf{v} \rangle$๋ vector์ innner product๋ฅผ ๋ํ๋ ๋๋ค. | ||
- real number $r$์ ๋ํด, $\lfloor r \rceil$์ ๊ฐ์ฅ ๊ฐ๊น์ด integer๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. | ||
- $x \leftarrow D$๋ distribution $D$์ ๋ฐ๋ผ $x$๋ฅผ ์ถ์ถํ์์ ๋ํ๋ ๋๋ค. | ||
- finite set $S$์ ๋ํด์, $U(S)$๋ $S$์ ๊ฐ ์์๋ฅผ uniformํ๊ฒ ์ถ์ถํ๋ ๋ถํฌ๋ฅผ ๋ํ๋ ๋๋ค. | ||
- ๋ฏธ๋ฆฌ ์ ํด์ง $n$์ power of 2๋ก์จ, $R = \mathbb{Z} [ X ] / (X^{n} + 1)$ ์ ๋๋ค. | ||
- $R_q = R / (q \cdot R)$ ์ ๋๋ค. | ||
- $\chi$๋ $R_q$์์ secret key๋ฅผ ์ถ์ถํ๋ distribution์ ๋๋ค. | ||
- $\psi$๋ $R$์์ error๋ฅผ ์ถ์ถํ๋ distribution์ ๋๋ค. | ||
- $d$๋ gadget decomposition์ ์ํด decompose๋ ๋, gadget vector์ ์ฐจ์์ ๋๋ค. | ||
|
||
## LWE, RLWE problem | ||
|
||
LWE, RLWE problem์ BFV, CKKS๋ฑ์ scheme์ด ๊ธฐ๋ฐํ๊ณ ์๋ problem์ ๋๋ค. ์ง๊ธ๊น์ง ๊ธ์์ ์ค๋ช ํ ์ ์ด ์๋ ๊ฒ ๊ฐ์์, ์ด ๊ธ์์ ๊ฐ๋จํ๊ฒ๋๋ง ํ์ด์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋์ ๋ฌธ์ ๋ค์ ๋ชจ๋ ์ ์ ํ parameter์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ ํํ ๊ฒฝ์ฐ ์ด๋ ต๋ค๋ ๊ฒ์ด ์๋ ค์ ธ ์์ต๋๋ค. | ||
|
||
### LWE - search problem | ||
|
||
$U( \mathbb{Z}^{n}_q )$์์ ์ถ์ถํ vector $\textbf{a}$์ ๋ํด์, ์ ์ ํ distribution์์ ์ถ์ถํ $\textbf{s}$์ small error $e$์ ๋ํด์, $b = \langle \textbf{a} , \textbf{s} \rangle + e$๋ผ๊ณ ํฉ์๋ค. | ||
|
||
search LWE problem์, $b, \textbf{a}$๊ฐ ์ฃผ์ด์ก์ ๋, $\textbf{s}$๋ฅผ ๋ณต์ํ๋ ๋ฌธ์ ์ ๋๋ค. | ||
|
||
### LWE - decision problem | ||
|
||
์ด๋ค $\textbf{a} \in \mathbb{Z}^{n}_q$, $b \in \mathbb{Z}_q$์ธ pair $(\textbf{a}, b)$๊ฐ ์ฃผ์ด์ก์ ๋ $b$๊ฐ uniformly randomํ๊ฒ ์ถ์ถ๋ ๊ฒ์ธ์ง, ์๋๋ฉด ์์ seacrh problem์ ๋์๋ ๊ฒ์ฒ๋ผ ์ ์ ํ $\textbf{s}$์ small error $e$์ ์ํด ์์ฑ๋ ๊ฒ์ธ์ง๋ฅผ distinguishํ๋ ๋ฌธ์ ์ ๋๋ค. | ||
|
||
### RLWE problem | ||
|
||
RLWE problem์ ์์ LWE๋ฅผ Polynomial Ring์์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. (์์ฃผ ์ ํํ์ง ์์ง๋ง) ์์ seacrh LWE ๋ฌธ์ ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๋ฉด, $a \in R_q$์ด๊ณ , $s , e \in R_q$ ์ ๋ํด, $b = a \cdot s + e$๋ผ๊ณ ํ ๋ค, $a, b$๊ฐ ์ฃผ์ด์ก์ ๋, $s$๋ฅผ ์ฐพ๋ ๊ฒ์ด RLWE problem์ด ๋ฉ๋๋ค. | ||
|
||
์์ ์์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, $b$๊ฐ LWE์์๋ $\mathbb{Z}_q$์์ ์์ง๋ง, RLWE์์๋ $R_q$์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋ณดํต์ scheme๋ค์ RLWE problem์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. | ||
|
||
## Gadget Decomposition | ||
|
||
$\textbf{g} = (g_{i}) \in \mathbb{Z}^d$๋ฅผ gadget vector๋ผ๊ณ ํฉ์๋ค. | ||
|
||
decomposition $\textbf{g}^{-1} : R_{q} \rightarrow R^{d}$๊ฐ ์์ด์, ๊ฐ $a \in R_q$์ ๋ํด, $\textbf{g}^{-1}(a) = \textbf{u}$๋ผ๊ณ ํฉ์๋ค. ์ด๋, vector $\textbf{u} = (u_{i})$์ ๋ํด, ๊ฐ $u_i$๋ ์์ ๋คํญ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ , $a = \sum^{d-1}_{i = 0} g_{i} \cdot u_{i}$ ๊ฐ ์ฑ๋ฆฝํด์ผ ํฉ๋๋ค. | ||
|
||
gadget decomposition์ noise ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์, HE์์ ๊ต์ฅํ ํญ๋๊ฒ ์ฐ์ ๋๋ค. ๋ค์ํ gadget vector๊ฐ ์กด์ฌํ๋๋ฐ, RNS system์ ๊ธฐ๋ฐํ ๊ฒ๋ค๋ ์๊ณ , digit decomposition์ ๊ธฐ๋ฐํ ๊ฒ๋ค๋ ์์ต๋๋ค. | ||
|
||
# MKHE Process | ||
|
||
MKHE์ MPHE์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์, MKHE์์๋ ๊ฐ party๊ฐ ๊ฐ์์ ๊ณ ์ ํ secret key๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๊ฐ์ secret key๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ทธ secret key์ ๋์๋๋ public key๋ฅผ ์์ฑํ์ฌ ๊ณต๊ฐํฉ๋๋ค. | ||
|
||
๊ทธ๋ฆฌ๊ณ , MKHE์์๋ ์ฐ์ฐ์ ์งํํจ์ ๋ฐ๋ผ, ciphertext์ ํฌ๊ธฐ๊ฐ ์ ์ ์ปค์ง๋๋ค. | ||
|
||
Multi-key ๋ฐฉ์์ ์ ์ฉํ ๊ฒ์ด BFV๋, CKKS๋์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง, ์ด๋ค ciphertext $ct = (c_{0}, c_{1})$๋ฅผ decryptํ๊ธฐ ์ํด์, ๊ธฐ๋ณธ์ ์ผ๋ก (party ํ๋ ๊ธฐ์ค) ๋์๋๋ secret key $s$์ ๋ํด, $c_{0} + c_{1} \cdot s$๋ฅผ ํ๋ฉด ์ํ๋ plaintext๋ฅผ ์ป๋๋ค๊ณ ํฉ์๋ค. | ||
|
||
ํ์ฌ ์ฐ์ฐ์ 1๋ฒ party์ 2๋ฒ party๊ฐ ์๋ค๊ณ ํฉ์๋ค. 1๋ฒ party์์ ์ด๋ค message $m_{1}$์ encryptํด์ ciphertext $ct_1 = (c_{1,0}, c_{1,1})$์, 2๋ฒ party์์ ์ด๋ค message $m_{2}$๋ฅผ encryptํด์ ciphertext $ct_2 = (c_{2,0}, c_{2,1})$์, ์์ฑํ๋ค๊ณ ํฉ์๋ค. | ||
|
||
1๋ฒ party์์ ์์ฑํ secret key๋ฅผ $s_{1}$๋ผ๊ณ ํ๊ณ , 2๋ฒ party์์ ์์ฑํ secret key๋ฅผ $s_{2}$๋ผ๊ณ ํฉ์๋ค. ๊ทธ๋ผ | ||
|
||
$ct_1$์ decryptํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์์ ๋ฐฉ์๋๋ก $c_{1,0} + c_{1,1} \cdot s_{1}$์ ํ๋ฉด ๋ ๊ฒ์ด๊ณ , $ct_2$๋ ๋น์ทํ ๊ฒ์ ๋๋ค. | ||
|
||
๊ทธ๋ผ, $ct_1 + ct_2$๋ฅผ decryptํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ฐ์ $s_1, s_2$๊ฐ ๋ชจ๋ ํ์ํจ์ ๋ถ๋ช ํด๋ณด์ ๋๋ค. | ||
|
||
ํ์ง๋ง, $ct_1 + ct_2$๊ฐ ์ฌ์ ํ ๋ ๋คํญ์์ pair ํํ๋ผ๋ฉด, ์ด๋ค ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑํด์ผ ํ ์ง ์ฌ์ด ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์ต๋๋ค. | ||
|
||
๊ทธ๋ ์ง๋ง $ct_1 + ct_2$๊ฐ ๋ ๋คํญ์์ pair ํํ๊ฐ ์๋๋ผ๋ฉด, ์ด๋จ๊น์? $ct_1 + ct_2 = (c_0, c_1, c_2)$์ด๋ผ๊ณ ํฉ์๋ค. ๊ทธ๋ฆฌ๊ณ , $c_0 = c_{1,0} + c_{2,0}, c_1 = c_{1,1}, c_2 = c_{2,1}$์ ๊ฐ์ด ์ ํฉ์๋ค. | ||
|
||
๊ทธ๋ผ $c_0 + c_1 \cdot s_1 + c_2 \cdot s_2 = c_{1,0} + c_{2,0} + c_{1,1} \cdot s_1 + c_{2,1} \cdot s_2 = (c_{1,0} + c_{1,1} \cdot s_{1}) + (c_{2,0} + c_{2,1} \cdot s_{2})$ ์ ๊ฐ์ด ๋๋ฏ๋ก, decryptํ ๊ฒฐ๊ณผ๊ฐ plaintext๋ฅผ ๋ํ ๊ฒฐ๊ณผ์ ๊ฐ์์ง ๊ฒ์ ๋๋ค. | ||
|
||
multiplication์ ๊ฒฝ์ฐ ์ข ๋ ๋ณต์กํ logic์ ๋ฐ๋ฅด์ง๋ง, ๋น์ทํ๊ฒ ciphertext์ ํฌ๊ธฐ๊ฐ ๋์ด๋ฉ๋๋ค. | ||
|
||
์ข ๋ ์ ํํ ํํํ๋ฉด, evaluation circuit์ involvingํ party๊ฐ $k$๊ฐ๊ฐ ์๋ค๋ฉด, ๊ทธ ๊ฒฐ๊ณผ์ธ $\overline{ct}$์ ๋ํด $\overline{ct} \in R^{k+1}_q$์ ๋๋ค. | ||
|
||
์์ธํ logic์ ์ฌ์ ์ ๋ค์ ๊ธ๋ก ๋๊ธฐ๋๋ก ํ๊ฒ ์ต๋๋ค. | ||
|
||
# Conclusion | ||
|
||
์ด๊ธ์์๋ MKHE์ ํ์ํ background์, ๋๋ต์ ์ธ process๋ฅผ ์ค๋ช ํ์ต๋๋ค. | ||
|
||
process๋ฅผ ๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ๋์ถฉ ๋์น์ฑ์ จ๊ฒ ์ง๋ง, MPHE์ ๋นํด์ MKHE๋ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ฐ์ฐ์ ํ ๋๋ง๋ค ciphertext ํฌ๊ธฐ๊ฐ ๋์ด๋๋๊น์. | ||
|
||
ํ์ง๋ง, secret key๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ๋ฏ๋ก, key์ ์์ฑ์ด ๋ค๋ฅธ party์ ๋ํด dependentํ์ง ์์์, ์๋ก์ด party์ ์ถ๊ฐ๊ฐ ์์ ๋กญ์ต๋๋ค. ๊ทธ๋ฅ secret key๋ฅผ ์์ฑํ๊ณ , ๊ทธ์ ๋์๋๋ public key๋ฅผ ๊ณต๊ฐํ๋ฉด ๋๋๊น์. | ||
|
||
์ด๋ฐ flexibity๊ฐ MKHE์ ์ฅ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. | ||
|
||
๋ค์ ๊ธ์์๋ MKHE์ ์ฐ์ฐ๋ค์ ๋ํด์ ์ข ๋ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ถ์กฑํ ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. | ||
|
||
# Reference | ||
|
||
- https://eprint.iacr.org/2019/524 |