베지밀

https SSL/TLS 패킷 복호화하기 (w/Wireshark) 본문

Network

https SSL/TLS 패킷 복호화하기 (w/Wireshark)

vegimil 2025. 4. 21. 13:34

 

🧩 TLS 통신 과정

https는 http에 TLS 암호화를 더하여 애플리케이션 데이터를 안전하게 전송하기 위해 고안된 프로토콜이다.

 

출처 : Cloudflare

다음과 같이 3-way Handshake 이후 키를 협상하고, 키 협상 이후의 패킷은 대칭키로 암호화되어 통신한다.

 

  1. Client는 Server의 인증서를 받아 Root CA를 통해 검증한다.
  2. Server 인증이 완료되면 클라이언트는 대칭키 생성을 위한 키 교환을 수행한다.
  3. 이후부터 https 패킷은 해당 대칭키로 암호화되어 통신한다.

 

 

🧩 어떻게 복호화할까?

TLS 통신은 대칭키 암호화를 사용하기 때문에 해당 키만 확보하면 Wireshark에서 복호화가 가능하다.

 

TLS 핸드셰이크 중 생성되는 세션키인 Pre-Master Secret로그파일로 로깅하고, 이 키를 참조하여 wireshark에서 세션을 복호화할 수 있다.

 

 

🧩 복호화하기

테스트 환경은 다음과 같다.

  • Windows 11
  • Chrome
  • Wireshark

 

1️⃣환경변수 설정

시스템 환경 변수 편집 > 환경 변수 > 시스템 변수 > 새로 만들기

변수 이름 : SSLKEYLOGFILE

변수 값 : C:\Users\<사용자명>\Desktop\sslkey.log

 

 

2️⃣Wireshark 설정

Wireshark > 편집(edit) > 설정(Preferences) > Protocol > TLS 선택

(Pre)-Master-Secret log filename을 위헤서 설정한 변수 경로로 설정

 

 

 

3️⃣브라우저로 https 페이지 접속

모든 브라우저 및 Wireshark를 종료 후 재시작한다.

해당 위치에 sslkey라는 로그파일이 생성되었다.

 

 

 

4️⃣TLS 복호화 확인

client hello 이후 핸드셰이킹을 수행하고, 키 교환이 끝난 후부터 http로 복호화된 통신 과정을 확인할 수 있다.