"디피-헬만"의 두 판 사이의 차이
잔글 |
잔글 (→개요) |
||
5번째 줄: | 5번째 줄: | ||
== 개요 == | == 개요 == | ||
− | 디피-헬만 알고리즘(Diffie-Hellman Algorithm)은 두 사용자가 사전에 어떤 비밀 교환 없이도 공통키를 교환하게 해주는 알고리즘이다. 디피-헬만 알고리즘의 핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것인데, 이후에 나와 상대방은 생성된 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 디피-헬만 알고리즘은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 디피-헬만 알고리즘을 기반으로 하는 디피-헬만 키교환은 가장 기초가 되는 암호학적 통신 방법을 만들었으며 RSA 암호화 알고리즘의 바탕이 되기도 했다.<ref>〈[https://www.crocus.co.kr/1233 디피-헬만 알고리즘(Diffie-Hellman Algorithm]〉, 《개인 블로그》, 2018-04-22</ref> 하지만 이는 | + | 디피-헬만 알고리즘(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> |
== 등장 배경 == | == 등장 배경 == |
2019년 10월 20일 (일) 15:13 판
디피-헬만(Diffie-Hellman)은 최초의 공개키 암호 알고리즘으로서, 1976년, 미국 스탠퍼드 대학의 연구원 휫필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)이 공동 개발하여 발표한 것이다.
개요
디피-헬만 알고리즘(Diffie-Hellman Algorithm)은 두 사용자가 사전에 어떤 비밀 교환 없이도 공통키를 교환하게 해주는 알고리즘이다. 디피-헬만 알고리즘의 핵심은 상대방의 공개키와 나의 공개키를 이용하여 계산을 하면 비밀키가 나온다는 것인데, 이후에 나와 상대방은 생성된 비밀키를 사용하여 데이터를 암호화한 후 전달하면 된다. 디피-헬만 알고리즘은 키 교환(Key exchange) 알고리즘으로 대칭키를 공유하는데 사용한다. 디피-헬만 알고리즘을 기반으로 하는 디피-헬만 키교환은 가장 기초가 되는 암호학적 통신 방법을 만들었으며 RSA 암호화 알고리즘의 바탕이 되기도 했다.[1] 하지만 이는 암호화나 전자서명을 위한 것은 아니다.[2]
등장 배경
정보의 비밀 유지가 중요해지기 시작하면서 암호학이 발전하기 시작하였다. 암호학이 발달함에 따라 여러 가지 암호화 방식과 암호 알고리즘을 만들어내기 시작하였다. 디피-헬만 알고리즘이 개발되기 이전까지는 대칭키 암호 알고리즘(symmetric-key algorithm)을 이용했다. 하지만 대칭키 암호 알고리즘의 문제점이 발견되어 이를 해결하기 위해 하나의 금고에 두 개의 열쇠를 쓰는 방법과도 같은 디피-헬만 알고리즘이 개발되었다.[3]
암호학은 비밀을 서로 공유하기로 한 사람들만이 키를 이용해 데이터를 암호화와 복호화 하는 방향으로 발전했다. 초기에는 이 과정에서 사용되는 암호와 키와 복호화 키가 서로 같은 방식으로 발전했는데, 이를 대칭키 암호화라고 한다. 하지만 이 대칭키 암호 알고리즘의 경우에는 암호키의 유출 가능성이 문제였고, 암호키가 유출될 경우 모든 통신이 노출된다. 한번 암호키가 노출되면 이후에 주고받을 암호키도 노출되기 때문에 통신에 있어 매우 치명적이다. 이러한 문제점을 보완하기 위해 디피-헬만 알고리즘이 개발되었다.
특징
동작 원리
- 공개적으로 교환할 발생기(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_EXPORT 다운그레이드 및 TLS False Start 확장 오프라인 해독 공격, DHE)EXPORT 다운그레이드 및 중간자가 서버 자격을 변경하는 등의 공격 시나리오를 가질 수 있다. 이 취약점을 통해 암호화 된 통신을 해독하여 도감청이 가능해지는데, 미국 국가안전보장국(NSA)에서는 약 3,000개의 CPU로 1024비트의 암호화된 연결을 해독해 낼 수 있다고 한다.[4]
- 해결 방안 : 디피-헬만의 취약점을 해결하기 위해서는 다음과 같은 방법이 제시된다.[4]
- 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)을 사용하지 않는다.
각주
- ↑ 〈디피-헬만 알고리즘(Diffie-Hellman Algorithm〉, 《개인 블로그》, 2018-04-22
- ↑ 〈디피헬만 알고리즘(Diffie-Hellman Algorithm)〉, 《네이버 지식백과》
- ↑ 손경호 기자, 〈공개키 고안한 디피-헬만, 올해 '튜링'상 수상〉, 《지디넷코리아》, 2016-03-04
- ↑ 4.0 4.1 와스프로 GodNR, 〈(SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)〉, 《티스토리》, 2019-06-03
참고자료
- 〈디피-헬만 알고리즘(Diffie-Hellman Algorithm〉, 《개인 블로그》, 2018-04-22
- 〈공개키 암호 시스템〉, 《안동대학교 교수 차영욱》
- taeho, 〈디피-헬만 키교환 알고리즘(Diffe-Hellman Key Exchange)〉, 《개인 블로그》, 2016-11-17
- 손경호 기자, 〈공개키 고안한 디피-헬만, 올해 '튜링'상 수상〉, 《지디넷코리아》, 2016-03-04
- 아이들링, 〈디피-헬만 키 교환 알고리즘(Diffie-Hellman key exchange)〉, 《티스토리》, 2016-10-11
- 하지윤, 〈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, Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice〉, 《weakdh》, 2015-05-20
- 와스프로 GodNR, 〈(SSL 암호화 취약점)디피 헬만 키(Diffie Hellman Key)〉, 《티스토리》, 2019-06-03
같이 보기