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

"디피-헬만"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (등장 배경)
 
(사용자 6명의 중간 판 10개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''디피-헬만'''<!--디피 헬만, 디피헬만-->(Diffie-Hellman)은 1976년 미국 [[스탠퍼드 대학교]]의 [[휘트필드 디피]](Whitfield Diffie)와 [[마틴 헬만]](Martin Hellman)이 "New Directions in Cryptography"(암호학의 새로운 방향)이라는 논문에서 처음으로 공개 발표한 [[키교환 알고리즘]]이다. 이 논문을 통해 디피-헬만 키 교환은 제일 기초가 되는 암호학적 통신 방법을 만들었다. [[RSA]] 암호화 알고리즘의 바탕이 되기도 하였다.<ref>〈[https://www.crocus.co.kr/1233 디피-헬만 알고리즘(Diffie-Hellman Algorithm]〉, 《개인 블로그》, 2018-04-22</ref>
+
[[파일:휫필드 디피.jpg|썸네일|200픽셀|'''[[휫필드 디피]]'''(Whitfield Diffie)]]
 +
[[파일:마틴 헬만.jpg|썸네일|200픽셀|'''[[마틴 헬만]]'''(Martin Hellman)]]
 +
 
 +
'''디피-헬만'''<!--디피 헬만, 디피헬만-->(Diffie-Hellman)은 최초의 [[공개키]] [[암호 알고리즘]]으로서, 1976년, 미국 [[스탠퍼드 대학]]의 연구원 [[휫필드 디피]](Whitfield Diffie)와 [[마틴 헬만]](Martin Hellman)이 공동 개발하여 발표한 것이다.
  
 
== 개요 ==
 
== 개요 ==
디피-헬만 알고리즘(Diffie-Hellman Algorithm)핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것이다. 그 후에 나와 상대방은 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 이러한 디피-헬만 알고리즘(DH 알고리즘)은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 하지만 이는 암호화나 서명을 위한 것은 아니다.
+
디피-헬만 알고리즘(Diffie-Hellman Algorithm)은 두 사용자가 사전에 어떤 비밀 교환 없이도 공통키를 교환하게 해주는 알고리즘이다. 디피-헬만 알고리즘의 핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것인데, 이후에 나와 상대방은 생성된 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 디피-헬만 알고리즘은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 디피-헬만 알고리즘을 기반으로 하는 디피-헬만 키교환은 가장 기초가 되는 암호학적 통신 방법을 만들었으며 RSA 암호화 알고리즘의 바탕이 되기도 했다.<ref>〈[https://www.crocus.co.kr/1233 디피-헬만 알고리즘(Diffie-Hellman Algorithm]〉, 《개인 블로그》, 2018-04-22</ref> 하지만 이는 [[암호화]]나 [[전자서명]]을 위한 것은 아니다.<ref>〈[https://terms.naver.com/entry.nhn?docId=301754&cid=50373&categoryId=50373 디피헬만 알고리즘(Diffie-Hellman Algorithm)]〉, 《네이버 지식백과》</ref>
  
 
== 등장 배경 ==
 
== 등장 배경 ==
정보의 비밀 유지가 중요해지기 시작하면서 [[암호학]]이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 [[대칭키 암호 알고리즘]]을 이용했다. 하지만 대칭키 암호 알고리즘에는 문제점이 있었다. 디피,헬만은 인터넷상에서 이러한 문제들을 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘을 만들었다.<ref>손경호 기자, 〈[https://m.zdnet.co.kr/news_view.asp?article_id=20160303021427 공개키 고안한 디피-헬만, 올해 '튜링'상 수상]〉, 《지디넷코리아》, 2016-03-04</ref>
+
정보의 비밀 유지가 중요해지기 시작하면서 [[암호학]]이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 [[대칭키 암호 알고리즘]](symmetric-key algorithm)을 이용했다. 하지만 대칭키 암호 알고리즘의 문제점이 발견되어 이를 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘이 개발되었다.<ref>손경호 기자, 〈[https://m.zdnet.co.kr/news_view.asp?article_id=20160303021427 공개키 고안한 디피-헬만, 올해 '튜링'상 수상]〉, 《지디넷코리아》, 2016-03-04</ref>
암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 데이터를 암호화와 복호화 하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 대칭키 암호화라고 한다.
 
  
하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.
+
암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 [[데이터]]를 [[암호화]]와 [[복호화]]하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 [[대칭키 암호화]]라고 한다. 하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한 번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.
  
 
== 특징 ==
 
== 특징 ==
26번째 줄: 28번째 줄:
  
 
== 취약점과 해결방안 ==
 
== 취약점과 해결방안 ==
* 취약점 : 디피-헬만 키교환 프로토콜을 사용하는 TLS 연결에 로그잼(Logjam)이라는 TLS 취약점이 발견됐다. 취약한 DHE 연결의 오프라인 암호 해독이 가능하거나, DHE_EXPORT 다운그레이드 및 TLS False Start 확장 오프라인 해독 공격, DHE)EXPORT 다운그레이드 및 중간자가 서버 자격을 변경하는 등의 공격 시나리오를 가질 수 있다. 이 취약점을 통해 암호화 된 통신을 해독하여 도감청이 가능해지는데, NSA에서는 약 3,000개의 CPU로 1024비트의 암호화된 연결을 해독해 낼 수 있다고 한다.<ref name="취약점">와스프로 GodNR, 〈[https://waspro.tistory.com/479 (SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)]〉, 《티스토리》, 2019-06-03</ref>
+
* 취약점 : 디피-헬만 키교환 프로토콜을 사용하는 [[TLS]] 연결에 로그잼(Logjam)이라는 TLS [[취약점]]이 발견됐다. 취약한 디피-헬만 연결의 오프라인 [[암호해독]]이 가능하거나, DHE_EXPORT 다운그레이드 및 TLS False Start 확장 오프라인 해독 공격, DHE)EXPORT 다운그레이드 및 중간자가 서버 자격을 변경하는 등의 공격 시나리오를 가질 수 있다. 이 취약점을 통해 암호화 된 통신을 해독하여 도감청이 가능해지는데, 미국 국가안전보장국(NSA)에서는 약 3,000개의 [[CPU]]로 1024비트의 [[암호화]]된 연결을 해독해 낼 수 있다고 한다.<ref name="취약점">와스프로 GodNR, 〈[https://waspro.tistory.com/479 (SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)]〉, 《티스토리》, 2019-06-03</ref>
  
 
* 해결 방안 : 디피-헬만의 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.<ref name="취약점"></ref>
 
* 해결 방안 : 디피-헬만의 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.<ref name="취약점"></ref>
  
# OpenSSL 버전 업데이트 : OpenSSL 1.0.2b 이상 1.0.1n 이상이면 관련 취약점의 회피가 가능하다. 이는 기존 DH 파라미터가 768bit보다 짧다면 [[handshake]]를 거부하도록 하던 TLS 클라이언트에 대한 보호 기능이 1024bit로 증가했기 때문이다.
+
# OpenSSL 버전 업데이트 : OpenSSL 1.0.2b 이상 1.0.1n 이상이면 관련 취약점의 회피가 가능하다. 이는 기존 DH 파라미터가 768비트보다 짧다면 핸드셰이크(handshake)를 거부하도록 하던 TLS [[클라이언트]]에 대한 보호 기능이 1024비트로 증가했기 때문이다.
# ECDHE(Elliptic-Curve Hellman) 사용 : 현재 실현 가능하다고 알려져 있는 암호해독 공격을 우회할 수 있는 교환 방식으로 알려져 있다. 웹 브라우저들은 ECDHE 방식을 더욱 선호한다.
+
# ECDHE(Elliptic-curve Diffie–Hellman) 사용 : 현재 실현 가능하다고 알려져 있는 암호해독 공격을 우회할 수 있는 교환 방식으로 알려져 있다. 웹 브라우저들은 ECDHE 방식을 더욱 선호한다.
# Diffie-Hellman 키 사이즈 변경 : 디피-헬만 키를 사용할 경우 기존 사용하던 512, 1024비트를 넘어선 2048비트 이상으로 생성하고, 새롭고 고유한 방법의 그룹을 생성한다. 주의할 점은 디피-헬만 키의 사이즈를 변경하기 위해선 JDK 버전을 확인해야 한다. JDK 1.7부터 2048bit를 지원하여 출발지와 도착지의 지원 스펙이 다르면 SSLHandShakeException 에러가 발생할 수 있다.
+
# 디피-헬만 키 사이즈 변경 : 디피-헬만 키를 사용할 경우 기존 사용하던 512, 1024비트를 넘어선 2048비트 이상으로 생성하고, 새롭고 고유한 방법의 그룹을 생성한다. 주의할 점은 디피-헬만 키의 사이즈를 변경하기 위해선 JDK 버전을 확인해야 한다. JDK 1.7부터 2048비트를 지원하여 출발지와 도착지의 지원 스펙이 다르면 SSLHandShakeException 에러가 발생할 수 있다.
# 디피-헬만 수출용 Cipher Suite를 사용하지 않는다.
+
# 디피-헬만 수출용 암호 모음(Cipher Suite)을 사용하지 않는다.
  
 
{{각주}}
 
{{각주}}
52번째 줄: 54번째 줄:
 
* [[이산 대수 문제]]
 
* [[이산 대수 문제]]
 
* [[중간자 공격]]
 
* [[중간자 공격]]
* [[휘트필드 디피]]
+
* [[휫필드 디피]]
 
* [[마틴 헬만]]
 
* [[마틴 헬만]]
  
 
{{암호 알고리즘|검토 필요}}
 
{{암호 알고리즘|검토 필요}}

2019년 10월 20일 (일) 15:14 기준 최신판

휫필드 디피(Whitfield Diffie)
마틴 헬만(Martin Hellman)

디피-헬만(Diffie-Hellman)은 최초의 공개키 암호 알고리즘으로서, 1976년, 미국 스탠퍼드 대학의 연구원 휫필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)이 공동 개발하여 발표한 것이다.

개요[편집]

디피-헬만 알고리즘(Diffie-Hellman Algorithm)은 두 사용자가 사전에 어떤 비밀 교환 없이도 공통키를 교환하게 해주는 알고리즘이다. 디피-헬만 알고리즘의 핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것인데, 이후에 나와 상대방은 생성된 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 디피-헬만 알고리즘은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 디피-헬만 알고리즘을 기반으로 하는 디피-헬만 키교환은 가장 기초가 되는 암호학적 통신 방법을 만들었으며 RSA 암호화 알고리즘의 바탕이 되기도 했다.[1] 하지만 이는 암호화전자서명을 위한 것은 아니다.[2]

등장 배경[편집]

정보의 비밀 유지가 중요해지기 시작하면서 암호학이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 대칭키 암호 알고리즘(symmetric-key algorithm)을 이용했다. 하지만 대칭키 암호 알고리즘의 문제점이 발견되어 이를 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘이 개발되었다.[3]

암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 데이터암호화복호화하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 대칭키 암호화라고 한다. 하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한 번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.

특징[편집]

동작 원리[편집]

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

장단점[편집]

  • 장점 : 디피-헬만 알고리즘은 이산 대수 문제의 어려움에 기반하고 있기 때문에 안전성이 유지된다는 장점이 있다. 디피-헬만 알고리즘은 대칭키를 비밀스럽게 생성할 수 있는데, 비밀키를 필요할 때마다 다르게 생성하여 비밀키 보관에 따른 노출 위험성이 작아진다.
  • 단점 : 디피-헬만은 중간자 공격에 취약하고, 상대방에 대한 인증 기능이 없다는 단점이 있다. 따라서 공격자에 의한 공개키의 변조를 방지하기 위해 전자서명된 공개키를 상호 교환하는 인증된 디피-헬만 키교환을 사용해야 한다.

취약점과 해결방안[편집]

  • 취약점 : 디피-헬만 키교환 프로토콜을 사용하는 TLS 연결에 로그잼(Logjam)이라는 TLS 취약점이 발견됐다. 취약한 디피-헬만 연결의 오프라인 암호해독이 가능하거나, DHE_EXPORT 다운그레이드 및 TLS False Start 확장 오프라인 해독 공격, DHE)EXPORT 다운그레이드 및 중간자가 서버 자격을 변경하는 등의 공격 시나리오를 가질 수 있다. 이 취약점을 통해 암호화 된 통신을 해독하여 도감청이 가능해지는데, 미국 국가안전보장국(NSA)에서는 약 3,000개의 CPU로 1024비트의 암호화된 연결을 해독해 낼 수 있다고 한다.[4]
  • 해결 방안 : 디피-헬만의 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.[4]
  1. OpenSSL 버전 업데이트 : OpenSSL 1.0.2b 이상 1.0.1n 이상이면 관련 취약점의 회피가 가능하다. 이는 기존 DH 파라미터가 768비트보다 짧다면 핸드셰이크(handshake)를 거부하도록 하던 TLS 클라이언트에 대한 보호 기능이 1024비트로 증가했기 때문이다.
  2. ECDHE(Elliptic-curve Diffie–Hellman) 사용 : 현재 실현 가능하다고 알려져 있는 암호해독 공격을 우회할 수 있는 교환 방식으로 알려져 있다. 웹 브라우저들은 ECDHE 방식을 더욱 선호한다.
  3. 디피-헬만 키 사이즈 변경 : 디피-헬만 키를 사용할 경우 기존 사용하던 512, 1024비트를 넘어선 2048비트 이상으로 생성하고, 새롭고 고유한 방법의 그룹을 생성한다. 주의할 점은 디피-헬만 키의 사이즈를 변경하기 위해선 JDK 버전을 확인해야 한다. JDK 1.7부터 2048비트를 지원하여 출발지와 도착지의 지원 스펙이 다르면 SSLHandShakeException 에러가 발생할 수 있다.
  4. 디피-헬만 수출용 암호 모음(Cipher Suite)을 사용하지 않는다.

각주[편집]

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

참고자료[편집]

같이 보기[편집]


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