디피-헬만 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:휫필드 디피.jpg|썸네일|200픽셀|'''[[휫필드 디피]]'''(Whitfield Diffie)]]
+
''' 디피 헬만 ''' (Diffie-Hellman)은 1976년 스탠포드 대학의 휘트필드 디피 (Whitfield Diffie)마틴 헬만 (Martin Hellman)이 <New Directions in Cryptography> 라는 논문에서 처음으로 공개 발표하였다. 이 논문을 통해 디피 헬만 키 교환은 제일 기초가 되는 암호학적 통신 방법을 만들었다. [[RSA]] 암호화 알고리즘의 바탕이 되기도 하였다.
[[파일:마틴 헬만.jpg|썸네일|200픽셀|'''[[마틴 헬만]]'''(Martin Hellman)]]
 
  
'''디피-헬만'''<!--디피 헬만, 디피헬만-->(Diffie-Hellman)은 최초의 [[공개키]] [[암호 알고리즘]]으로서, 1976년, 미국 [[스탠퍼드 대학]]의 연구원 [[휫필드 디피]](Whitfield Diffie)와 [[마틴 헬만]](Martin Hellman)이 공동 개발하여 발표한 것이다.
+
== 동작 원리 ==
 
+
* 공개적으로 교환할 발생기 (Generator) 를 생성. (p는 소수, g는 생성자)
== 개요 ==
+
* A는 개인키 a를 이용하여 g^a mod p를 생성.
디피-헬만 알고리즘(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>
+
* 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를 생성.
정보의 비밀 유지가 중요해지기 시작하면서 [[암호학]]이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 [[대칭키 암호 알고리즘]](symmetric-key algorithm)을 이용했다. 하지만 대칭키 암호 알고리즘의 문제점이 발견되어 이를 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘이 개발되었다.<ref>손경호 기자, 〈[https://m.zdnet.co.kr/news_view.asp?article_id=20160303021427 공개키 고안한 디피-헬만, 올해 '튜링'상 수상]〉, 《지디넷코리아》, 2016-03-04</ref>
+
* A와 B는 새롭게 생성된 키를 대칭키 (비밀키)로 이용. (A와 B가 교환하여 결합한 값이 서로 같다는 것을 확인)
 
+
* A와 B 이외의 인물은 a와 b를 알 수 없으며, g, p, g^a mod p, g^b mod p는 알 수 있다.
암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 [[데이터]]를 [[암호화]]와 [[복호화]]하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 [[대칭키 암호화]]라고 한다. 하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한 번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.
 
  
 
== 특징 ==
 
== 특징 ==
===동작 원리===
+
''' 장점 '''
# 공개적으로 교환할 발생기(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''밖에 만들지 못한다.
 
  
===장단점===
+
''' 단점 '''
* '''장점''' : 디피-헬만 알고리즘은 이산 대수 문제의 어려움에 기반하고 있기 때문에 안전성이 유지된다는 장점이 있다. 디피-헬만 알고리즘은 [[대칭키]]를 비밀스럽게 생성할 수 있는데, 비밀키를 필요할 때마다 다르게 생성하여 비밀키 보관에 따른 노출 위험성이 작아진다.
+
* [[Man-in-the Middle]] 공격에 취약하다.
 +
* 상대방에 대한 인증 기능이 없다.
  
* '''단점''' : 디피-헬만은 중간자 공격에 취약하고, 상대방에 대한 인증 기능이 없다는 단점이 있다. 따라서 공격자에 의한 [[공개키]]의 변조를 방지하기 위해 [[전자서명]]된 공개키를 상호 교환하는 인증된 [[디피-헬만 키교환]]을 사용해야 한다.
+
''' 단점에 대한 해결책 '''
 +
* 인증된 Diffie-Hellman 키 교환 사용 (공격자에 의한 공개키의 변조를 방지하기 위하여 전자 서명된 공개키를 상호 교환)
  
== 취약점과 해결방안 ==
+
== 참고 자료 ==
* 취약점 : 디피-헬만 키교환 프로토콜을 사용하는 [[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>
+
* 〈[https://www.crocus.co.kr/1233 디피 헬만 알고리즘(Diffie-Hellman Algorithm]〉, 《개인블로그》, 2018-04-22
 
+
* 〈[http://contents.kocw.or.kr/document/lec/2011_2/andong/Network/03.pdf 공개키 암호 시스템], 《안동대학교 교수 차영욱》
* 해결 방안 : 디피-헬만의 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.<ref name="취약점"></ref>
 
 
 
# OpenSSL 버전 업데이트 : OpenSSL 1.0.2b 이상 1.0.1n 이상이면 관련 취약점의 회피가 가능하다. 이는 기존 DH 파라미터가 768비트보다 짧다면 핸드셰이크(handshake)를 거부하도록 하던 TLS [[클라이언트]]에 대한 보호 기능이 1024비트로 증가했기 때문이다.
 
# ECDHE(Elliptic-curve Diffie–Hellman) 사용 : 현재 실현 가능하다고 알려져 있는 암호해독 공격을 우회할 수 있는 교환 방식으로 알려져 있다. 웹 브라우저들은 ECDHE 방식을 더욱 선호한다.
 
# 디피-헬만 키 사이즈 변경 : 디피-헬만 키를 사용할 경우 기존 사용하던 512, 1024비트를 넘어선 2048비트 이상으로 생성하고, 새롭고 고유한 방법의 그룹을 생성한다. 주의할 점은 디피-헬만 키의 사이즈를 변경하기 위해선 JDK 버전을 확인해야 한다. JDK 1.7부터 2048비트를 지원하여 출발지와 도착지의 지원 스펙이 다르면 SSLHandShakeException 에러가 발생할 수 있다.
 
# 디피-헬만 수출용 암호 모음(Cipher Suite)을 사용하지 않는다.
 
 
 
{{각주}}
 
  
== 참고자료 ==
 
* 〈[https://www.crocus.co.kr/1233 디피-헬만 알고리즘(Diffie-Hellman Algorithm]〉, 《개인 블로그》, 2018-04-22
 
* 〈[http://contents.kocw.or.kr/document/lec/2011_2/andong/Network/03.pdf 공개키 암호 시스템]〉, 《안동대학교 교수 차영욱》
 
* taeho, 〈[https://blogger.pe.kr/582 디피-헬만 키교환 알고리즘(Diffe-Hellman Key Exchange)]〉, 《개인 블로그》, 2016-11-17
 
* 손경호 기자, 〈[https://m.zdnet.co.kr/news_view.asp?article_id=20160303021427 공개키 고안한 디피-헬만, 올해 '튜링'상 수상]〉, 《지디넷코리아》, 2016-03-04
 
* 아이들링, 〈[https://raisonde.tistory.com/entry/%EB%94%94%ED%94%BC-%ED%97%AC%EB%A7%8C-%ED%82%A4-%EA%B5%90%ED%99%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Diffie-Hellman-key-exchange 디피-헬만 키 교환 알고리즘(Diffie-Hellman key exchange)]〉, 《티스토리》, 2016-10-11
 
* 하지윤, 〈[https://ldevil63.tistory.com/17 DH(Diffie-Hellman) 알고리즘의 원리]〉, 《티스토리》, 2018-11-01
 
* David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry, Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall, Emmanuel Thomé, Luke Valenta, Benjamin VanderSloot, Eric Wustrow, Santiago Zanella-Béguelink Paul Zimmermann, [https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice]〉, 《weakdh》, 2015-05-20
 
* 와스프로 GodNR, 〈[https://waspro.tistory.com/479 (SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)]〉, 《티스토리》, 2019-06-03
 
  
== 같이 보기 ==
 
* [[디피-헬만 키교환]]
 
* [[RSA]]
 
* [[이산 대수 문제]]
 
* [[중간자 공격]]
 
* [[휫필드 디피]]
 
* [[마틴 헬만]]
 
  
{{암호 알고리즘|검토 필요}}
+
{{알고리즘|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)