Way to establish shared Key
1976 Whitfield Diffie and Martin Hellman published a way to exchange keys
Diffie-Hellman 키 교환의 보안은 이산 로그 문제의 어려움에 기반을 두고 있습니다. 이는 큰 소수 와 원시근 가 주어졌을 때, 에서 를 계산하는 것이 계산적으로 매우 어렵다는 것을 의미
Diffie-Hellman 자체는 비대칭 방식으로 키를 교환하지만 with each private key, 이 교환을 통해 얻은 비밀키는 대칭 키 암호화에 사용 for same shared key
Process
- 공개 파라미터 설정: 먼저, 두 참가자는 모든 사람이 알 수 있는 기본 파라미터를 설정합니다. 이는 보통 큰 소수 p와 그 소수에 대한 Primitive Root g를 포함합니다. (primitive root 아니어도 동일하게 작동하지만 key space 때문이다)
- 개인 키와 공개 키 생성:
- 각 참가자는 개인 키 a 또는 b를 무작위로 선택합니다. 이 키는 절대로 다른 사람에게 공개되어서는 안 됩니다.
- 각 참가자는 자신의 개인 키를 사용하여 공개 키를 계산합니다. 공개 키는 , 로 계산됩니다.
- 공개 키 교환: 각 참가자는 자신의 공개 키를 다른 참가자에게 전송합니다. 이 공개 키 교환이 안전하지 않은 채널을 통해 이루어져도 괜찮습니다.
- 공통 비밀키 계산:
- 각 참가자는 상대방의 공개 키와 자신의 개인 키를 사용하여 공통의 비밀키(for Symmetric Encryption)를 계산합니다. 이 계산은 , 로 이루어집니다.
- 이 계산의 결과로 얻은 K 값은 두 참가자에게 같습니다. 이는 두 수식이 로 동일하기 때문입니다.
Diffie-Hellman에서는 주로 공개 키와 개인 키 사이의 모듈러 거듭제곱 연산만 필요하기 때문에 빠르다. Diffie-Hellman은 타원 곡선(ECC) 버전을 사용하여 훨씬 작은 키로 동일한 보안 수준을 제공.
이 공격을 방지하기 위해 Diffie-Hellman 키 교환을 구현할 때는 추가적인 보안 조치 like PKI or Digital Signature
- 공개 키 가로채기: 통신을 하려는 두 사용자, Alice와 Bob이 있습니다. 공격자(Eve)는 Alice와 Bob 사이의 통신을 감시하고 있습니다. Alice가 자신의 공개 키 A를 Bob에게 보내려고 하면, Eve는 이 메시지를 가로챕니다.
- 위조된 키 삽입: Eve는 가로챈 공개 키 A를 자신의 공개 키 E로 교체하고, 이 위조된 키를 Bob에게 보냅니다. 마찬가지로, Bob의 공개 키 B를 Alice에게 보낼 때, Eve는 그 키를 가로채고 자신의 키 E로 교체하여 Alice에게 전달합니다.
- 비밀 키 생성: 이제 Alice와 Bob은 각각 자신들이 받은 공개 키를 사용하여 비밀 키를 계산합니다. 그러나 이들이 계산하는 키는 사실상 Eve와 각각 공유하는 키입니다. 예를 들어, Alice는 를 계산하고 Bob은 를 계산합니다. 이 키들은 Eve와의 공유 키이며, 서로 다른 키입니다.
- 통신 감청 및 조작: Eve는 이제 Alice와 Bob 사이의 모든 통신을 감청할 수 있습니다. Eve는 Alice로부터 메시지를 받아, 그 메시지를 복호화한 뒤, 필요에 따라 조작할 수 있고, Bob에게 전달하기 전에 다시 암호화합니다. 이 과정은 Bob이 Alice에게 메시지를 보낼 때도 마찬가지로 일어납니다.