I. Basic Math: A-3. Field
Published:
해당 포스트는 Ronny Ko의 저서 The Beginner’s Textbook for Fully Homomorphic Encryption을 기반으로 작성하였다. 이번 포스트에서는 ‘I. Basic Math: A-3. Field’ 파트를 요약•정리하고자 한다.
A-3. Field
To be continued …
less than 1 minute read
Published:
해당 포스트는 Ronny Ko의 저서 The Beginner’s Textbook for Fully Homomorphic Encryption을 기반으로 작성하였다. 이번 포스트에서는 ‘I. Basic Math: A-3. Field’ 파트를 요약•정리하고자 한다.
To be continued …
less than 1 minute read
Published:
less than 1 minute read
Published:
해당 포스트는 Ronny Ko의 저서 The Beginner’s Textbook for Fully Homomorphic Encryption을 기반으로 작성하였다. 이번 포스트에서는 ‘I. Basic Math: A-2. Group’ 파트를 요약•정리하고자 한다.
To be continued …
9 minute read
Published:
해당 포스트는 Ronny Ko의 저서 The Beginner’s Textbook for Fully Homomorphic Encryption을 기반으로 작성하였다. 이번 포스트에서는 ‘I. Basic Math: A-1. Modulo Arithmetic’ 파트를 요약•정리하고자 한다.
Reference: Extended Euclidean Algorithm Tutorial
→ 따라서, “$A \bmod B = R$” 혹은 “$A$ modulo $B = R$” 로 표현할 수 있다.
모듈러스 (modulus): $a \bmod q$가 주어졌을 때, divisor q를 모듈러스라 부른다.
반면, 모듈러 (modulo)는 연산(operation) 자체를 의미한다.
모든 정수 $x$에 대하여 다음이 성립한다:
Addition (덧셈):
$a \equiv b \bmod q$ ⟺ $a = b+kq$ (임의의 $k$에 대해) # 이때 $a, b$는 $q$의 배수 차이를 가짐
⟺ $a + x = b+k \cdot q + x$
⟺ $a + x = b+x + k \cdot q$ # $a + x, b + x$는 $q$의 배수 차이를 가짐
⟺ $a + x \equiv b + x \bmod q$
Subtraction (뺄셈):
$a \equiv b \bmod q$ ⟺ $a = b+kq$ (임의의 $k$에 대해)
⟺ $a - x = b+k \cdot q - x$
⟺ $a - x = b-x + k \cdot q$ # $a - x, b - x$는 $q$의 배수 차이를 가짐
⟺ $a - x \equiv b - x \bmod q$
Multiplication (곱셈):
$a \equiv b \bmod q$ ⟺ $a = b+kq$ (임의의 $k$에 대해)
⟺ $a \cdot x = b+k \cdot q \cdot x$
⟺ $a \cdot x = b \cdot x + k_{x} \cdot q$ ($k_{x}=k \cdot x$ 일 때)# $a \cdot x, b \cdot x$는 $q$의 배수 차이를 가짐
⟺ $a \cdot x \equiv b \cdot x \pmod q$
모듈러 $q$ (즉, 모든 수를 $q$로 나눈 나머지의 세계)에서, 각 $a in {0, 1, 2, …, q-1}$에 대해 다음과 같이 정의된다.
Additive Inverse (덧셈 역원): $a_{+}^{-1}$은 다음을 만족하는 수이다.
\(a + a_{+}^{-1} \equiv 0 \bmod q\)
- 예. 모듈러 $11$에서 $3_{+}^{-1}=8$ → 왜냐하면 $3 + 8 \equiv 0 \bmod 11$이기 때문이다.
Multiplicative Inverse (곱셈 역원): $a_{*}^{-1}$은 다음을 만족하는 수이다.
\(a \cdot a_{\*}^{-1} \equiv 1 \bmod q\)
- 예. 모듈러 $11$에서 $3_{*}^{-1}=4$ → 왜냐하면 $3 \cdot 4 \equiv 1 \bmod 11$이기 때문이다.
하지만 어떤 수 $b$를 $a$로 “모듈러 나누기” 하고자 한다면, 이는 곧 $a$의 모듈러 역원 (modular inverse)을 이용한 곱셈으로 표현할 수 있다. \(b \div a \bmod q \; \equiv \; b \cdot a_{*}^{-1} \bmod q\)
즉, 모듈러 나눗셈(modulo division)은 모듈러 곱셈 (modulo multiplication)으로 정의된다.
📍 중요한 차이점:
Canonical은 0부터 시작하는 잔여계, Centered는 0을 기준으로 대칭인 잔여계다
지금까지 잔여(나머지, Residue)를 양의 정수(positive integer)라고 가정했다.
모듈러 $q$에서 가능한 나머지 집합은 다음과 같다.
\({0, 1, 2, \dots q-1}\)
→ 이 표현 방식을 표준 잔여계(canonical residue system) 또는 비부호형 잔여 표현 (unsigned residue representation) 이라고 부른다.
🔸 하지만 또 다른 표현 방식도 존재한다.
바로 부호형 잔여계 (signed or centered residue system) 로, 잔여들이 0을 중심으로 대칭되게 분포한다. \({-\frac{q}{2}, -frac{q}{2}+1, \dots, 0, \dots, frac{q}{2}-2, \frac{q}{2}-1}\)
→ 비부호형 잔여계나 부호형 잔여계 모두 잔여의 개수는 동일하게 $q$개이다. 차이는 단지 잔여 범위의 기준점(upper/lower bound)에 있다.
| 표현 방식 | 잔여 집합 | 하한(lower bound) | 상한(upper bound) |
| Canonical (Unsigned) | $\{0, 1, 2, \dots, q-1\}$ | 0 | $q-1$ |
| Centered (Signed) | $\{-\frac{q}{2}, \dots, 0, \dots, \frac{q}{2}-1\}$ | $-\frac{q}{2}$ | $\frac{q}{2}-1$ |
💡 모듈러 연산의 역할
모듈러 연산은 주어진 값을 위 두 시스템 중 하나의 잔여 범위로 변환한다.
→ 따라서 두 시스템의 차이는 단지 잔여의 “표현 방식”일 뿐, 모두 동일한 모듈러 집합 $\mathbb{Z}_q$를 나타낸다.
\[\mathbb{Z}_q = \{0, 1, 2, \dots, q - 1\}\]Canonical과 Centered 잔여계는 모든 연산 성질이 동일하게 유지된다.
표준 잔여계(canonical system)와 중심 잔여계(centered system)는 덧셈 $\cdot$ 뺄셈 $\cdot$ 곱셈 $\cdot$ 나눗셈의 모든 모듈러 성질은 동일하게 성립한다.
\[(a \pm b) \bmod q, \quad (a \times b) \bmod q, \quad (a \div b) \bmod q\]→ 이들이 어떤 잔여계에서 계산되든 결과의 동치 관계는 변하지 않는다.
💡 이유:
두 시스템 모두 같은 모듈러스 $q$를 사용하기 때문에,
어떤 두 동치 잔여(congruent residues)라도 서로 $kq$의 차이를 가진다.
즉,
\(a \equiv b \pmod q \quad \Rightarrow \quad a - b = kq \quad (k \in \mathbb{Z})\)
→ 따라서 canonical 표현이든 centered 표현이든, 각 연산의 결과는 항상 같은 동치류(congruence class)에 속하게 된다.
Canonical과 Centered 잔여계의 연산 성질 중 역원도 동일하게 유지된다.
모듈러 $q$에서 $a$의 역원은 다음을 만족한다.
\[a \cdot a^{-1} \equiv 1 \pmod q\]🔹 부호형(signed) 잔여 표현을 사용하는 이유는 특정 상황에서 모듈러 연산을 생략할 수 있을 정도로 계산을 단순화할 수 있기 때문이다.
#### 🧩 예제 1. Canonical (Unsigned) Representation 표준 잔여계에서는
\((a + b) \bmod q\) 의 형태를 가정하자.
만약 어떤 애플리케이션에서 항상 $0 \le a + b \le q - 1$ 이라는 조건이 보장된다면,
따라서 모듈러 연산을 생략할 수 있다.
(즉, 값이 잔여 범위 $[0, q-1]$를 벗어나지 않기 때문)
#### 🧩 예제 2. Centered (Signed) Representation 이번에는 중심 잔여계에서
\((a - b) \bmod q\) 를 생각하자.
만약 $a - b$가 항상 $[-\frac{q}{2}, \frac{q}{2} - 1]$ 범위 안에 있다면,
이때도 모듈러 연산을 생략할 수 있다.
#### ⚠️ 주의: Canonical 표현에서의 뺄셈 만약 위와 같은 $(a - b) \bmod q$ 연산을 canonical 표현으로 계산한다면,
$a - b$가 음수일 경우 그 값은 하한(0)보다 작아진다.
이 경우 모듈러스 $q$를 하나 이상 더해주는(modulo reduction) 보정이 필요하다.
예를 들어,
\(a = 3, \quad b = 7, \quad q = 11\)
이면
\((a - b) \bmod 11 = (3 - 7) \bmod 11 = (-4) \bmod 11 = 7\)
✅ 정리:
즉, 부호형(centered) 잔여 표현은 덧셈보다 뺄셈 연산에서 더 직관적이며 효율적이다.
§D-5.8 절에서는 centered residue representation의 유리한 성질을 활용하여 FastBConvEx 연산(Fast Balanced Convolution Extension) 을 설계한다.
일반적으로는 모듈러 연산이 필요하지만,
이때 $\mu + u$가 항상 centered residue 범위 내에 존재함이 보장된다.
따라서, \((\mu + u) \bmod b^{\alpha} = \mu + u\)
즉, 모듈러 연산을 생략하고 단순 덧셈으로 표현할 수 있다.
이는 연산을 간소화하고 계산 효율을 높이는 핵심 아이디어이다.
💡 핵심 포인트:
</div>
</details>
5 minute read
Published: Updated:
해당 포스트는 서울대학교 천정희 교수님의 암호론 강의를 기반으로 작성하였다. 이번 포스트에서는 ‘동형암호의 개요’에 대한 내용을 요약•정리하고자 한다.
예를 들어, 우리가 1 + 2라는 단순한 계산을 하고 싶다고 하자. 하지만 계산의 내용을 클라우드에 노출하고 싶지 않다. 이때 우리는 각 값을 암호화하여 클라우드에 보낸다. 예를 들어, 1은 33, 2는 54로 암호화된다.
클라우드는 복호화 키를 전혀 알지 못한 채 단순히 암호문끼리의 덧셈(33 + 54)을 수행한다. 계산 결과로 얻은 87은 여전히 암호화된 상태이며, 우리는 이 값을 받아서 복호화하면 최종적으로 3을 얻는다.
이처럼 동형암호는 단순한 산술 연산뿐만 아니라 영상 처리나 머신러닝 모델 추론과 같은 복잡한 계산에도 확장될 수 있다. 예를 들어, 클라우드에게 두 장의 이미지를 암호화된 상태로 보내 “이 두 이미지가 같은지 비교해 달라”고 요청할 수 있다. 클라우드는 이미지 내용을 직접 보지 않고도 연산을 수행해 결과값만을 사용자에게 반환할 수 있다.

