검수요청.png검수요청.png

디피-헬만

해시넷
minee96 (토론 | 기여)님의 2019년 8월 1일 (목) 13:14 판
이동: 둘러보기, 검색

디피-헬만(Diffie-Hellman)은 1976년 미국 스탠퍼드 대학교휘트필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)이 "New Directions in Cryptography"(암호학의 새로운 방향)이라는 논문에서 처음으로 공개 발표한 키교환 알고리즘이다. 이 논문을 통해 디피-헬만 키 교환은 제일 기초가 되는 암호학적 통신 방법을 만들었다. RSA 암호화 알고리즘의 바탕이 되기도 하였다.[1]

개요

디피-헬만 알고리즘(Diffie-Hellman Algorithm)의 핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것이다. 그 후에 나와 상대방은 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 이러한 디피-헬만 알고리즘(DH 알고리즘)은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 하지만 이는 암호화나 서명을 위한 것은 아니다.

등장 배경

정보의 비밀 유지가 중요해지기 시작하면서 암호학이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 대칭키 암호 알고리즘을 이용했다. 하지만 대칭키 암호 알고리즘에는 문제점이 있었다. 디피,헬만은 인터넷상에서 이러한 문제들을 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘을 만들었다.[2] 암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 데이터를 암호화와 복호화 하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 대칭키 암호화라고 한다.

하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.

동작 원리

  • 공개적으로 교환할 발생기(generator)를 생성한다. (p는 소수, g는 생성자)
  • A는 개인키 a를 이용하여 g^a mod p를 생성한다. (여기서 mod는 나눗셈의 나머지를 구하는 연산이다.)
  • B는 개인키 b를 이용하여 g^b mod p를 생성한다.
  • A는 B에게 g^a mod p를 보내고 B는 A에게 g^b mod p를 보낸다.
  • A는 자신의 개인키 a를 이용하여 g^ab mod p를 생성하고 B는 자신의 개인키 b를 이용하여 g^ab mod p를 생성한다.
  • A와 B는 새롭게 생성된 키를 대칭키(비밀키)로 이용한다. (A와 B가 교환하여 결합한 값이 서로 같다는 것을 확인한다.)
  • 이때 A와 B 사이에서 데이터를 가로챈 공격자는 가로챈 값들로 g^ab mod p를 만들 수 없다. 공격자는 g^a+b mod p밖에 만들지 못한다.

특징

장점

  • 이산 대수 문제의 어려움에 기반하여 안전성이 유지된다.
  • 디피-헬만 알고리즘은 대칭키를 비밀스럽게 만들 수 있다.
  • 비밀키를 필요할 때마다 다르게 생성하여, 비밀키 보관에 따른 노출 위험성이 작아진다.

단점

단점에 대한 해결책

디피-헬만 취약점

디피-헬만 알고리즘을 사용하는 TLS 연결에서 로그잼(Logjam)이라는 TLS 연결 취약점이 발견되었다. 취약한 DHE 연결의 오프라인 암호 해독이 가능하거나, 의도적으로 512bit로 DHE_EXPORT 다운그레이드 및 TLS False Start 확장 오프라인 해독 공격, DHE_EXPORT 다운그레이드 및 중간자가 서버 자격을 변경하는 등의 공격 시나리오를 가질 수 있다. 이를 통해 암호화된 통신을 해독하여 도감청이 가능해진다.[3]

해결 방안

이러한 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.[3]

  1. OpenSSL 버전 업데이트 : OpenSSL 1.0.2b 이상 1.0.1n 이상이면 관련 취약점의 회피가 가능하다. 이는 기존 DH 파라미터가 768bit보다 짧다면 handshake를 거부하도록 하던 TLS 클라이언트에 대한 보호 기능이 1024bit로 증가했기 때문이다.
  2. ECDHE(Elliptic-Curve Hellman) 사용 : 현재 실현 가능하다고 알려져 있는 암호해독 공격을 우회할 수 있는 교환 방식으로 알려져 있다. 웹 브라우저들은 ECDHE 방식을 더욱 선호한다.
  3. Diffie-Hellman 키 size 변경 : 디피-헬만 키를 사용할 경우 기존 사용하던 512,1024bit를 넘어선 2048bit 이상으로 생성하고, 새롭고 고유한 방법의 그룹을 생성한다. 주의할 점은 디피-헬만 키의 사이즈를 변경하기 위해선 JDK 버전을 확인해야 한다. JDK 1.7부터 2048bit를 지원하여 출발지와 도착지의 지원 스펙이 다르면 SSLHandShakeException 에러가 발생할 수 있다.
  4. 디피-헬만 수출용 Cipher Suite를 사용하지 않는다.

각주

  1. 디피-헬만 알고리즘(Diffie-Hellman Algorithm〉, 《개인 블로그》, 2018-04-22
  2. 손경호 기자, 〈공개키 고안한 디피-헬만, 올해 '튜링'상 수상〉, 《지디넷코리아》, 2016-03-04
  3. 3.0 3.1 와스프로 GodNR, 〈(SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)〉, 《티스토리》, 2019-06-03

참고자료

같이 보기


  검수요청.png검수요청.png 이 디피-헬만 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.