ElGamal 암호는 symmetric cryptography의 일종이다.
이산대수문제(DLP)에 기반한 암호이다.
ElGamal의 개요
키 생성
- 큰 소수 p 선택 (2048bit 이상의 크기)
- 1≤d≤p−2 범위의 임의의 d를 선택
- Zn∗ 에서 원시근 e1을 선택
- e2≡e1d(modp) 를 계산
- 공개키는 (e1,e2,p), 개인키는 d
암호화
- 임의의 값 r 선택
- c1≡e1r(modp)
- c2≡(m×e2r)(modp)
- 암호문 (c1,c2)
복호화
-
c2×(c1d)−1modp
c2×(c1d)−1≡(e2r×m)×(e1rd)−1≡(e1rd×e1rd)−1×m≡m(modp)
ElGamal의 취약점
Low-Modulus Attack
충분히 크지 않은 소수 p를 사용한다면 전수 조사나 이산대수의 성질로 인해 개인키 d나 임의의 값 r이 노출될 수 있다.
따라서 p는 적어도 2048bit 이상을 사용한다.
Known Plaintext Attack
m에 대한 c1,c2를 알고 있으며
같은 r을 사용한 m∗에 대한 암호문 c1∗,c2∗을 얻으면
- e2r≡c2×m−1(modp)
- c2∗×(e2r)−1modp=m∗