- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Ethereum
- hacking
- 반딧
- Leak
- PWN
- 해킹
- 코인
- pow
- solidity
- 비트코인
- security
- lending
- 블록체인
- defi
- Crypto
- bitcoin
- overthewire
- Linux
- V2
- pwnable
- compound
- DreamHack
- BANDiT
- 이더리움
- web3
- blockchain
- 해시
- shellcode
- 리눅스
- wargame
Nullorm
[CryptoHack] Diffie-Hellman: Parameter Injection 풀이 본문
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
'study_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 |