Diffie-Hellman Key exchange
이 프로토콜은 DLP:Discrete Logarithm Problem을 바탕으로 만들어진 키 교환 프토로콜이다.
$A = g^a mod\ p$
를 알고 있을 때, $(g, p, A)$를 모두 알고 있어도, $a$ 값은 알기 어렵다는 것을 기반으로 하고 있다.
좀 더 자세히 보면,
Alice와 Bob이 통신키(세션키)를 교환하고자 할 때 안전하게 교환하는 프로토콜이다.
1. Alice가 $a < p$인 secret 값 $a$ 를 정한다.
2. Alice -> Bob: $\{g, p, A=g^{a} mod\ p\}$ 를 전송한다.
3. Bob: $b < p$인 secret 값 $b$를 정한다.
4. Bob: $\{A^{b} mod\ p\}$ 를 계산한다. 이게 둘 사이의 shared secret이다. $A^b mod\ p = g^{ab} mod\ p$
5. Bob -> Alice: $\{B=g^{b} mod\ p\}$ 를 전송한다.
6. Alice: $B^a mod\ p$ 를 계산한다. ($B^{a} mod\ p = g^{ba} mod\ p$)
이렇게 되면, Alice와 Bob은 안전하게 세션키를 교환할 수 있다.
Exploit - theori
그런데 여기서, 중간에 통신을 가로챌 수 있는 중간자가 있다면, 이 프로토콜을 깰 수 있다. :MITM: Man In The Middle attack
공격자 Carol을 가정하고, 위 프로토콜을 깨보자.
이 때, Carol은 본인만의 Malicious한 secret 값 $c$를 생성한다.
1. Alice가 $a < p$인 secret 값 $a$ 를 정한다.
2. Alice -> Bob: $\{g, p, A=g^a mod\ p\}$ 를 전송한다.
Carol이 위 데이터를 가로채서, $\{g, p, A=g^c mod\ p\}$ 를 Bob에게 전송한다.
3. Bob: $b < p$인 secret 값 $b$를 정한다.
4. Bob: $A^b mod\ p$ 를 계산한다. 이게 둘 사이의 shared secret이다. $A^b mod\ p = g^{cb} mod\ p$
5. Bob -> Alice: $\{B=g^b mod\ p\}$ 를 전송한다.
Carol이 위 데이터를 가로채서, $\{B=g^c mod\ p\}$를 Alice에게 전송한다.
6. Alice: $B^a mod\ p$ 를 계산한다. $(B^a mod\ p = g^{ca} mod\ p)$
이러한 과정을 거치면, Carol은 Alice와 Bob의 세션키를 모두 가지고있게 된다.
Alice의 통신키: $g^{ac} mod\ p$
Bob의 통신키: $g^{bc} mod\ p$
이를 통해, Carol은 Man In The Middle에서 둘 사이의 통신을 마음대로 쥐락펴락 할 수 있다.
Exploit - do it
'security > Crypto' 카테고리의 다른 글
[CryptoHack] Diffie-Hellman: Export-grade 풀이, SageMath 사용해보기 (1) | 2024.07.02 |
---|---|
[Crypto] Crypto 관련 python 함수 사용법 (0) | 2024.04.12 |
인코딩 & 디코딩 | Base64에 대하여... (0) | 2023.07.17 |
암호 관련 수학 공부 | 확장유클리드 알고리즘 - 2 | Extended Euclidean Algorithm - 2 (0) | 2023.07.12 |
암호 관련 수학 공부 | 확장유클리드 알고리즘 | Extended Euclidean Algorithm (0) | 2023.07.11 |