티스토리 뷰
Diffe-hillman 알고리즘
Diffie-Hellman 키 교환은 공개키 암호화 기법 중에서 대칭 키를 공유하기 위해 사용되는 방법입니다.
이 알고리즘의 목적은 두 사용자가 비밀 키를 안전하게 교환하는데 있다
알고리즘 자체는 키를 교환하는데 국한되어서 사용한다
핵심
Diffie-Hellman 키 교환의 핵심은 이산 로그 문제와 모듈러 산술 문제입니다.
이를 이용하여 Alice와 Bob은 비밀 수를 선택하고, 이를 통해 대 키(비밀키)를 생성합니다.
이 알고리즘은 인증 및 기밀성이 보장되지 않으므로, 보안 통신 시스템에서는 이를 보완하기 위해 추가적인 암호화 방법을 사용합니다.
예를 들어, SSL/TLS 프로토콜에서는 Diffie-Hellman 키 교환을 사용하면서, 서버 인증을 위해 디지털 인증서를 사용합니다.
그러나 Diffie-Hellman 키 교환의 약점은 다음과 같습니다.
- 중간자 공격(MITM)에 취약합니다. 중간자가 Alice와 Bob 사이의 통신을 가로채고, 자신이 대신 통신하게 되면, 이 알고리즘으로 생성된 대칭 키는 중간자에게 노출됩니다.
- 공격자가 이산 로그 문제를 해결하는 데 필요한 컴퓨팅 파워를 가지고 있다면, 비밀 키를 추적할 수 있습니다.
알고리즘
- 먼저, 양쪽(A, B)에서 공통으로 사용할 소수 q와 q의 원시근 알파(alpha)를 정합니다.
- A는 랜덤한 값 X_A를 선택합니다. 그리고 Y_A = alpha^(X_A) mod q를 계산하여 B와 공유합니다.
- B는 랜덤한 값 X_B를 선택합니다. 그리고 Y_B = alpha^(X_B) mod q를 계산하여 A와 공유합니다.
- 이제 A와 B는 각자 계산한 Y_A와 Y_B를 사용하여 공통의 비밀키 K를 계산합니다. 이때, K = Y_B^(X_A) mod q = Y_A^(X_B) mod q로 계산됩니다.
- 이제 A와 B는 서로 비밀키 K를 공유합니다. 이후에는 이 비밀키 K를 사용하여 대칭키 암호화 방식으로 안전하게 통신할 수 있습니다.
여기서 X_A, X_B는 각각 A와 B만이 알고 있는 비밀값입니다.
Y_A, Y_B는 공개되어도 상관없는 값이며, q와 alpha는 누구나 알고 있어도 상관없는 값입니다.
이렇게 함으로써, A와 B는 각각 계산한 Y_A와 Y_B를 서로 교환하면서 안전하게 K를 계산할 수 있습니다.
디피-헬맨 키의 마법은 이산 대수의 원시근 규칙때문에 발생합니다
이산 대수의 원시근 규칙에 따르면, 소수 P의 한 원시근이 되는 수는 모두 하나의 집합에 속하게 됩니다.
이러한 원시근은 두 사람 간에 서로 다른 비밀값을 공유하는 데 사용됩니다. 이는 치환 가능하다는 것을 의미합니다.
보안
디피-헬만 키 교환 알고리즘의 보안은 이산 로그 문제(discrete logarithm problem)의 어려움에 기반합니다.
이산 로그 문제는 주어진 유한 집합에서 두 개의 원소와 일정한 기저(base)를 사용하여 기저를 얼마나 거듭제곱해야 다른 원소를 얻을 수 있는지를 찾는 문제입니다.
이산 로그 문제가 어렵다는 것의 근거는 다음과 같습니다.
- 계산 복잡도
- 현재까지 알려진 대부분의 알고리즘은 이산 로그 문제를 풀기 위해 지수 시간이나 서브 지수 시간이 걸리는 것으로 알려져 있습니다.
- 이는 큰 소수를 사용할 경우 공격자가 문제를 풀기 위해 막대한 시간이 걸린다는 것을 의미합니다.
- 알려진 효율적인 알고리즘 부재
- 이산 로그 문제를 효율적으로 해결할 수 있는 알고리즘이 아직 발견되지 않았습니다.
- 몇 가지 알고리즘들이 있지만, 일반적으로 큰 소수를 사용할 경우 여전히 매우 느리고 비효율적입니다.
- 양자 컴퓨팅의 영향
- 양자 컴퓨터는 이산 로그 문제를 빠르게 해결할 수 있는 알고리즘인 쇼어 알고리즘(Shor’s Algorithm)을 사용할 수 있습니다.
- 하지만 현재 양자 컴퓨터는 상업적 환경에서 사용하기에는 매우 초기 단계이므로, 이산 로그 문제는 아직 어려운 문제로 남아 있습니다.
이러한 이유로 인해 디피-헬만 키 교환 알고리즘은 이산 로그 문제의 어려움을 활용하여 안전한 키 교환을 보장합니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'Computer Science > Security' 카테고리의 다른 글
원격 사용자 인증 원칙 (0) | 2023.04.08 |
---|---|
디지털 서명 (0) | 2023.04.08 |
RSA는 무엇인가? (0) | 2023.04.05 |
공개 키 (0) | 2023.04.05 |
블록 암호 기반 MAC(CMAC) (0) | 2023.04.04 |
- Total
- Today
- Yesterday
- 개발/컴퓨터네트워크
- 카카오테크캠퍼스
- 개발/네트워크
- 개발/CS/알고리즘
- 개발/Tools/프레임워크/Spring
- 개발/Java
- electron
- 개발/OOP
- AI/GPT
- 취업
- 개발/webrtc
- 개발/프레임워크&라이브러리
- ⌨️Developer
- 대외활동/카카오테크캠퍼스
- 개발/보안
- 개발/Java/Spring
- 개발/언어론
- 개발/MySQL
- 카테캠
- 개발
- ai
- ⌨️Developer/보안
- 개발/CS/OS
- 개발/에러
- AI/ML
- 개발/Electron
- 개발/환경
- 개발/언어/Java
- 알고리즘
- 카카오 테크 캠퍼스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |