ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ECDHE, 왜 패킷을 보여주지 않는거야
    어플리케이션보안 2020. 10. 29. 12:17
    반응형

    회사에서 내가 만든 웹 서버와 IPS 사이의 통신 패킷을 분석해야 하는 상황이 있었다. 웹 서버가 Linux에서 동작하므로 Fiddler 대신 tcpdump로 패킷을 잡고 그걸 wireshark로 보는 방법을 택했다.

    tcpdump로 잡은 패킷을 내 host PC로 옮긴 뒤 wireshark로 SSL key를 설정한 뒤 패킷을 보려했는데.. 뭘 잘못한거지? 복호화가 되질 않는다. key를 잘못 설정한건가? 삽질 ing..

    암호화 되지않은 SSL Handshaking 패킷을 보던 중 Server가 선택한 암호화 알고리즘이 평소 보지 못한걸 깨달았다.

    ECDHE?? 이게 무슨 알고리즘이지 검색 ㄱㄱ싱

    ECDHE(Elliptic Curve Diffie-Hellman Exchange — 타원곡선 디피헬만 키교환)

    ECDHE를 이해하기 위해 , ECC와 PFS 개념에 대해 알아보자.

    ECC — Elliptic Curve cryptography

    타원곡선(elliptic-curve)의 수학적 특성을 이용한 암호화 알고리즘이다. 동일한 보안성을 제공한다고 했을 때, ECC는 key길이가 더 짧은 특성이 있다.

    PFS — Perfect Forward secrecy

    SSL/TLS 통신에서 어떠한 경로로 비밀키가 누출 될 경우 모든 암호화 된 패킷이 누출될 수 있다. PFS란 비밀키가 누출되더라도, 과거 통신되었던 TLS 통신들이 보호된다. 암호화 과정에서 클라이언트와 서버만 알고있는 세션키가 사용되는데 이게 매우 짧은 주기로 지속적으로 변경되므로, 공격자가 특정 패킷의 비밀키를 알게 되더라도 그 전과 후의 패킷들은 지속적으로 보호된다는 특성이며 ECDHE는 PFS를 지원한다.

    쉽게 정리하면, ECDHE 알고리즘이 사용되면 서버의 비밀키로 복호화 할 수 없다는 이야기

    DHE and ECDHE provides Perfect Forward Secrecy(PFS), means session keys are not derived from private key. So the attacker can not decrypt the traffic even when he has the private key used in the session handshake.
    In DHE(not DH) the session keys are calculated using the Random Numbers.
    You can't decrypt the traffic using private key when DHE or ECDHE is used.

    아니 그럼,,,,,, 나는 패킷을 복호화 해보고 싶은데 정녕 방법이 없는건가? 네 복호화는 할수 없어염.

    SSH 핸드쉐이킹 과정에서 ECDHE를 빼는건 어때?

    서버의 설정을 통해 ECDHE는 빼는건 어떨까? 구글 검색 결과 apache, nginx 같은 경우 SSL ciphers suites 설정 방법이 공유되어 있다. apache, nginx가 설치되어 있지 않은 환경이라면? 패킷 캡쳐하겠다고 apache랑 nginx를 설치할 순 없잖아.

    분명 구글에서 검색해보면.. 방법이 있을것도 같은데 문제는 구체적으로 어떻게 하는지를 찾지 못하겠다. 하두 답답해 stackoverflow에 영어로 글을 올렸는데 하루째 묵묵부답.

    나중에라도 그 방법을 찾아내 적용할 수 있다면 정말 기쁘겠다. 우선은 ECDHE 환경에선 HTTP 통신을 통해 패킷을 캡쳐하는 방법을 택하자.

    반응형
Designed by Tistory.