| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 커널
- fix #프로토콜 #유래 #
- 시스템정보확인 #top명령어 #cpu
- cme #블룸버그 #로이터
- 무상증자 #유상증자 #주가영향
- 증권투자권유자문인력 #파생투자권유자문인력 #펀드투자권유자문인력 #금융3종
- 국내상장 해외etf #해외etf #세금 #나스닥 #코스피
- 비상용메모리
- 병목확인
- #벽걸이 에어컨 # 에어컨 청소 # 에어콘 청소 # 치킨값 벌기
- 정보보안
- 보안
- RMS #리스크관리시스템 #risk
- 네트워크카드 #NIC # 인터페이스카드 #커널
- 디피헬만알고리즘
- 옵션 #선물 #증거금 #Margin
- AWS #회원가입 #AWS Developer Associate #SAA
- OWASP #웹취약점
- VIRT #RES #SHR #메모리커밋
- 종합과세 #분리과세 #분류과세 #세금 #공부
- 주택임차차입금 원리금 상환액 #소득공제 #공부 #세테크
- TCP
- #리뉴올PC #중고모니터 #중고컴퓨터 #후기
- 메모리사용류
- 포지션 #파생 #선물 #옵션
- Node #Zone #PageFrame
- 옵션 #콜옵션 #풋옵션 #청산
- #연말정산 #꿀팁 # 소득공제 # 세액공제 #고향사랑기부제 # 돈많이벌자 #세테크 #세법
- loadaverage #시스템부하
- 파생상품 #선물 #옵션 #증거금
- Today
- Total
일서방
디피헬만 알고리즘 본문
■디피-헬만(Diffie-Hellman) 키 교환 알고리즘
[개념]
- 디피-헬만(DH)은 1976년에 Whitefield Diffie와 Martin Hellman이 고안
- 대칭키 암호를 쓰려면 양쪽이 같은 비밀키를 가져야하는데, 이 키를 사전에 안전하게 전달하지 않아도 공유할 수 있게 해주는 알고리즘
- 키교환만 가능 , 실제 데이터 암호화는 하지 않는다.
[동작원리]
핵심 아이디어 : 이산 로그문제의 어려움에 기반
1. 공개 파라미터 선택
● 두 당사자 A와 B는 큰 소수 p와 그에 대한 원시근(기저) g를 공개값으로 공유한다.
● 이 값들은 누구나 알아도 안전한다.
2. 개인 키 선택
● A는 비밀정수 a, B는 비밀정수 b를 각각선택
● 이값들은 외부에 절대 공개되지 않는다..
3. 공개 키 계산 및 교환
● A는 A_pub = g^a mod p 계산 -> B에게 보냄
● B는 B_pub = g^b mod p 계산 -> A에게 보냄
4. 공유키 계산
● A는 수신한 B_pub를 이용해
K = (B_pub)^a mod p = g^ab mod p
● B는 수산힌 A_pub를 이용해
K = (A_pub)^b mod p = g^ab mod p
5. 보안성
● 공격자는 p , g , A_pub , B_pub를 모두 알아도 a,b를 직접 구하려면 이산로그 문제를 풀어야하는데, 큰 수일경우 현실적으로 불가능하다.
[실제 예시]
예시로 매우 작은 값들을 사용한다. 실제 환경에서는 훨씬 큰(예:2048비트) 소수p와 적절한 기반 g를 써야 안전합니다.
●소수 p =23
●원시근 g= 5
● Alice(A)의 비밀 a = 6
● Bob(B)의 비밀 b = 15
1) A의 공개값 A_pub = g^a mod p
● 5^1 mod 23 = 5
● 5^2 = 25 mod 23 = 2
● 5^4 = (5^2)^2 = 2^2 = 4 mod 23
● 5^6 = (5^4)^2 = 4x2 = 8 mod 23
===> A_pub = 8
2) B의 공개값 B_pub = g^b mod p
===> B_pub = 19
3) 공유키 계산(Alice와 Bob이 독립적으로 동일한 값을 얻는지 확인)
Alice 계산: K = (B_pub)^a mod p = 19^6 mod 23
19^1 mod 23 = 19
19^2 = 361 mod 23 = 361 - 15*23 = 361 - 345 = 16
19^4 = (19^2)^2 = 16^2 = 256 mod 23 = 256 - 11*23 = 256 - 253 = 3
19^6 = 19^4 * 19^2 = 3*16 = 48 mod 23 = 48 - 46 = 2
===> K=2
Bob도 동일하게 계산
===> K=2
실제 보안에서는 매우 큰 소수 p와 안전한 기반 g를 사용해야 한다. (작은수는 금방개짐)
또한 인증(예: 디지털 서명 , PKI) 이 결합되지 않으면 중간자 공격(MITM)에 취약하니 실제 프로토콜에서는 인증과 함께 사용
'IT공부 > C++로 만드는 HTTPS 서비스' 카테고리의 다른 글
| GMP(GNU Multiple Precision Arithmetic Library) (1) | 2025.09.24 |
|---|---|
| 암호학의 기초 (0) | 2025.09.15 |