간단한 비유로 설명하면, 전통적인 암호는 열쇠가 있어야만 여는 금고와 같습니다. 키가 없으면 그 안에 무엇이 있는지 전혀 알 수 없고, 아무런 조작도 할 수 없습니다.
반면 동형암호는 “말랑말랑한 금고”와 비슷합니다. 금고 안의 내용(평문)은 외부에서 보이지 않지만, 외부에서 손(연산)을 넣어 내부의 값을 가공할 수 있습니다. 즉, 클라우드(연산자)는 복호화 키를 알지 못한 채도 암호문 위에서 덧셈·곱셈 같은 연산을 수행할 수 있고, 최종 결과는 여전히 암호화된 상태로 반환됩니다. 사용자는 그 결과를 복호화해 실제 정답을 얻습니다.
예시: 의료 데이터의 경우, 환자의 원본 기록은 열리지 않은 상태로 보관됩니다. 연구자는 이 암호화된 데이터를 클라우드에 맡겨 통계분석이나 모델 추론을 수행하게 하고, 클라우드는 내용을 보지 못한 채 계산만 수행합니다. 계산 결과(예: 위험 지표)는 암호화된 상태로 돌아오고, 복호화 권한이 있는 사람만이 필요한 정보(예: 특정 진단의 유무 또는 요약된 수치)만 확인합니다.
핵심은 "비밀은 지키면서도 필요한 계산은 수행할 수 있다"는 점입니다. 이 성질 덕분에 동형암호는 개인정보·의료·금융 데이터의 안전한 외부 계산(클라우드 기반 분석, 암호화된 ML 추론 등)에 유용합니다.

