ElGamal — 이산 대수 기반 공개키 암호
RSA가 소인수분해의 어려움 위에 서있다면, ElGamal은 이산 대수 문제(DLP) 위에 서있다. 두 시스템은 서로 다른 수학적 어려움을 활용하지만, 결정적 차이가 하나 있다 — ElGamal은 암호화할 때마다 다른 암호문을 생성한다. 이것이 단순한 특성을 넘어 의미론적 안전성(IND-CPA)의 핵심이 된다.
- 보안 근거: 이산 대수 문제 (DLP) — g^x mod p에서 x를 구하는 것은 지수적으로 어렵다
- 키 생성: 비밀키 x, 공개키 h = g^x mod p
- 암호화: 랜덤 k 선택 → 암호문 (A, B) = (g^k, m·h^k) mod p
- 복호화: 공유 비밀 s = A^x, 평문 m = B·s⁻¹ mod p
- 확률적 암호화: 같은 평문도 k가 달라지면 다른 암호문 → IND-CPA 만족
RSA와의 차이: 왜 다른 어려움이 필요한가
RSA는 소인수분해의 어려움에 의존한다. 이 문제는 검증된 어려움이지만, 같은 평문을 항상 같은 암호문으로 변환한다는 결정론적(deterministic) 특성이 있다. 공격자가 후보 평문을 암호화해 비교하는 선택 평문 공격(CPA)에 취약하다.
ElGamal은 이산 대수 문제(Discrete Logarithm Problem, DLP) 라는 독립적인 어려움을 사용한다. 그리고 암호화 과정에 랜덤성을 도입해 동일한 평문도 매번 다른 암호문으로 변환된다.
이산 대수 문제 (DLP)
소수 , 생성원(generator) , 그리고 가 주어졌을 때, 를 구하여라.
정방향 계산 는 Square-and-Multiply로 에 가능하다. 반면 역방향 를 구하는 알고리즘은 아직 다항식 시간으로 알려져 있지 않다. 가장 빠른 알고리즘(Number Field Sieve)조차 준지수 시간 이 필요하다.
생성원(Generator): 소수 에 대해 가 생성원 이라는 것은 의 거듭제곱이 의 모든 원소를 순환한다는 의미다.
, 이면 으로 10개 원소 전부를 생성한다. 페르마의 소정리에 의해 이므로, 지수는 주기 로 순환한다.
ElGamal 설정
공개 파라미터: 큰 소수 , 의 생성원
키 생성 (수신자 Alice):
- 비밀키 를 범위에서 무작위 선택
- 계산
- 공개키: · 개인키:
암호화 (송신자 Bob):
- 임시 비밀(ephemeral key) 를 범위에서 무작위 선택
- 암호문:
복호화 (수신자 Alice):
- 공유 비밀 계산
- 의 모듈러 역원 계산 (확장 유클리드 알고리즘)
- 복원:
복호화 정확성 증명
왜 이 을 복원하는가.
따라서 이다. 의 정의에 의해
핵심은 Alice와 Bob이 각자 독립적으로 동일한 공유 비밀 를 계산한다는 것이다.
- Bob: — Alice의 공개키 와 자신의 임시 키 사용
- Alice: — Bob이 보낸 와 자신의 비밀키 사용
이는 Diffie-Hellman 키 교환 의 직접적인 응용이다. ElGamal 암호화는 DH 키 교환에 메시지 마스킹()을 결합한 구조이다.
보안 근거: CDH 가정
ElGamal의 보안은 계산적 Diffie-Hellman(CDH) 가정 에 기반한다.
, , 가 주어졌을 때, 를 계산하는 다항식 시간 알고리즘이 존재하지 않는다.
공격자가 암호문 을 가로채더라도, 공유 비밀 를 계산하지 못하면 을 복원할 수 없다. CDH를 풀려면 DLP를 풀어야 하므로, CDH DLP — CDH가 쉬우면 DLP도 쉽다. 따라서 DLP가 어려운 한 CDH도 어렵다고 가정한다.
CDH 가정은 "재료 두 개(g^x, g^k)를 알아도 완성품(g^{xk})을 만들 수 없다"는 것이다. 공격자는 Alice의 공개키와 Bob이 보낸 값을 모두 볼 수 있지만, 이 둘을 결합해서 공유 비밀을 계산하는 것이 수학적으로 어렵다. 이 어려움이 ElGamal 암호의 안전성을 보장한다.
확률적 암호화와 IND-CPA 안전성
ElGamal의 핵심 이점은 확률적(randomized) 암호화다.
같은 평문 도 임시 키 가 달라지면 완전히 다른 암호문이 생성된다.
이 성질은 IND-CPA(선택 평문 공격 하 식별 불가능성) 안전성을 가능하게 한다.
- RSA(교과서적): 가 결정론적. 공격자가 두 후보 을 직접 암호화해 도전 암호문 와 비교 가능.
- ElGamal: 가 확률적. 공격자가 을 암호화해도 가 달라 와 일치하지 않음.
단, 암호문이 두 개의 군 원소 로 구성되므로 평문 대비 암호문 크기가 2배 로 증가한다. RSA 대비 트레이드오프다.
- 보안 근거: ElGamal — DLP (이산 대수), RSA — 소인수분해
- 암호화 유형: ElGamal — 확률적 (IND-CPA), RSA — 결정론적 (교과서적)
- 암호문 크기: ElGamal — 평문의 2배, RSA — 평문과 동일
- 랜덤 비트 사용: ElGamal — 매번 필요, RSA — 불필요 (OAEP 적용 시 필요)
올바른 파라미터 선택
소수 크기: DLP의 어려움은 의 크기에 비례한다. 현재 권장은 2048비트 이상. 이 큰 소인수를 포함해야 한다 (Pohlig-Hellman 공격 방지).
생성원 선택: 가 전체를 생성해야 한다. 의 소인수 에 대해 를 확인한다.
임시 키 관리: 는 암호화마다 독립적으로 새로 선택해야 한다. 같은 를 두 번 사용하면 두 암호문 , 에서 가 노출된다.
- ElGamal은 DLP의 어려움에 기반한다. g^x를 알아도 x를 역산하는 다항식 알고리즘은 알려져 있지 않다.
- 복호화 정확성은 A^x = h^k = g^(kx)라는 공유 비밀의 동등성에서 비롯된다. Diffie-Hellman 키 교환의 직접 응용이다.
- 확률적 암호화 덕분에 동일 평문도 매번 다른 암호문을 생성한다 — IND-CPA 안전성의 핵심이다.
- 임시 키 k를 재사용하면 즉시 평문 비율이 노출된다. k는 반드시 매번 새로 생성해야 한다.
Diffie-Hellman — 공개 채널 위의 비밀 키 교환 — ElGamal의 수학적 기반이 된 Diffie-Hellman 키 교환 프로토콜, CDH/DDH 가정, 중간자 공격과 인증 문제, 전방향 안전성, 그리고 DH에서 ElGamal로의 확장까지 다룬다.