디피-헬먼 키 교환(Diffie-Hellman Key Exchange)란?

공개된 통신로만 사용하여 두 당사자가 공유 비밀을 만드는 방법. 1976년에 디피와 헬먼이 발표했다. 소수 p와 생성원 g를 공개하고, A 씨와 B 씨가 비밀 값 a, b로부터 g^a mod p, g^b mod p를 만들어 서로 보낸 뒤, 각자 상대의 값을 자신의 비밀 값으로 거듭제곱하여 같은 g^(ab) mod p를 얻는다. 안전성은 이산 로그 문제의 어려움에 기반한다. 타원 곡선 위에서 수행하는 것을 ECDH, 연결마다 일회용 값을 사용하는 것을 DHE·ECDHE라고 부르며, 후자에서는 전방향 안전성을 얻을 수 있다. 상대를 확인하는 기능은 없으므로, 서명이나 인증서와 조합하여 중간자 공격을 막는다.

일본어 명칭: ディフィー・ヘルマン鍵交換

디피-헬먼 키 교환(Diffie-Hellman Key Exchange)은(는) 암호 기술의 기초와 응용, 네트워크 기초 등 2개 분야의 연습 문제 9개에 나와요.

분야: 암호 기술의 기초와 응용

도전해 보기: 디피-헬먼 키 교환(Diffie-Hellman Key Exchange) 관련 문제

TLS 1.3 등의 프로토콜에서 ECDHE 키 교환으로 얻은 공유 비밀을 그대로 암호 키로 사용하지 않고, HKDF 같은 키 유도 함수(KDF)를 거쳐 키를 만드는 이유로 적절한 것은?

  1. A키 유도 함수를 거치면 양자 컴퓨터에 대해서도 공유 비밀이 안전해지기 때문에
  2. B키 교환으로 얻은 값은 너무 짧으므로, 일부러 계산에 시간을 들여 무차별 대입을 늦추기 위해
  3. C키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해
정답과 해설 보기

정답: C. 키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해

키 교환으로 얻어지는 공유 비밀은 타원 곡선 위의 점의 좌표 등으로, 모든 비트가 균일하게 무작위라고는 할 수 없습니다. HKDF는 HMAC을 사용해 먼저 공유 비밀로부터 치우침 없는 의사 난수 키를 추출하고(Extract), 다음으로 이를 '클라이언트에서 서버로의 암호화용' 같은 레이블과 함께 확장하여(Expand) 필요한 개수와 길이의 키를 만듭니다. 용도별로 독립된 키를 사용하면 하나의 키에 생긴 문제가 다른 용도로 번지기 어려워집니다. 비밀번호로부터 키를 만드는 PBKDF2나 Argon2는 일부러 계산을 무겁게 하지만, HKDF는 엔트로피가 충분히 큰 입력을 전제로 한 가벼운 처리입니다.

디피-헬먼 키 교환에서는 소수 p와 생성원 g를 공개하고, A 씨와 B 씨가 각각 비밀 값 a, b를 골라 g^a mod p와 g^b mod p를 서로 보낸다. 도청자가 이렇게 공개된 값을 모두 보더라도 공유 비밀 g^(ab) mod p를 구할 수 없다고 생각되는 이유로 올바른 것은?

  1. Ag^a mod p로부터 a를 구하는 문제(이산 로그 문제)는 p가 크면 효율적으로 풀 수 없다고 생각되기 때문에
  2. Bg^a mod p와 g^b mod p는 보내기 전에 상대의 공개 키로 다시 암호화되므로 도청자는 읽을 수 없기 때문에
  3. C공유 비밀은 두 사람이 미리 만나서 정한 암호 문구로부터 만들기 때문에
정답과 해설 보기

정답: A. g^a mod p로부터 a를 구하는 문제(이산 로그 문제)는 p가 크면 효율적으로 풀 수 없다고 생각되기 때문에

g^a mod p를 계산하는 것은 빠른 데 비해, 결과로부터 a를 구하는 것은 p가 충분히 크면 현실적인 시간 안에는 할 수 없다고 생각됩니다(이산 로그 문제). 도청자는 g^a mod p와 g^b mod p를 볼 수 있어도 a나 b를 모르면 g^(ab) mod p를 만들 수 없습니다. 한편 A 씨는 B 씨의 값을 a제곱하고, B 씨는 A 씨의 값을 b제곱하기만 하면 둘 다 같은 g^(ab) mod p를 얻습니다. 타원 곡선 위에서 같은 일을 하는 것이 ECDH이며, 타원 곡선 위의 이산 로그 문제의 어려움에 기반합니다.

해설 속 디피-헬먼 키 교환(Diffie-Hellman Key Exchange)

디피-헬먼 키 교환(Diffie-Hellman Key Exchange)이(가) 나오는 문제 (9)

  1. TLS 1.3 등의 프로토콜에서 ECDHE 키 교환으로 얻은 공유 비밀을 그대로 암호 키로 사용하지 않고, HKDF 같은 키 유도 함수(KDF)를 거쳐 키를 만드는 이유로 적절한 것은?
  2. 디피-헬먼 키 교환에서는 소수 p와 생성원 g를 공개하고, A 씨와 B 씨가 각각 비밀 값 a, b를 골라 g^a mod p와 g^b mod p를 서로 보낸다. 도청자가 이렇게 공개된 값을 모두 보더라도 공유 비밀 g^(ab) mod p를 구할 수 없다고 생각되는 이유로 올바른 것은?
  3. 디피-헬먼 키 교환을 작은 수로 확인한다. p = 23, g = 5로 하고, A 씨는 비밀 값 a = 6, B 씨는 비밀 값 b = 15를 고른다. A 씨는 A = g^a mod p를, B 씨는 B = g^b mod p를 서로 보낸다. 두 사람이 얻는 공유 비밀은?
  4. 인증을 하지 않는 디피-헬먼 키 교환의 약점과 그 대책의 조합으로 올바른 것은?
  5. 양자 내성 암호로 이행하는 도중에 사용되는, X25519(타원 곡선을 사용하는 디피-헬먼 키 교환)와 ML-KEM을 조합한 하이브리드 키 교환의 사고방식으로 올바른 것은?
  6. TLS에서 브라우저가 접속한 서버를 '위장이 아니다'라고 판단할 수 있는 이유로 올바른 것은?
  7. TLS에서 서버 인증서의 개인 키가 나중에 유출되더라도 그 이전에 기록된 통신은 복호화되지 않는 성질(전방향 안전성)을 얻을 수 있는 키 교환 방법은?
  8. TLS 1.3(RFC 8446)에서 TLS 1.2로부터 바뀐 점으로 올바른 것은?
  9. TLS 1.3의 암호 스위트 TLS_AES_128_GCM_SHA256이 지정하는 것의 조합으로 올바른 것은?

관련 용어

TLS RSA 암호(RSA Cryptosystem) HMAC 나머지 연산(Modulo Operation) 전방향 안전성(Forward Secrecy) 인증 암호화(AEAD) 정보 엔트로피(Information Entropy) 양자 내성 암호(Post-Quantum Cryptography) ML-KEM 인증 기관(Certificate Authority)

용어집으로 돌아가기