Public-Key Cryptography and RSA
Published:
해당 포스트는 서울대학교 천정희 교수님의 암호론 강의를 기반으로 작성하였다. 이번 포스트에서는 ‘공개키암호와 RSA’에 대한 내용을 요약•정리하고자 한다.
1. 공개키암호 (Public-Key Cryptography)
1) One-way Function
$x$가 주어졌을 때, $f(x)$를 계산하긴 쉽지만, $f(x)$가 주어졌을 땐 $f^{-1}(x)$를 계산하는 것은 어렵다.
$e.g.)$ 큰 수의 소인수분해 → $pq$ 계산은 쉽지만, $n=pq$ 일 때, $p$ 와 $q$ 를 찾는 것은 어렵다.🎯 깜짝 퀴즈 🎯
일방향 함수만 있으면 공개키 암호를 만들 수 있을까?
→ Open Problem
(단, 전자서명은 일방향 함수만 있어도 만들 수 있다는 것이 증명됨)
2) Trapdoor One-way Function
- 공개키 암호는 “누구나 암호화할 수 있고, 특정 비밀키로만 복호화할 수 있어야” 한다.
- 즉, 일방향 함수에 추가로 특별한 비밀 정보(Trapdoor Information, 일종의 열쇠 🔑)가 주어진다면, $y$가 주어졌을 때, $f^{-1}(y)$는 쉽게 계산할 수 있다.
3) Diffie-Hellman 키 교환
- 두 사람이 공개된 통신로를 통해 비밀 정보를 공유하는 방법
- 초기화 (변수 생성후 공개)
• 소수 $q$ ($q-1$ 이 큰 소수 약수를 가짐 - $e.g.) q=23, q-1=22=2 \times 11$)
• $q$ 보다 작은 자연수 $g$ - 과정
• Alice: 개인키 $a$, 공개키 $A = g^a \pmod{q}$
• Bob: 개인키 $b$, 공개키 $B = g^b \pmod{q}$
• Eve (도청자): $g^a, g^b$에서 $a, b$ 정보를 알아내는 것은 어렵다.
※ 비밀키 $a, b \in \mathbb{Z}_p \;\; (0 \leq a, b < p \;\text{ 또는 }\; -\tfrac{p}{2} \leq a, b < \tfrac{p}{2})$ 공통 비밀키 생성
• Alice는 $a, g^{b}$로 $g^{ab}$ 를 계산할 수 있다.
• Bob은 $b, g^{a}$로 $g^{ba}$ 를 계산할 수 있다.
※ 단, $g^{ab} = g^{ba}$ 이 성립하려면 연산 구조가 가환군(Commutative Group) 이어야 한다.📌 가환군(Commutative Group) = 교환 법칙이 성립하는 군
• 예제 1. $f_b \circ f_a(g) \overset{?}{=} f_a \circ f_b(g)$
• 예제 2. $(g^a)^b \overset{?}{=} (g^b)^a$
• 예제 3. $a,b$가 행렬일 때, $b(aga^{-1})b^{-1} \overset{?}{=} a(bgb^{-1})a^{-1}$안전성
• Eve는 $(g, g^a, g^b)$ 만으로는 $g^{ab}$ (공통 비밀 정보)를 계산하기 어렵다.
→ 이를 이산 로그 문제(Discrete Logarithm Problem) 라고 한다.🔎 왜 "이산 로그 문제"가 어려운가?
• 만약 모듈러 $p$ 없이 정수 지수승이라면:
$g^1, g^2, g^3, \dots$ 의 값은 계속 커지고, 대략 몇 번 곱했는지 추측할 수 있음
→ 여러 번 반복하면 로그 값(지수)을 조금씩 알아낼 수 있다.• 그러나 모듈러 $p$ 연산을 하면:
$g^a \pmod{p}$는 $0 \sim p-1$ 범위 안에서 뒤섞여(cycle) 나타남
→ 출력 값만 보고는 $a$의 크기를 추측할 단서가 사라진다.• 따라서 $y = g^a \pmod{p}$에서 $a$를 찾는 문제는 현재로써는 지수 시간이 걸린다.
📌 정리
• 정수 로그: 크기 비교로 추측 가능 → 쉽다.
• 이산 로그(mod p): 값이 wrap-around 되므로 추측 불가 → 어렵다.
• Diffie–Hellman 키 교환의 안전성은 바로 이 DLP의 난이도에 기반한다.🎯 깜짝 퀴즈 🎯
Discrete Logarithm 문제가 안전하면 Diffie-Hellman 문제는 어려울까?
혹은 Diffie-Hellman 문제를 풀 수 있다면 Discrete Logarithm 문제도 풀릴까?
→ Difficult Problem
[ DL과 DH의 관계 ]
• DL: $(g, g^a)$ 를 알 때 → $a$ 를 안다.
• DH: $(g, g^a, g^b)$ 를 알 때 → $g^{ab}$ 를 안다.
- 항상 성립: DL이 풀면 DH도 풀 수 있다.
→ 왜냐하면 $a$나 $b$를 알면 바로 $g^{ab}$를 계산할 수 있기 때문
- 미해결 문제: DH가 풀면 DL도 풀 수 있다.
→ 일반적으로는 아직 알려지지 않은 Open Problem
- 특별한 경우: $g$의 order = $p$인 경우,
• $\mathbb{DL}_p = \mathbb{DH}_p,$ $if$ $\exists$ an elliptic curve $E$ over $\mathbb{Z}_p$ $s.t.$ $|E(\mathbb{Z}_p)|$ is smooth.
→ 만약 어떤 타원곡선 $E$가 유한체 $\mathbb{Z}_p$ 위에 정의돼 있고, 그 점들의 개수 $|E(\mathbb{Z}_p)|$가 smooth하다면, DL 문제와 DH 문제가 동치라는 결과가 알려져 있다.
→ 충족하는 것을 찾는 데 걸리는 시간 $\neq$ 다항식 시간
※ $g$의 order(위수)란 "$g$를 계속 곱하다 보면 언젠가 처음 상태(1)로 돌아오는데,
그때까지 몇 번 곱해야 돌아오는지"를 의미한다.
→ 즉, 사이클 길이라고 이해하면 된다.
※ smooth란 큰 소수(prime number) 없이 작은 소수들만 곱한 것을 의미한다.
→ 예. 840 = $2^3 \cdot 3 \cdot 5 \cdot 7$
📌 쉽게 말하면,
- 평소엔 DL이 더 어려운 문제일 수도 있다.
- 하지만 특정 조건(타원곡선 위 점 개수가 smooth할 때)에서는
→ DH와 DL이 사실상 같은 난이도의 문제로 수렴한다.
- 초기화 (변수 생성후 공개)
4) PKC (Public-Key Cryptography) Schemes
- 1976 ~ 1984
- Diffie & Hellman / R.Rivest, A.Shamir, L.Adleman / Rabin scheme / Williams scheme /
McEliece scheme / Knapsack scheme
- Diffie & Hellman / R.Rivest, A.Shamir, L.Adleman / Rabin scheme / Williams scheme /
- 1985 ~ Current
- ElGamal scheme (Diffie & Hellman을 Encryption으로 바꾼 경우)
📌 Diffie–Hellman vs Ephemeral Diffie–Hellman
🔹 기본 Diffie–Hellman (DH)
- 한 번 생성한 개인키 $a, b$를 재사용 가능
- 공개키 $A = g^a, B = g^b$도 그대로 유지
- 키 합의는 안전하지만, Forward Secrecy(순방향 보안)는 보장되지 않음
(만약 개인키가 유출되면 과거 통신도 모두 복호화 가능)
※ Forward Secrecy: 장기 개인키가 유출되더라도, 과거의 세션 키와 통신 내용은 복호화되지 않도록 보호하는 성질
🔹 Ephemeral Diffie–Hellman (Ephemeral DH, ECDHE)
- Ephemeral = 세션마다 새로운 개인키 생성
- 각 세션의 $A = g^a, B = g^b$ 가 사실상 퍼블릭 키(public key) 역할
- 세션이 끝나면 키를 버리므로, Forward Secrecy 보장
(개인키가 유출돼도 과거 세션은 안전) - 실제로 HTTPS (TLS/SSL)에서 많이 사용됨
📌 핵심
- “Ephemeral Diffie–Hellman을 쓰면, 그때그때의 공개키$(A, B)$가
바로 퍼블릭 키로 기능한다.” - 즉, DH 자체가 일시적인 공개키 암호 시스템이 되는 셈이다.
- Key Generation (KG): secret key (sk) = $b$, public key (pk) = $g^b$, ephemeral key = $r$
- 암호화 (Encryption)
• Alice가 메시지 $m$을 보낼 때, 임의의 $r$를 선택
• 암호문 = $(g^{r}, (g^{b})^r*m)$ → $g^{rb}$는 Bob의 공개키 $g^b$와 Alice의 $r$를 조합해서 생성 - 복호화 (Decryption)
• Bob(수신자): 개인키 $b$를 사용해 $g^{rb}$ 계산
• 복호문 = $m = \dfrac{m \cdot g^{rb}}{g^{rb}}$ 로 원문 복원
🔐 Encryption 구조
\(\mathrm{Enc}_{pk}: \mathbb{Z}_p \longrightarrow G \times G\)
\(m \longmapsto (g^r,\; g^{rb}\cdot m)\)• 여기서 $pk = g^b$, $b$: Bob의 개인키, $r$: Alice가 매 메시지마다 선택하는 난수
• ElGamal의 $G$는 “mod $p$에서의 곱셈군” $\mathbb{Z}_p^*$ 을 뜻한다🎯 깜짝 퀴즈 🎯
Q. ElGamal 암호화에서 sk = $b$, pk = $g^{b}$ 일 때,
• \(\mathrm{Enc}_{pk}: \mathbb{Z}_p \longrightarrow G \times G\)
• \(m \;\mapsto\; (g^r,\; g^{rb}\cdot m)\)
→ 복호화하기 위해서 필요한 정보는 무엇일까?A. 바로 Bob의 개인키 $b$ 이다.
$(g^r, g^{rb}\cdot m)$에서 $m$을 되찾으려면 $g^{rb}$를 알아야 하고,
이를 계산할 수 있는 유일한 정보가 $b$ 다.→ 따라서 $b$ 가 Trapdoor (비밀 열쇠) 역할을 한다.
⚠️ 단, 그렇다 해서 Trapdoor One-way Function 은 아니다.
→ 왜냐하면 ElGamal은 항상 같은 $f(x)$를 내는 고정된 함수가 아니라,
매번 임의의 $r$을 뽑아 다른 출력이 나오는 확률적 암호화 방식이기 때문이다.
즉, 수학적 함수라기보다는 암호화 스킴 전체에서
“거꾸로 갈 수 있게 해주는 비밀키”라는 의미로 트랩도어처럼 동작한다.🔑 정리 🔑
• Trapdoor One-way Function
→ “일방향만 쉽다.” (단, 비밀 정보(Trapdoor)가 있으면 거꾸로도 쉽다.)• 공개키 암호 (PKC)
→ “누구나 공개키로 암호화는 쉽게 할 수 있지만, 복호화는 어렵다.”
(단, 비밀키가 있으면 복호화가 쉽다.”)∴ 즉, 구조적으로 보면 공개키 암호(PKC) ≈ Trapdoor One-way Function이다.
→ 다만 수학적으로 정확히 동치 라기보다는,
PKC가 성립하려면 TOWF가 존재해야 한다는 의미에서 개념적 동치로 본다. - Elliptic Curve based scheme / Hidden Field Equations / Lattice Cryptography /
Non-abelian group Cryptography / Fully Homomorphic Encryption
- ElGamal scheme (Diffie & Hellman을 Encryption으로 바꾼 경우)
- Hard Problems for PKC
- Integer Factorization Problem (IFP)
• 큰 수 $n = pq$ 를 소인수분해하는 문제
• 관련: Quadratic Residuocity Problem - Discrete Logarithm Problem (DLP)
• $y = g^x \pmod p$에서 $x$를 구하는 문제
• 확장: Generalized DLP (Elliptic Curve, Hyperelliptic Curve, Class Field) - Linear Code Decoding
- Multivariate Equations
• 여러 변수에 대해 2차 이상의 다항식을 푸는 문제
• 일반형:
\(\begin{cases} f_{1}(x_{1}, ..., x_{n}) = a_{1} \\ f_{2}(x_{1}, ..., x_{n}) = a_{2} \\ \vdots \\ f_{n}(x_{1}, ..., x_{n}) = a_{n} \end{cases}\)
→ 1차(선형)일 경우, 가우스 소거법으로 $O(n^3)$ 안에 풀림
→ 2차 이상일 경우, NP-hard (실질적으로 매우 어려움)
• 관련: Hidden Field Equations, Isomorphism of Polynomials - Nonabelian Group (비가환군)
• Conjugacy Problem (켤레 문제): $a, b$가 주어졌을 때 $x^{-1}ax = b$인 $x$를 찾는 문제
• Decomposition Problem: 주어진 원소를 이루는 생성자들의 곱으로 분해하는 문제
※ 다만, 행렬군에서는 다항 시간 내로 풀려서, Braid Group(꼬임군) 등 다른 구조 사용 - Lattice 기반 문제
• SVP (Shortest Vector Problem): 주어진 격자에서 가장 짧은 벡터 찾기
• CVP (Closest Vector Problem): 주어진 점에 가장 가까운 격자 벡터 찾기
• 파생 문제들:
• Learning with Errors (LWE): $y = Ax + e \pmod q$에서 $x$를 찾는 문제 (작은 오류 $e$ 포함)
• Approximate Common Divisor (ACD): 약간의 노이즈가 있는 공약수 문제
→ 다만, 아직까지 NP-hard 문제를 기반으로 한 암호 스킴은 실용적으로 설계하진 못함
- Integer Factorization Problem (IFP)
📚 참고 자료 모아보기
1) 공개키 암호가 생겨난 이유
대칭키 암호(Symmetric Cryptosystem)의 한계
• 모든 통신 쌍이 서로 다른 비밀키를 공유해야 안전함
• 참가자 수가 $n$일 때 필요한 키 개수는 조합으로 계산됨: $\binom{n}{2} = \frac{n(n-1)}{2}$.
• 예: $n = 100 → 4,950$개의 키 필요
• 규모가 커질수록 키 관리가 폭발적으로 어려워짐발명 동기
• “비밀키를 미리 공유하지 않고도 안전하게 통신할 수 없을까?” → Diffie & Hellman의 아이디어
• 여기서 나온 개념이 바로 공개키 암호(PKC)공개키 암호의 혁신
• 공개키: 누구나 알 수 있음 → 암호화에 사용
• 비밀키: 당사자만 알고 있음 → 복호화에 사용
• 따라서 키를 미리 비밀리에 나눌 필요 없음 → 키 관리 문제 해결
2) Merkle’s Puzzle (1974)
- 최초로 “공개키 개념”을 제안한 시도
- Ralph Merkle, UC Berkeley 컴퓨터 보안 수업(1974) 제안
논문: Secure Communication over Insecure Channels (CACM, 1978)
Merkle Puzzle 아이디어
• 많은 퍼즐 중 하나를 선택해 해결 → 두 당사자만 공유하는 비밀키 획득
• 공격자는 퍼즐을 전부 풀어야 하므로 비용이 급격히 증가
• 다만 차이가 “1000배 수준(다항시간 내에 해결 가능)”이라 실제 보안성은 부족- 📌 교훈:
• 퍼즐 수를 늘리면 안전성은 기하급수적으로 증가
• 이 아이디어가 이후 Diffie–Hellman 키 교환으로 발전
3) 복잡도 (Complexity)
암호학은 결국 “쉽게 할 수 있는 연산과, 되돌리기 어려운 연산의 차이”에 의존한다.
연산 복잡도별 분류
• Linear: Addition, Subtraction
• Quadratic: Multiplication, Euclidean Algorithm, Modular Operations
• Cubic: Exponentiation, Matrix Multiplication, Gaussian Elimination
• Exponential: Factorization, TSP, Subset Sum, Lattice Problems📌 암호학적 핵심:
• 앞으로 계산은 쉽다 (다항 시간)
• 거꾸로 풀기는 어렵다 (지수 시간)
• RSA: 곱셈은 빠름, 소인수분해는 어렵다
• 격자 기반 암호: Lattice 문제의 난이도 활용P vs NP
• P: 다항 시간(Polynomial time) 안에 풀 수 있는 문제
• NP: 답이 맞는지 검증은 다항 시간 안에 가능(Non-deterministic Polynomial)
• P ⊆ NP, NP-complete = NP ∩ NP-hard
• 만약 P = NP라면, 현재 암호 시스템 대부분이 무너짐 (소인수분해, 이산 로그 등도 다항 시간에 풀리게 됨)
• 아직까지 전 세계적으로 해결되지 않은 컴퓨터 과학 최대 난제 중 하나.대표적인 어려운 문제들
• TSP (Traveling Salesman Problem)
도시 목록과 거리 정보가 주어졌을 때, 모든 도시를 정확히 한 번 방문하는 가장 짧은 경로를 찾는 문제• SSP (Subset Sum Problem)
정수 집합이 주어졌을 때, 어떤 부분집합의 합이 정확히 0이 되는지 묻는 문제• Integer Factorization
큰 수 (n = pq)를 소인수분해하는 문제 (RSA 안전성의 기반)
2. RSA (Rivest-Shamir-Adleman)
1) Prime
📘 Prime (소수)와 Euclid의 정리
- Prime (소수) 기본 개념
소수 정의
$p \geq 2$ 인 정수 $p$가 소수일 경우, \(a \mid p \;\Rightarrow\; a = \pm 1 \;\;\text{또는}\; \pm p\) 를 만족
→ 즉, 약수가 1과 자기 자신밖에 없음Irreducible (기약원)
$p = ab$ 를 인수분해했을 때, $a$ 또는 $b$ 중 하나가 단위원(unit, 즉 $\pm 1$) 일 때,
$p$ 를 기약원이라고 함 → 정수에선 기약원 = 소수라고 생각하면 됨
- Euclid의 정리
Euclid’s Lemma
\(p \mid ab \;\;\Rightarrow\;\; p \mid a \;\;\text{또는}\;\; p \mid b\)
→ 소수의 중요한 성질! (소수는 약간 “쪼갤 수 없는 블록”이라는 뜻)예시
• $p=5$, $ab = 20 = 4 \times 5$: $5 \mid (4 \times 5) \;\Rightarrow\; 5 \mid 5$ ✅
• $p=7$, $ab = 21 = 3 \times 7$: $7 \mid (3 \times 7) \;\Rightarrow\; 7 \mid 7$ ✅
• $p=6$, $ab = 6 = 2 \times 3$: $6 \mid (2 \times 3)$ 이지만 $6 \nmid 2$, $6 \nmid 3$ ❌ (합성수이므로 성립 ❌)무한 소수 정리 (Euclid)
• “소수는 무한히 많다.”
→ 만약 소수가 유한 개만 있다면, 그 소수들을 모두 곱한 뒤 +1을 하면 새로운 소수가 나타나
모순이 생긴다.
- Prime Number Theorem (소수 정리)
- $\pi(x)$ = $x$ 이하의 소수 개수
정리: \(\lim_{x \to \infty} \pi(x) / (\frac{x}{\ln x}) = 1\) → $x$ 이하 소수의 개수는 대략 $\dfrac{x}{\ln x}$
- 해석: “임의의 $x$ 근처의 수가 소수일 확률” ≈ $\dfrac{1}{\ln x}$
- 여기서 $\ln$은 자연로그 (밑 = $e$ ), 정확히는 $\dfrac{1}{(\text{자리수}) \cdot \ln 10}$
- 직관적으로 “10자리 수면 약 $\frac{1}{10}$, 100자리 수면 약 $\frac{1}{100}$ 확률”
-
예시
- $x = 10$ → 확률 $\frac{1}{\ln 10} \approx \frac{1}{2.3}$
- $x = 10^{10}$ (10자리) → 확률 $\frac{1}{(10 \ln 10)} \approx \frac{1}{23}$
- $x = 10^{100}$ (100자리) → 확률 $\frac{1}{(100 \ln 10)} \approx \frac{1}{230}$
- $x = 3^{100}$ (약 $10^{47.7}$ 크기의 수, 48자리 수 정도): \(\frac{1}{\ln(3^{100})} = \frac{1}{100 \ln 3} \approx \frac{1}{110}\)
→ 따라서 $3^{100}$가 소수일 확률은 약 $\frac{1}{110}$
- 일반 소수 정리의 오차항
- \(\pi(x) = \frac{x}{\ln x} + O\left(\frac{x}{\ln^2 x}\right)\)
→ 즉, 실제 소수 개수는 $\dfrac{x}{\ln x}$에 가깝지만, 그 차이는 대략 $\dfrac{x}{\ln^2 x}$ 정도 크기
- \(\pi(x) = \frac{x}{\ln x} + O\left(\frac{x}{\ln^2 x}\right)\)
- Riemann Hypothesis (리만 가설)
- 오차 항의 정밀도에 관한 주장
- $ \lvert \pi(x) - \mathrm{li}(x) \rvert < x^{\frac{1}{2}} \ln x $, where $\mathrm{li}(x) := \int_2^x \frac{1}{\ln t} dt = \frac{x}{\ln x}+O(\frac{1}{\ln ^{2}t})$
- 비교
- 일반 소수 정리: 오차항 $O\left(\tfrac{x}{\ln^2 x}\right)$
- 리만 가설: 오차항 $O\left(x^{\frac{1}{2}}\ln x\right)$ (훨씬 더 작음)
-
예시: $x = e^{100}$ 일 때,
- 일반 소수 정리 오차: \(\frac{e^{100}}{(\ln e^{100})^2} = \frac{e^{100}}{100^2}\)
- 리만 가설 오차: \((e^{100})^{\frac{1}{2}} \cdot \ln(e^{100}) = e^{50} \cdot 100\)
→ RH가 참이라면, 오차가 $ \frac{e^{100}}{100^2} $ 에서 $ e^{50}\cdot 100 $ 으로, 약 $ \frac{e^{50}}{100^{3}} \approx 3\cdot 10^{15} $ 배 대폭 줄어듦
📘 RSA의 수학적 기초 (Euler Phi Function, Fermat & Euler Theorem)
- Euler Phi Function
- 정의
$\varphi(n)$ = $[1,n]$ 범위 안에서 $n$과 서로소인 정수의 개수 - 성질
- $p$가 소수일 때, $\varphi(p) = p-1$
- $\varphi$는 곱셈적 함수 (Multiplicative):
→ 만약 $\gcd(m,n) = 1$ 이라면, $\varphi(mn) = \varphi(m) \cdot \varphi(n)$
- 공식
- $n = pq$ (두 소수 $p, q$ 일 때), $\varphi(pq) = (p-1)(q-1)$
- $n = p^k$ (소수 $p$의 거듭제곱일 때), $\varphi(p^k) = p^{k-1}(p-1)$
- 예시
- $\varphi(7) = 6$
- $\varphi(8) = 4$
- $\varphi(12) = 4$
- $\varphi(1457) = \varphi(31 \cdot 47) = \varphi(31)\varphi(47)$
$= (31-1)(47-1)$ = $30 \cdot 46 = 1380$ - $\varphi(1024) = \varphi(2^{10}) = 2^{10-1}(2-1) = 512$
- Fermat and Euler
- Fermat’s Little Theorem
- $p$가 소수일 때,
\(\gcd(a,p)=1 \;\;\Rightarrow\;\; a^{p-1} \equiv 1 \pmod{p}\)
- $p$가 소수일 때,
- Euler’s Theorem
- $a \in \mathbb{Z}_n^*$ 이면, \(a^{\varphi(n)} \equiv 1 \pmod{n}\)
- 따라서 임의의 정수 $a$에 대해, \(a^r \equiv a^s \pmod{n}, \quad \text{if } r \equiv s \pmod{\varphi(n)}\)
- $n$이 소수라면, $\varphi(n)=n-1$ 이므로, 페르마 소정리로 귀결된다.
📘 법(法)과 항등식
- 정의
- $(a-b)$ 가 $n$의 배수 $\Leftrightarrow a \equiv b \pmod{n}$
- $a$를 $n$으로 나눈 나머지$ \equiv a \pmod{n}$
- 예: $5 \equiv 2 \pmod{3}$, $5 \pmod{3} \equiv 2$
- 성질
- $a \equiv b \pmod{n}$ 이고 $c \equiv d \pmod{n}$ 이면,
- $a + c \equiv b + d \pmod{n}$
- $a - c \equiv b - d \pmod{n}$
- $ac \equiv bd \pmod{n}$
- $a \equiv b \pmod{n}$ 이고 $c \equiv d \pmod{n}$ 이면,
- 예시
- $1234 \times (56-78)$ 을 $3$으로 나눈 나머지는?
- $proof 1$
- $56 - 78 = -22 \equiv -1 \equiv 2 \pmod{3}$
- $1234 \equiv 1 \pmod{3}$
- $proof 2$
- $(1233+1) \times {(54+2)-(78+0)}$ $\equiv 1 \times (2-0) \equiv 2 \pmod{3}$
- 따라서 $1234 \times (56-78) \equiv 1 \times 2 \equiv 2 \pmod{3}$
- 최종 답: 나머지는 $2$
2) RSA 암호 (1978): Revest, Shamir, Adleman
- $n = pq$ (소수 $p, q$) 일 때, $\varphi(n)=(p-1)(q-1)$ 을 성립한다.
- Euler 정리: $n$과 서로소인 정수 $x$에 대해 $x^{\varphi(n)} \equiv 1 \pmod{n}$
- 준비 과정 (Alice)
- 소수 $p, q \rightarrow n = pq$
- 공개키 $(n,e)$: $n$보다 작은 정수 (이때, $\color{red}{e=2^{16}+1}$을 많이 사용)
- 비밀키 $(p,q,d)$: $de \equiv 1 \pmod{\varphi(n)}$
- 암호화(아무나): 암호문 $c \equiv m^{e} \pmod{n}$ 을 계산
- 복호화(비밀키 소유자 Alice만 가능):
- 암호문 $c$를 받아 $c^{d} = (m^{e})^d = m^{k\varphi(n)+1} \equiv m \pmod{n}$ 계산
(단, $m, n$이 서로소인 경우만 성립)
- 암호문 $c$를 받아 $c^{d} = (m^{e})^d = m^{k\varphi(n)+1} \equiv m \pmod{n}$ 계산
- 보안성: 공개키 $(n,e)$
- $n$을 인수분해 $\rightarrow p,q$ 안다 $\rightarrow \varphi(n)$ 안다 $\rightarrow e$에서 $d$ 계산 $\rightarrow c$에서 $m$ 계산
- 역은 성립하는 가?
- 복호화를 할 수 있다고 해서 비밀키 $d$를 알기 어렵다.
- $de \equiv 1 \pmod{\varphi(n)} \Leftrightarrow \varphi(n) | (ed-1)$
$\rightarrow \color{red}(ed-1)$을 안다고 해서 $\varphi(n)$을 안다는 보장이 없다!
3) Modular 지수승 계산 방법
- $d$의 생성: Extended Euclidean Algorithm $O(\log^{2}{n})$
- 지수승 계산: $a^{e}$ for $e = \sum_{i=0}^{t} e_{i} 2^{i}, \quad e_{i} \in {0,1}$
- 전개: \(e_{t}2^{t}+e_{t-1}2^{t-1}+ \cdots +e_{1}2^{1}+e_{0}\)
- 계산 구조: \((((a^{e_{t}})^{2}a^{e_{t-1}})^{2} \cdots )^{2}a^{e_{1}})^{2}a^{e_{0}}=a^{e_{t}2^{t}+e_{t-1}2^{t-1}+\cdots+e_{1}2^{1}+e_{0}2^{0}}\)
-
예시: $2^{26} \pmod{17}$
- $26 = (11010)_{2} = 2^{4}+2^{3}+2^{1}$
$\rightarrow 2^{26} = 2^{16} \cdot 2^{8} \cdot 2^{2}$ - $2^{1} \equiv 2 \pmod{17}$
- $2^{2} \equiv 4 \pmod{17}$
- $2^{4} \equiv 16 \equiv -1 \pmod{17}$
- $2^{8} \equiv (-1)^{2} = 1 \pmod{17}$
- $2^{16} \equiv (2^{8})^{2} \equiv 1^{2} = 1 \pmod{17}$
- $26 = (11010)_{2} = 2^{4}+2^{3}+2^{1}$
- 계산량 $\varphi(n)$
- $(t+1)$: $e$ 의 bit length | $wt(e)$: $e$의 Hamming weight
- $g$에 의해 $(t+1)$번 제곱, | $(wt(e)-1)$번 곱셈 필요
- $0 \le wt(e)-1 < |e| \Rightarrow$ 평균적으로 $|e|/2$ 성립
- $e.g.) |n|=1024 \Rightarrow$ 약 $1,536$번 곱셈 연산 필요
4) Fast Implementation in RSA
- Fast Multiplication
- Karatsuba Method
\(\colon (a_{0}+a_{1}x)(b_{0}+b_{1}x) = a_{0}b_{0}+(a_{0}b_{1}+a_{1}b_{0})x+a_{1}b_{1}x^{2}\) - Toom-Cook, FFT
- Montgomery Reduction
- Karatsuba Method
- Fast Exponentiation
- Sliding Window Method
- 밑(base)가 고정된 경우 Precomputation 활용
5) Fast Decryption Using CRT(중국인 나머지 정리)
- 목표: $M=C^{d} \pmod{n}$ where $n=pq$ 계산
- 계산 과정
- $C^{d} \pmod{p}$ 와 $C^{d} \pmod{q}$를 먼저 구한 뒤, CRT 이용
- $d_{1} = d \pmod{p-1} \Rightarrow M_{1} = C^{d} \pmod{p} = C^{d_{1}} \pmod{p}$
- $d_{2} = d \pmod{p-1} \Rightarrow M_{2} = C^{d} \pmod{p} = C^{d_{2}} \pmod{p}$
- CRT를 사용해 $M_{1} \& M_{2}$로부터 $M$ 계산 $\rightarrow M=M_{2}p(p^{-1} \pmod{q})+M_{1}q(q^{-1} \pmod{p})$
- 장점: 직접 계산 대비 약 4배 빠름
- $C^{d} \pmod{n}은 약 (1.5 \log{d}$ 번의 곱셈 필요
- 곱셈: $O(\log^{2}{n})$, 지수승 계산: $O(\log^3{n})$
- 모듈러 크기를 절반으로 줄여 두 번 반복하는 구조
- $d_{1}, d_{2}, p, q, p^{-1}, q^{-1}$ 저장
📘 중국인 나머지 정리 (CRT)
정의
서로소인 두 수 $n_1, n_2$에 대해, \(\begin{cases} x \equiv a_1 \pmod{n_1} \\ x \equiv a_2 \pmod{n_2} \end{cases}\) 를 만족하는 해 $x$는 $n_1 n_2$ 범위에서 유일하게 존재한다.- 성질
- $n_1, n_2$가 서로소이면 위의 합동식은 항상 해를 가진다.
- 해는 \(x \equiv a_1 n_2 (n_2^{-1} \pmod{n_1}) + a_2 n_1 (n_1^{-1} \pmod{n_2}) \pmod{n_1 n_2}\) 로 구할 수 있다.
- 예시
다음 합동식을 풀어보자: \(\begin{cases} x \equiv 2 \pmod{3} \\ x \equiv 3 \pmod{5} \end{cases}\)$n_1=3, n_2=5$ 일 때,
$\rightarrow 5^{-1} \equiv 2 \pmod{3}, \;\; 3^{-1} \equiv 2 \pmod{5}$
\(\therefore x \equiv 2 \times 5 \times 2 + 3 \times 3 \times 2 = 38 \equiv 8 \pmod{15}\)최종 답: $x \equiv 8 \pmod{15}$