키 배송 문제
대칭키 암호를 사용하려고 하면 키 배송 문제가 발생한다.
키를 보내지 않으면 수신자 밥은 수신한 암호문을 복호화할 수 없으며, 암호화 되지 않은 키를 보내면 도청자 이브도 복호화가 가능하다.
키의 사전 공유에 의한 해결
키 관리기관(TA, trusted authority)이 사전에 임의의 두 사용자(A, B)에게 비밀 경로를 통하여 임의 키 $K_{A, B}=B_{B,A}$를 선택하여 전달하는 방법이다.
키 배포 센터에 의한 해결(온라인 키 분배)
타암호 통신이 필요해질 때마다 키배포 센터(KDC, key distribution center)라는 신뢰받는 제3자에 의뢰해서 개인과 키배포 센터 사이에서만 키를 사전에 공유하는 것이다.
Diffie-Hellman 키 교환에 의한 해결
공개키(비대칭키) 암호방식의 개념을 이용하여 두 사용자 간에 공통의 암호화키를 안전하게 공유할 수 있는 방법이다.
이 방법의 안전성은 이산대수 문제를 풀기 어렵다는 것에 기반을 두고 있다.
공개키 암호에 의한 해결
공개키 암호에서는 암호화키와 복호화키가 다르다.
수신자는 미리 암호화키를 송신자에게 알려주고, 송신자는 암호화키로 암호화하여 수신자에게 보낸다. 그러면 복호화키를 가지고 있는 수신자만 복호화할 수 있게된다.
공개키 암호: Public-key cryptography
공개키 암호에서 공개키와 개인키는 밀접한 수학적 관계를 가지고 있기 때문에 각각 별개로 만들 수는 없다.
공개키 암호는 중간자(man-in-the-middle)공격에 취약하다. 중간자 공격을 막기 위해서는 입수한 공개키가 정말 밥의 것이라는 것을 확인할 수 있는 수단인 인증이 필요하다.
비대칭키 암호 시스템은 수학적인 함수를 사용하므로 처리 속도가 대칭키 암호 시스템보다 느리지만, 인증이나 전자서명, 대칭키 교환에 유용하게 사용되고 있다.
RSA 암호 시스템
인수분해 문제(Prime factorization) 해결의 높은 난이도를 이용한 가장 대표적인 공개키 암호 알고리즘이다.
RSA에 대한 공격은 다음과 같다.
- 수학적 공격(소인수분해 공격)
- 타이밍 공격(시간 공격)
- 선택 암호문 공격과 OAEP
권장사항은 다음과 같다.
- n의 비트수는 적어도 1024비트가 되어야 한다.
- 두 개의 소수 p와 q는 적어도 512비트가 되어야 한다.
- p와 q는 같지 않고 거의 같은 크기의 소수여야 한다.
- p-1과 q-1은 커다란 소인수를 각각 가져야 한다.
- p-1과 q-1의 최대공약수는 작은 수이어야 한다.
- 메시지는 OAEP를 사용해서 패딩되어야 한다.
최적 비대칭키 암호 패딩(OAEP)
Rabin 암호 시스템
RSA가 지수합동에 근거하고 있고, Rabin은 2차 합동에 근거를 두고 있다.
ElGamal 암호 시스템
ElGamal은 이산대수 문제에 근거해서 만든 시스템이다.
타원 곡선 암호(ECC, Elliptic Curve Cryptosystem)
RSA와 ElGamal이 안전한 비대칭키 암호시스템이긴 하지만 보안을 위해서 키의 길이가 매우 길어야한다는 단점이 있다.
타원 곡선 암호는 동일한 수준의 보안성을 제공하면서 키의 길이는 짧은 암호 시스템이다.
이 타원 곡선 암호 시스템은 타원곡선 이산대수 문제(ECDLP)에 근거를 두고 있다.
하이브리드 암호 시스템
하이브리드 암호 시스템은 공개키 암호 시스템의 처리 속도가 느리다는 단점을 해결한 시스템이다.
메시지를 고속의 대칭키 암호로 암호화하고, 대칭키 암호키를 공개키 암호로 암호화한다.