- 128-bit 보안을 만족하기 위해 키 크기를 50배 늘린다고 가정하면, 계산량은 일반적으로 O(n^2) 복잡도를 가지므로 $50^2x = 2,500x$ 배 증가하게 된다.
- 그러나 빠른 곱셈 알고리즘 (Fast Multiplication)을 적용하면 복잡도는 O(nlog n) 수준으로 개선되어 $(50 \log 50)x ≈ 2,000x$ 정도로 줄어든다.
👉 따라서, 키 길이를 $50$배 늘려도 계산량은 약 $2,000$배 증가하게 된다. 즉, 보안 강도를 높이는 것은 필연적으로 연산 비용 증가를 수반한다.
- 물론 위 계산은 최적화가 잘 이루어진 경우를 가정한 것이다. 실제로는 알고리즘과 구현 수준에 따라 성능 편차가 크며, 이러한 최적화(optimization)는 인공지능이 아니라 사람이 직접 설계해야 한다. 다시 말해, 알고리즘적·구현적 튜닝이 부족한 경우에는 여전히 수천 배에서 수만 배까지 느린 사례도 존재한다.
동형암호의 초기 형태는 **정수 연산 기반**으로 설계되었습니다. 대표적으로 RAD PH와 DGHV 스킴이 있습니다.
덧셈 연산
\(Enc(m_1) + Enc(m_2) = (m_1 + p q_1) + (m_2 + p q_2) = (m_1 + m_2) + p(q_1 + q_2) = Enc(m_1 + m_2)\)
</div>
</details>