Qualys SSL Labs를 통해 jroh.kr의 SSL상태를 점검하던 중, 디피-헬만 키교환 알고리즘에 경고가 있음을 발견하였다.


1. Diffi-Hellman key exchange 란?
디피-헬만 키 교환이란 암호 키를 교환하는 방법이다. 중간자가 알아볼 수 없는 형태의 값만 공유하고 특정연산을 이용하여 최종적으로 비밀키를 공유할 수 있다.
노씨와 이씨가 서로 암호화된 통신을 하려고 한다고 가정하면:
- 노씨가 소수 P, 정수 G를 선택해 이씨에게 보낸다
- 노씨는 정수 a를 선택한다 (노씨만 알고있음)
- 이씨도 정수 b를 선택한다 (이씨만 알고있음)
- 노씨는 A=G^a mod P 를 계산한다
- 이씨는 B=G^b mod P 를 계산한다
- 노씨는 A를 이씨에게 전송
- 이씨는 B를 노씨에게 전송
- 노씨: B^a mod P
- 이씨: A^b mod P
- 둘은 공통 키값을 얻게 되며, 중간자는 혼합값으로는 키를 알 수 없다
2. Diffi-Hellman 1024bit가 안전하지 않은 이유?
Logjam 취약점 때문이다. 1990년대 초 미정부가 수출용 암호화를 512bit로 제한하였고, Logjam은 TLS프로토콜의 취약점을 이용해 DH 키를 수출용 512bit로 다운그레이드시킬 수 있는 취약점이다.
3. 해결방법
첫째, OpenSSL 버젼 업데이트:
- OpenSSL 1.0.2 : 1.0.2b이상
- OpenSSL 1.0.1 : 1.0.1n이상

둘째, Diffie-Hellman 수출용 Cipher Suite를 사용하지 않는다.
셋째, ECDHE 을 사용한다. 타원-곡선형 디피-헬만(ECDH) 키 교환은 실현 가능한 모든 암호 해독학적 공격을 우회할 수 있다고 한다.

넷째, Diffie-hellman의 키값을 2048bit 이상으로 생성하고 새롭고 고유한 방법으로 Diffie Hellman 그룹을 생성하여 적용한다.

4. 2048bit로 생성/적용
Nginx:
nginx를 재시작. 다시 ssllab에서 테스트 시 Diffie Hellman 1024bit 취약성이 해결되어 등급이 상승함을 확인 할 수 있다 🙂


참고: https://weakdh.org/sysadmin.html
원본: rsec.kr/?p=242