핵심 : 상대방의 공개키와 나의 개인키를 이용해 계산을 하면 비밀키가 나온다.
이후 나와 상대방은 비밀키를 사용해 데이터를 암호화 한 후 전달하면 된다.
--> DH 알고리즘 : 키 교환 알고리즘 --> 대칭키를 공유하는데 사용
암호화나 서명을 위한 것이 아니라 이산 대수 문제 방식을 이용해
y = g^x mod p 일 때 g와 x와 p를 안다면 y는 구하기 쉽지만 g와 y와 p를 알 땐 x를 구하기 어렵다.
는 방식을 따와 만들어진 알고리즘이다.
동작원리 (이해못해서 쉽게 설명 불가)
앨리스와 밥이 공개된 통신망에서 디피-헬먼 키 교환을 하기 위해서는 다음과 같은 절차를 거친다.
- 앨리스가 소수 p, 그리고 1부터 p−1까지의 정수 g를 선택하여 사전에 밥과 공유한다.
- 앨리스가 정수 a를 선택한다. 이 정수는 외부에 공개되지 않으며, 밥 또한 알 수 없다.
- 앨리스가 A=g^a mod p, 즉 g^a를 p로 나눈 나머지를 계산한다.
- 밥이 마찬가지로 정수 b를 선택하여 B=g^b mod p를 계산한다.
- 앨리스와 밥이 서로에게 A와 B를 전송한다.
- 앨리스가 B^a mod p를, 밥이 A^b mod p를 계산한다.
마지막 단계에서 B^a mod p=(g^b)^a mod p=g^ab mod p, A^b mod p =(g^a)^b mod p=g^ab mod 이며,
따라서 앨리스와 밥은 g^ab mod p라는 공통의 비밀 키를 공유하게 된다.
앨리스와 밥 이외의 인물은 a와 b를 알 수 없으며, g,p,g^a mod p,g^b mod p 를 알 수 있다.
출처 : https://ko.wikipedia.org/wiki/%EB%94%94%ED%94%BC-%ED%97%AC%EB%A8%BC_%ED%82%A4_%EA%B5%90%ED%99%98
아무튼 어떤 어떤 원리로 동작하는데 공격자가 데이터를 가로챌 시 절대 특정 공식을 만들어낼 수 없다.
디피 헬만 알고리즘은 대칭키를 비밀스럽게 만들 수 있지만 스푸핑(MITM)공격을 당하면 답이 없다.
새로운 그룹을 생성해서 2048bit로 쓰면 취약점이 해결된다.