Homomorphic Multiplication and Encoding
2025. 10. 12. 14:32ㆍ개발/인공지능 보안
반응형
1) 실수(Real) 데이터 인코딩 기본
- 동기: AI 연산엔 실수가 많으니 HE도 실수 처리가 필요.
- 스케일링 인코딩: 충분히 큰 Δ(1 ≪ Δ ≪ q)로 실수 다항식 (m(X))을 정수계수로 올린 뒤 Zq[X]/(XN+1) 에 넣는다.
- 예: .
2) (실수 다항식용) Ring-LWE PKE
- KeyGen: a←U(Rq), s←χ, e←χ, b=−a⋅s + e. 공개키 (b,a), 비밀키 s.
- Enc: 잡음 r, e0, e1←χ. u=r⋅b + e0 + Δm, v = r⋅a + e1. CT=(u,v).
- Dec: u + v⋅s = Δm+e_decrypt. 최종 복원은 Δ^−1 스케일다운(+반올림).
3) 근사 복호(Approximate Decoding)
- (Δm+e)/Δ=m+(e/Δ).
- Δ가 충분히 크고 잡음이 작으면 근사 오차 내에서 정확히 복원 → CKKS류의 “근사 HE” 개념.
4) 동형 덧셈 & 평문 곱셈
- 덧셈: CT 성분별 합. 잡음은 합쳐짐.
- 평문 곱셈: . (b,a)↦(pˉb, pˉa).
- 결과 메시지 스케일이 Δ^2pm으로 제곱됨(스케일 폭증 주의).
5) 동형 곱셈(CT×CT) 핵심 아이디어
- 두 CT (b1,a1),(b2,a2)에 대해 복호식을 곱하면 s2s^2항이 생김.
- 중간 형태: (b1b2, b1a2 + a1b2, a1a2) — 세 번째가 s^2에 걸리는 3-튜플 CT.
- 목표: 이를 relinearization(키 스위칭)으로 다시 (b~,a~) (즉 에 대한 2-성분 CT)로 변환.
6) 키-스위칭(Key-Switching, KS)
- 문제 설정: ct=(b,a)를 키 s1에서 s2로 전환하고 Decs2(ct′) ≈ Decs1(ct).
- 직관: as1을 s2로 암호화한 “평가키(EK)”가 있으면, a에 EK를 “곱하고 나눈다”.
- 노이즈 이슈 & 해결:
- Encs2(s1)만으론 a⋅e가 커져 실패.
- 확대 스케일 P ≈ q로 Encs2(Ps1)를 공개(EK). 그 후 나누기-반올림(divide-and-round)로 P^{-1} 효과를 모듈러에서 구현(다중 모듈러스/확장 모듈러스에서 줄여오기).
- 곱셈 relinearization:
- b1b2, b1a2 + a1b2 계산.
- a1a2에 대해 KSs2→s(⋅) 적용 → (b^,a^).
- 합쳐 (b~,a~) = (b1b2 + b^, b1a2 + a1b2 + a^).
- 메시지 스케일은 Δ^2m1m2
7) Rescaling(리스케일)
- 곱셈 후 스케일이 Δ2로 커짐 → 기저 모듈러스 감소와 함께 d≈Δ로 나누어Δ′ = Δ2/d≈Δ로 복귀.
- 실제론 모듈러스 체인 q=q0→q1→⋯을 내려가며 divide-and-round 수행.
8) 데이터 인코딩: Coefficient vs Canonical(슬롯 인코딩)
- Coefficient encoding: 계수별 패킹은 덧셈은 의미 있지만 곱셈이 컨볼루션이어서 슬롯별 곱이 아님.
- Canonical embedding(표준 삽입/인코딩):
- R=Q[X]/(XN+1)의 근 ζi들( X^N+1의 개 근; 짝지어진 켤레)을 이용, 복소 슬롯에 값을 채움.
- 켤레 제약으로 독립 슬롯 수는 N/2. 다항식 덧셈/곱셈 ↔ 슬롯별 덧셈/곱셈이 일대일로 대응 → 벡터 연산에 적합.
9) 루트와 지도(치환)로 만드는 슬롯 연산
- 치환 τ2t+1: f(X)↦f(X2t+1)는 몫환에서 의미 있는 사상.
- 특히 τ5는 슬롯 벡터의 한 칸 좌측 순환(rotate)에 대응(루트 재배열 ζk=e^iπ5k/N 관점).
- τ−1: f(X)↦f(−X^(N−1))=f(X−1)는 복소 켤레(conjugation)에 대응.
- 결론: 회전/복제/켤레 등 슬롯 연산은 적절한 치환+KS(=Galois key)로 실현.
10) 자주 나오는 조건/관계식 체크
- 스케일: 1≪Δ≪q, 곱셈 시 Δ^2≪q 가정.
- KS에서 확대 인자 P ≈ q, divide-and-round로 안정화.
- 곱셈 후 Rescale로 Δ 복귀(+ 모듈러스 레벨 다운).
- 잡음: e_round,e_decrypte는 항상 Δ에 비해 충분히 작게 유지
11) 미니 연습문제(스스로 점검)
- , m(X)=1.23−0.045. Δm m를 쓰고, Enc/Dec 과정을 식으로 써보라.
- 두 CT를 곱했을 때 나오는 3-튜플 형태와, 이를 KS로 2-튜플로 줄이는 단계를 단계별로 정리하라(필요한 평가키 명시).
- Canonical embedding에서 왜 독립 슬롯이 개인지 켤레 근거로 설명하라.
- τ5가 한 칸 좌측 회전이 되는 이유를 루트 지수( 5^k) 관점에서 적어라.
12) 빠른 암기 포인트(한 줄 요약)
- 실수 인코딩은 Δ 스케일 → 덧셈 OK, 곱셈은 스케일 제곱 → relinearization(+KS) → rescale.
- Canonical embedding으로 (N/2) 슬롯 병렬연산, 회전/켤레는 치환+KS(Galois key).
- KS 핵심: P≈q 로 키항을 “키우고” → 나누기-반올림으로 안정화.
반응형
'개발 > 인공지능 보안' 카테고리의 다른 글
Homomorphic Encryption / Ring-LWE (0) | 2025.09.18 |
---|---|
LWE (Learning With Errors) (0) | 2025.09.17 |
LWE, Lattice, Reduction 이해하기 (0) | 2025.09.09 |
보안 예비 지식 (Preliminaries) (0) | 2025.09.09 |