PromleeBlog
sitemap
aboutMe
Menu
Welcome to
✨ Promlee Blog ✨
View 📈
Total: -
Today: -
추천 포스트
개인학습
정보보호이론
공개 키 암호화
엘가말 암호
엘가말 암호
ElGamal Encryption
📅
🚀
엘가말 암호화 개요 (ElGamal Encryption Overview)
🔗
확률적 암호화 방식
결정론적 디피-헬만 문제가 불가능할 경우 IND-CPA(INDistinguishability under Chosen-Plaintext Attack) 보안성을 제공
👨💻
결정론적 디피-헬만 문제 (DDH, Decisional Diffie-Hellman)
g
,
g
a
,
g
b
g, g^a, g^b
g
,
g
a
,
g
b
와
X
X
X
가 주어졌을 때
X
X
X
가
g
a
b
g^{ab}
g
ab
인지
g
c
g^c
g
c
인지 구분하는 문제(c는 무작위)
DDH 문제가 어려운 것으로 간주된다면, 같은 인스턴스의 CDH 문제도 어렵다
원래의 ElGamal 암호화는 곱셈적 homomorphic(동형성)특성을 가진다.
E
K
p
u
b
(
M
1
)
⋅
E
K
p
u
b
(
M
2
)
=
E
K
p
u
b
(
M
1
⋅
M
2
)
E_{K_{pub}}(M_1) \cdot E_{K_{pub}}(M_2) = E_{K_{pub}}(M_1 \cdot M_2)
E
K
p
u
b
(
M
1
)
⋅
E
K
p
u
b
(
M
2
)
=
E
K
p
u
b
(
M
1
⋅
M
2
)
일반적인 변환을 사용하면 IND-CCA2(INDistinguishability under Chosen-Ciphertext Attack) 보안성을 제공
곱셈적 호모모픽 특성
은 암호화된 값을 직접적으로 곱하여, 그 결과를 다시 복호화했을 때 원래 값들의 곱과 같은 결과를 얻는 성질을 의미한다.
이 특성은 데이터의 개인 정보를 보호하면서도 암호화된 형태로 계산을 가능하게 해준다.
🚀
엘가말 암호화 과정 (ElGamal Encryption Process)
🔗
키 생성
소수
p
p
p
선택
Z
p
∗
\mathbb{Z}_p^*
Z
p
∗
의 부분군
G
\mathbb{G}
G
에서 생성자
g
g
g
선택
이 부분군의 차수:
q
q
q
Z
q
\mathbb{Z}_q
Z
q
에서 무작위 원소
x
x
x
선택 후
X
=
g
x
(
m
o
d
q
)
X = g^x \pmod{q}
X
=
g
x
(
mod
q
)
계산
공개 키
pk
=
(
p
,
q
,
g
,
X
)
\text{pk} = (p, q, g, X)
pk
=
(
p
,
q
,
g
,
X
)
, 비밀 키
sk
=
x
\text{sk} = x
sk
=
x
출력
암호화
Z
q
\mathbb{Z}_q
Z
q
에서 무작위 원소
r
r
r
선택
C
1
=
g
r
C_1 = g^r
C
1
=
g
r
과
C
2
=
M
⋅
X
r
C_2 = M \cdot X^r
C
2
=
M
⋅
X
r
계산 후 암호문
C
T
=
(
C
1
,
C
2
)
CT = (C_1, C_2)
CT
=
(
C
1
,
C
2
)
출력
복호화
비밀 키
sk
=
x
\text{sk} = x
sk
=
x
와 암호문
C
T
=
(
C
1
,
C
2
)
CT = (C_1, C_2)
CT
=
(
C
1
,
C
2
)
가 주어졌을 때
C
2
/
(
C
1
)
x
(
=
M
⋅
X
r
/
(
g
r
)
x
=
M
)
C_2 / (C_1)^x (= M \cdot X^r / (g^r)^x = M)
C
2
/
(
C
1
)
x
(
=
M
⋅
X
r
/
(
g
r
)
x
=
M
)
을 계산하여 평문
M
M
M
출력
✅
예시 (엘가말 암호화)
🔗
p
=
23
,
q
=
11
,
g
=
2
,
x
=
6
,
M
=
9
p = 23, q = 11, g = 2, x = 6, M = 9
p
=
23
,
q
=
11
,
g
=
2
,
x
=
6
,
M
=
9
공개 키:
pk
=
(
23
,
11
,
2
,
8
)
\text{pk} = (23, 11, 2, 8)
pk
=
(
23
,
11
,
2
,
8
)
, 비밀 키:
sk
=
6
\text{sk} = 6
sk
=
6
암호화
r
=
3
r = 3
r
=
3
일 때,
C
1
=
2
3
=
8
C_1 = 2^3 = 8
C
1
=
2
3
=
8
C
2
=
9
⋅
8
3
=
9
⋅
512
=
4608
C_2 = 9 \cdot 8^3 = 9 \cdot 512 = 4608
C
2
=
9
⋅
8
3
=
9
⋅
512
=
4608
복호화
M
=
4608
/
8
6
=
9
M = 4608 / 8^6 = 9
M
=
4608/
8
6
=
9
🚀 엘가말 암호화 개요
🚀 엘가말 암호화 과정
✅ 예시