Homomorphic Encryption (HE) ์ ์ํธ๋ฌธ ์ํ์์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ์ํธ ๋ฐฉ์์
๋๋ค.
์ผ๋ฐ ์ํธ๋ Dec(Enc(a) + Enc(b)) ์ ๊ฐ์ ํฉ์ฐ์ ์๋ํ๋ฉด ์๋ฏธ ์๋ ๋นํธ๊ฐ ๋์ค์ง๋ง,
HE ์์๋ ์ ์๋ ์ฐ์ฐ ์งํฉ(+, ร, โฆ) ์์์ Dec(Enc(a) โ Enc(b)) = a + b ๊ฐ ์ฑ๋ฆฝํฉ๋๋ค.
| ๋ถ๋ฅ | ์ง์ ์ฐ์ฐ | ๋ํ |
|---|---|---|
| PHE (Partially HE) | ํ ์ข ๋ฅ๋ง (์: + ๋ง, ๋๋ ร ๋ง) | Paillier(+), RSA(ร) |
| SHE / Leveled HE | + ์ ร ๋ชจ๋, ์ ํํ ๊น์ด๊น์ง | SEAL BFV/CKKS |
| FHE | ๋ฌด์ ํ ๊น์ด (bootstrapping ์ผ๋ก ๋ ธ์ด์ฆ ์ฌ์ ๋ฆฌ) | SEAL(๋ฏธ์ฌ์ฉ), HElib, OpenFHE |
๋ณธ ๋ฐ๋ชจ๋ SEAL ์ leveled HE๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค โ bootstrapping ์์ด ๋ฏธ๋ฆฌ ์ ํ ๊น์ด๊น์ง๋ง ์์ .
| BFV | CKKS | |
|---|---|---|
| ๋ฐ์ดํฐ ํ์ | ์ ์ ๋ฒกํฐ | ์ค์/๋ณต์์ ๋ฒกํฐ |
| ์ ํ์ฑ | ์ ํ (exact) | ๊ทผ์ฌ (approximate) |
| ๋ํ ์ฌ์ฉ์ฒ | ๋น๊ตยท๊ฒ์ยท์นด์ดํธยท์ฒดํฌ์ฌ | ML ์ถ๋ก ยทํต๊ณยทํ๊ท |
| ํน์ ์ฐ์ฐ | โ | rescaleToNext (์ค์ผ์ผ ์ ๋ฆฌ) |
| plain modulus | ํ์ (์ ์ ๋ชจ๋๋ฌ) | ์์ |
| ์ด ๋ฐ๋ชจ์์ | RRN ๊ฒ์ยทSEAL ์ ์ ์ฐ์ฐ | SEAL ๋ถ๋์์ ์ฐ์ฐ |
๋ณธ ๋ฐ๋ชจ์ SEAL ์ปจํ ์คํธ๋ ๋ค์ 4๊ฐ์ง ์ง๋ ฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ๊ฐ ๋๊ฐ ๊ฐ์ ธ์ผ ํ๊ณ ์ด๋๊น์ง ๋ ธ์ถ ๊ฐ๋ฅํ์ง ๊ตฌ๋ถ์ด ํ์ํฉ๋๋ค.
| ๊ฐ์ฒด | ๋ณดํธ ๋ ๋ฒจ | ์ญํ | ๋ ธ์ถ ์ ์ํ |
|---|---|---|---|
| Encryption Parameters | PUBLIC | ์คํด/poly_modulus_degree/coefficientยทplain modulus ๋ฑ ์ปจํ ์คํธ ์ ์๊ฐ. ๋ค๋ฅธ PC ๊ฐ ๊ฐ์ ์ปจํ ์คํธ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ฉํ ์ ๋ณด. | ์์ โ ํ๋ฌธ๋ ํค๋ ๋ค์ด์์ง ์์ |
| Public Key | PUBLIC | ํ๋ฌธ โ ์ํธ๋ฌธ. ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ผ ํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ฐฐํฌ ๊ฐ๋ฅ. | ์์ โ ๊ณต๊ฐํค๋ง์ผ๋ก ํ๋ฌธ ๋ณต์ ๋ถ๊ฐ |
| Secret Key | SECRET | ์ํธ๋ฌธ โ ํ๋ฌธ. ๊ฐ์ ์ปจํ ์คํธ๋ก ๋ง๋ค์ด์ง ๋ชจ๋ ์ํธ๋ฌธ์ ๋ณตํธํํ ์ ์๋ ์ ์ผํ ํค. | ์น๋ช ์ โ ๋ ธ์ถ ์ ํด๋น ์ปจํ ์คํธ์ ๋ชจ๋ ๋ฐ์ดํฐ ํ๋ฌธ ๋ ธ์ถ |
| Relin Keys | EVALUATION | ๊ณฑ์ ์งํ ๊ธธ์ด๊ฐ ๋์ด๋ ์ํธ๋ฌธ(degree-3 polynomial)์ ํ์ค ๊ธธ์ด(degree-2)๋ก ์ค์ด๋ key-switching ํค. ๋ํ์ฐ์ฐ์ ์ํํ๋ ์๋ฒ๊ฐ ๋ณด์ . | ์ด๋ก ์ ๋งค์ฐ ์ ํ์ ์ธ ๋ถ๋ถ ๋ ธ์ถ ๊ฐ๋ฅ โ ํ๋ฌธ ๋ณต์์๋ ์ฌ์ฉ ๋ถ๊ฐํ์ง๋ง ๋ฌด๊ด๊ณ์์๊ฒ๋ ๋น๊ณต๊ฐ ์ ์ง๊ฐ ๊ถ์ฅ๋จ |
| Galois Keys (์ ํ) | EVALUATION | ์ฌ๋กฏ ํ์ (rotate) ์ ํ์ํ key-switching ํค. SIMD ์ฌ๋กฏ ํฉ์ฐยท๋ด์ ๋ฑ์ ๊ฐ๋ฅํ๊ฒ ํจ. ๋ณธ ๋ฐ๋ชจ๋ ๋ฏธ์ฌ์ฉ. | Relin Keys ์ ๋์ผํ ์นดํ ๊ณ ๋ฆฌ โ ํ๋ฌธ ๋ณต์ ๋ถ๊ฐ์ง๋ง ๋น๊ณต๊ฐ ๊ถ์ฅ |
โโโ EncryptionParameters โโโโโโโโโโ
โ scheme, poly_modulus_degree, โ
โ coeff_modulus, plain_modulus โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโ
โ Context โ ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ (parametersSet())
โโโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโ
โ KeyGenerator โ
โโโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
โ โ โ โ
publicKey secretKey relinKeys galoisKeys (์ ํ)
[PUBLIC] [SECRET] [EVAL] [EVAL]
โ โ โ
์ํธํ ๋ณตํธํ ์๋ฒ ๋ํ์ฐ์ฐ ํ
ct ํฌ๊ธฐ ์ ์ํ
| EncParms | publicKey | secretKey | relinKeys | |
|---|---|---|---|---|
| ๋ฐ์ดํฐ ์์ ์(ํด๋ผ์ด์ธํธ) | โ | โ | โ | โ (์์ฑยท๋ฐฐํฌ) |
| ํ๊ฐ์(์๋ฒ) | โ | โ | โ | โ (์์ ํด์ ์ฌ์ฉ) |
| ์ 3์(ํ๋ฌธ ๋ฐ์ดํฐ ์ก์ ) | โ | โ | โ | โ |
| ์ฐ์ฐ | API (node-seal) | ๊น์ด ์ฆ๊ฐ | ๋น๊ณ |
|---|---|---|---|
| ๋ง์ (ct + ct) | evaluator.add | 0 | ๋ ธ์ด์ฆ ๊ฑฐ์ ๋ณํ ์์ |
| ๋ง์ (ct + plain) | addPlain | 0 | โ |
| ๋บ์ | sub, subPlain | 0 | โ |
| ๊ณฑ์ (ct ร ct) | multiply | +1 | ct ํฌ๊ธฐ โ โ relinearize ํ์ |
| ๊ณฑ์ (ct ร plain) | multiplyPlain | +1 | relinearize ๋ถํ์ |
| ์ ๊ณฑ | square | +1 | multiply ์ ํน์ ์ผ์ด์ค |
| ๋ถํธ ๋ฐ์ | negate | 0 | โ |
| ํ์ (SIMD) | rotateRows | 0 | galoisKeys ํ์ |
| ์ค์ผ์ผ ์ ๋ฆฌ(CKKS ์ ์ฉ) | rescaleToNext | ๋ ๋ฒจ 1โ | ๊ณฑ์ ํ ํธ์ถ |
BFV ์ ๋ชจ๋ ์ํธ๋ฌธ์ ์ฝ๊ฐ์ ๋ ธ์ด์ฆ๋ฅผ ๋๋ฐํฉ๋๋ค. ๊ณฑ์ ์ ๊ฑฐ๋ญํ ์๋ก ๋ ธ์ด์ฆ๊ฐ ์ฆํญ๋๊ณ , budget ≤ 0 ์ด ๋๋ฉด ๋ณตํธํ ๊ฒฐ๊ณผ๊ฐ ์์์ ์ ์๊ฐ ๋ฉ๋๋ค (= ๋ฐ์ดํฐ๊ฐ ๋ง๊ฐ์ง, ์๋).
| poly_modulus_degree | coeff modulus ํฉ | fresh ct budget | ๊ณฑ์ 1ํ ํ | ๊ณฑ์ 2ํ ํ |
|---|---|---|---|---|
| 2048 | ~54 bit | ~12 bit | ์์ โ ์คํจ | โ |
| 4096 | ~109 bit | ~50 bit | ~20 bit | ์์ โ ์คํจ |
| 8192 | ~218 bit | ~150 bit | ~110 bit | ~70-90 bit โ |
| 16384 | ~438 bit | ~370 bit | ~330 bit | ~290 bit |
์ค์ budget ์ plain_modulus ๋นํธ ํฌ๊ธฐ์ ์ฐ์ฐ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ณ๋ โ ์๋ ๋ณธ ๋ฐ๋ชจ์ plain_modulus โ 220 ๊ฐ์ ์ ๋๋ต๊ฐ.
(d-1)(d-2)(d-3)(d-4) ํ๊ฐ๊ฐ ๊น์ด 2 ๊ณฑ์
์ด๋ผ 4096 ์ budget ์ผ๋ก๋ ๋ถ์กฑ.
HE ๋ ๋น๊ต(==, <) ๋ฅผ ์ง์ ์ง์ํ์ง ์์ง๋ง, ๋ฑ์น ๊ฒ์ฌ๋ ์ฐจ์ ์ ๊ณฑ ๋๋ ๋คํญ์ zero-test ๋ก ํ์ํ ์ ์์ต๋๋ค.
x โ {aโ, โฆ, aโ}
p(x) = (x โ aโ)(x โ aโ) โฆ (x โ aโ)
= 0 โ x โ {aโ, aโ, โฆ, aโ}
์ ์์ ๋คํญ์ ๊ณฑ์
๋ง์ผ๋ก ํ๊ฐ ๊ฐ๋ฅ โ HE ์นํ์ . RRN ์ ์ฑ๋ณ์๋ฆฌ(7๋ฒ์งธ ์ซ์) ๊ฐ {1,2,3,4} ์ค ํ๋์ธ์ง ํ์ธํ๋ ๋ฐ ์ ํํ ์ด ํธ๋ฆญ์ ์๋๋ค.
// ๊ฐ ํ๋ณด ct ์ ๋ํด (depth 2)
d1 = ct โ Plain([1,1,...])
d2 = ct โ Plain([2,2,...])
d3 = ct โ Plain([3,3,...])
d4 = ct โ Plain([4,4,...])
m12 = d1 ร d2; relinearize(m12)
m34 = d3 ร d4; relinearize(m34)
p = m12 ร m34; relinearize(p)
// โ ์ฌ๋กฏ 6 ์ ํ๋ฌธ ๊ฐ์ด 0 โ ์ฑ๋ณ์๋ฆฌ โ {1,2,3,4}
x == tdiff = ct โ Plain(t) sq = diff ร diff // 0 ๋ง 0, ๋ค๋ฅธ ๊ฐ์ ์์ // โ ๋ชจ๋ ์ฌ๋กฏ์ด 0 โ ์์ ์ผ์น
ํญ 4 ์ "Keyword Search (HE)" ๋ ์์์ ํค์๋๋ฅผ ๋ํ์ํธ ์์์ ๊ฒ์ํฉ๋๋ค. ํต์ฌ ์์ด๋์ด๋ ๋ฌธ์ ๋จ์ ๋น๊ต๋ฅผ SIMD ์ฌ๋กฏ์ ํผ์น ํ ๋ง์คํฌ๋ฅผ ๊ณฑํด ์์ผ๋์นด๋๋ฅผ ์ฒ๋ฆฌ ํ๋ ๊ฒ:
ํจํด P = "p?ssword" (? = '*' ์์ผ๋์นด๋) target = ['p', 0, 's', 's', 'w', 'o', 'r', 'd'] mask = [ 1, 0, 1, 1, 1, 1, 1, 1 ] (์์ผ๋์นด๋ ์๋ฆฌ๋ง 0) token = "password" (codepoint vector) ct = Enc(token) ์๋ฒ: diff = ct โ Plain(target) // ์ฌ๋กฏ๋ณ ์ฐจ์ด sq = diff ร diff // ์์ ์ํฅ ์ ๊ฑฐ (depth 1) out = sq ร Plain(mask) // ์์ผ๋์นด๋ ์๋ฆฌ๋ 0 ์ ์ง (depth 2) ํด๋ผ์ด์ธํธ: out ๋ณตํธํ โ ์ฌ๋กฏ 0..L-1 ํฉ = 0 โ MATCH
์ฌ๋กฏ ๋จ์ SIMD ๋น๊ต๋ ๊ฐ์ ๊ธธ์ด์ ๋ฒกํฐ๋ผ๋ฆฌ๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ํด๋ผ์ด์ธํธ์์ ๊ณต๋ฐฑ ๋จ์๋ก ํ ํฐํํ ๋ค ํจํด ๊ธธ์ด์ ์ ํํ ์ผ์นํ๋ ํ ํฐ๋ง ๊ณจ๋ผ ์ํธํํฉ๋๋ค.
'*' ๋ ํ ๊ธ์ ์์ผ๋์นด๋๋ผ๋ ์ ์ ์ฃผ์ โ pa*sword ๋ 8์ ํ ํฐ๋ง, pa**word ๋ 8์ ํ ํฐ ์ค ์๋ฆฌ 2,3 ์ด ์์์ธ ๊ฒ๋ง.
์๋ฆฟ์๋ณ char class (์: \d = [0-9]) ๋ ๊ทธ ์๋ฆฌ์ ์ฝ๋ํฌ์ธํธ c ๊ฐ ์งํฉ ์์ ์๋์ง๋ฅผ
๋คํญ์ zero-test๋ก ํ์ด์ผ ํฉ๋๋ค. ์ฆ ์๋ฆฌ๋ง๋ค
(c โ vโ)(c โ vโ)โฆ(c โ vโ) ๊ณฑ์
ํธ๋ฆฌ๋ฅผ ํ๊ฐํด์ผ ํ๊ณ , ์๋ฆฌ๋ง๋ค ๋คํญ์ ์ฐจ์๊ฐ ๋ฌ๋ผ
SIMD ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก
[0-9] ๋ง์ผ๋ก ๊น์ด โ logโ10 โ 4)
๋ณธ ๋ฐ๋ชจ๋ ์์ผ๋์นด๋(*) ๋ง ์ง์ํด ๊น์ด 2 ํ๋ก(8192) ์์ ๋น ๋ฅด๊ฒ ๋์ํ๋๋ก ํ์ต๋๋ค.
ํ์ํ๋ฉด ๊ฐ์ ํจํด ๋งค์นญ ํธ๋ฆญ์ ์ฌ๋ฌ ์๋ฆฌ์ ์ผ๋ฐํํด char class ๊น์ง ํ์ฅ ๊ฐ๋ฅ (์ ํ๊ณ๋ฅผ ๊ฐ์ํ๋ฉด).
ํญ 5 ์ "๊ฐ๋ช
ํ/์ต๋ช
ํ" ๋ PII Scanner ์ ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ
ISO/IEC 20889(๊ธฐ๋ฒ ๋ถ๋ฅ) ์ ๋ฐ๋ผ ๋ณํํ๊ณ
ISO/IEC 27559(์ ์ฐจ ํ๋ ์์ํฌ) ์ ํ๋ฆ์ ๋ง์ถฐ 4๊ฐ ๊ดํ ์ ๋ฒ๋ น์ ๋ํ ์ค์ ์ฌ๋ถ๋ฅผ ํ๊ฐํฉ๋๋ค.
์ฉ์ด๋ W3C DPV 2.0 ์ dpv-pd:* compact IRI ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
dpv-pd:NationalIdentificationNumber ๋ฑ| ๊ดํ | ๋ฒ๋ น / ํ์ค | ๊ฐ๋ช ํยท์ต๋ช ํ ์ ์์ ํต์ฌ |
|---|---|---|
| ๐ฐ๐ท KR | ๊ฐ์ธ์ ๋ณด๋ณดํธ๋ฒ ยง2ยทยง28-2~7 + PIPC ๊ฐ๋ช ์ ๋ณด ์ฒ๋ฆฌ ๊ฐ์ด๋๋ผ์ธ | ๊ฐ๋ช : ์ถ๊ฐ์ ๋ณด ์์ด๋ ์๋ณ ๋ถ๊ฐ (๋ถ๋ฆฌ ๋ณด๊ด ์๋ฌด). ์ต๋ช : ์ด๋ค ์ถ๊ฐ์ ๋ณด๋ก๋ ๋ณต์ ๋ถ๊ฐ. ์ ์ ์ฑ ๊ฒํ ์์ํ ์ ์ฐจ |
| ๐ฏ๐ต JP | ๅไบบๆ ๅ ฑไฟ่ญทๆณ (APPI) ยง16-2ยทยง35-2ยทยง43 + PPC ์์ฑ๊ธฐ์ค | ไปฎๅๅ ๅทฅ: ์ถ๊ฐ์ ๋ณด๋ก ์๋ณ ๊ฐ๋ฅ / ์์ ๊ด๋ฆฌ์กฐ์น. ๅฟๅๅ ๅทฅ: ๅพฉๅ ไธๅฏ่ฝ + ์์ฑ๋ฐฉ๋ฒ ๋ฑ ๊ณตํ |
| ๐บ๐ธ US | HIPAA Safe Harbor (45 CFR ยง164.514(b)(2)) ยท CCPA/CPRA ยท NIST SP 800-188 | HIPAA SH: 18๊ฐ์ง ์๋ณ์ ๋ชจ๋ ์ ๊ฑฐ/์ผ๋ฐํ. CCPA deidentified: cannot reasonably identify + ํต์ . Expert Determination ํธ๋๋ ๊ฐ๋ฅ |
| ๐ช๐บ EU | GDPR Art 4(5), Recital 26 ยท EDPB Guidelines 01/2025 ยท WP29 Op 05/2014 | Pseudonymisation: ์ถ๊ฐ์ ๋ณด ๋ถ๋ฆฌ + ๊ธฐ์ ยท์กฐ์ง์ ์กฐ์น. Anonymisation: singling-out / linkability / inference 3๊ฐ ์ํ ๋ชจ๋ ์ ๊ฑฐ |
| ๊ธฐ๋ฒ ID | ๋ถ๋ฅ | ์ ์ฉ entity ์ |
|---|---|---|
tokenize_random | ยง8.4 Tokenization (random) | KR_RRN, US_SSN, KR_PASSPORT, INTERNAL_PROJECT |
pseudonym_consistent | ยง8.4 Pseudonymisation (HMAC-BLAKE2b) | VIP_PERSON (์ด๋ฆ) |
mask_partial | ยง7.5 Masking | ์ ํยทํด๋ํฐยทIBANยท์ฌ์ ์๋ฒํธ |
mask_pan | PCI-DSS ์ ํฉ ๋ง์คํน | CREDIT_CARD |
hash_local_keep_domain | ยง8.4 Cryptographic (HMAC) | EMAIL_ADDRESS |
generalize_to_city | ยง7.2 Generalization | KR_ADDRESS |
generalize_url | ยง7.2 Generalization | URL (ํธ์คํธ๋ง ์ ์ง) |
ip_truncate | ยง7.2 Generalization (/24) | IP_ADDRESS |
suppress | ยง7.4 Suppression | AWS_ACCESS_KEY, GENERIC_API_KEY |
ํญ UI ์์ "์ต๋ช
ํ" ๋ฅผ ์ ํํ๋ฉด pseudonym_consistent ์ tokenize_random ์์
๋์ผ์ฑ ๋งคํ(๊ฐ์ ์
๋ ฅ์ ๊ฐ์ ํ ํฐ) ์ ๋๋๋ค. ๊ฐ์ ์ฌ๋์ด ๋ ๋ฒ ๋ฑ์ฅํด๋ ๋ค๋ฅธ ํ ํฐ์ ๋ถ์ฌ โ ์ฐ๊ฒฐ์ฑ(linkability) ์ฐจ๋จ.
๋จ ์ง์ ํ ์ต๋ช
ํ๋ ํต๊ณ์ ๊ฒ์ฆ(k-์ต๋ช
์ฑยทl-๋ค์์ฑยทt-๊ทผ์ ์ฑ) ๊ณผ ๋งคํ ํ
์ด๋ธ ํ๊ธฐ ๊ฐ ํจ๊ป ํ์ํ๋ค๋ ์ ์
ํ์ ์นด๋์ "์์ฌ ์๊ตฌ์ฌํญ" ์ ๋ช
์ํฉ๋๋ค.
โโโโโโโโโโโโ CLIENT (data owner) โโโโโโโโโโโโ
โ ๋ณด์ : EncParms, publicKey, secretKey, โ
โ relinKeys, ํ๋ฌธ ๋ฐ์ดํฐ โ
โ โ
โ 1. ๋ฐ์ดํฐ โ publicKey ๋ก ์ํธํ โ
โ 2. ๊ฒฐ๊ณผ ct ๋ฅผ ๋น๋ฐํค๋ก ๋ณตํธํ โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
โ ct ๋ง ์ ์ก โ result ct ๋ง ์์
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SERVER (evaluator) โ
โ ๋ณด์ : EncParms, publicKey, relinKeys โ
โ (secretKey ์์ โ ํ๋ฌธ ๋ณต์ ์ ๋ ๋ถ๊ฐ) โ
โ โ
โ ct ์ ๋ํด add/multiply/square ๋ฑ โ
โ ๋ํ์ฐ์ฐ๋ง ์ํ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