배경 :
Diffie Hellman 알고리즘은 1976년 발표된 비밀키 교환 방법입니다.
이산 로그 문제에 대해 그 안전성을 두고 있는 알고리즘입니다.
이산 로그 문제
이산 로그 문제에 대해 알아보기 전에 일단 수식에 대해 이해해 보겠습니다.
y = g^x (mod p)
위 사진에서 뒤에 나오는 Mod 연산자는 모듈러 연산이라고 합니다. 나누기를 한 나머지 값을 뜻합니다.
그럼 y는 g에 x제곱한 값을 p로 나눈 나머지 값이라는 겁니다.
여기서 g, x, p를 알고 있으면 y를 구하는 건 쉽지만, 만약 y, g, p를 알고 있어도 x를 알기 어렵다는 특징을 말합니다.
Diffie-Hellman 키 교환 :
암호화는 크게 비대칭키와 대칭키 암호화 알고리즘.
현대 암호화는 키를 가지고 암복호화를 진행합니다. 암호화와 복호화 둘다 같은 키를 사용한다면 대칭키 암호화 알고리즘. 만약 서로 다른 키를 사용한다면 비대칭키 암호화 알고리즘입니다.
Diffie-Hellman 알고리즘은 여기서 서로 안전하게 키를 교환할 수 있도록 도와주는 알고리즘입니다. 이제 순서를 알아보겠습니다.
예시로 나혁이와 주은이가 서로 안전하게 키를 교환하는 순서(Diffie-Hellman)를 알아보겠습니다!
- 나혁이는 매우 큰 소수 p와 1 ≤ g ≤ p - 1을 선택하고, p와 g를 B에게 전송합니다. → p는 2^1024 이상의 큰 수
- 나혁이는 자신만 아는 비밀 값 a를 선택하여 A = g^a mod p를 계산합니다 이 값을 주은이에게 전송합니다.
- 주은이는 나혁이로부터 받은 g와 p를 이용해 자신만 아는 비밀 값 b를 선택하고, B = g^b mod p를 계산해 A에게 전송합니다.
- 공유 비밀 값 계산 :
- 나혁이는 주은이로부터 받은 B를 사용하여 K = B^a mod p를 계산합니다. 이는 K = g^ba와 동일합니다.
- 주은이는 나혁이로부터 받은 A를 사용하여 K = A^b mod p를 계산합니다. 이는 K = g^ab mod p와 동일합니다.
- 나혁이와 주은이는 동일한 K 값을 얻습니다. 이 K는 공통의 비밀 키로 사용됩니다.
이 과정에서 a와 b는 각각 A와 B만 알고 있기 때문에 이산 로그 문제 때문에 안전을 확보할 수 있습니다.
중간자 공격 :
위에 모든 과정은 네트워크 상에서 일어납니다.
공격의 이름처럼 말 그대로 중간자를 네트워크 상에 심으면 통신을 엿볼 수 있기에 계산을 하면 키를 복구시킬 수 있고 그렇게 되면 이 공격에 취약할 수 있습니다. Diffie Hellman 키 교환에 있어서는 조심해야하는 공격이라고 할 수 있습니다.
마무리
HTTPS에서는 대칭키 암호화 알고리즘과 비대칭키 암호화 알고리즘을 골고루 사용해서 안전성을 보장합니다. 그렇게 때문에 SSL에서의 암호화 부분을 더 찾아보면 재미있게 공부할 수 있을 거 같습니다. 이상으로 마칩니다.
'TIL' 카테고리의 다른 글
컨테이너, 도커, 쿠버네티스가 뭐길래 사람들이 그래? (1) | 2024.12.16 |
---|---|
번아웃 왔을때 짧게 둘러보는 심리학 (0) | 2024.10.14 |
재미있는 심리 게임과 이론! (2) | 2024.10.07 |
블록체인과 비트코인 (4) | 2024.08.31 |
Spring의 계층 구조 (0) | 2024.08.14 |