[암호학] ElGamal 암호

ShinboTinBBO·2024년 11월 25일

cryptography

목록 보기
2/10

ElGamal 암호는 symmetric cryptography의 일종이다.

이산대수문제(DLP)에 기반한 암호이다.

ElGamal의 개요

키 생성

  1. 큰 소수 pp 선택 (2048bit 이상의 크기)
  2. 1dp21 \leq d \leq p-2 범위의 임의의 d를 선택
  3. ZnZ_n^* 에서 원시근 e1e_1을 선택
  4. e2e1d(modp)e_2 \equiv e_1^d \pmod{p} 를 계산
  5. 공개키는 (e1,e2,p)(e_1, e_2, p), 개인키는 dd

암호화

  1. 임의의 값 rr 선택
  2. c1e1r(modp)c_1 \equiv e_1^r \pmod{p}
  3. c2(m×e2r)(modp)c_2 \equiv (m \times e_2^r) \pmod{p}
  4. 암호문 (c1,c2)(c_1, c_2)

복호화

  1. c2×(c1d)1modpc_2 \times (c_1^d)^{-1} \mod{p}

    c2×(c1d)1(e2r×m)×(e1rd)1(e1rd×e1rd)1×mm(modp)c_2 \times (c_1^d)^{-1} \equiv (e_2^r \times m) \times (e_1^{rd})^{-1} \equiv (e_1^{rd} \times e_1^{rd})^{-1} \times m \equiv m \pmod{p}

ElGamal의 취약점

Low-Modulus Attack

충분히 크지 않은 소수 pp를 사용한다면 전수 조사나 이산대수의 성질로 인해 개인키 dd나 임의의 값 rr이 노출될 수 있다.
따라서 pp는 적어도 2048bit 이상을 사용한다.

Known Plaintext Attack

mm에 대한 c1,c2c_1, c_2를 알고 있으며
같은 rr을 사용한 mm^*에 대한 암호문 c1,c2c_1^*, c_2^*을 얻으면

  1. e2rc2×m1(modp)e_2^r \equiv c_2 \times m^{-1} \pmod{p}
  2. c2×(e2r)1modp=mc_2^* \times (e_2^r)^{-1} \mod{p} = m^*
profile
지상 최강의 해적

0개의 댓글