컴퓨터(Computer Science)/컴퓨터보안(Computer Security)

Diffie-Hellman Key & 취약점 [컴퓨터보안]

게임이 더 좋아 2020. 4. 26. 12:05
반응형
728x170

우선 위키백과에 정보가 있더라

https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

하지만 우리는 한글을 매우 사랑하기 때문에 한글로 설명하는 것을 좋아한다 ㅎ

 

가보자

 


저기 위에 그림을 먼저 풀어볼까?

 

++Alice와 Bob은 저번에도 설명했지만 얘는 암호할 때 맨날 나오는 애들이다.

 

간단한 상황을 보자.

Alice는 앨, Bob는 밥이라 하겠다.

 

앨과 밥이 정보를 주고 받고 싶어한다. 예를 들어서 비밀 데이트를 한다고 치자.

근데 어머니가 앨이 연애하는 것을 금지해서 비밀스럽게 연락을 주고 받아야 한다.

 

이런경우에 앨은 만날 장소와 시간을 암호화해 밥에게 전달할수 있다.

하지만 복호화 할 때 키가 필요하기 때문에( 그 키는 공유키라고 한다. 일반적으로 대칭형 암호는 

공유 키를 알면 복호화 할 수 있다. )

 

그래서 엄마한테 공유키를 뺏겨서 그 날은 못만났다. 

 

그래서 앨은 생각했다. Diffie-Hellman 알고리즘을 써야겠다고 .

 

이제 시작이다.

 

1단계

앨과 밥은 개인키, 공개키를 만든다

**개인키는 자신만 알 수 있는 키

**공개키는 아까처럼 엄마도 알 수 있는 공개적인 키

 

2단계

앨은 "주황색"

밥은 "민초"(민초? 음...)

공개키는 " 노란색"

 

3단계

그래서 개인 키와 공개 키를 섞으면

앨은 "살구색"

밥은 "파스텔톤 파란색"

을 얻게 된다. 

 

 

4단계

서로 색을 바꾼다.(public transport라는 것은 걍 노출되든 말든 신경 쓰지 않는다는것)

대중들이 알아도 상관없다는 것이다.

 

5단계

바꾼 색에 자신의 개인 색을 섞는다.

앨 "파스텔톤 파란색 + 주황"

밥 "살구색 + 민초"

결국 섞은색이 같으니 같은 색을 얻을 것이다.

(노란색 + 민초+ 주황 = 머드팩색)

 

6단계

머드팩 색이 그들만의 공유키가 되는 것이다.

즉 공유키로 암호화해서 보내고 공유키로 복호화한다.

키는 정보에 담겨져 있지 않고 노출되어 있지 않기 때문에 안전하다고 볼 수 있다.

 

 

결국 엄마는 수학적으로 색을 알아내려고 머리를 쥐어짠다.

 

?? 파스텔톤 파란색 + ** = 살구색 + ** = 공유키???

?? 노란색 + ** = 파스텔톤 파란색??  ?? 노란색 + ** = 살구색??

 

결국 **색이 뭔지 알아내지 못한 엄마는 앨과 밥을 막지 못하고

(사실 진짜로 색으로 한다면 색 하나하나씩 넣어보면 언젠간 되겠지 ㅎㅎ)

 

해피엔딩

 


Diffe- Hellman은 사실 소수(prime number)를 이용한 나머지연산 (modular arithematic)을 통해 키 교환을 하는 것이다.

 

 

***A mod B는 A를 B로 나눈 나머지를 말한다.

 

 

 

++ 사용하는 소수가 엄청나게 큰 수여야 효과가 있다. 소수가 충분히 크지 않으면 여기서 취약점이 드러난다.

++ Diffie-Hellman 교환 자체는 앨과 밥 사이에 인증을 제공하지 않으므로 "중간자 공격"  취약하다. Mallory (Middle-in-the-Middle 공격을 실행하는 공격자)는 Alice와 Bob간에, 그리고 Alice와 Bob으로 효과적으로 위장하고, 그 반대로 암호 해독을 허용 한 두 가지 키 교환을 설정할 수 있다.

 

 

728x90
반응형
그리드형